我正在订阅一个主题,这是我在Android中的应用程序版本。
FirebaseMessaging.getInstance().subscribeToTopic(APP_VERSION);
现在每次启动更新时,我都必须取消订阅旧版本并订阅新版本,因此如果我发送更新通知,则只有旧用户才能获得更新。相反,如果我只是否定一个版本就会很棒。
"condition": "!'2.1.1' in topics",
FCM中是否存在这样的内容?
答案 0 :(得分:4)
您只能根据用户是否订阅某个主题来定位用户,而不是他们不订阅。
由于通配符匹配仅适用于Firebase Notifications(公共API尚不存在),并且控制台只能发送通知消息(如果应用程序不在前台,确实由系统处理),选项仅限于解决方案。
我能想到的一些:
跟踪每个用户/设备ID在Map<Token, Version>
类似结构中安装的应用版本。您可以使用Firebase数据库。
枚举所有旧版本并定位带有通知的版本。
向所有人发送带有新版本通知的数据消息(通过Cloud Messaging API),然后禁止在onMessageReceived()
中显示消息,如果他们已经拥有最新版本。
答案 1 :(得分:2)
开箱即用的主题不支持“未订阅xxx的人”等操作。
但是对于您的用例(向未更新的用户发送通知),我建议使用Firebase通知(不要与FCM,firebase云消息混淆),您可以找到文档here。< / p>
关键是,在firebase控制台中,您可以按应用版本过滤目标。请参阅下面particular part of the doc的屏幕截图。我自己在生产中多次测试它并且它很有效。
答案 2 :(得分:2)
现在看起来Firebase支持这个! Firebase send-message
您最多可以在条件表达式中包含五个主题,并且支持括号。支持的运算符:&amp;&amp;,|| ,!请注意!:
的用法
!('TopicA' in topics)
使用此表达式,任何未订阅TopicA的应用程序实例(包括未订阅任何主题的应用程序实例)都会收到该消息。