Дата последнего изменения: 24.07.2020
Токен - это идентификатор устройства, который регистрируется в сервисах Apple и Google для отправки уведомлений.
Для того, чтобы пользователь получал уведомления на свой смартфон, нужно узнать токен его устройства.
Получить токен, а затем отправить методом GET или POST на php-скрипт можно через javascript-код, который нужно разместить на стартовой странице своего приложения:
app.exec("getToken", { callback:function(token) { var platform = (window.platform == "ios"? "APPLE": "GOOGLE"); var config = { url: "myurl.php" , method: "POST", data: { device_name: (typeof device.name == "undefined" ? device.model : device.name), uuid: device.uuid, device_token: token, app_id: “MyAPPid”, device_type: platform, sessid: BX.bitrix_sessid() } }; BX.ajax(config); } });
В примере выше мы получили токен устройства и отправили его на php-скрипт myurl.php. Теперь его нужно сохранить для дальнейшего использования:
<?php use Bitrix\Main\Web\Json; require_once($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php"); $result = Array("status" => "failed"); if (!\Bitrix\Main\Loader::includeModule("pull")) { $result["error"] = "Module 'pull' is not installed"; } else { /** * @var $DB CAllDatabase * @var $USER CALLUser */ $data = null; $userId = $USER->GetID(); if (!$userId) { $userId = 0; } if ($_REQUEST["device_token"]) { $res = array("status" => "failed", "error" => "some unknown error"); $data = array( "DEVICE_TOKEN" => $_REQUEST["device_token"], "DEVICE_ID" => $_REQUEST["uuid"], "DEVICE_TYPE" => $_REQUEST["device_type"], "APP_ID" => $_REQUEST["app_id"], "DATE_AUTH" => ConvertTimeStamp(getmicrotime(), "FULL"), "USER_ID" => $userId ); $dbres = CPullPush::GetList(Array(), Array("DEVICE_ID" => $data["DEVICE_ID"])); $arToken = $dbres->Fetch(); $status = "failed"; if ($arToken["ID"]) { CPullPush::Update($arToken["ID"], $data); $status = "updated"; } else { if ($res = CPullPush::Add($data)) { $status = "registered"; } } $result = array( "token_status" => $status ); } } $result["data"] = $data != null ? $data : array(); header("Content-Type: application/x-javascript"); echo Json::encode($result); die();
Токены устройств со временем могут меняться или истекать.
Например, при обновлении операционной системы на устройстве токен может поменяться. Поэтому рекомендуется периодически удалять неактивные токены и обновлять существующие. Иными словами, при каждом запуске приложения следует повторять операцию обновления.