Help us understand the problem. What is going on with this article?

プッシュ(リモート)通知(Apple Push Notification)の仕様

More than 5 years have passed since last update.

LocalおよびPush Notificationプログラミングガイドを読んで、気になった仕様をピックアップしてみました。iOSは詳しくないので間違いがあるかもしれません。

Terminology

単語 説明
ペイロード(通知ペイロード) システムがユーザに警告する方法に関する情報や、別途渡したカスタムデータなどが収容される.通知メッセージの正体.
アプリケーションデリゲート アプリケーションのイベントを処理するオブジェクト
プロバイダ サーバ側のアプリケーション(リモート通知をAPNに送信するサーバ)

ローカル通知との違い

  • ローカル通知の発生源はデバイス上のアプリ
  • プッシュ通知の発生源はリモートサーバ

プッシュ通知受信時の流れ

アプリがフォアグラウンドで起動している時の通知

  • アプリケーションデリゲートが通知を受ける

アプリがフォアグラウンドで起動していない時の通知

  • システムにより通知(警告、数字付きバッジアイコン、サウンド)が行われる
  • ユーザのクリックによりアプリケーションが起動
  • メソッドが呼び出されペイロードが渡される

通知の失敗

  • APNでは配信に失敗したデバイスのアプリケーションごとのリストが管理されている
  • 失敗が続いているデバイスを確認し、配信の停止ができる
  • 毎日定期的にフィードバックサーバに問い合わせて、デバイストークンのリストを取得するといい

バッジ

  • バッジの数字はアプリケーション固有のもので、どんな事柄の数を表しても構わない

プッシュ通知の利用方法

  • プッシュ通知による配信は保証されていないため、データ送信の目的でリモート通知メカニズムを使用してはいけない

オフラインのデバイスへの再送

  • APNsはプロバイダから受信した最後の通知を保持
  • APNsによって保持されている通知はデバイスがオンラインになったときに、再送される
  • オフラインの間に複数の通知が送られた場合、古い方から順に破棄
  • 長時間にわたってオフラインになると、保存していた通知も破棄

警告音の仕様

サポートフォーマット

  • リニアPCM
  • MA4(IMA/ADPCM)
  • µLaw
  • aLaw

再生時間の制限

  • 30秒未満### 登録の仕様

  • アプリケーションを起動するたびに登録する必要がある

  • 得られたデバイストークンは毎回プロバイダへ送信

通知ペイロードの制限

  • 通知ペイロードに許される最大サイズは256バイト
  • 上限を超える通知は拒否

参考URL

Localおよび Push Notificationプログラミングガイド
https://developer.apple.com/jp/devcenter/ios/library/documentation/RemoteNotificationsPG.pdf

iOSアプリケーション プログラミングガイド
https://developer.apple.com/jp/devcenter/ios/library/documentation/iPhoneAppProgrammingGuide.pdf

nyamage
Docker, Ruby, Swiftは趣味で触ってるだけです。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away