iOS8 系で強制終了したアプリ向けのプッシュ通知を受け取る方法
世のアプリケーションでは表題のような動作をしているものが色々と存在します。
しかし、自社での開発中に上の問題が発生したのでメモとして残しておきます。
構成
https://developers.google.com/cloud-messaging/ios/start
上記サイトのサンプルを元に動かしました。
GCM -> APNs -> 端末という流れになります。
症状
アプリケーションが起動中、バックグラウンド、OSにより終了された場合のいずれもプッシュ通知を受け取れるが、ユーザが強制終了した場合のみプッシュ通知が飛んでこない。
対策
送信側のコードで対策します。
GcmServerDemo/MasterViewController.swift を開き、以下の箇所を直します。
Before
func getMessage(to: String) -> NSDictionary { // [START notification_format] return ["to": to, "notification": ["body": "Hello from GCM", "content_available" : true]] // [END notification_format] }
After
func getMessage(to: String) -> NSDictionary { // [START notification_format] return ["to": to, "notification": ["body": "Hello from GCM", "content_available" : true], "priority": "high"] // [END notification_format] }
雑感
実際にこれでプッシュ通知は届くようになったのですが、なぜなのかと聞かれるとさっぱり分かりません。
ただ、今回のケースではこれで解決したので一応メモとして残しておきます。
参考までに plist に Required background modes の設定などせずとも動作しました。