OneSignal Chrome多个通知

mar*_*783 1 c# onesignal

Web推送通知有一些问题。我可以定期发送通知,但是,当我发送两个通知而第一个通知仍在屏幕上可见时,第二个覆盖第一个。

REST API由使用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")
        };
Run Code Online (Sandbox Code Playgroud)

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

Rah*_*ava 5

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

使用我们REST API以编程方式发送通知时,可以使用undocumented参数web_push_topic

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

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

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

在Mac上的Firefox和Mac上的Safari上,一次只能显示一个通知,即使其他通知与您的网站或OneSignal不相关。通知还会在5秒钟内迅速消失,并且此时间不可自定义。

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

如果您未指定web_push_topic,则每个通知将被一个较新的通知替换。如果确实指定web_push_topic,则可以选择将替换哪些通知以及将堆叠哪些通知。

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

因此,假设您发送了4条通知:

  1. 通知“本周六下午3点在1234街开放”,主题为“开放日”。
  2. 主题为“开放日”的通知“周六1234街的开放日更改为下午4点”。
  3. 通知主题为“常规更新”的“ 20栋新房子符合您在华盛顿州西雅图的条件”。
  4. 主题为“促销”的通知“在您所在的地区查找代理商”。

观察到的通知顺序为:

  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'}
Run Code Online (Sandbox Code Playgroud)