WP7の初アプリ申請からちょうど一週間。
先月29日に申請して、2日の夜にようやく結果メールが到着しました。
が、残念ながら審査落ち…orz
申請後に一箇所クラッシュするバグを見つけていたので覚悟はしていたのですが、Microsoftのテスターさんにもしっかり見つけられてしまったようです。
機内モードにしてネットワークに接続できない状態で特定の操作をすると落ちるバグなので、そりゃ見つけるだろー、といった感じですが、噂通りきっちりテストされているようで…
まぁ、このバグは既に直してあったのでさしたる問題はなかったのですが、よく分からないのはもうひとつの指摘にあったアプリケーションポリシーによるもの。
「2.9.1」に記載されているプッシュ通知に関するポリシーのようで「プッシュ通知を有効にする場合はユーザの許可を得よ」という話が書かれているようなのですが、確認用のメッセージボックスは出していたし、停止操作もできるようにしておいたつもりだったので、何をどうすればいいのか謎。
審査結果の文書は全て英語で書かれていることもあって、「ぉぃぉぃ、日本語ちゃんと読めてるんだろうな?」という疑惑はあるものの、仕方ないので文言を少し見直して「通知(Notification)」を強調したものに変えてみたのですが、果たしてこれで良いのかどうか…
というわけで、まだ詳細はお知らせしていませんが、今回のアプリはタイルへのプッシュ通知を利用しています。
WP7のプッシュ通知は、Microsoftが提供するプッシュ通知サーバ(MPNS)を利用するのですが、このMPNSに対して通知のリクエストを行うためには自前のサーバが必要となります。
また、プッシュ通知する相手先端末の一覧を管理するために何らかのWebサービス、ストレージも必要となるため、個人でやるには若干敷居が高めだったりするのですが、BizSparkパートナー企業ということで、Windows Azureを活用してみた次第。
端末管理にはAzumeインスタンスにWCFサービスを追加し、プッシュ通知のリクエスト用にWorkerRoleインスタンスを新作して対応。
Azumeでのノウハウを利用して比較的スムーズに実装できましたが、MPNSの仕様が英語ベースの情報しかないのがツライところ。
一番気になっていた通知頻度の限界値(throttling limit)は、英語のフォーラムを見る限り「1端末(チャネル)につき500回/24時間」とのこと。
未認証サーバの場合にこの制限がありますが、認証済みサーバの場合は無制限の模様。
いずれにしても、3分に1回の通知は可能ということなので、通常の利用においてはそれほど問題にはならなそうです。
通知の実装上注意が必要なのは、プッシュ通知が到達しなかった端末に対して何度も通知リクエストを送り続けると、MPNS側からロックされて、しばらくの間他の端末に対するリクエストも受け付けなくなってしまうという仕様に対処しなければならないこと。(詳細はこの辺に書かれています)
ある端末に対する通知リクエストがエラーになった場合、自鯖側としては当該端末に対する定期的な通知をいったん停止する必要があるということです。
あくまでサーバ側の挙動なので、マケプレの審査内容には含まれていないと思いますが、あまり適当な作りだとプッシュ通知がうまくいかなくなりますので、ご注意あれ。
ちなみに、端末が長時間スリープしているとプッシュ通知が届かなくなり、前述の現象が発生するようになるので、サーバ側の対策は必須と思われます。
コメントを残す