web-dev-qa-db-ja.com

バックグラウンドからアプリを起動するときのVoIPプッシュと通常のプッシュの違い

通常のプッシュ通知に使用するメッセージングサービスがあります。たとえば、あるユーザーがメッセージを送信すると、他のユーザーはそのメッセージとともにプッシュ通知を受信します。電話がwifiと3g/4gに接続されていて、アプリが強制終了(および画面がロック)されている場合、通知を受信します。デバイスがWi-Fiのみに接続されていて、アプリが強制終了される(および画面がロックされる)場合、通知は受信されません。

私の仮定では、バッテリーを節約するために、一定時間後にデバイスが無線LANから切断されるため、プッシュ通知が受信されないのです。

しかし、VOIP Push通知を使用する場合、状況は異なります。アプリが強制終了され、デバイスがWi-Fiに接続されている(および画面がロックされている)場合でも、通知は受信されます。これはどういう意味ですか? Wi-Fiから切断された場合、電話はこの通知をどのように受信しますか?

ここに何が欠けていますか?

16
MegaManX

さらに、Sivajee Battinaの答えに追加するために、これは guidelines で読むことができます:

PushKitを使用してVoIPプッシュを受信することには、多くの利点があります。

  • デバイスは、VoIPプッシュが発生したときにのみ起動され、エネルギーを節約します。
  • アプリがアクションを実行する前にユーザーが応答する必要がある標準のプッシュ通知とは異なり、VoIPプッシュは処理のためにアプリに直接送られます。
  • VoIPプッシュは優先度の高い通知と見なされ、遅延なく配信されます。

  • VoIPプッシュには、標準のプッシュ通知で提供されるデータよりも多くのデータを含めることができます。

  • VoIPプッシュの受信時にアプリが実行されていない場合、アプリは自動的に再起動されます。

  • アプリがバックグラウンドで動作している場合でも、アプリにはプッシュを処理するためのランタイムが与えられます。

したがって、3番目のポイントは、特定の状況では標準のプッシュ通知が遅延する可能性があることを確認しますが、VoIPプッシュ通知は常に即座に配信されます。

また、これを見てください question 標準のプッシュ通知が遅延またはドロップされる理由.

7
neural5torm

あなたはこれでほとんど正しいです-これがvoIPの仕組みです。 Apple Docsからの抜粋:

これまで、VoIPアプリは、着信通話やその他のデータを受信するために、サーバーとの永続的なネットワーク接続を維持する必要がありました。これは、アプリが使用されていないときでも接続を維持するために、アプリとサーバー間で定期的にメッセージを送受信する複雑なコードを書くことを意味しました。この技術により、デバイスが頻繁に起動し、エネルギーが無駄になりました。また、ユーザーがVoIPアプリを終了すると、サーバーからの呼び出しを受信できなくなることも意味していました。

開発者は永続的な接続の代わりに、PushKitフレームワークを使用する必要があります。これは、アプリがリモートサーバーからプッシュ(データが利用可能になったときの通知)を受信できるAPIです。プッシュが受信されるたびに、アプリはアクションに対して呼び出されます。たとえば、VoIPアプリは、コールを受信するとアラートを表示し、コールを受け入れるか拒否するかのオプションを提供できます。ユーザーが承諾することを決定した場合、コールを開始するための事前の手順を開始することもできます。

7
Sivajee Battina