アプリのバックエンド機能を提供するBaaSサービスのParseを使ってプッシュ通知を行う方法をご紹介します。
Parseの詳細については公式ページまたは過去記事を参照してください。
無料版でも、ターゲットを絞り込んだ通知など多くのことが行えるので、3回に分けて紹介していきます。
今回はその第1回、プッシュ通知機能を実現するまでの導入手順についてです。
なお、ParseはiOS、Android、Windows Phoneなどさまざまなデバイスに通知を行うことができますが、この記事ではiOSを対象とします。
公式のドキュメント(Quick Start | Parse)に従い、作業の手順は次のような流れで進めます。
- App IDの作成
- 通知用証明書の作成
- プロビジョニングファイルの作成
- Parseに証明書を登録
- Xcode上で実装
- Parseからプッシュ通知を送る
App IDの作成
まず、Dev Centerにて通知を行うアプリのApp IDを作ります。
今回はプッシュ通知を行うので、SuffixはWildcard App IDではなくExplicit App IDを選択して作る必要があります。
Push Notificationにチェックを入れておき、AppIDを生成します。
AppIDを生成した時点では、まだプッシュ通知が有効になっていません。
ですので、続いて通知用証明書を作り、プッシュ通知を有効にします。
(Certificates, Identifiers & Profilesで確認したところ。Push Notificationsの項目がEnabledになっていません)
通知用証明書の作成
まずはキーチェーンアクセスで証明書要求ファイルを作成します。
「キーチェーンアクセス>証明書アシスタント>認証局に証明書を要求」 を実行し、メールアドレスと名前を設定します。
このとき、「ディスクに保存」をチェックしておき、証明書要求ファイルの書き出しを行います。
再びDev CenterのCertificates, Identiers & Profilesにアクセスし、通知を行うアプリの設定を編集します。
設定画面の下部にプッシュ通知に関する項目があるので、その中のCreate Certificate…をクリックして証明書を作成します。
なお、この画面から開発用と公開用の証明書の双方を作ることができますが、今回は開発用のものを作成します。
操作を進めていくと証明書要求ファイルをアップロードするよう求められるので、先ほど作成したファイルをアップロードします。
次の画面に進むと証明書ファイルがダウンロードできるので、これを保存しておきます。
ダウンロードした証明書ファイルをキーチェーンアクセスに登録したのち、この証明書を.p12ファイルとして書き出します。
なおp12ファイルについては、Parseではパスワードが利用できません。なので、p12ファイルの書き出し時にパスワードは設定しないようにして進めてください。
プロビジョニングファイルの作成
先ほど作成したApp IDを紐付けたプロビジョニングファイルを作成し、ダウンロードしておきます。
プロビジョニングファイルの作成自体は通常の手順と変わりません。
ただし、すでにプロビジョニングファイルと紐づいているApp IDに新たにプッシュ通知設定を加えた場合は、プロビジョニングファイルの更新を行う必要があります。
Parseに証明書を登録
プッシュ通知を行うための証明書をParseにも登録します。
まずは、Parseにログインした状態で、画面上部に表示される「Create New App」をクリックし、通知を行うアプリを作成します。
名前を入力してアプリを作成すると、新しく作成されたアプリの情報が見れるようになります。
この表示の右上にある歯車のアイコンをクリックし、設定画面を表示します。
設定画面の左側にあるメニューから「Push Notifications」を選択すると、証明書ファイルをアップロードするボタンが表示されるので、先ほど作った.p12ファイルをアップロードします。
Xcode上で実装
ここまででParse側の準備が整ったので、Xcodeでアプリを実装します。
まず、ParseのSDKおよび必要なライブラリ類を追加します。
SDKはこちらからダウンロードしてください。
SDKのほか追加するライブラリは以下の通りです。
- AudioToolbox.framework
- CFNetwork.framework
- CoreGraphics.framework
- CoreLocation.framework
- libz.dylib
- MobileCoreServices.framework
- QuartzCore.framework
- Security.framework
- StoreKit.framework
- SystemConfiguration.framework
あとはQuick Startに記載されたコードを記述していきます。
コードの追加はすべてAppDelegate.mに対して行います。
まず、.hファイルのインポートを行います。
#import <Parse/Parse.h> |
次に、application:DidFinishLaunchingWithOptions:メソッドには次のコードを追加します。
[Parse setApplicationId: @"applicationID" clientKey: @"clientKey"]; [application registerForRemoteNotificationTypes: UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound]; |
[2014/10/17追記] iOS8からはプッシュ通知の登録メソッドが変更されました。詳しくはこちらの記事をご覧ください。
なお、ここで必要になるアプリケーションIDとクライアントキーはParseの設定画面の「Application keys」を選択すると調べることが出来ます。
最後に、次の2つのメソッドを追加すれば実装は完了です。
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{ PFInstallation *currentInstallation = [PFInstallation currentInstallation]; [currentInstallation setDeviceTokenFromData:deviceToken]; [currentInstallation saveInBackground];} - (void)application: (UIApplication *)applicationdidReceiveRemoteNotification: (NSDictionary *) userInfo {[PFPush handlePush:userInfo];} |
あとはプロビジョニングファイル等の設定を行い、端末にアプリを転送します。
端末でアプリを起動するとプッシュ通知を許可するか尋ねられるので、許可しておきます。
Parseからプッシュ通知を送る
プッシュ通知を送るときは、プッシュ通知の管理画面の右上にある「Send a push」をクリックします。
次にプッシュ通知送信用画面が表示されます。ここで、画面右側に送信対象の数を示す「~ recipant(s)」と書かれたラベルが0以外になっていれば、プッシュ通知を送ることが出来ます。
あとは、通知メッセージを入力し、「Send Message」をクリックすれば…
端末に通知を送ることが出来ます。
なお、今回は説明を省きましたが、送信日時の設定や送信先の絞込みなどの設定もこの画面で行うことが出来ます。
まとめ
本記事では、Parseを使ったプッシュ通知の実装のために、Dev center・Parse・Xcode上で行う各手順についてご紹介しました。今回は開発用を例に紹介しましたが、公開用についてもおおむね同様の手順で行うことが出来ます。
次回は、今回紹介できなかった通知の送信先の絞込みについて、channelsパラメータを使用したものを例にご紹介したいと思います。