jubilee

Programing, Books and more...

プッシュ通知の誤解

アプリがバックグラウンド状態で、サーバーからプッシュ通知を受信した際の動作で、自分が誤解していたこと。
実機繋げてデバッグ実行中に、バックグラウンドにいる状態では処理が動いている形跡がないので、おかしいな〜と。
Apple公式の「LocalおよびPush Notificationプログラミングガイド」を確認したら、P14に記載されてた。

誤り

  1. サーバーからプッシュ通知を受信
  2. アプリが通知を受信し、アプリがバックグラウンドでアイコンバッジ表示や受信を契機にした処理を行う(自分でコーディング)

正しくは

  1. サーバーからプッシュ通知を受信
  2. OSが通知を受信し、メッセージを表示(アイコンバッジはサーバーからの指示でOSが表示)
  3. ユーザーがアプリを起動し、受け取った通知をもとに処理を行う(自分でコーディング)

注意

  • アプリが完全に終了している時で、通知受信後にメッセージセンターからではなく、アプリのアイコンから起動した場合は、受信データを受け取ることができない
  • 通知センターから起動とアプリアイコンから起動では、動作がちがう
  • バックグラウンドで処理をしたい場合は、サーバーからの通知ペイロードに content-available=1 を含むこと
  • TARGETS – Background Models – Remote notifications, (Background fetch)にチェック
  • UIRemoteNotificationTypeNewsstandContentAvailability指定するとバッジがでない

参考