Appl Push Notification Service(APNS)の実装で結構はまったのでメモっとく
①全般
- リモート通知はシュミレータではサポートされていないので実機転送する必要がある。
- プロヴィジョニングプロファイルに含めるApp IDのBundle Identifierにワイルドカード(*)は使用出来ない。
- 作成したApp IDのConfigureでDevelopment Push SSL CertificateをEnabledにする必要がある。
- App IDを作成後、作成されたAppIDを選択しEditボタンを押したら、Push Notifications の Development SSL Certificate の Create certificateボタンをおしてcertificateする必要があります。
- 認証局に証明書を要求する際に「鍵ペア情報を指定」にチェックを入れておく。
- 「アプリケーションの有効な"aps-environment"エンタイトルメント文字列が見つかりません」ってエラーが発生したら使用しているプロビジョニングプロファイルでApple Push Notification serviceが扱えないってこと。
- Info.plistのBundle identifierはApp IDで指定した文字列に書き換える必要がある。
Releaseモードでビルドする。- APNSへの接続先urlは開発用(ssl://gateway.sandbox.push.apple.com:2195)とリリース用(ssl://gateway.push.apple.com:2195)がある。
- OKボタンのみ表示したい場合の例)'alert' => array('body' => 'aaa', 'action-loc-key' => '')
- デバイストークンは変更される可能性があるのでキャッシュしてプロバイダに渡してはいけません。常に、デバイストークンは必要になったときにその都度システムから取得します。by「LocalNotificationおよびPush Notificationプログラミングガイド」キャッシュはOSが勝手にやってます。
- 検証が不十分ではあるが設定にて「通知のスタイル:なし」「Appアイコンバッジ表示:OFF」「サウンド:OFF」の状態で
registerForRemoteNotificationTypesの応答を受信することができずアプリがフリーズする現象が確認されている。iOS7 + iPad mini retina
②パスワード不要のPEMファイルの作り方
予めaps.p12を作成しておく$ openssl pkcs12 -clcerts -nokeys -in aps.p12 -out aps_cert.pem
$ openssl pkcs12 -nocerts -in aps.p12 -out aps_key.pem
$ openssl rsa -in aps_key.pem -out aps_key_noenc.pem
$ cat aps_cert.pem aps_key_noenc.pem > aps_dev.pem
※Xcode 5 完全攻略にもっと簡単な方法が記述されています。
③ios8.0からデバイストークンの取得方法がかわりました。
④デバイストークンは16進数の文字列を使う。以下デバイストークンをNSDataから16進数文字列に変換するコード例
⑤クライアントがpush通知を受け取る状態は大きく分けて3パターン
◎クライアントがフォアグラウンドで実行されている場合。- application:didReceiveRemoteNotification:が呼び出される。
- application.applicationStateの値はUIApplicationStateActive
◎クライアントがバックグラウンドで起動されている場合にpush通知からクライアントを起動した場合。
- application:didReceiveRemoteNotification:が呼び出される。
- application.applicationStateの値はUIApplicationStateInactive
◎クライアントが起動されていない場合にpush通知からクライアントを起動した場合。
- application:didFinishLaunchingWithOptions:が呼び出される。
- NSDictionary *userInfo = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];でデータを受け取ることができる。
⑥アプリ内に情報が通知される、されない
1.アプリフォアグラウンド
通知される
2.アプリバックグラウンド
閉じる:通知されない
表示:通知される
OK:通知されない
3.アプリ未起動
閉じる:通知されない
表示:通知される
OK:通知されない
4.アプリフォアグラウンド+スリープ
OKボタンでない配置:通知される
OK:通知されない
5.アプリバックグラウンド+スリープ
OKボタンでない配置:アプリがフォアグラウンドへ遷移し通知される
OK:通知されない
6.アプリ未起動+スリープ
OKボタンでない配置:アプリが起動され通知される
OK:通知されない
0 件のコメント :
コメントを投稿