shouldSendPushNotifications:
同じデータ提供 (同じプッシュ データとプッシュ ペイロード) で複数回呼び出される問題は、そのような各ペアが特定のユーザー ID の 1 つのアプリのインストールを表している可能性があることに起因します。したがって、同じデバイスでアプリを何度もアンインストール/インストールし、異なるオプションを設定した場合SINClient
(たとえばsetSupportPushNotifications
、NO と YES)、それが問題の一部である可能性があります。Sinch ではその解決策に取り組んでいますが、それにより、同一の情報を持つコールバックがなくなります。
shouldSendPushNotifications:
他のクライアントが呼び出しへの応答を開始したにもかかわらず、呼び出されていることがわかる場合があるという事実は、プッシュ メカニズムが、特定の時間枠内に他のクライアントによる応答/確認の欠如に基づいてトリガーされることを意図しているためです。他のクライアントがバックグラウンドにあり、VoIP モードが有効になっている場合は、できるだけ早く ACK を送信するため、プッシュ メカニズムがトリガーされません。しかし、その ACK がタイム ウィンドウで受信されない場合、プッシュ メカニズムがトリガーされます。したがって、プッシュ メカニズムは、VoIP モードと組み合わせて使用すると、ベスト エフォート型のフォールバック メカニズムと見なすことができます。あなたの場合、前のセクションで説明したアプリごとのインストール機能に関連していると思われますが、これを改善するために取り組んでいます.
それでも、プッシュ メカニズムは、ネットワーク状態が異常に遅い場合や、別のクライアントからの ACK が「予想される最悪のケース」(現在は 4 秒) よりも長くかかる場合にもトリガーされる可能性があるため、アプリで処理する必要があります。 didReceiveIncomingCall-callback を受信した直後でも、リモート プッシュ通知を受信する場合。ここで重要なのは、実際には 2 つの異なる呼び出しではなく、SINNotificationResult
とを使用-[SINCallNotificationResult callId]
して同じ呼び出しであることを識別できることです。たとえば、最初にdidReceiveIncomingCall:
-callback を受け取り、最終的に を使用する-[SINClient relayLocalNotification:]
と、プッシュ通知を受け取って ] に渡した直後に、-[SINClient relayRemotePushNotificationPayload:
両方の「通知結果」に同じものが含まれていることがわかり、それcallId
を使用して UI を適切に管理できます。
Sinch SDK に関する貴重なフィードバックをお寄せいただきありがとうございます。Sinch では、プッシュ通知とローカル通知全般の処理を簡素化する方法を検討しています。