Xcodeのプロジェクト設定で、App IDを先に登録したものに、Provisioning Profileを先ほどインストールしたものに、それぞれ設定します。これで準備完了です。実機をつないでアプリを起動します。認証に成功すると、プッシュ通知の登録を確認するアラートダイアログが表示されます(図6)。
許可した後に、管理ポータルのモバイル サービスの[データ]を開きます。deviceテーブルを開き、[参照]をクリックすると、トークンが登録されていることが分かります(図7)。
スケジューラは、バックグラウンドタスクを任意のタイミングで実行できる機能です。管理ポータルのモバイル サービスを開いて、[スケジューラ]を開きます(表示されていない場合は、「Step 3 − Windows Azure プレビュー機能のサインアップ / Windows Azure サブスクリプション申し込み Step by Step」からプレビュー機能を有効にしてください)。
画面下部の[+作成]ボタンはクリックします。「新しいジョブの作成」ダイアログで[ジョブ名]に「notify」と入力し、[スケジュール]に「要求時」を選択して、右下のチェックアイコンをクリックするとジョブ(タスク)が作成されます(図8)。
作成完了したらジョブを開きます。[スクリプト]をクリックするとスクリプトエディタが表示されるため、下記のコードを入力して、下部の[保存]ボタンをクリックして保存します。
function notify() { var table = tables.getTable('device'); table.read({ success: function(devices){ devices.forEach(function(item){ push.apns.send(item.token, { alert: "Test News" }); }); }}); }
JavaScriptなのでコールバックが多いですが、deviceテーブルの操作オブジェクトを取得して、readメソッドで全レコードを配列devicesとして読み込みます。
さらに、各レコードのtokenフィールドの値をpush.apnsオブジェクトのsendメソッドに通知内容とともに渡して、通知をAPNsサーバに要求します。各オブジェクトの詳細については、Windows Azureのモバイル サービスの「サーバー スクリプト リファレンス」を参照ください。
これで準備完了です。実機で実行中であればアプリを閉じておきます。下部の[一度だけ実行する]ボタンをクリックすると、通知が端末に届くはずです(図9)。
アプリが削除されるなどして、通知不要になった端末のデバイストークンを削除する仕組みが、APNsのフィードバックサービスです。図4のフィードバック スクリプトは、このサービスを呼び出し、データを削除する定義ができます。
APNsと接続するサーバは非HTTPの実装を求められるため、扱いにくく感じるところです。そういったものがラップされて提供されているため、最小限の実装でプッシュ通知機能を持つアプリが作れるのは魅力ですね。
今回の後編では、Windows Azureモバイル サービスの認証およびプッシュ通知の、iOSアプリからの利用方法を紹介しました。セットアップの手順が多かったですが、実際に個々のアプリがモバイル サービスを利用するためのスクリプトやiOSアプリのコーディング自体は非常に少なかったと思います。
BaaSの神髄は、まさにそこで、サービス側ではなくアプリ側に注力できることにあります。本記事がアプリ開発者の皆さまにとって、少しでもBaaSを使うきっかけになれば幸いです。
高橋 俊光(たかはし としみつ)
ティルフィン合同会社 代表。Twitter(@tilfin)
メーカー企業でパッケージソフト開発などに携わった後、ティルフィン合同会社を設立しフリーエンジニアとして、最近はスマートデバイスアプリやサーバサイドをメインに開発に従事。iOSアプリもリリースしている
Copyright © ITmedia, Inc. All Rights Reserved.