问题描述
我试图在 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。