Skip to main content

Интеграция с Push-уведомлениями

После запуска приложения, UserID из OneSignal будет автоматически передаваться на страницы сайта при загрузке через COOKIE. Вы можете перехватить этот UserID на стороне сайта и связать его с текущим пользователем.

Используя этот UserID, вы можете отправлять персональные push-уведомления вашим клиентам.

Пример получения UserID на PHP:

if(!isset($_COOKIE['ONESIGNAL_USER_ID'])) {
    $userID = $_COOKIE['ONESIGNAL_USER_ID'];
}

Стоит учесть что ONESIGNAL_USER_ID может появиться не сразу а например через 10-30 секунд после начала использования приложения при самом первом запуске.

Пример получения UserID в JS:

if(window.userId){
  console.log("USER ID", window.userId);
}

Аналогично userId может появиться не сразу, поэтому можно использовать функцию попытки получения userId, пока он не станет доступным:

function getUserId(callback){

let tryGetUserIdInterval = setInterval(()=>{

  if(window.userId){
  callback(window.userId);
  clearInterval(tryGetUserIdInterval);
  }

},3000);
}

getUserId((userId)=>{

    console.log("userId", userId);
})

Навигация через Push-уведомления

Если вы хотите, чтобы при нажатии на push-уведомление пользователь не только перешел в приложение, но и был направлен на одну из страниц сайта, передайте параметр url в параметре data запроса.

Если в приложении только 1 язык для уведомлений, например только русский, то используйте ключ en, так как он является ключом по умолчанию.

Пример на PHP:

$fields = array(
        'app_id' => 'ВАШ app_id',
        'include_player_ids' => ["ONESIGNAL_USER_ID"] 
        'contents' =>  ["en" => "My Push"],
        'headings' => ["en" => "Hi!"],
        'data' => [
					'url'=>"<https://site.com/my/link>"link"
					],
    );

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "<https://onesignal.com/api/v1/notifications>"notifications");
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'Content-Type: application/json; charset=utf-8',
        'Authorization: Basic XXXXXXXXX',
    ));
    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);
    curl_exec($ch);
    curl_close($ch);

⚠️ Следует учесть, что если ссылка будет не с вашего сайта, то она откроется в браузере.