OneSignal не хочет заменять старые уведомления новыми - PullRequest
0 голосов
/ 09 сентября 2018

Я пытаюсь отправить уведомление с помощью OneSignal. Все хорошо, но мне нужно как-то убедиться, что новое уведомление не перезаписывает старое. Поэтому, если я отправляю два уведомления в chrome на телефоне 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 );

Спасибо за совет

1 Ответ

0 голосов
/ 17 июня 2019

от сотрудников 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 также отображается отдельно.

В итоге, когда подписчик проверит свои непрочитанные уведомления, он увидит всего три уведомления.

Надеюсь, это имеет смысл!

...