Android 发送FCM消息时条件为否定
我正在订阅一个主题,它是我在Android中的应用程序版本Android 发送FCM消息时条件为否定,android,firebase,firebase-cloud-messaging,Android,Firebase,Firebase Cloud Messaging,我正在订阅一个主题,它是我在Android中的应用程序版本 FirebaseMessaging.getInstance().subscribeToTopic(APP_VERSION); 现在,每次启动更新时,我都必须取消订阅旧版本并订阅新版本,因此,如果我发送更新通知,只有老用户才能收到。相反,如果我只是否定一个版本就好了 "condition": "!'2.1.1' in topics", FCM中是否存在类似的内容?开箱即用主题不支持“未订阅xxx的人”之类的操作 但是,对于您的用例(向
FirebaseMessaging.getInstance().subscribeToTopic(APP_VERSION);
现在,每次启动更新时,我都必须取消订阅旧版本并订阅新版本,因此,如果我发送更新通知,只有老用户才能收到。相反,如果我只是否定一个版本就好了
"condition": "!'2.1.1' in topics",
FCM中是否存在类似的内容?开箱即用主题不支持“未订阅xxx的人”之类的操作 但是,对于您的用例(向尚未更新的用户发送通知),我建议使用Firebase通知(不要与FCM、Firebase云消息混淆),您可以找到文档 关键是,在firebase控制台中,您可以按应用程序版本筛选目标。请参见下面的屏幕截图。我自己在生产中多次测试过,效果非常好。
您只能根据用户是否订阅了某个主题来确定目标用户,而不能根据用户是否订阅了主题来确定目标用户 由于通配符匹配仅在Firebase通知(尚未存在公共API)中可用,并且控制台只能发送通知消息(如果应用程序不在前台,则确实由系统处理),因此您的选项仅限于解决方法 我能想到几个:
地图的结构中的应用程序版本。您可以使用Firebase数据库来实现这一点
onMessageReceived()
中禁止显示消息(如果他们已经有最新版本)嗯。。。事后看来,3似乎是一个相当干净的解决方案。您发送的次数过多,但系统可以处理,只要频率不太高,您的用户很可能不会受到太大影响。Firebase现在似乎支持此功能 条件表达式中最多可以包含五个主题,并且支持括号。支持的运算符:&&、| |、!。请注意!:
!(“主题”中的“TopicA”)
使用此表达式,未订阅TopicA的任何应用程序实例(包括未订阅任何主题的应用程序实例)都将接收该消息
Firebase console的唯一问题是,当应用程序位于后台时,通知会发送到设备系统托盘,无法对其进行自定义。我知道,您可以自定义标题和说明(我认为是声音),但实际上仅此而已。我相信他们会在未来几个月增加更多的定制,你有兴趣定制什么?应用程序图标和待定的意图。我希望用户直接访问Play Store,而不是我的应用程序。我找到了一个解决方法,而不是否定。我将更改版本号常量,并与通过FCM发送的版本号进行比较。我已经在继续使用解决方案3,如其他答案的注释中所述。这在版本firebase admin==5.0..0中不再起作用