在注销#Quickblox APNS和APNS.VOIP时退订所有订阅

问题描述

我试图在 iOS 快速 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

解决方法

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