はじめに
とにかく最も簡単に、Push通知を出す手順をまとめる(iOS10版)
参考サイト
前提条件
Apple Developer Program に加入済みで、Admins の一員であること
https://developer.apple.com/account/#/people/
AWS コンソール へのログイン、SNS の操作が可能なこと
手順
証明書
-
CSR (証明書署名要求) を作成
Mac で「キーチェーンアクセス」を起動し、「証明書アシスタント」から「認証局に証明書を要求」を選択します。
「Apple Developer Program」に登録されているアカウント(メールアドレス)を指定します。
また、「通称」には分かり易い任意の名前をつけますが日本語はダメです(以降のAWSでエラーになるため)。
「ディスクに保存」します。あとで二回使用します。
App ID を作成
App ID を作成します。
「Explicit App ID」を選択し、明示的に Bundle ID を指定します。(ワイルドカードは不可)
「Push Notifications」 にチェックします。
https://developer.apple.com/account/ios/identifier/bundle
実機の開発機登録
まず、UDID を調べるために、デバイスとMacを接続し、iTunesを起動します。
入手したUDIDを、Devicesに登録します。
https://developer.apple.com/account/ios/device/
-
証明書作成
今回は、以下の二種類の証明書が必要です。- iOSアプリを作成するための証明書(iOS App Development)
- Push通知をするための証明書(Apple Push Notification service SSL)
https://developer.apple.com/account/ios/certificate/
それぞれ、Development(開発用) と Production(本番用) があります。
本記事では Development(開発用) を扱います。上記で生成した
- CSR(証明書署名要求)
- App ID
- Device
を指定すると、証明書が生成されます。証明書はMacにダウンロードし、キーチェーンアクセスに登録 (ダブルクリックでOK) しておきます。
- iOSアプリを作成するための証明書(iOS App Development)
Push通知用証明書のエクスポート(P12形式)
再びキーチェーンアクセスを起動し、上記で取り込んだPush通知用証明書を選択し、右クリックして「書き出す」を選択します。
「P12形式」を選択して保存します。(以降AWS設定で使用します)
cordova
-
$ npm install -g cordova
-
アプリ作成
create コマンド- 第一引数 : ディレクトリ名称
- 第二引数 : App ID 【重要】 (証明書の Bundle ID と一致のこと)
- 第三引数 : 表示名称
$ cordova create CordovaPushNotification jp.co.xxxxxxxx.CordovaPushNotification CordovaPushNotification $ cd CordovaPushNotification
-
$ cordova platform add ios
-
プラグイン 追加
SENDER_ID は Android用ですが、ここで指定しておかないとエラーになる。何でも良い。$ cordova plugin add cordova-plugin-console --save $ cordova plugin add phonegap-plugin-push --variable SENDER_ID=XXXXXXXX --save
プラグインについての詳細は、プラットフォームのサポートを参照して下さい。
-
プログラム修正
www/js/index.js に以下の二箇所を追記しますindex.jsonDeviceReady: function() { this.receivedEvent('deviceready'); this.initPushNotification(); // ← これ追加 },
index.js// Initialize push notification initPushNotification: function(){ var push = PushNotification.init({ "ios": {"alert": "true", "badge": "true", "sound": "true"} } ); push.on('registration', function(data) { // data.registrationId console.log(data); }); push.on('notification', function(data) { // data.message, // data.title, // data.count, // data.sound, // data.image, // data.additionalData }); push.on('error', function(e) { // e.message }); }
- 起動直後に、Push通知が使用可能であれば、'registration' が呼ばれる
- Push通知を受信時、'notification' が呼ばれる
-
Xcode 起動
$ cordova build ios $ open platforms/ios/CordovaPushNotification.xcodeproj
Xcode
bundle ID が正しければ、適切な証明書を自動で選択してくれているはずです。
以下 4箇所を Xcode上で設定します。
実機で実行し、Push通知用のID(registration ID)が取得できていれば成功です。
この値は以下で使用しますので、メモしておいて下さい。
AWS SNS
- AWS コンソールにログインし、SNS を選択します。
- Applications を選択し、「Create Platform application」を押下します。
-
Push通知用証明書を設定します
- 「Push notification platform」では、「Apple production」と「Apple development」がありますが、先に作成した証明書と同じ方(ここではdevelopment)を選択します。間違わないように。
- 「Push certificate type」では、「iOS push certificate」を選択。
- 「Choose file」で、先に作成した証明書をP12形式で書き出したファイルを指定します。
- パスワードを入力し、「Load credentials from file」を押下すれば、「Certificate」と「Private key」が自動で読み込まれます。
Endpointを作成します
作成したApplicationのARNをクリックすると、Endpoints登録画面に進みます。
先にメモしたPush通知用のID(registration ID)を「Device token」に設定します。
「User data」は任意の値を格納できます。
Push通知の実行
作成したEndpointを選択して、「Publish to endpoint」を押下
適当にメッセージを書いて、「Publish message」を押下すると、、、
おわりに
- AWS SNS と Cordova を使って Push通知 の雛形を作成しました。
- ちゃんとしたアプリにするためには、ログイン後に「Device token」をサーバに送信し、ログインユーザとの関連を管理して、SNSに登録する必要があります。
- 今後は、Cognito との連携を調査していきます。