Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/103.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Sinch-shouldSendPushNotifications:当收件人尝试接听来自本地通知的呼叫时调用_Ios_Sinch - Fatal编程技术网

Ios Sinch-shouldSendPushNotifications:当收件人尝试接听来自本地通知的呼叫时调用

Ios Sinch-shouldSendPushNotifications:当收件人尝试接听来自本地通知的呼叫时调用,ios,sinch,Ios,Sinch,我已经实现了基于推送的调用,它工作得很好,但是它似乎完全破坏了后台调用 当在后台使用应用程序但未关闭时呼叫其他用户时,他们会收到预期的本地通知 从该通知启动应用程序时,在中继本地通知后,调用方应用程序立即尝试通过shouldSendPushNotifications启动推送调用:-疯狂的是,该方法正在快速连续调用10次 这将在接收者身上进行-现在我们有两个电话要处理,这会稍微破坏我的UI。我已经对它进行了黑客攻击,以阻止我的应用程序崩溃,现在我检查客户端是否已经初始化(将是在处理本地通知时,而不

我已经实现了基于推送的调用,它工作得很好,但是它似乎完全破坏了后台调用

当在后台使用应用程序但未关闭时呼叫其他用户时,他们会收到预期的本地通知

从该通知启动应用程序时,在中继本地通知后,调用方应用程序立即尝试通过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]后不久