これはラク!ニフティクラウドmobile backend(mBaaS)でiOSのプッシュ通知を実装してみた


ニフティで9/25より、モバイルアプリケーションのバックエンド機能を提供するニフティクラウドmobile backendのサービスが開始しました。

データストア、ファイルストア、会員管理、SNS連携の他にサーバー側の実装が面倒なプッシュ通知にも対応しています。早速プッシュ通知を使ってみたところ予想以上にラクだったため実装方法をメモします。

ニフティクラウドmobile backendとは?

ニフティが2013/9/25より提供を開始したクラウドサービスです。モバイルアプリに必要なサーバー側(バックエンド)の機能が利用可能で、自分でサーバー構築・サーバー側プログラムを作成する必要がありません。iOS、Android、JavaScript用にSDKも提供されているため開発者がモバイルアプリの開発に集中できます。

利用可能な主な機能は以下の通りです。

  • プッシュ通知
  • 会員管理・認証
  • 権限管理
  • データストア ⁄ ファイルストア
  • SNS連携

公式サイト
http://mb.cloud.nifty.com/

無料のBasicプランでもAPIリクエスト・プッシュ通知が200万回/月利用でき、基本ストレージも5GB使用できます。プランの主な比較表は以下の通りです。(公式サイトの料金・機能より抜粋)
nifty-mBaaS-price

iOSプッシュ通知をニフティクラウドmobile backendを使って実装するメリット

当サイトでは下記のエントリに自前でサーバーを用意してiOSのプッシュ通知を実装する方法を記載しました。正直なところ手順は長く複雑です。

自前でプッシュ通知用のサーバーを用意する場合は主に以下のものが必要になります。

  • プロバイダ証明書(*.p12形式を*.pem形式に変換したもの)
  • プロビジョニングプロファイル
  • ルート証明書
  • APNSと通信するためのプロバイダ(Apns-PHP等で実装)
  • サーバー側でデバイストークンを保持しておくための仕組み

ニフティクラウドmobile backendを使用する場合、以下の2つさえ用意すれば実装できてしまいます。ニフティクラウドmobile backend側でアプリの設定等は必要ですが、手順が簡単で実装時間を大幅に短縮できます。

  • プロバイダ証明書(*.p12形式のままでOK)
  • プロビジョニングプロファイル

iOSプッシュ通知をニフティクラウドmobile backendを使って実装する方法

アカウントを公式サイトのサインアップページより取得した後、すぐにアプリの作成が可能です。開発者向けドキュメントが充実しているため、大まかな手順を記載します。

以下、「ニフティクラウドmobile backend」は「ニフティmBaaS」と省略します。

ニフティmBaaSに新規アプリを作成し、SDKをダウンロード・インストール

ニフティmBaaSに新規アプリを作成し、iOS用のSDKと、依存フレームワーク・ライブラリをインストールします。公式サイトのクイックスタートガイドに詳細な手順が解説されています。

クイックスタート(iOS)
https://mbaas.nifcloud.com/doc/current/introduction/quickstart_ios.html

重要なのはニフティmBaaSに作成したアプリのAPIキーを、NCMB setApplicationKey:clientKey:で設定するところです。

プロバイダ証明書とプロビジョニングプロファイルの準備

プロバイダ証明書(*.p12形式)とプロビジョニングプロファイルは従来通り、Appleのデベロッパーサイトで作成・準備する必要があります。当サイトの下記エントリで詳細な手順を解説しているため参考にしてください。

iOSでプッシュ通知を実装する方法の超詳細まとめ(前編)

※上記エントリでは証明書を(*.pem)形式に変換していますが、ニフティmBaaSを使用する場合は変換する必要はありません。(*.p12形式のままでOK)

プロビジョニングプロファイルをダウンロード・インストールしたら、Xcodeで対象のプロビジョニングプロファイルを使用するよう設定しておきます。

iOSプログラムにリモート通知登録・デバイストークン取得処理を追加

iOSのプログラム側の実装です。最低限のプッシュ通知であれば下記2つの手順のみでOKです。

AppDelegate.mapplication:didFinishLaunchingWithOptions:メソッドにリモート通知登録処理を加えます。

[application registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge|
                                                     UIRemoteNotificationTypeAlert|
                                                     UIRemoteNotificationTypeSound)];

AppDelegate.mにデバイストークン取得用メソッドapplication:didRegisterForRemoteNotificationsWithDeviceToken:を追加します。ユーザがプッシュ通知を許可した時、ニフティクラウド側にデバイストークンが自動送信・保存されます。

- (void)application:(UIApplication *)application
didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
    NCMBInstallation *currentInstallation = [NCMBInstallation currentInstallation];
    [currentInstallation setDeviceTokenFromData:deviceToken];
    [currentInstallation save];
}

ニフティmBaaSに追加したアプリで、プッシュ通知を有効化

ニフティmBaaS側のコンソールで、アプリのプッシュ通知を有効化します。

アプリ設定→プッシュ通知を開きます。
ニフティmBaaS プッシュ通知設定
「プッシュ通知の許可」で「許可する」を選択し、「保存する」ボタンを押します。
プッシュ通知の許可
証明書(p12)で、作成しておいた証明書を選択し、アップロードします。アップロード完了すると下図のような画面になります。
証明書の設定

以上でプッシュ通知の準備は完了です。

プッシュ通知のテスト送信

実際にプッシュ通知を行ってみます。

デバイストークンをニフティmBaaSに送信

iOSアプリを実機で起動し、プッシュ通知をユーザが許可するとデバイストークンがニフティmBaaSに送信されます。送信されたデバイストークンはニフティmBaaSデータストアのinstallationクラスの中に格納されます。プッシュ通知の対象となるのはこのクラスに格納されたデバイスとなります。
デバイストークンの登録確認

新しいプッシュ通知を登録

ニフティmBaaSコンソールよりプッシュ通知→新しいプッシュ通知を開きます。
プッシュ通知の登録
メッセージにプッシュ通知するメッセージ内容を入力します。
プッシュ通知メッセージ内容入力
配信日時を設定します。すぐ配信する場合は「今すぐ配信」を選択します。また、「iOS端末に配信する」を選択します。デバイストークンがニフティmBaaSに正しく保存されている場合、「配信端末」欄に送信される端末数が表示されます。「プッシュ通知を作成する」ボタンを押すとデバイスにプッシュ通知が送信されます。
プッシュ通知の実施
プッシュ通知を受け取ったデバイスでは下記のように表示されます。問題なく通知できています。
プッシュ通知成功
その他に公式ドキュメントの「プッシュ通知の開封通知」の処理をiOS側プログラムで実装しておくと、プッシュ通知の開封率などの統計をニフティmBaaS側で閲覧することができる機能もあります。
プッシュ通知の統計

まとめ

今回はプッシュ通知機能だけ試しに使用してみましたが、実装が面倒なサーバー側の機能を簡単に使えるので個人・ビジネス問わずモバイルアプリ開発者にはとても助かるサービスだと感じました。開発の効率化を図るため、積極的に使っていきたいと思います。