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

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

FirebaseMessaging.getInstance().subscribeToTopic(APP_VERSION); 

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

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

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

Solutions Collecting From Web of "在发送FCM消息的情况下否定"

您只能根据用户是否订阅了一个主题来定位用户,而不是他们是否订阅。

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

我可以想到几个:

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

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

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

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

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

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

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