[英]OneSignal does not want to replace old notifications with a new one
我正在尝试使用 OneSignal 发送通知。 一切都很好,但我需要以某种方式确保新通知不会覆盖旧通知。 因此,如果我向 Android 手机上的 chrome 发送两个通知,那么我会在锁屏上收到两个通知,而不仅仅是新通知。
我搜索了文档并找到了项目“collapse_id”和“android_group”,我在其中给出了值(字符串)微时间(真),但它没有帮助。
这是一个简单的 PHP 发布通知。
$fields = array(
'app_id' => $oneSignalID,
'included_segments' => [ 'All' ],
"headings" => [ "en" => "test heading" ],
'contents' => [ "en" => 'test content' ],
"collapse_id"=> "ff".(string)microtime(true),
"android_group"=> "ff".(string)microtime(true),
"url" => "http://www.example.com"
);
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, "https://onesignal.com/api/v1/notifications" );
curl_setopt( $ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json; charset=utf-8',
'Authorization: Basic '.$onesignalkey
) );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_HEADER, false );
curl_setopt( $ch, CURLOPT_POST, true );
curl_setopt( $ch, CURLOPT_POSTFIELDS, json_encode( $fields ) );
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false );
$response = curl_exec( $ch );
curl_close( $ch );
谢谢你的建议
来自 OneSignal 的工作人员:
您可以使用我们的 API 和以下步骤使用 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 秒内快速消失,而且这个时间是不可自定义的。
在 Android 上的 Chrome/Firefox 上,可以一次显示多个通知。 如果您未指定 web_push_topic ,则每个通知都将被更新的通知替换。 如果您确实指定了 web_push_topic,您可以选择将替换哪些通知以及将堆叠哪些通知。
使用我们的 API 发送通知时,为 web_push_topic 设置字符串值将设置通知的主题。 共享同一主题的任何通知将相互替换,但不会替换任何具有不同主题的通知。
因此,假设您发送了 4 个通知:
通知“本周六下午 3 点在 1234 Street 开放参观”,主题为“开放参观”。
通知“本周六 1234 街的开放日更改为下午 4 点”,主题为“开放日”。
通知“20 座新房子符合您在华盛顿州西雅图的标准”,主题为“一般更新”。
通知“寻找您所在地区的代理商”,主题为“促销”。 观察到的通知顺序为:
通知 #1 显示。
通知 #2 替换了 #1(即使停靠在 Mac OS X 的通知托盘中)。
通知 #3 单独显示(如果停靠在 Mac OS X 的通知托盘中,它将使用单独的条目)。
通知 #4 也单独显示。
最后,当订阅者检查他的未读通知时,他将看到总共三个通知。
希望这是有道理的!
您必须将选项web_push_topic
添加到您的 http 请求中。
同一web_push_topic
下的每个通知web_push_topic
将替换前一个
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.