OneSignal Chrome 多个通知

OneSignal Chrome multiple notification

我在使用网络推送通知时遇到了一些问题。 我能够定期发送通知,但是,当我发送两个通知并且第一个通知在屏幕上仍然可见时,第二个通知覆盖第一个。

RESTAPI被一个用C#编写的MVC站点调用,我发送的对象如下:

var obj = new
        {
            app_id = _appKey,
            contents = new { en = message },
            headings = new { en = title },
            included_segments = new[] { "All" },
            url,
            chrome_web_icon = imageUrl,
            priority = 1,
            id = DateTime.Now.ToString("yyyyMMddHHmmss")
        };

有没有人遇到过同样的问题? 我该如何解决?

OneSignal 有意实施导致此行为的通知替换。

这样做的原因是为了避免订阅者最终可能会从一个网站上收到多达 100 条要关闭的通知,这对他们来说是一种糟糕的体验。

将来 OneSignal 可能会让您避免此限制,但在大多数情况下,我们不建议您采取不同的做法。

从 OneSignal 人员那里得到了这个答案。

当使用我们的 REST API 以编程方式发送通知时,您可以使用未记录的参数 web_push_topic

在一组共享相同 web_push_topic 的通知中,新收到的通知将替换旧收到的具有相同主题的通知。只有共享相同主题的通知才会被替换;没有主题或不同主题的通知将不会被替换。您可以为不同的通知集设置不同的主题,以控制哪些通知保留在屏幕上。

web_push_topic 值可以是任何字符串值。

在 Chrome,任何时候最多显示 3 条通知,即使其他通知与您的站点或来自 OneSignal 无关。这意味着您只能向用户显示 3 类通知,不包括当时可能显示的其他通知。 在 Windows 上的 Firefox 上,一次可以显示更多通知 (6+)。

在 Mac 上的 Firefox 和 Mac 上的 Safari 上,一次只能显示一个通知,即使其他通知与您的站点或来自 OneSignal 无关。通知也会在 5 秒内快速消失,这个时间不可自定义。

Chrome/Firefox Android,一次可以显示多个通知。

如果您不指定 web_push_topic ,每个通知将被更新的通知替换。如果您指定 web_push_topic,您可以选择将替换哪些通知以及堆叠哪些通知。

当使用我们的 API 发送通知时,为 web_push_topic 设置一个字符串值将设置通知的主题。任何共享相同主题的通知将相互替换,但任何具有不同主题的通知将不会被替换。

假设您发送了 4 条通知:

  1. 主题为 'open-houses' 的通知 "Open house at 1234 Street at 3 PM this Saturday"。
  2. 主题为 'open-houses' 的通知 "Open house at 1234 Street changed to 4 PM this Saturday"。
  3. 主题为 'general-updates' 的通知“华盛顿州西雅图有 20 栋新房子符合您的条件”。
  4. 主题为 'promotional' 的通知 "Find an agent in your area"。

观察到的通知顺序为:

  1. 通知 #1 显示。
  2. 通知 #2 替换 #1(即使停靠在 Mac OS X 的通知托盘中)。
  3. 通知 #3 单独显示(如果停靠在 Mac OS X 的通知托盘中,它将使用单独的条目)。
  4. 通知 #4 也单独显示。 最后,当订阅者查看他的未读通知时,他将看到总共三个通知。

示例代码:

payload = {"app_id": "5eb5a37e-b458-11e3-ac11-000c2940e62c",
           "include_player_ids": ["6392d91a-b206-4b7b-a620-cd68e32c3a76"],
           "contents": {"en": "English Message"},
           "web_push_topic": 'Unique for every notification'}