Я пытаюсь отправить уведомление с помощью OneSignal. Все нормально, но мне нужно как-то убедиться, что новое уведомление не перезаписывает старое. Итак, если я отправлю два уведомления на хром на телефоне Android, я получу два уведомления на экране блокировки, а не только новые.
Я искал документацию и нашел элементы «collapse_id» и «android_group», где я указываю значения (строка) microtime (true), и это не помогло.
Вот простое уведомление о публикации 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:
Вы можете складывать уведомления с OneSignal, используя наш API и шаги, указанные ниже. Мы отключили это на нашей панели управления из-за неправильного использования и жалоб от клиентов. При использовании нашего REST API для программной отправки уведомлений вы можете использовать недокументированный параметр web_push_topic.
В наборе уведомлений, использующих одну и ту же web_push_topic, вновь полученные уведомления заменят старые полученные уведомления той же темой. Будут заменены только уведомления, относящиеся к той же теме; уведомления без темы или с другой темой не заменяются. Вы можете установить разные темы для разных наборов уведомлений, чтобы контролировать, какие уведомления остаются на экране.
Значение web_push_topic может быть любым строковым значением.
В Chrome одновременно отображается не более 3 уведомлений, даже если другие уведомления не связаны с вашим сайтом или от OneSignal. Это означает, что вы можете показывать пользователю только 3 категории уведомлений, не считая других уведомлений, которые могут отображаться в это время.
В Firefox в Windows одновременно может отображаться гораздо больше уведомлений (6+). В Firefox на Mac и Safari на Mac одновременно может отображаться только одно уведомление, даже если другие уведомления не связаны с вашим сайтом или от OneSignal. Уведомления также быстро исчезают в течение 5 секунд, и это время не настраивается.
В Chrome / Firefox на Android одновременно может отображаться несколько уведомлений. Если вы не укажете web_push_topic, каждое уведомление будет заменено более новым уведомлением. Если вы укажете web_push_topic, вы можете выбрать, какие уведомления будут заменены, а какие будут складываться.
При отправке уведомления с помощью нашего API установка строкового значения для web_push_topic задает тему для уведомления. Любые уведомления с одной и той же темой будут заменять друг друга, но любые уведомления с другой темой не будут заменены.
Предположим, вы отправили 4 уведомления:
Уведомление «День открытых дверей на улице 1234 в 15:00 в эту субботу» с темой «дни открытых дверей».
Уведомление «День открытых дверей на улице 1234 изменено на 16:00 в эту субботу» с темой «дни открытых дверей».
Уведомление «20 новых домов в Сиэтле, штат Вашингтон, соответствующих вашим критериям» с темой «общие обновления».
Уведомление «Найдите агента в вашем районе» с темой «рекламный». Последовательность уведомлений будет следующей:
Отображается уведомление №1.
Уведомление №2 заменяет №1 (даже если оно закреплено в панели уведомлений Mac OS X).
Уведомление №3 отображается отдельно (и если оно закреплено в панели уведомлений Mac OS X, оно будет использовать отдельную запись).
Уведомление №4 также отображается отдельно.
В конце концов, когда подписчик проверит свои непрочитанные уведомления, он увидит всего три уведомления.
Надеюсь, это имеет смысл!
Вам нужно будет добавить опцию web_push_topic в свой http-запрос.
Все уведомления одного и того же web_push_topic заменят предыдущее.
Действительно, это недокументированный параметр, но я подозреваю, что по умолчанию уведомления без тем автоматически заменяются новыми. Возможно, это ошибка на их стороне, но добавление этой опции решило мою проблему.