Для реализации уведомлений понадобится не так много:
- Естественно, интернет-магазин
- Хостинг с поддержкой php и ssl (сайт должен открываться по https)
- Немного времени для настройки
- Add a new app
- Ввести название приложения
- Выбрать платформу Website Push
- Выбрать Chrome и Mozilla
- Ввести адрес сайта на хостинге где будет лежать обработчик уведомлений, например https://site.ru (даже если обработчик будет не в корне сайта, например https://site.ru/push/mypush.php, необходимо указать только сам домен https://site.ru)
- Ввести адрес картинки для уведомления (рекомендуется от 192*192px), например https://site.ru/images/logo.png
- Выбрать SDK Website Push
2. Перейдем к настройкам серверной части:
- Необходимо скачать https://github.com/o...nalSDKFiles.zip
- Файлы из архива необходимо поместить именно в корень сайта на хостинге, например https://site.ru
- Необходимо изменить только файл манифеста, первые 3 строки в файле manifest.json
{ "name": "OneSignal Example", // Название вашего интернет-магазина "short_name": "OneSignalExample", // Короткое название "start_url": "/", // Путь до обработчика, например /push/, если в корне то ничего менять не надо "display": "standalone", "gcm_sender_id": "482941778795", // НЕ МЕНЯТЬ "DO_NOT_CHANGE_GCM_SENDER_ID": "Do not change the GCM Sender ID" }
Далее фал index.php с простой парольной защитой, чтобы даже зная url до файла, кто угодно не мог подписаться на уведомления, только зная пароль. Его нужно заменить в исходном коде как и ID приложения OneSignal. Файл можно положить как в корень сайта на хостинге так и в любую папку (в этом случае необходимо еще скорректировать путь до файла manifest.json который должен быть только в корне сайта)
<?php if (session_id() == "") { session_start(); } $password = ''; if ($_SERVER['REQUEST_METHOD'] == 'POST' && $_POST['form_name'] == 'loginform') { $password = isset($_POST['password']) ? $_POST['password'] : ''; if ($password == '111111!') //Ваш пароль на страницу { $_SESSION['password'] = $password; } } else { $password = isset($_SESSION['password']) ? $_SESSION['password'] : ''; } if ($password != '111111!') //Ваш пароль на страницу { echo "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n"; echo "<html>\n"; echo "<head>\n"; echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n"; echo "<title>PUSH</title>\n"; echo "</head>\n"; echo "<body style=\"background-color:#FFFFFF\">\n"; echo "<center>\n"; echo "<br>\n"; if($_SERVER['REQUEST_METHOD'] == 'POST') echo "<span style=\"font-size:13px;font-family:Arial;font-weight:normal;text-decoration:none;color:#FF0000\">Неверный пароль!<br><br><br></span>\n"; else echo "<span style=\"font-size:13px;font-family:Arial;font-weight:normal;text-decoration:none;color:#000000\">Доступ только с паролем<br><br><br></span>\n"; echo "<form method=\"post\" action=\"".basename(__FILE__)."\">\n"; echo "<input type=\"hidden\" name=\"form_name\" value=\"loginform\">\n"; echo " <table cellspacing=\"0\" cellpadding=\"3\" style=\"border:1px solid #535353;\">\n"; echo " <tr>\n"; echo " <td colspan=\"2\" style=\"background-color:#535353;color:#FFFFFF;font-size:13px;font-family:Arial;font-weight:normal;text-decoration:none;text-align:center;padding:4px;\"><strong>Вход</strong></td>\n"; echo " </tr>\n"; echo " <tr>\n"; echo " <td style=\"font-size:13px;font-family:Arial;font-weight:normal;text-decoration:none;color:#000000;text-align:right;\" width=\"30%\" height=\"60\">Пароль:</td>\n"; echo " <td style=\"font-size:13px;font-family:Arial;font-weight:normal;text-decoration:none;color:#000000;text-align:left\" width=\"70%\" height=\"60\"><input type=\"password\" name=\"password\" value=\"\" style=\"border:1px solid #535353;width:120px;\"> <input type=\"submit\" value=\"Войти\"></td>\n"; echo " </tr>\n"; echo " </table>\n"; echo "</form>\n"; echo "</center>\n"; echo "</body>\n"; echo "</html>\n"; exit; } ?> <!doctype html> <html> <head> <meta charset="utf-8"> <title>PUSH</title> <link rel="manifest" href="manifest.json"> <script src="https://cdn.onesignal.com/sdks/OneSignalSDK.js" async></script> <script> var OneSignal = window.OneSignal || []; OneSignal.push(["init", { appId: "OneSignal_App_ID", /* Ваш ID приложения */ autoRegister: false, notifyButton: { enable: true } }]); </script> </head> <body> </body> </html>
И последний файл который понадобится, лучше назвать набором символов, букв и цифр чтобы его нельзя было случайно подобрать и открыть по прямой ссылке, например kjawr76FSe0Oi.php
Файл разместить в том же месте где index.php. В файле необходимо только отредактировать сообщение о новом заказе, вставить свои OneSignal App ID и REST API Key.
<?PHP function sendMessage(){ $content = array( "en" => 'Created a new order' // Сообщение о новом заказе ); $fields = array( 'app_id' => "OneSignal_App_ID", // Id приложения 'included_segments' => array('All'), 'data' => array("foo" => "bar"), 'contents' => $content ); $fields = json_encode($fields); print("\nJSON sent:\n"); print($fields); $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 REST_API_Key')); //REST API Key curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_HEADER, FALSE); curl_setopt($ch, CURLOPT_POST, TRUE); curl_setopt($ch, CURLOPT_POSTFIELDS, $fields); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); $response = curl_exec($ch); curl_close($ch); return $response; } $response = sendMessage(); $return["allresponses"] = $response; $return = json_encode( $return); print("\n\nJSON received:\n"); print($return); print("\n"); ?>
Практически все готово, осталось только в основных настройках Вашего интернет-магазина указать параметр "URL адрес для уведомлений", соответственно путь до Вашего обработчика, например https://site.ru/kjawr76FSe0Oi.php
Папку на хостинге где лежат файлы обработчика уведомлений рекомендую закрыть от индексации.
Все, система PUSH-уведомлений готова, осталось только добавить подписчиков на уведомления.
На компьютере где необходимо получать уведомления:
- Заходим в браузере на сайт на хостинге, например https://site.ru
- Вводим пароль который Вы задали в файле index.php и жмем "Войти"
- В правом нижнем углу увидите кнопку в виде колокольчика, приглашение для подписки
- Принимаем предложения всегда показывать уведомления для этого сайта
- Получаем первое уведомление о том что браузер подписан
По желанию систему можно доработать, например разбирая POST запрос поступающий на url уведомлений можно добавить в уведомления ссылку на заказ, номер и сумму заказа, информацию о клиенте и т.д.
Все описанные в примере файлы прилагаю к теме.