Ios Sinch-shouldSendPushNotifications:当收件人尝试接听来自本地通知的呼叫时调用
我已经实现了基于推送的调用,它工作得很好,但是它似乎完全破坏了后台调用 当在后台使用应用程序但未关闭时呼叫其他用户时,他们会收到预期的本地通知 从该通知启动应用程序时,在中继本地通知后,调用方应用程序立即尝试通过shouldSendPushNotifications启动推送调用:-疯狂的是,该方法正在快速连续调用10次 这将在接收者身上进行-现在我们有两个电话要处理,这会稍微破坏我的UI。我已经对它进行了黑客攻击,以阻止我的应用程序崩溃,现在我检查客户端是否已经初始化(将是在处理本地通知时,而不是在处理推送时),这似乎解决了这个问题Ios Sinch-shouldSendPushNotifications:当收件人尝试接听来自本地通知的呼叫时调用,ios,sinch,Ios,Sinch,我已经实现了基于推送的调用,它工作得很好,但是它似乎完全破坏了后台调用 当在后台使用应用程序但未关闭时呼叫其他用户时,他们会收到预期的本地通知 从该通知启动应用程序时,在中继本地通知后,调用方应用程序立即尝试通过shouldSendPushNotifications启动推送调用:-疯狂的是,该方法正在快速连续调用10次 这将在接收者身上进行-现在我们有两个电话要处理,这会稍微破坏我的UI。我已经对它进行了黑客攻击,以阻止我的应用程序崩溃,现在我检查客户端是否已经初始化(将是在处理本地通知时,而不
有人知道为什么会这样吗?只有在Sinch客户端中同时启用了push和local时才会发生这种情况。应该发送PushNotifications:的问题被多次调用,可能使用相同的数据提供(相同的push数据和push负载)源于每一对可能代表一个特定用户id的一个应用程序安装。因此,如果您在同一设备上多次卸载/安装该应用程序,并且在
SINClient
上设置了不同的选项(例如,setSupportPushNotifications
,然后选择“是”),这可能是该问题的一部分。虽然我们在Sinch正在研究解决方案,但这将消除具有相同信息的回调
您可能会看到,即使其他客户端已开始应答呼叫,仍会调用shouldSendPushNotifications:
,这是因为推送机制是基于其他客户端在特定时间窗口内没有响应/确认而触发的。如果另一个客户端在后台,但启用了VoIP模式,它将尽快发送ACK,这将防止触发推送机制。但是,如果没有通过时间窗口接收到该ACK,则触发推送机制。因此,当推送机制与VoIP模式结合使用时,可以认为是一种尽力而为的回退机制。虽然在您的案例中,我怀疑与上一节中描述的每个应用程序的安装功能有关,我们正在努力改进这一点
尽管如此,由于推送机制也可能在例如网络速度异常缓慢的情况下触发,并且来自另一个客户端的ACK比“预期最坏情况”(当前为4秒)所需的时间更长,您的应用程序必须处理接收远程推送通知的情况,即使在已经接收到didReceiveIncomingCall回调后不久。这里的关键是它实际上不是两个不同的调用,但是您可以使用SINNotificationResult
和-[SINCallNotificationResult callId]
来确定它是同一个调用。例如,如果您首先收到一个didReceiveIncomingCall:
-回调,并最终使用-[SINClient relayLocalNotification:
,然后在收到推送通知并将其传递给-[SINClient relayRemotePushNotificationPayload:
]后不久,您将看到这两个“通知结果”将包含相同的callId
,您可以使用它适当地管理UI
感谢您对Sinch SDK的宝贵反馈,Sinch将研究简化推送通知和本地通知处理的方法。应该发送推送通知的问题:被多次调用,可能使用相同的数据提供(相同的推送数据和推送负载)源于每一对可能代表一个特定用户id的一个应用程序安装。因此,如果您在同一设备上多次卸载/安装该应用程序,并且在
SINClient
上设置了不同的选项(例如,setSupportPushNotifications
,然后选择“是”),这可能是该问题的一部分。虽然我们在Sinch正在研究解决方案,但这将消除具有相同信息的回调
您可能会看到,即使其他客户端已开始应答呼叫,仍会调用shouldSendPushNotifications:
,这是因为推送机制是基于其他客户端在特定时间窗口内没有响应/确认而触发的。如果另一个客户端在后台,但启用了VoIP模式,它将尽快发送ACK,这将防止触发推送机制。但是,如果没有通过时间窗口接收到该ACK,则触发推送机制。因此,当推送机制与VoIP模式结合使用时,可以认为是一种尽力而为的回退机制。虽然在您的案例中,我怀疑与上一节中描述的每个应用程序的安装功能有关,我们正在努力改进这一点
尽管如此,由于推送机制也可能在例如网络速度异常缓慢的情况下触发,并且来自另一个客户端的ACK比“预期最坏情况”(当前为4秒)所需的时间更长,您的应用程序必须处理接收远程推送通知的情况,即使在已经接收到didReceiveIncomingCall回调后不久。这里的关键是它实际上不是两个不同的调用,但是您可以使用SINNotificationResult
和-[SINCallNotificationResult callId]
来确定它是同一个调用。例如,如果您首先收到一个didReceiveIncomingCall:
-回调,并最终使用-[SINClient relayLocalNotification:
,那么在您收到推送通知并将其传递给-[SINClient relayRemotePushNotificationPay]后不久