首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从firebase云消息中获取所有订阅的主题

从firebase云消息中获取所有订阅的主题
EN

Stack Overflow用户
提问于 2016-06-23 17:39:08
回答 3查看 27.8K关注 0票数 48

使用新的FirebaseMessaging,可以通过以下方式轻松取消/订阅主题:

代码语言:javascript
复制
FirebaseMessaging.getInstance().subscribeToTopic();
FirebaseMessaging.getInstance().unsubscribeFromTopic();

但是,有没有办法获得当前安装订阅的所有主题?

EN

回答 3

Stack Overflow用户

发布于 2020-08-20 02:02:14

对于那些想要用命令行CURL测试它的人,请遵循下面我使用的语法:

代码语言:javascript
复制
#curl --location --request GET 'https://iid.googleapis.com/iid/info/yourFCMDeviceToken?details=true' \
--header 'Authorization: Bearer YourProject_CloudMessaging_ServerKey'

响应:

代码语言:javascript
复制
{
    applicationVersion: '4194309',
    application: 'com.domain.app',
    scope: '*',
    authorizedEntity: '913674269572',
    rel: { topics: { topicName: { addDate: '2020-08-19' } } },
    appSigner: 'ae7cbSomeHash23jsdfff34ac7ffd',
    platform: 'ANDROID'
} 
票数 7
EN

Stack Overflow用户

发布于 2020-12-15 15:00:07

从未尝试过编程。

但您可以通过转到firebase控制台->您的项目->云消息->新通知->目标->单击用户段旁边的主题选项卡只需单击消息主题文本框即可获得订阅主题的列表

票数 1
EN

Stack Overflow用户

发布于 2020-09-18 21:15:59

这个主题仍然是相关的,在iOS软件开发工具包中仍然没有相关的API。

如果您的目标是防止用户多次订阅同一主题,从而多次收到通知,例如,一个组中的单个评论,那么我的解决方案是使用UserDefaults的简单本地缓存。

非常简单:

代码语言:javascript
复制
    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是更保守的。

干杯。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37987821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档