サーバーサイドスクリプト
最後にモバイルサービスのサーバーサイドスクリプトを確認します。ここはサンプルで提供されない部分なので、各自のスクリプトを修正してください。
Windows Azureモバイルサービスのデータ管理画面から[スクリプト]画面を表示し、さらに操作から[挿入]を選択して、データ挿入時に実行されるスクリプトを表示します。表示されたスクリプトをリスト5で置き換えて保存します。
function insert(message, user, request) { request.execute( { success : function() { ① request.respond(); push.wns.sendToastImageAndText03(message.channel, ② { image1src : 'http://www.wings.msn.to/image/wings.jpg', image1alt : 'wings', text1: 'message', text2: message.text }, { success: function(pushResponse) { ③ console.log("Sent push:", pushResponse); } }); } }); }
①は、「request.execute」メソッドが成功した場合に呼び出されるコールバックメソッドです。この場合、データの挿入処理が正常に終了された場合に呼び出されます。
②は、プッシュ通知を要求しているデバイスに通知を行うメソッドです。pushオブジェクトは、サーバーサイドスクリプトで用意されているプッシュ通知用のグローバルオブジェクトです。wnsプロパティに実際のWindowsプッシュ通知に必要なオブジェクトが設定されています。最後に、「sendToastImageAndText03」メソッドを呼び出して、プッシュ通知を要求しているデバイスに通知を送信します。ここの「sendToastImageAndText03」は、イメージとテキストをテンプレート3という形で表示することを意味しています(注2)。
第1引数はプッシュ通知に必要なチャネルURIを指定します。本サンプルではメッセージ送信時に設定しているため、messageオブジェクトのchannelプロパティから取得します。
第2引数は、データオブジェクトを指定します。使用するメソッドによって設定する内容が異なりますが、このメソッドではイメージソース(image1src)および代替テキスト(image1alt)および、トースト通知に表示するメッセージタイトル(text1)と本文(text2)を指定しています。
第3引数は、通知が成功したときに呼び出されるコールバックメソッドで、本サンプルではログに通知を記録しています。
wnsオブジェクトから提供されているメソッドは、「GitHubのwnsページ」を参照してください。ここで紹介されているメソッド形式は、「トーストテンプレートカタログ」に対応しています。
実行確認
サンプルの実行確認をしてみましょう。
[1]トースト通知を有効化する
実行確認の前に、トースト通知の有効化設定を行います。ソリューションエクスプローラーから「Package.appxmainfest」ファイルを選択し、ダブルクリックしてエディタを開きます(図14)。[アプリケーションUI]タブを選択し、[トースト対応]リストボックスを確認します。デフォルトでから「はい」を選択してください。
Windows 8の通知設定は、デフォルトでオンになっているため特に設定の必要はありませんが、オフにしている場合はオンに変更してください。[通知]設定から確認できます。
[2]実行する
プッシュ通知を利用したアプリーションを起動するためには、シミュレータ実行ではなく、ローカルコンピュータ上での実行が必要です。シミュレータ上で実行すると、権限がない旨の例外が発生し実行確認はできません。
正常に起動すると、先ほど紹介した図8のストアアプリが起動します。適当なメッセージを入力したのち、トースト通知が行われるか確認してみてください。
まとめ
環境設定が多く手順は煩雑ですが、特に難しい部分はなかったかと思います。作成されたサンプルもプッシュ通知に関連する部分は多くなく、単純なコードで実現できることがお分かりいただけたのではないでしょうか。
このように、Windows Azureモバイルサービスを利用すれば、プッシュ通知の基盤を作成することなくSaaSとして簡単に利用することができますので、ぜひ試してみてください。