Регистрация устройств с push-уведомлениями для разработчиков приложений
Чтобы узнать больше об общем подходе к настройке push-уведомлений в Customer Insights - Journeys, см. обзор настройки push-уведомлений.
Чтобы включить push-уведомления в Customer Insights - Journeys, вам необходимо выполнить следующие шаги:
- Конфигурация приложений для push-уведомлений
- Сопоставление пользователей для push-уведомлений
- Регистрация устройства для push-уведомлений
- Получение push-уведомлений на устройствах
- Отчетность по взаимодействиям для push-уведомлений
На этой схеме описаны два шага, необходимые для регистрации устройств и пользователей в Customer Insights - Journeys.
Регистрация устройства
Чтобы завершить настройку мобильного приложения, разработчик должен зарегистрировать устройства на серверах. У вас уже должен быть токен устройства, идентификатор пользователя из Customer Insights - Journeys (идентификатор контакта, идентификатор интереса, идентификатор профиля Customer Insights - Data) и идентификатор мобильного приложения из Customer Insights - Journeys.
При успешном вызове запроса на регистрацию устройства поступает ответ 202. Ответ 202 указывает только на то, что запрос был принят. Чтобы подтвердить успешный запрос, вам необходимо проверить статус с помощью веб-перехватчика или напрямую вызвав конечную точку статуса.
API
Регистрация устройства (одиночная)
Образец запроса HTTP (iOS):
POST {PublicEndpoint}/api/v1.0/orgs/%ORG_ID%/pushdeviceregistration/devices
{
"MobileAppId": "00000000-0000-0000-0000-000000000000",
"UserId": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"ApiToken": "%API_TOKEN%",
"ApnsDeviceToken": "%APNS_TOKEN%"
}
Образец запроса HTTP (Android):
POST {PublicEndpoint}/api/v1.0/orgs/%ORG_ID%/pushdeviceregistration/devices
{
"MobileAppId": "00000000-0000-0000-0000-000000000000",
"UserId": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"ApiToken": "%API_TOKEN%",
"FcmDeviceToken": "%FCM_TOKEN%"
}
Заголовки:
- x-ms-track-registration: если значение «true», информация об успешной/неуспешной регистрации сохраняется и доступна через API статуса регистрации.
- x-ms-callback-url: если он не пуст, неудачная или успешная регистрация устройства вызовет веб-перехватчик POST-запроса.
- x-ms-callback-url-headers: содержит сериализованный JSON словаря строка-в-строку, представляющий заголовки, передаваемые для запросов веб-перехватчика. Используется только тогда, когда определен x-ms-callback-url.
Возвращает: 202, если запрос действителен, в противном случае это будет 400.
Текст ответа:
Когда значение для x-ms-track-registration — «true»:
{
"RegistrationRequestId": "%GUID%"
}
В противном случае пустой текст запроса.
Определения
Полное имя | Description |
---|---|
MobileAppId | Идентификатор мобильного приложения, настроенный в Customer Insights - Journeys. |
UserId | Идентификатор пользователя контакта, интереса или профиля Customer Insights - Data из Customer Insights - Journeys. |
ApiToken | Ваш токен API для авторизации запроса. |
ApnsDeviceToken | Уникальный идентификатор токена устройства, созданный приложением iOS. Это будет отправлено только на устройство iOS |
FcmDeviceToken | Уникальный идентификатор токена устройства, созданный приложением Android. Это будет отправлено только на устройство Android |
Регистрация устройств (нескольких)
Текст пакетной регистрации содержит массив, содержащий до 100 объектов, представляющих собой запросы на регистрацию устройств.
Образец запроса HTTP (iOS):
POST {PublicEndpoint}/api/v1.0/orgs/%ORG_ID%/pushdeviceregistration/devices/batch
[
{
"MobileAppId": "00000000-0000-0000-0000-000000000000",
"UserId": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"ApiToken": "%API_TOKEN%",
"ApnsDeviceToken": "%APNS_TOKEN%"
},
{
"MobileAppId": "00000000-0000-0000-0000-000000000000",
"UserId": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"ApiToken": "%API_TOKEN%",
"ApnsDeviceToken": "%APNS_TOKEN%"
}
]
Образец запроса HTTP (Android):
POST {PublicEndpoint}/api/v1.0/orgs/%ORG_ID%/pushdeviceregistration/devices/batch
[
{
"MobileAppId": "00000000-0000-0000-0000-000000000000",
"UserId": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"ApiToken": "%API_TOKEN%",
"FcmDeviceToken": "%FCM_TOKEN%"
},
{
"MobileAppId": "00000000-0000-0000-0000-000000000000",
"UserId": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"ApiToken": "%API_TOKEN%",
"FcmDeviceToken": "%FCM_TOKEN%"
}
]
Заголовки:
- x-ms-track-registration: если значение «true», информация об успешной или неуспешной регистрации сохраняется и доступна через API статуса регистрации.
-
x-ms-callback-url: если он не пуст, неудачная или успешная регистрация устройства вызовет веб-перехватчик запроса
POST
. -
x-ms-callback-url-headers: содержит сериализованный JSON словаря строка-в-строку, представляющий заголовки, передаваемые для запросов веб-перехватчика. Используется только тогда, когда определен
x-ms-callback-url
.
Возвращает: 202, если запрос действителен, в противном случае это будет 400.
Текст ответа:
Когда значение для x-ms-track-registration — «true»: массив элементов, порядок каждого элемента соответствует порядку из массива текста запроса.
[
{
"RegistrationRequestId": "%REG_REQUEST_ID%"
},
{
"RegistrationRequestId": "%REG_REQUEST_ID%"
}
]
В противном случае пустой текст запроса.
Статус регистрации устройства
POST {PublicEndpoint}/api/v1.0/orgs/%ORG_ID%/pushdeviceregistration/devices/status/
Текст запроса:
{
"RegistrationRequestIds": [
"%REG_REQUEST_ID%"
],
"MobileAppId": "%MOBILE_APP_ID%",
"ApiToken": "%API_TOKEN%"
}
Возвращает: 200, если запрос действителен, в противном случае это будет 400.
Текст запроса — массив элементов:
[
{
"Status": "Pending|Success|Failed",
"FailureReason": " DuplicateExists|DryRunSendingFailed|DeviceTokenTooLong|FailedToStoreDevice|ApiTokenNotValid " // dry run sending is a verification of device token by sending an invisible notification to mobile app. Such sending failure might happen due to a wrong device token or incorrect/expired mobile app auth data
},
{
"Status": "Pending|Success|Failed",
"FailureReason": " DuplicateExists|DryRunSendingFailed|DeviceTokenTooLong|FailedToStoreDevice|ApiTokenNotValid " // dry run sending is a verification of device token by sending an invisible notification to mobile app. Such sending failure might happen due to a wrong device token or incorrect/expired mobile app auth data
}
]
Каждому порядку элемента соответствует заказ из массива RegistrationRequestIds.
Определения
Полное имя | Description |
---|---|
RegistrationRequestIds | Массив индивидуальных запросов на регистрацию. Значения берутся из ответа на регистрационные вызовы. Это предоставляется только в том случае, если для регистрации использовался заголовок x-ms-track-registration |
MobileAppId | Идентификатор мобильного приложения, настроенный в Customer Insights - Journeys. |
UserId | Идентификатор пользователя контакта, интереса или профиля Customer Insights - Data из Customer Insights - Journeys. |
Важно
Существует три возможные причины, по которым статус может зависнуть в состоянии «Ожидание»:
- Исходный запрос на регистрацию устройства содержал недопустимый токен API. Чтобы предотвратить выполнение DoS-атаки на среду злоумышленниками путем вызова «зарегистрировать устройство» и создания бесконечного регулирования количества запросов, такие попытки не приводят к сохранению истории регистрации. Поэтому информация для проверки успешного выполнения отсутствует.
- CRM остается в регулируемом состоянии в течение нескольких часов, что приводит к сбою операции обновления статуса после нескольких повторных попыток.
- Запрос на регистрацию устройства был сделан без предоставленного заголовка x-ms-track-registration.
Веб-перехватчик состояния регистрации устройства
Если x-ms-status-callback-url предоставляется URL-адресу в случае успешной или неудачной регистрации устройства, Customer Insights - Journeys обращается к значению заголовка.
POST для URL-адреса, указанного внутри заголовка запроса на регистрацию устройства x-ms-status-callback-url.
Текст:
{
"Status": "Success|Failed",
"Signature": "%SIGNATURE%",
"FailureReason": " DuplicateExists|DryRunSendingFailed|DeviceTokenTooLong|FailedToStoreDevice|ApiTokenNotValid"
}
Совет
Подпись — это хэш HMACSHA256 URL-адреса обратного вызова, рассчитанный с использованием токена API-интерфейса в качестве ключа. Используйте значение, чтобы убедиться, что Customer Insights - Journeys сделал вызов. Хешируйте URL-адрес обратного вызова с токеном API-интерфейса на стороне веб-перехватчика, используя тот же алгоритм и сравнивая значения.
Заметка
Попытка сделать запрос происходит один раз. Любая неспособность выполнить запрос приводит к потере уведомления. Типы сбоев включают неверный URL-адрес обратного вызова, тайм-аут вызова REST API или неожиданный код состояния ответа.
Возвращает: 202, если запрос действителен, в противном случае это будет 400.
Ожидаемый текст: пустой текст.
Очистка устройства (одного)
Важно удалить устройства, которые больше недействительны, из базы данных, чтобы обеспечить эффективную отправку сообщений. Используйте следующий подход, чтобы удалить старые комбинации устройств, пользователей и приложений из таблицы устройств.
POST {PublicEndpoint}/api/v1.0/orgs/%ORG_ID%/pushdeviceregistration/devices/cleanup
{
"MobileAppId": "00000000-0000-0000-0000-000000000000",
"ApiToken": "%API_TOKEN%",
"UserId": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"DeviceToken": "%OPTIONAL_FCM_OR_APNS_DEVICE_TOKEN%"
}
Возвращает: 202, если запрос действителен, в противном случае это будет 400.
Определения
Полное имя | Description |
---|---|
MobileAppId | Идентификатор мобильного приложения, настроенный в Customer Insights - Journeys. |
ApiToken | Ваш токен API для авторизации запроса. |
UserId | Идентификатор пользователя контакта, интереса или профиля Customer Insights - Data из Customer Insights - Journeys. |
DeviceToken | Уникальный идентификатор токена устройства, созданный приложением. |
Очистка устройств (нескольких)
Важно удалить устройства, которые больше недействительны, из базы данных, чтобы обеспечить эффективную отправку сообщений. Используйте следующий подход, чтобы удалить старые комбинации устройств, пользователей и приложений из таблицы устройств.
POST {PublicEndpoint}/api/v1.0/orgs/%ORG_ID%/pushdeviceregistration/devices/cleanup/batch
{
"MobileAppId": "00000000-0000-0000-0000-000000000000",
"ApiToken": "%API_TOKEN%",
"UserId": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"DeviceToken": "%OPTIONAL_FCM_OR_APNS_DEVICE_TOKEN%"
}
Возвращает: 202, если запрос действителен, в противном случае это будет 400.
Определения
Полное имя | Description |
---|---|
MobileAppId | Идентификатор мобильного приложения, настроенный в Customer Insights - Journeys. |
ApiToken | Ваш токен API для авторизации запроса. |
UserId | Идентификатор пользователя контакта, интереса или профиля Customer Insights - Data из Customer Insights - Journeys. |
DeviceToken | Уникальный идентификатор токена устройства, созданный приложением. |