Интеграция с 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 секунд после начала использования приложения при самом первом запуске. 

 https://documentation.onesignal.com/reference/push-notification 

 $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"

					],

 );

 $ch = curl_init();

 curl_setopt($ch, CURLOPT_URL, "https://api.onesignal.com/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);

 

 

 Пример получения 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: 

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

 Отправка через теги 

 Вы можете отправлять push-уведомления не только по UserID , но и по тегу, который вы установите для пользователя. Это удобно, если вы хотите связать пользователя с его уникальным идентификатором, например email или phone . 

 Например, при авторизации на сайте вы можете установить тег email или phone для пользователя, а затем использовать его для отправки push-сообщений через OneSignal API. 

 Пример отправки уведомления по тегу (на PHP с использованием curl): 

 https://documentation.onesignal.com/reference/push-notification 

 $fields = [

 'app_id' => 'ВАШ_APP_ID',

 'filters' => [

 ["field" => "tag", "key" => "email", "relation" => "=", "value" => "user@example.com"]

 ],

 'contents' => ["en" => "My Push"],

 'headings' => ["en" => "Hi!"],

];

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "https://api.onesignal.com/notifications");

curl_setopt($ch, CURLOPT_HTTPHEADER, [

 'Content-Type: application/json',

 'Authorization: Basic ВАШ_REST_API_KEY'

]);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_POST, true);

curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));

$response = curl_exec($ch);

curl_close($ch);

echo $response;