web-dev-qa-db-ja.com

サイレントプッシュ通知とは何ですか?デバイスはいつそれを受け取りますか?

通知トレイのローカル通知をクリアしたい。これを実装するには、サイレントプッシュ通知を使用することを考えています。だから、デバイスがそれを受け取ったときと、それで何ができるかを確認したいですか?

49
Suhas Patil

ユーザーに通知することなく、新しいコンテンツをアプリケーションに通知するために使用できます。通知アラートを表示する代わりに、アプリケーションはバックグラウンドで起動され(ユーザーが強制終了した場合、iOSは自動的にアプリを起動しません) application:didReceiveRemoteNotification:fetchCompletionHandler: が呼び出されます。その後、ユーザーに対して情報を透過的に処理する機会があります。

  • いくつかのコンテンツをダウンロードする
  • いくつかの要素を同期し、
  • ユーザーがアプリケーションを開いたときに、アプリケーション内でユーザーに直接通知する

時間は30秒に制限されていることに注意してください。

サイレント通知を構成するには

サイレントリモート通知をサポートするには、Info.plistファイルのUIBackgroundModes配列にremote-notification値を追加します。この配列の詳細については、UIBackgroundModesを参照してください。

<key>UIBackgroundModes</key>
<array>
    <string>remote-notification</string>
</array>

サイレント通知の構成

Aps辞書には、content-availableプロパティを含めることもできます。値が1のcontent-availableプロパティは、リモート通知をサイレント通知として機能させます。サイレント通知が到着すると、iOSはアプリをバックグラウンドで起動し、サーバーから新しいデータを取得したり、バックグラウンド情報処理を実行したりできるようにします。ユーザーは、サイレント通知から生じる新しい情報または変更された情報については知らされませんが、次回アプリを開いたときにそれについて知ることができます。

サイレント通知の場合は、aps辞書にアラート、サウンド、またはバッジのペイロードがないことを確認してください。このガイダンスに従わない場合、誤って設定された通知は調整され、バックグラウンドでアプリに配信されず、サイレントではなくユーザーに表示される可能性があります

83
Pierre Oleo

サイレントプッシュ通知を送信し、アプリが中断されている場合、システムはメソッドを呼び出す前にアプリを起動または起動し、バックグラウンド実行状態にしますが、アプリがユーザーによって手動で強制終了された場合、アプリは起動しません。

application:didReceiveRemoteNotification:fetchCompletionHandler:

このメソッドは、サイレントプッシュ通知を送信し、ダウンロードまたはその他の種類の操作を実行し、指定された完了ハンドラーブロックを呼び出すためにアプリに最大30秒の実時間がある場合に呼び出されます。ハンドラーが時間内に呼び出されない場合、アプリは中断されます。

サイレントプッシュ通知を送信する場合、通知ペイロードは次のようになります。

{
    "aps" = {
        "content-available" : 1,
        "sound" : ""
    };
    // You can add custom key-value pair here...
}
23
Arpit