#wpdev_jp
さて、審査に通らないとお困りの人のために開設した Windows Phone アプリ開発相談室(8/3改名)。なんだかんだ言って Windows Phone のアプリ開発者は結構スキルが高い人が多いので、それほど連絡は来ません。まぁ知られていないのかもしれませんがw。
といってもたまにぽつぽつ来るんですよね。ということで最近よく来る 2.10についてご紹介します。
2.10 アプリケーションポリシー:アプリケーションの機能は明確に
Your application and metadata must have distinct, substantial and legitimate content and purpose. Your application must provide functionality other than launching a webpage.
問題
この問題について一言でいうと、「アプリケーションを起動してもアプリケーションの機能も操作方法もわからない」というものです。
アプリを起動しても、メニュー等がなくいきなり選択画面や操作画面が起動してしまうものがこの典型です。ユーザーに対してどういったアプリケーションなのか、そのためにどういった手順で操作をすればいいのか、そういったことが一切表示されないないとユーザーは何をしていいのかわかりません。
Twitter のクライアントのように何もしなくても、メインとなるデータの読み込みが行われるようなものに関してはいいでしょう。でも機能が独特なものの場合はそういった説明がなければユーザーは操作することができません。
もちろん、アプリの説明文にアプリの機能や操作方法を書いた方もいらっしゃるかもしれませんが、ユーザーは必ずしもそれを見ている保証はありませんし、あとから見ようとしたときにネットワークがつながっている保証はありません。そういう意味でアプリの中にも簡単な説明は入れておいたほうがいいでしょう。
実装方法
この問題の審査レポートのコメント欄には大体このようなコメントが付いています。
Comments: Fail per Microsoft instruction. Please consider using the Beta option for submissions of this type.
これはベータアプリとして出したほうが良いのではないでしょうか?と。ちょっと辛辣な感じもしなくもないですが、使う人のことを考えれば、アプリケーションとして最低限のヘルプやバージョン情報表示は入れておくべきでしょうし、それがないのであればあくまでも機能検証用のベータアプリとして出さないと、ユーザーにとっても開発者にとっても残念な結果になってしまいます。このコメントはそういう意味だと思います。
ま、ここまで出ているので対処方法は簡単です。1ページでいいので簡単なヘルプのページを用意します。できればどの画面からもこのヘルプページが参照できるようにしておくといいでしょう。できれば、初めて起動したときは強制的にこのページに飛ぶようにしておくといいかもしれません。また、いきなり機能を実行するのではなく、ヘルプを表示するか機能を呼び出すかのメニュー画面を表示するのもいいかもしれませんね。
また、バージョンアップのことも考えて、どこかの画面で現在のバージョン番号を表示するようにしておくこともお勧めします。MassageBox.Show("Version 1.0”); でももちろんOKです。
初めて起動したときだけヘルプを呼び出す実装方法
MainPage.Xaml.cs にこんな感じで、OnNavigatedTo を実装しておけばいいでしょう。IsolatedStorageSettings はアプリごとの分離ストレージに設定を保存してくれます。一度保存すれば削除するかアンインストールするまで消えないので、こういった用途に便利です。
//初回起動時の処理(チュートリアル表示) protected override void OnNavigatedTo( System.Windows.Navigation.NavigationEventArgs e) { bool bStarted = false; IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings; if (!settings.TryGetValue<bool>("firstOpen", out bStarted)) { settings["firstOpen"] = true; settings.Save(); NavigationService.Navigate( new Uri("/Help.xaml", UriKind.Relative)); } }
ここでは、"firstOpen” という設定を使っていますが、初めて起動したときはこの “firstOpen” という設定がないわけで、この設定の有無で初回起動かどうかを判断しています。 起動時はここに True を入れていますが、設定の有無だけで初回起動を判断しているので、実際は入れるものは文字でも数字でもOKなんです。
ご指摘のように、ヘルプを追加して送付しましたがおかげさまで、本日認証完了のメールがとどきました。
ありがとうございました。
一人で作って一人でテストしていると、操作できるものと勝手に思い込んでいたりして、だめですね。
あと、英語のリジェクトメールも、意味が良くわからず、半ばあきらめたくなりましたが、そんなとき、
>>審査に通らないとお困りの人のために開設した Windows Phone アプリ開発相談室
この仕組みには助けられました。
関係者の皆様、ありがとうございました。