我在网络推送通知方面遇到了一些问题。 我可以定期发送通知,但是,当我发送两个通知并且屏幕上仍然显示第一个通知时,第二个会覆盖第一个通知。
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")
};
有没有人遇到过同样的问题? 我该如何解决?
答案 0 :(得分:5)
得到OneSignal人的回答。
使用我们的REST API
以编程方式发送通知时,您可以使用未记录的参数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个通知:
观察到的通知顺序为:
示例代码:
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'}
答案 1 :(得分:0)
OneSignal故意实施导致此行为的通知替换。
这样做的原因是为了避免订阅者最多收到100个通知,以便从单个网站中解散,这对他们来说是一种糟糕的经历。
将来OneSignal可能会允许您避免此限制,但在大多数情况下,我们建议不要这样做。