Интеграция с 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"
],
);
$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 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);
⚠️ Следует учесть, что если ссылка будет не с вашего сайта, то она откроется в браузере.
Отправка через теги
Вы можете отправлять push-уведомления не только по UserID, но и по тегу, который вы установите для пользователя. Это удобно, если вы хотите связать пользователя с его уникальным идентификатором, например email или phone.
Например, при авторизации на сайте вы можете установить тег email или phone для пользователя, а затем использовать его для отправки push-сообщений через OneSignal API.
Пример отправки уведомления по тегу (на PHP с использованием curl):
$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://onesignal.com/api/v1/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;
No Comments