MBaaSのParseでiOSにPush通知を送るチュートリアル
弊社の神経衰弱アプリシリーズではPush通知にMBaaSで有名なParseを使っています。Parseを使うと超簡単にモバイルアプリの通知を発行することができます。
まだ使ったことはありませんが、モバイルアプリやWebアプリのデータ置き場として使ったりバックグラウンドジョブを走らせたりすることができるようです。自前でサーバーを運用する際のサーバーコストやメンテナンスコストが要らなくなる上に、システム的にも信頼できるので使わない手はなさそうです。
また、Parseにはとてもわかりやすいクイックスタートガイドが付いています。このドキュメントに従ってセットアップを行えば簡単に使いはじめることができます!
と言いたいところなのですが、やはり躓くポイントがいくつかありました。ドキュメントが英語なので大事なところを読み飛ばしてしまったり。
そういうわけで、プッシュ通知をさせるためのセットアップ手順を図を交えて説明したいと思います。
iOS Developer Centerでの準備
基本的に公式チュートリアルの内容をベースにしています。
iOS Push Notifications | Parse
証明書リクエストの用意
iOSアプリケーションに対して通知を行う際には、通知用の証明書を使用する必要があります。これはParseから対象アプリへ通知を行う場合も同じなので、Developer Centerから発行された証明書をParseにアップロードする必要があります。
まずは証明書を発行するためのリクエストを作っておきます。
- キーチェーンアクセスを起動する
- メニューから
キーチェーンアクセス
→証明書アシスタント
→認証局に証明書を要求
を選ぶ - 名前とメールアドレスを入れる、メールアドレスは多分Developer登録しているアカウント
- ディスクに保存を選んで
続ける
を押し、ファイルを保存する
このファイルは後ほど使います。
App IDを作成・更新する
続いて通知機能を有効にするアプリのためのIDを発行します。ほぼいつもどおりでいいですが、通知機能を有効にしておく必要があります。
すでに作成済みのApp IDを通知に対応させるためには、App IDを選んでEdit
からPush Notifications
にチェックを入れて保存します。
また、アプリのIDにはExplicit App ID
を指定しておきましょう。com.cflat.hogehoge
みたいなアレです。
証明書を作ってParse登録用のファイルを生成する
次のステップでは、最初のステップで証明書アシスタントを使って作った証明書リクエストをDev Centerにアップロードして証明書を作ります。
先ほど作ったApp IDのEdit
画面に移ります。すると、Push Notifications
下にアップロード用ボタンがあるのでそこをクリックして最初のステップで作ったリクエストを指定します。
完了するとダウンロードできるようになります。
ダウンロードしたファイルをダブルクリックするとキーチェーンアクセスに登録されます。登録された証明書を右クリックし、p12
ファイルを適当な名前でエクスポートします。これはあとはParseに登録します。
このアプリ用のプロビジョニングプロファイルを取得
先ほど用意したApp ID用のプロビジョニングプロファイルを作っておきます。通知機能を有効にするにはプロファイルでビルドする必要があります。
ここはほぼいつもどおりなので省略。
Parseで設定
アプリケーションを作る
ログイン後ダッシュボードの右上にあるボタンからアプリを作ります。識別のための名前を入れるだけでOK。
通知の設定を行う
Settings
タブを開く- サイドバーから
Push Notifications
を選ぶ Client push enabled?
をON
にApple Push Certificate
に先ほど作った.p12
ファイルをアップロード
Xcodeでの設定・実装
クイックスタートを参照すると簡単です。
Parseのフレームワークを導入する
CocoaPodsを使う場合
クイックスタートには書かれていませんが、CocoaPodsが使えます。
Podfile
にpod 'Parse'
と書いて$ pod install
すればOK。こちらのほうが楽です。
自分で追加する場合
ここからiOS用のSDKをダウンロードして、展開したらできるParse.framework
をプロジェクトに追加します。
Downloads & Changelogs | Parse
また、Link Binary With Libraries
に依存しているライブラリを追加してあげる必要があります。追加するのは次ののフレームワーク・ライブラリです。
- AudioToolbox.framework
- CFNetwork.framework
- CoreGraphics.framework
- CoreLocation.framework
- libz.dylib
- MobileCoreServices.framework
- QuartzCore.framework
- Security.framework
- StoreKit.framework
- SystemConfiguration.framework
実装を書く
AppDeletege.m
にクイックスタートにあるコードを書きます。
application:didFinishLaunchingWithOptions:
には次のコードを。
[Parse setApplicationId:@"YOUR_APPLICATION_ID" clientKey:@"YOUR_CLIENT_KEY"]; [application registerForRemoteNotificationTypes:UIRemoteNotificationTypeBadge| UIRemoteNotificationTypeAlert| UIRemoteNotificationTypeSound];
また、次の2つのメソッドを追加します。
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { // Store the deviceToken in the current installation and save it to Parse. PFInstallation *currentInstallation = [PFInstallation currentInstallation]; [currentInstallation setDeviceTokenFromData:deviceToken]; [currentInstallation saveInBackground]; } - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { [PFPush handlePush:userInfo]; }
実装はこれで終わり。
Bundle IDとプロビジョニングの指定
iOS Dev CenterでPush通知を有効にしたアプリのIDを指定しておきます。
ビルド設定を開いて、プロビジョニングプロファイルを先ほど作ったものに設定しておきます。
実際に通知を投げてみる
ここまでで設定が全て終わりました。このアプリをビルドして実機に転送し起動しておきます。
Parseのダッシュボードを開きPush Notifications
を選択、+ Send a push
を押します。
そうすると次のような画面になります。1 recipientとなっていれば先ほど実機に転送したアプリが正しく設定できています。
- 通知先
- 通知時刻
- 期限
- バッジをどうするか
などを決めつつ、通知のメッセージを入れてSend Notification
すれば通知が届くはずです!
長かったけれどお疲れさまでした。
通知メッセージはリアルタイムにプレビューできます。これはおまけかな。
まとめ
- Parseで通知をやってみた
- 証明書周りが少し面倒
- 実装は簡単!
- Webインターフェースから通知を送れるよ