注销时取消订阅所有订阅#Quickblox APNS & APNS.VOIP

Posted

技术标签:

【中文标题】注销时取消订阅所有订阅#Quickblox APNS & APNS.VOIP【英文标题】:Unsubscribe all subscriptions on logout #Quickblox APNS & APNS.VOIP 【发布时间】:2020-10-07 11:18:06 【问题描述】:

我正在尝试在 iOS swift Quickblox 项目中在注销时取消订阅订阅APNS & APNS.VOIP。它只退订其中一个,任何人都可以指导我。

这是我的注销代码。

@objc func didTapLogout(_ sender: UIBarButtonItem) 
        if QBChat.instance.isConnected == false 
            SVProgressHUD.showError(withStatus: "Error")
            return
        
        SVProgressHUD.show(withStatus: "SA_STR_LOGOUTING".localized)
        SVProgressHUD.setDefaultMaskType(.clear)
        
        guard let identifierForVendor = UIDevice.current.identifierForVendor else 
            return
        
        let uuidString = identifierForVendor.uuidString
        #if targetEnvironment(simulator)
        disconnectUser()
        #else
        QBRequest.subscriptions(successBlock:  (response, subscriptions) in
            if let subscriptions = subscriptions 
                for subscription in subscriptions 
                    if let subscriptionsUIUD = subscriptions.first?.deviceUDID,
                        subscriptionsUIUD == uuidString,
                        subscription.notificationChannel == .APNS 
                        self.unregisterSubscription(forUniqueDeviceIdentifier: uuidString)
                        return
                    
                
            
            self.disconnectUser()
            
        )  response in
            if response.status.rawValue == 404 
                self.disconnectUser()
            
        
        #endif
    
    
    private func unregisterSubscription(forUniqueDeviceIdentifier uuidString: String) 
        QBRequest.unregisterSubscription(forUniqueDeviceIdentifier: uuidString, successBlock:  response in
            self.disconnectUser()
        , errorBlock:  error in
            if let error = error.error 
                SVProgressHUD.showError(withStatus: error.localizedDescription)
                return
            
            SVProgressHUD.dismiss()
        )
    

环境详情

信息价值 ios 版本 13.0 Quickblox iOS SDK 版本 2.17.4 QuickbloxWebRTC SDK 版本 2.7.4 Xcode 版本,例如Xcode 12.0

【问题讨论】:

【参考方案1】:

确保您在删除订阅时已连接到聊天,并且仅在调用所有取消订阅完成时才退出。您还可以在应用中简单地取消订阅远程通知和 PushKit。

【讨论】:

以上是关于注销时取消订阅所有订阅#Quickblox APNS & APNS.VOIP的主要内容,如果未能解决你的问题,请参考以下文章

用户注销时无法取消订阅 eventSource

IBM Workilght 6.0 - 注销后无法订阅推送通知

注销后权限缺失或权限不足错误

使用 APN 订阅主题

Android&Quickblox (api 3.2):订阅推送通知

xmpp strophe 用户注销时接收通知订阅