Обзор Yandex Cloud Notification Service
Cloud Notification Service (CNS) — сервис для мультиканальной отправки уведомлений пользователям. HTTP API сервиса совместим с Amazon SNS API
Примечание
Сервис находится на стадии Preview.
Чтобы включить Cloud Notification Service, запросите доступ к сервису у вашего аккаунт-менеджера или в технической поддержке
Благодаря совместимости с Amazon SNS API для работы с сервисом вы можете использовать существующие инструменты, например AWS CLI и AWS SDK.
Каналы уведомлений
В Cloud Notification Service сообщения конечным пользователям отправляются через каналы уведомлений.
На стадии Preview доступна индивидуальная отправка Push-уведомлений на устройства с iOS и Android.
Позднее будет реализована отправка SMS-сообщений, уведомлений в мессенджеры и браузеры.
Мобильные Push-уведомления
Мобильные Push-уведомления — это всплывающие сообщения на экране смартфона с информацией о событии в сервисе, доступных услугах, акциях, новостях и обновлениях.
Push-уведомления отправляются через сервисы уведомлений мобильных платформ:
- Apple Push Notification service
(APNs). - Firebase Cloud Messaging
(FCM). - Huawei Mobile Services
(HMS).
Позднее также будет реализована отправка Push-уведомления через платформу RuStore
Алгоритм доставки Push-уведомлений на примере FCM:
- В сервисе CNS создается канал мобильных Push-уведомлений под конкретную платформу (FCM) и ваше приложение.
- FCM поддерживает постоянное сетевое соединение со всеми зарегистрированными мобильными устройствами, чтобы доставлять Push-уведомления приложениям на этих устройствах.
- Ваше приложение на конкретном устройстве регистрируется в FCM и получает уникальный токен для отправки Push-уведомлений на это устройство.
- Токен сохраняется в CNS в качестве параметра мобильного эндпоинта приложения.
- Чтобы отправить уведомление, вы публикуете сообщение в CNS и указываете в качестве получателя идентификатор (ARN) эндпоинта.
Канал мобильных Push-уведомлений
Минимальный перечень исходных данных для создания канала мобильных Push-уведомлений:
Вы можете аутентифицироваться на мобильной платформе APNs с помощью токена или сертификата:
-
Для аутентификации с помощью токена вам понадобятся следующие данные:
- Токен — чтобы получить файл токена в формате
.p8
, создайте ключ аутентификации в своей учетной записи разработчика Apple: Certificates, Identifiers & Profiles → Keys → . Скачать файл токена можно только один раз. - Идентификатор токена — узнайте идентификатор в учетной записи разработчика Apple: Certificates, Identifiers & Profiles → Keys. Убедитесь, что идентификатор соответствует токену, который вы хотите применить. Должен содержать 10 символов.
- Идентификатор разработчика (Team ID) — указан в правом верхнем углу вашей учетной записи разработчика Apple. Должен содержать 10 символов: только цифры и буквы латинского алфавита.
- Идентификатор приложения (Bundle ID) — узнайте Bundle ID
в учетной записи разработчика Apple: Certificates, Identifiers & Profiles → Identifiers или в приложении Xcode: Target → General → Identity. Может содержать только цифры, буквы латинского алфавита, дефисы и точки.
- Токен — чтобы получить файл токена в формате
-
Для аутентификации с помощью сертификата понадобятся следующие данные:
- Сертификат — файл сертификата SSL в формате
.p12
. - Закрытый ключ сертификата.
Подробнее о сертификате см. в документации Apple
. - Сертификат — файл сертификата SSL в формате
Аутентификация с токеном является предпочтительной, как более современная.
Имя канала уведомлений должно быть уникальным в облаке. Для каналов APNs рекомендуется указывать в имени идентификатор приложения (Bundle ID).
Вы можете аутентифицироваться на мобильной платформе FCM с помощью HTTP v1 API или Legacy API:
- Для аутентификации с помощью HTTP v1 API вам понадобится Ключ сервисного аккаунта Google Cloud в формате JSON. С помощью ключа генерируются временные токены OAuth 2.0 для аутентификации запросов в FCM HTTP v1 API. Можно получить в консоли управления Google Cloud.
- Для аутентификации с помощью Legacy API вам понадобится API-ключ (server key). Можно получить в консоли управления Firebase.
Примечание
Версия HTTP v1 API является предпочтительной, так как с июня 2024 года Legacy API не будет поддерживаться FCM
Подробнее см. в документации Firebase
Имя канала уведомлений должно быть уникальным в облаке. Для каналов FCM рекомендуется указывать в имени полное название пакета приложения (Package name).
Вы можете аутентифицироваться на мобильной платформе HMS с помощью следующих параметров:
- Идентификатор ключа.
- API-ключ.
Подробнее см. в документации HMS
Имя канала должно быть уникальным в облаке. Для HMS-каналов рекомендуется указывать в имени полное название пакета приложения (Package name).
После того как канал уведомлений создан, ему присваивается уникальный идентификатор (ARN).
Мобильные эндпоинты
Каждый канал имеет свою базу мобильных эндпоинтов для отправки уведомлений напрямую в приложение на устройства пользователей.
Мобильный эндпоинт содержит в себе информацию о токене для отправки Push-уведомлений на конкретное устройство и идентификатор (ARN) канала уведомлений.
Время жизни токена
Токены для отправки Push-уведомлений имеют ограниченное время жизни, которое зависит от конкретной платформы, действий пользователя и других факторов.
CNS при отправке уведомлений получает обратную связь от каждой платформы и использует ее для управления токенами. Если токен изменился, то CNS запишет в эндпоинт новый токен, или удалит эндпоинт, если токен устарел.
Рекомендуемый алгоритм работы с токенами на стороне мобильного приложения:
- Приложение регистрируется в сервисе мобильных уведомлений, например APNs, и получает токен для отправки Push-уведомлений.
- Приложение передает токен в CNS, получает идентификатор (ARN) эндпоинта и сохраняет его на устройстве.
- При каждом запуске приложение снова регистрируется в сервисе мобильных уведомлений, например APNs, и проверяет, не изменился ли токен.
- Если токен изменился, то приложение передает в CNS новый токен и идентификатор (ARN) эндпоинта. Если такого идентификатора (ARN) эндпоинта уже по какой-то причине нет, то в CNS создается новый эндпоинт и сохраняется в приложении.
Совет
Не рекомендуется постоянно перезаписывать токен в эндпоинт при каждом запуске приложения. Если токен не изменился, в некоторых случаях это может привести к потере уведомлений.