使用新的FirebaseMessaging,可以通过以下方式轻松取消/订阅主题:
FirebaseMessaging.getInstance().subscribeToTopic();
FirebaseMessaging.getInstance().unsubscribeFromTopic();
但是,有没有办法获得当前安装订阅的所有主题?
发布于 2020-08-20 02:02:14
对于那些想要用命令行CURL测试它的人,请遵循下面我使用的语法:
#curl --location --request GET 'https://iid.googleapis.com/iid/info/yourFCMDeviceToken?details=true' \
--header 'Authorization: Bearer YourProject_CloudMessaging_ServerKey'
响应:
{
applicationVersion: '4194309',
application: 'com.domain.app',
scope: '*',
authorizedEntity: '913674269572',
rel: { topics: { topicName: { addDate: '2020-08-19' } } },
appSigner: 'ae7cbSomeHash23jsdfff34ac7ffd',
platform: 'ANDROID'
}
发布于 2020-12-15 15:00:07
从未尝试过编程。
但您可以通过转到firebase控制台->您的项目->云消息->新通知->目标->单击用户段旁边的主题选项卡只需单击消息主题文本框即可获得订阅主题的列表
发布于 2020-09-18 21:15:59
这个主题仍然是相关的,在iOS软件开发工具包中仍然没有相关的API。
如果您的目标是防止用户多次订阅同一主题,从而多次收到通知,例如,一个组中的单个评论,那么我的解决方案是使用UserDefaults的简单本地缓存。
非常简单:
func subscribeTo(topic: String){
// first check that the user isn't already
// subscribed, or they get multiple notifications
let localFlag = UserDefaults.standard.bool(forKey: topic)
if localFlag == true {
print("user already subscribed to topic: \(topic)")
return
}
print("attempting to subscribe user to topic: \(topic)")
// Subscribe to comet chat push notifications through Firebase
Messaging.messaging().subscribe(toTopic: topic) { error in
if error == nil {
print("subscribed CometChat user to topic: \(topic)")
// set local flag as "already subbed"
UserDefaults.standard.setValue(true, forKey: topic)
return
}
print("attempt to subscribe CometChat user to topic \(topic) failed: \(error?.localizedDescription ?? "(no error provided)")")
}
}
我的应用程序流让一个用户登录,然后自动获得与该用户关联的主题列表,并在每次启动时自动订阅该主题。
这样做的原因是在很大程度上保证了用户会收到通知。
流程:如果topic ==为真,则用户启动app-> topic retrieved> iterate & pass topic to subscribe func ->块-> pass if topic != true
当然,在取消订阅时,我们将nil
分配给主题键处的本地布尔值。
取消订阅总是成功的,没有这样的阻塞/检查,因为当用户不想要通知时,更好的UX是更保守的。
干杯。
https://stackoverflow.com/questions/37987821
复制相似问题