【问题标题】:Send android push notification to all except one user [duplicate]向除一个用户之外的所有用户发送android推送通知[重复]
【发布时间】:2017-09-22 19:05:00
【问题描述】:

我正在使用 firebase,并且我有一个需要向所有用户发送通知的应用程序。因此,为了实现这一点,我创建了一个所有设备都订阅的主题 allUsers。现在,如果我向这个主题发送推送通知,每个设备都会收到它。我想排除一台设备,该设备间接向 /topics/allUsers 创建推送通知。

这可以实现吗?

【问题讨论】:

    标签: android firebase firebase-cloud-messaging


    【解决方案1】:

    更新:

    对于Android,我所做的是,我在payload中包含一个sender自定义值,检查该值是否与当前用户的id相同,如果是,我不显示通知。


    主题消息传递的工作原理是所有订阅者都会收到发送到相应主题的消息。

    您不能排除特定订阅者。你将不得不:

    • 创建一个用户不会订阅的单独主题
    • 为用户取消订阅相应的主题
    • 或仅使用registration_ids 将消息发送给特定用户

    除此之外,目前没有其他解决方法可以解决您想要做的事情。

    【讨论】:

      【解决方案2】:

      可能有点晚了,但是在阅读Frank´s post之后,我想到了为所有用户创建主题,然后为每个用户创建主题,然后在发送消息时,您可以添加主题条件,例如:

      ('AllUsers' in topics) && !('user_foo' in topics)
      

      【讨论】:

      • 为每个用户创建一个单独的主题并不是一个好主意。根据 Firebase 文档,您的应用程序可以拥有 2000 个主题。
      • 实际上,2000 个主题的限制是在客户端应用程序上,这意味着用户不能订阅超过 2000 个主题 (firebase.google.com/docs/cloud-messaging/android/…)
      • 您不需要创建 2000 多个主题。只需创建一个所有用户都订阅的主要主题,然后创建一个每个用户订阅的唯一主题(如用户 ID)。
      【解决方案3】:

      是的,您可以这样做。 转到您的 Firebase 控制台,单击您的项目面板,然后导航到“增长/通知”选项卡。您可以在那里向您的应用用户发送消息(推送通知),并调整与消息相关的所有内容并在那里定位:

      【讨论】:

      • 如何从服务器以编程方式执行此操作。我有基于弹簧的服务器。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多