尝试将Sinch合并到我的应用程序中,并且需要注销功能,因为我的应用程序将在同一设备上的不同用户之间共享。此刻,同一台设备还将接收对旧用户的呼叫。
我正在看这段代码
func logOutSinchUser() {
if let client = self._client {
client.stopListeningOnActiveConnection()
client.unregisterPushNotificationDeviceToken()
client.terminateGracefully()
}
self._client = nil
}
但是不确定在Appdelegate中如何以及在何处实现此目标吗?作为扩展?任何帮助将不胜感激!谢谢!
答案 0 :(得分:0)
在SINCH中注销不起作用!即使您以SINCH登出,该应用程序仍会接听电话!我找到了一个不是最好的解决方案,但是对我有用 在didReceiveIncomingPushWithPayload中,您需要从标题中获取remote_Id
func managedPush(_ managedPush: SINManagedPush!, didReceiveIncomingPushWithPayload payload: [AnyHashable : Any]!, forType pushType: String!) {
if pushType == "PKPushTypeVoIP" {
let result = SINPushHelper.queryPushNotificationPayload(payload)
if result?.isCall() != nil {
if let aHeaders = result?.call().headers {
callerIdz = aHeaders["to"] as? String
self.handleRemoteNotification(userInfo: payload as NSDictionary)
}
}
}
}//END
并在handleRemoteNotification中检查localUser(登录设备的用户)是否与remote_Id相同,如果需要显示呼叫通知,否则将忽略该通知!
func handleRemoteNotification(userInfo: NSDictionary) {
if _client.userId != callerIdz {
print("Not match")
return
} else {
let result = self._client.relayRemotePushNotification(userInfo as! [AnyHashable : Any])
if result!.isCall() {
print("handle call notification")
}
if result!.isCall() && result!.call().isCallCanceled{
self.presentMissedCallNotificationWithRemoteUserId(userId: result!.call()!.callId)
}
}
}//END