Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Firebase-在.delete()之后清除缓存订阅_Ios_Swift_Firebase_Firebase Cloud Messaging - Fatal编程技术网

Ios Firebase-在.delete()之后清除缓存订阅

Ios Firebase-在.delete()之后清除缓存订阅,ios,swift,firebase,firebase-cloud-messaging,Ios,Swift,Firebase,Firebase Cloud Messaging,当用户注销时,我执行以下操作: FIRInstanceID.instanceID().delete(handler: { (error) in }) 应该(?)使令牌无效并取消订阅所有主题 它可以工作,但是使用相同的设备登录并调用FIRInstanceID.instanceID().token()(从准备就绪时的通知中),我得到了相同的令牌(不是真正的问题,但出乎意料)。然而;订阅主题(例如登录时)似乎从上次登录时缓存在设备中,因此不会进行网络调用,这意味着令牌将不会与FCM端的任何主题关联。

当用户注销时,我执行以下操作:

FIRInstanceID.instanceID().delete(handler: { (error) in })
应该(?)使令牌无效并取消订阅所有主题

它可以工作,但是使用相同的设备登录并调用
FIRInstanceID.instanceID().token()
(从准备就绪时的通知中),我得到了相同的令牌(不是真正的问题,但出乎意料)。然而;订阅主题(例如登录时)似乎从上次登录时缓存在设备中,因此不会进行网络调用,这意味着令牌将不会与FCM端的任何主题关联。假设是同一个用户进行重新登录;他/她想要订阅的主题与之前相同
delete()

我可以通过查询
https://iid.googleapis.com/iid/info/
使用令牌:即使在我的应用程序中调用了
SubscribeToPic
,主题列表仍然为空。通常,当订阅多个主题时,这个调用会导致-5错误(这里描述),但什么也没有发生,这向我表明应用程序认为它已经订阅了主题,因此什么也不做


那么-如何在注销时取消订阅所有主题,并在登录时成功重新订阅?循环主题并取消订阅主题对我来说似乎有点不方便。

相反,您可以通过执行FiRMessaging.messaging.disconnect()来断开用户获取推送通知的连接
并在用户重新登录时连接用户

能否使用今天发布的最新SDK重试?(v3.13.0)哇,这两个错误都消失了:令牌从FCM中删除,在登录时更新(不仅仅是重新发布),重新订阅工作正常,-5错误消失了。也许用官方回复更新GitHub线程。这并不能真正解决订阅错误主题的问题(假设不同用户登录)。为了它的价值,我完全从话题上移开了。我现在一次推送1000个令牌。可能你能做的最好的事情是将订阅存储在用户节点中,当用户记录删除所有实例并检索保存在数据库中的主题并订阅它们时,delete方法就是这样做的。Disconnect不会。嘿,nickdnk你能告诉我instanceid.delete()到底是做什么的吗?它会使FCM上的设备令牌失效,这样你以后实例化FCM时就会得到一个新令牌(例如新用户)。