Parse.comを使ったiOSデバイスへのプッシュ通知[導入編]

アプリのバックエンド機能を提供するBaaSサービスのParseを使ってプッシュ通知を行う方法をご紹介します。

Parseの詳細については公式ページまたは過去記事を参照してください。

無料版でも、ターゲットを絞り込んだ通知など多くのことが行えるので、3回に分けて紹介していきます。

今回はその第1回、プッシュ通知機能を実現するまでの導入手順についてです。

なお、ParseはiOS、Android、Windows Phoneなどさまざまなデバイスに通知を行うことができますが、この記事ではiOSを対象とします。

公式のドキュメント(Quick Start | Parse)に従い、作業の手順は次のような流れで進めます。

  1. App IDの作成
  2. 通知用証明書の作成
  3. プロビジョニングファイルの作成
  4. Parseに証明書を登録
  5. Xcode上で実装
  6. 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パラメータを使用したものを例にご紹介したいと思います。

Related Post

iOS8とiOS7にプッシュ通知を送るiOS8とiOS7にプッシュ通知を送る

iOS8では、プッシュ通知から直接返信するなどのアクションが出来るようになりましたが、それに伴って通知の仕様も大きく変更されました。 この記事では基本的な手順とパラメータの変更点について簡単にまとめています。 プッシュ通知の登録手順の変更 上で述べた通知の機能拡張に伴い、アクションのない(=iOS7以前と同様の)プッシュ通知を行う場合でも実装方法が変わりました。具体的には、これまでプッシュ通知の登録時に使用していたregisterForRemoteNotificationTypes:メソッドが非推奨になり、registerUserNotificationSettings:メソッドとregisterForRemoteNotificationsメソッドを使う形になりました。 メソッド名だけ並べても分かりにくいので実際のコードで示すと iOS7以前ではこうだったのが… [application registerForRemoteNotificationTypes:UIRemoteNotificationTypeBadge

iPhoneでHTML5のaudio要素を使うときに気をつけたいことiPhoneでHTML5のaudio要素を使うときに気をつけたいこと

HTML5ではaudio要素が追加され、外部プラグインを使わずブラウザで音を扱えるようになりました。そこで、デモを作ろうとしたのですが、ハマったポイントがいくつかあったので紹介します。検証環境はPC:Safari5.0.5(WIN)、iPhone:iOS4.3.2のMobile Safariです。 loop属性が効かない audio要素ではloop属性を付けることで、繰り返し再生が可能です。PCでは動作しますが、iPhoneではこれがうまく動作せず、1回再生されて停止してしまいました。onendedを使い、最後まで再生したらもう一度再生させれば対処できます。 <audio src=”audio.mp3″ preload=”auto” onended=”this.play()”

Parse.comを使ったiOSデバイスへのプッシュ通知[ターゲッティング編]Parse.comを使ったiOSデバイスへのプッシュ通知[ターゲッティング編]

前回、Parseを使ったiOSデバイス向けのプッシュ通知を行う方法をご紹介しました。今回はプッシュ通知先の絞り込みについて、無料版でも利用可能なChannelというパラメータを使用した方法をご紹介します。 大まかには、以下のような流れで行います。 デバイスにChannelの情報をひもづける Channelを指定してプッシュ通知を送る デバイスにChannelの情報をひもづける 次のメソッドを使って、デバイス側からParse(サーバ)側にChannel情報を登録できます。 NSString *channelName = @"hogehoge";   //登録するChannel名[PFPush