MBaaSのParseでiOSにPush通知を送るチュートリアル

弊社の神経衰弱アプリシリーズではPush通知にMBaaSで有名なParseを使っています。Parseを使うと超簡単にモバイルアプリの通知を発行することができます。

神経衰弱アプリ三部作 | 株式会社CFlat神経衰弱アプリ三部作 | 株式会社CFlat

まだ使ったことはありませんが、モバイルアプリやWebアプリのデータ置き場として使ったりバックグラウンドジョブを走らせたりすることができるようです。自前でサーバーを運用する際のサーバーコストやメンテナンスコストが要らなくなる上に、システム的にも信頼できるので使わない手はなさそうです。

また、Parseにはとてもわかりやすいクイックスタートガイドが付いています。このドキュメントに従ってセットアップを行えば簡単に使いはじめることができます!

と言いたいところなのですが、やはり躓くポイントがいくつかありました。ドキュメントが英語なので大事なところを読み飛ばしてしまったり。

そういうわけで、プッシュ通知をさせるためのセットアップ手順を図を交えて説明したいと思います。

iOS Developer Centerでの準備

基本的に公式チュートリアルの内容をベースにしています。

iOS Push Notifications | Parse

証明書リクエストの用意

iOSアプリケーションに対して通知を行う際には、通知用の証明書を使用する必要があります。これはParseから対象アプリへ通知を行う場合も同じなので、Developer Centerから発行された証明書をParseにアップロードする必要があります。

まずは証明書を発行するためのリクエストを作っておきます。

  1. キーチェーンアクセスを起動する
  2. メニューからキーチェーンアクセス証明書アシスタント認証局に証明書を要求を選ぶ
  3. 名前とメールアドレスを入れる、メールアドレスは多分Developer登録しているアカウント
  4. ディスクに保存を選んで続けるを押し、ファイルを保存する

このファイルは後ほど使います。

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。

通知の設定を行う

  1. Settingsタブを開く
  2. サイドバーからPush Notificationsを選ぶ
  3. Client push enabled?ON
  4. Apple Push Certificateに先ほど作った.p12ファイルをアップロード

Xcodeでの設定・実装

クイックスタートを参照すると簡単です。

Quick Start | Parse

Parseのフレームワークを導入する

CocoaPodsを使う場合

クイックスタートには書かれていませんが、CocoaPodsが使えます。

Podfilepod '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インターフェースから通知を送れるよ