在发送FCM消息的情况下否定

我正在订阅一个主题,这是我在Android的应用程序版本。

FirebaseMessaging.getInstance().subscribeToTopic(APP_VERSION); 

现在,每次启动更新时,我都必须退订旧版本,订阅新版本,因此如果发送更新通知,只有老用户才能获得。 相反,如果我只是否定一个版本,这将是非常好的。

 "condition": "!'2.1.1' in topics", 

FCM中是否存在这样的情况?

  • Firebase权限被拒绝错误
  • FCM不会将通知传递给所有主题订阅者(数据通知)
  • Android firebase auth状态监听器多次调用
  • 在Android中将地图转换为捆绑
  • 有没有办法为2个具有不同包名称的应用程序提供1个Firebase数据库?
  • 如何通过方法返回dataSnapshot值?
  • Firebase控制台可以发送数据有效负载?
  • 将ProGuard映射file upload到Firebase
  • 您只能根据用户是否订阅了一个主题来定位用户,而不是他们是否订阅。

    由于通配符匹配仅在Firebase通知(尚未存在公共API)中可用,并且控制台只能发送通知消息(如果应用程序不在前台,则确实由系统处理),则您的选项将为仅限于工作。

    我可以想到几个:

    1. 跟踪每个用户/设备ID在Map<Token, Version>类似结构中安装的应用的版本。 您可以使用Firebase数据库。

    2. 枚举所有旧版本,并通知一个目标。

    3. 向每个人(通过云消息传递API)发送一个数据消息并发布新消息,然后如果消息已经具有最新版本,则在onMessageReceived()禁止显示该消息。

    嗯…事后看来#3似乎是一个相当干净的解决scheme。 你是过度发送,但系统可以处理,只要频率不是太高,很可能你的用户不会受到太多的影响。

    开箱即用的主题不支持像“未订阅xxx的用户”这样的操作。

    但是,对于您的用例(向未更新的用户发送通知),我build议使用Firebase通知(不要与FCM,Firebase云消息传递混淆),您可以在此处find该文档。

    关键在于,在Firebase控制台中,您可以通过应用版本过滤目标。 请参阅下面的文档的特定部分的截图。 我已经多次在生产环境中testing过它,它可以很好地工作。 在这里输入图像说明