Remote Notification の組み込み

Remote Notification の使い方

Remote Notification のための証明書の準備

「アプリケーション詳細」 > 「リモート通知設定」をクリックし、「APN設定」タブを選択して下さい。

Sandbox 用と本番用のリモート SSL 証明書をアップロードすることができます。アップロードするファイルは .pem ファイルとなります。 .pem ファイルの作成方法につきましては下記を参考にされるか、こちら(日本語) をご確認ください

  1. iOS Dev Center の iOS Provisioning Portal へアクセスします。 
  2. 左側のメニューより、App IDs をクリックします。
  3. 既にアプリケーションを作成している場合には、対象の App ID (jp.mobage.apple.g120XXXXX この形式に従ったもの) の「Configure」ボタンをクリックします。新規にアプリケーションを作成する場合には、右上の New App ID をクリックして、新規App IDを作成してください。 
  4. 画面中段あたりの Enable for Apple Push Notification service をチェックします。(新規App ID作成につきまして、詳しくは iTunes Connect へのアップロード方法をご確認ください)
  5. Sandbox用は Development Push SSL Certificate の「Create Certificate」ボタンをクリックします。本番用の場合は Production Push SSL Certificate の「Configure」ボタンをクリックします。 クリックすると、Apple Push Notification service SSL Certificate Assistant が起動します。 
  6. キーチェーンアクセスを起動し、以下の手順に従って CertificateSigningRequest.certSignningRequest を作成します。 
    1. 上部メニューバーより、\[キーチェーンアクセス\]→\[証明アシスタント\]→\[認証局に証明書を要求\]をクリックします。  
    2. \[ユーザのメールアドレス\]と\[通称\]を入力、\[要求の処理\]に「ディスクの保存」を選択し、「続ける」ボタンをクリックします。(CAのメールアドレスと、鍵ペア情報を指定のチェックボックスは空で結構です)  
    3. 任意の保存先を選び、「保存」ボタンをクリックして CertificateSigningRequest.certSignningRequest を保存します。 
  7. Apple Push Notification service SSL Certificate Assistant に戻り、「Continue」ボタンをクリックします。 
  8. Submit Certificate Signing Request 画面へ遷移しますので、「ファイルを選択」ボタンをクリックし、先程作成した CertificateSigningRequest.certSignningRequest を選択します。 
  9. Your APNs SSL Certificate has been generated. と表示されますので、「Continue」ボタンをクリックします。 
  10. 「Download」ボタンをクリックすると、証明書がダウンロードされます。ダウンロード後は右下の「Done」ボタンをクリックしてください。Push SSL Certificate の Status が Enabled になっていることを確認してください。 
  11. ダウンロードした証明書をダブルクリックして、キーチェーンに登録します。 
  12. キーチェーンアクセスの左下の「分類」より「証明書」を選択、登録した Apple Development IOS Push Servicesを選択し、メニューバーより、\[ファイル\]→\[書き出す\]で任意の場所に「個人情報交換ファイル(p12)」を保存します。書き出す際には任意のパスワードの設定が必要です。 
  13. ターミナルから以下のコマンドで、「個人情報交換ファイル(p12)」を.pemファイルに変換します。

上記で作成した.pemファイルを、「Upload SSL Certificate for Sandbox」ボタンをクリックしてアップロードします。Sandbox 用は Development Push SSL Certificate 、本番用は Production Push SSL Certificate をアップロードします。正常にアップロードされると有効期間が表示されます。 「利用状況(Sandbox用)」の「利用する」を選択します。

Remote Notification の実装

Remote Notification 受信の登録をするために、AppDelegate.m に以下の import 文を追記します。

受信の登録のために、以下のメソッドを追記します。

Remote Notification を受け取るために、AppDelegate のクラスに以下を追記します。

Remote Notification を組み込んだ後の AppDelegate.m は以下のようになります。

Remote Notification のハンドリング

Remote Notification の通知内容を取得するためには、ケースごとに実装方法が異なります。以下を参考に実装してください。

アプリケーションがフォアグラウンドの場合

アプリケーションがフォアグラウンドの場合は、通知内容が didReceiveRemoteNotification に通知されます。OS の通知領域には通知されません。フォアグラウンドの場合は、UIApplicationState が UIApplicationStateActive となっています。

アプリケーションがバックグラウンドの場合

端末の通知領域にメッセージが表示されますので、メッセージをタップすると、アプリケーションがフォアグラウンドになります。フォアグラウンドになった時に、通知内容が didReceiveRemoteNotification へ通知されます。バックグラウンドの場合は、UIApplicationState が UIApplicationStateInactive となっています。

アプリケーションが起動していない場合

端末の通知領域にメッセージが表示されますので、メッセージをタップするとアプリケーションが起動します。
アプリケーション起動時に、AppDelegate クラス内の didFinishLaunchingWithOptions 内で以下のコードを呼び出すことで、通知内容を取得できます。

[launchOptions objectForKey:@"UIApplicationLaunchOptionsRemoteNotificationKey"]

 

Remote Notification の送信テスト

Mobage Developers Japan より、リモート通知予約機能からリモート通知の送信を試すことができます。以下のドキュメントに従って、予約してみてください。

https://docs.mobage.com/display/JPSA/How+to+use+the+Remote+Notificatio+Reservation_ShellApp

Shell App SDK for iOS で didReceiveRemoteNotification に通知される Payload について

Native iOS でdidReceiveRemoteNotificationに通知される内容は以下のようになります。コード内で適宜処理して頂けるようお願いします。

Type

Name

必須

説明

{Object}

aps

必須

iOS のリモート通知機能にデフォルトで設定されたオブジェクトです

{String}

aps.alert

必須

RemoteNotification.message

{String}

aps.sound

Optional

RemoteNotification.payload.sound

{Number}

aps.badge

Optional

RemoteNotification.payload.badge

{Array}

x

必須

Mobage のための拡張フィールドです

{Number}

x[0]

必須

Flags describing the notification. (?1).

{String}

x[1]

必須

RemoteNotification.id. base64 encoded UUID.

{String}

x[2]

必須

RemoteNotification.senderId

{Object}

x[3]

必須

RemoteNotification.payload.extras

{Number}

x[4]

必須

UNIX timestamp of RemoteNotification.published

 

 

更新履歴

  • 2015/02/05
    • 新規作成
 

 

 

 

PREVIOUS

テンプレートの利用による Shell App SDK for iOS の組み込み

NEXT

In App Purchase の組み込み