Выход пользователя Sinch - PullRequest
       7

Выход пользователя Sinch

0 голосов
/ 24 января 2019

Попытка включить Sinch в мое приложение, и мне нужна функция выхода из системы, потому что мое приложение будет доступно для разных пользователей на одном устройстве. В настоящее время это же устройство будет принимать звонки, сделанные старым пользователям.

Я смотрел на этот бит кода

func logOutSinchUser() {
    if let client = self._client {
        client.stopListeningOnActiveConnection()
        client.unregisterPushNotificationDeviceToken()
        client.terminateGracefully()
    }
    self._client = nil
}

Но не знаете, как и где это реализовать ... в Appdelegate? Как расширение? Любая помощь будет оценена! Спасибо!

1 Ответ

0 голосов
/ 07 февраля 2019

Выйти в 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
...