高橋 忍のブログ

UX & モバイル、全ては心でエバンジェリズム♪

WP7 アプリ 2回目の審査落ち

WP7 アプリ 2回目の審査落ち

  • Comments 1

#wpdevday #wp7dev_jp

実は、昨日のイベント中に、Marketplace からメールが入っていました。

再審査をしたのが日曜日だったので、実質2営業日強で審査結果が返ってきました。結果は残念ながら審査落ち。

でも結果の内容は前回のものとは違いました。前回はどちらかというとアプリケーションの中身よりも、説明文などについての言及だったのですが、今回はアプリケーションの動作に関するものでした。

では、審査のレポートを見てみましょう。

どの項目で落ちたのか

まず初めに、自分は審査基準のどの項目で引っかかったのかが記載されています。審査基準はPDFの形式でAPP HUBのサイトからダウンロードすることができます。この審査基準のドキュメントと照らし合わせると内容がよくわかります。

image

実際にドキュメントにはこのように書かれています。尚、現在のドキュメントは英語版で日本語は私の意訳です。

5.2.4 Use of Back Button
5.2.4 戻るボタンに対する対応方法について
To maintain a consistent user experience, the Back button must only be used for backwards navigation in the application.
(アプリケーションにおいても)一貫した操作性を提供するために、戻るボタンは必ずアプリケーションにおいて「前の画面に戻る」ためにつかわれなければならない。
a. Pressing the Back button from the first screen of an application must exit the application.
a. 初めの画面で戻るボタンを押したときには、アプリケーションは必ず終了しなければならない
b. Pressing the Back button must return the application to the previous page.
b. 戻るボタンを押したときにはアプリケーションは前のページに戻らなければならない
c. If the current page displays a context menu or a dialog, the pressing of the Back button must close the menu or dialog and cancel the backward navigation to the previous page.
c. もしコンテキストメニューやダイアログを表示している場合は、戻るボタンでメニューやダイアログを閉じる処理をして、前のページに戻らないようにしなければならない
d. For games, when the Back button is pressed during gameplay, the game can choose to present a pause context menu or dialog or navigate the user to the prior menu screen. Pressing the Back button again while in a paused context menu or dialog closes the menu or dialog.
d. ゲームにおいては、ゲーム中に戻るボタンを押した時には、一時停止メニューもしくはダイアログか、前のメニュー画面に戻るなどのいずれかの動作を行う。一時停止のメニューもしくはダイアログを表示中に再び戻るボタンを押した場合はそれを閉じる。

アプリケーションのどこが悪かったのか

なるほど、こういう項目があったのね。でも素晴らしいのはこれだけではありません。

申請した私のアプリケーションで何が問題だったのか、どういった操作をして問題だったのか、そのプロセスまで書いてくれているのです。

image

実際の内容は以下の通りです。

Comments: Pressing the device's back button does not consistently return the application to the previous page.
Steps to reproduce:
コメント:デバイスの戻るボタンを押した場合は必ず前のページに戻らなくてはいけません。
問題の再現手順
1. Launch the application.
アプリケーションを起動します
2. Press the "?" icon on the bottom right of the page.
画面右下にある"?"アイコンを押します
3. Press the device's back button.
デバイスの戻るボタンを押します
4. Notice that pressing the device's back button does not consistently return the application to the previous page.
デバイスの戻るボタンでアプリケーションでの前の画面に戻らないことがわかります

実際はどうだったのか

確かに、画面右下にはヘルプボタンがあります。

image

タッチするとヘルプ画面をダイアログ的に表示することができます。

image

そして、戻るボタンを押すと...アプリケーションが終了します。これは自分でも気が付きませんでした。

というのも、この画面を別ページとして作って、画面遷移をしていたら、戻るボタンで前の画面に戻ったのですが、実はここの処理は非表示にしている画面をアニメーションで表示させていたのです。そのため、画面のナビゲーションとしては初めの画面のままなので、戻るボタンで終了してしまいました。

この動作はとくにシステムに問題を与えるものではありません。でも、多分このままリリースしたらユーザーからクレームが来たでしょう。こういった部分まできちんと審査してくれていることに驚いたのと、そのプロセスまで教えてくれたことは驚きです。おかげでアプリケーションのクオリティが上がりました。

皆さんも、Marketplaceに挙げるときには、審査を恐れず積極的にあげてみてください。

回避策は簡単

さて、回避策を練らなければなりませんが、そこは Silverlight なので簡単です。

戻るボタンの制御には初めから関数が用意されて���るので、そこに独自処理を加えるだけです。ダイアログが表示されているときには、ボタンの戻る処理をせず(e.Cancel = true;)に、ダイアログを非表示するアニメーションを実行(ExitHowTo.Begin();)するだけです。

protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)
{
    if (Help.Visibility == System.Windows.Visibility.Visible)
    {
        e.Cancel = true;
        ExitHowTo.Begin();
    }
    else
    {
        MessageBoxResult result = MessageBox.Show("Exit OK?", "Exit", MessageBoxButton.OKCancel);
        if (result == MessageBoxResult.Cancel)
            e.Cancel = true;
        else
            base.OnBackKeyPress(e);
    }
}

せっかくなので、通常画面で戻るボタンを押したときに突然終了せずに、いったんメッセージボックスで確認をするようにしました。今後アプリケーションを作るときはちゃんとこの辺処理も考慮しないといけませんね。

ということで再審査

再審査も、APP HUBのアプリケーション管理画面から、審査依頼をするだけです。以前の情報はもちろんすべて残っているので、新しい xap ファイルだけアップロードしなおして、ダイアログを進めるだけです。

もし、審査機関へのコメントがあったら初めの画面でコメントしておくといいでしょう。

さて、これで通るか楽しみです。

Comments
  • Marketplaceが優秀なテストチーム代わりになってくれる。

    考えたら凄いことです。

Page 1 of 1 (1 items)
Leave a Comment
  • Please add 1 and 3 and type the answer here:
  • Post