Создать эндпоинт
Для каждого канала надо создать набор эндпоинтов, через которые будут отправляться уведомления в браузеры конкретных пользователей.
Чтобы создать эндпоинт:
-
Из браузера пользователя с помощью Service Worker
вызовите метод JavaScript subscribe .В ответ вернется объект PushSubscription
. -
Преобразуйте полученный объект в JSON, вызвав метод toJSON
.
Формат ответа в JSON:
{
"endpoint": <string>,
"expirationTime": <DOMHighResTimeStamp,null>,
"keys": {
"p256dh": <string>,
"auth": <string>
}
}
Где:
endpoint
— URL-адрес, на который будет отправляться push-уведомление. Обычно это адрес сервера push-уведомлений, например, Firebase Cloud Messaging (FCM).expirationTime
— время жизни уведомления в миллисекундах. Если значение равноnull
, то время жизни не ограничено.keys
— данные для защиты уведомления:p256dh
— публичный ключ пользователя, который используется для шифрования данных уведомления.auth
— ключ аутентификации для подтверждения подлинности отправителя.
Пример ответа в JSON
{
"endpoint": "https://fcm.googleapis.com/fcm/send/abcdef123456",
"expirationTime": 1704093740000,
"keys": {
"p256dh": "BOrLkr7sEt8tERyAv6c8ZG5UC********",
"auth": "aBcDeFg12345"
}
}
Получив данные для отправки уведомлений пользователю, создайте эндпоинт:
- В консоли управления
перейдите в каталог, в котором находится канал уведомлений. - В списке сервисов выберите Cloud Notification Service.
- Выберите вкладку Push-уведомления в браузере.
- Выберите канал уведомлений.
- Выберите вкладку
Эндпоинты. - Нажмите Создать эндпоинт.
- Введите Параметры эндпоинта в JSON, которые были получены при подписке пользователя.
- (опционально) Введите Данные пользователя — текст длиной до 2048 символов в кодировке UTF-8
. - Нажмите Создать.
-
Если у вас еще нет AWS CLI, установите и сконфигурируйте его.
-
Выполните команду:
aws sns create-platform-endpoint \ --platform-application-arn <ARN_канала> \ --token <pushSubscription_JSON>
Где:
--platform-application-arn
— идентификатор (ARN) канала уведомлений.--token
— объект PushSubscription в формате JSON , который получен в браузере пользователя.
Подробнее о команде
aws sns create-platform-endpoint
см. в документации AWS .
-
Если у вас еще нет AWS SDK для Python (boto3), установите и настройте его.
-
Чтобы создать эндпоинт, используйте следующий код:
try: response = client.create_platform_endpoint( PlatformApplicationArn="<ARN_канала>", Token="<pushSubscription_JSON>", ) print(f'Endpoint ARN: {response["EndpointArn"]}') except botocore.exceptions.ClientError as error: print(f"Error: {error}")
-
Если у вас еще нет AWS SDK для PHP, установите и настройте его.
-
Чтобы создать эндпоинт, используйте следующий код:
$response = $client->createPlatformApplication( [ 'PlatformApplicationArn' => '<ARN_канала>', 'Token' => '<pushSubscription_JSON>', ] ); print('Endpoint ARN: ' . $response->get('EndpointArn'));
-
Если у вас еще нет AWS SDK для JavaScript, установите и настройте его.
-
Чтобы создать эндпоинт, используйте следующий код:
try { const response = await client.send( new AWS.CreatePlatformEndpointCommand({ PlatformApplicationArn: "<ARN_канала>", Token: "<pushSubscription_JSON>", }), ); console.log("Endpoint ARN:", response["EndpointArn"]); } catch (e) { console.log("Error:", e) }
Воспользуйтесь методом HTTP API create для ресурса Endpoint сервиса Yandex Cloud Notification Service.
Создание эндпоинта может занять некоторое время.