Обработка и добавление подписки
При получении push токена приложение должно передать его в Altcraft Platform для формирования подписки. Для этого используется API запрос.
С помощью этого запроса можно:
- Добавить новые подписки.
- Поменять статус уже существующих подписок.
Режим поиска профиля можно задавать с помощью поля matching
в запросе (см. спецификацию ниже). Если профиль не будет найден, то будет создан новый.
При этом, если в ресурсе указано несколько баз данных, то все они будут обрабатываться по отдельности. Запрос к такому ресурсу будет создавать и обновлять профили сразу в нескольких базах. Пример такого случая можно посмотреть ниже.
Есл и в ресурсе нет ни одной базы, то будет возвращена ошибка.
URL-адрес
Метод: POST
https://<cookiesaver_host>/push_subscribe
Параметры запроса
Параметр | Тип | Пример | Обязательный | Описание |
---|---|---|---|---|
id | string | "abcdefghijklmnqrstuvwxyz" | Нет | Идентификатор профиля |
resource_token | string | "abcdefghijklmnqrstuvwxyz" | Да | Уникальный идентификатор ресурса |
db_ids | [ ] int | [ 2,3 ] | Нет | Фильтр баз данных ресурса. |
matching | string | "custom" | Нет | Режим поиска подписчика. Если поле не передано или пустое, то будет использован поиск профиля по id или, если id тоже не передано, по пуш подпискам. Для push_subscribe метода это поле может принимать только следующие значения:
|
subscriptions | JSON array SubscriptionObject | [{ | Да | Подписки на push, которые нужно добавить в профиль или обновить. "subscription_id" - уникален для каждого устройства. |
SubscriptionObject
Параметр | Тип | Пример | Обязательный | Описание |
---|---|---|---|---|
provider | string | "android-firebase" | Да | Идентификатор провайдера в Altcraft MP. Возможны следующие значения:
Каждому типу токена в AppMetrica соответствует свой id провайдера. |
subscription_id | string | "abcdef-ghijklmn-qrstuvwxyz" | Да | Токен push подписки |
unsubscribe | bool | false | Нет | Флаг отписки. Отменяет подписку, если true. |
Возвращаемые параметры
Параметр | Тип | Описание |
---|---|---|
data | JSON array DataObject | Информация о созданных подписках. В массиве может быть несколько объектов в следующих случаях:
|
error | int | Код ошибки |
error_text | string | Текст ошибки |
DataObject
Параметр | Тип | Описание | |
---|---|---|---|
subscription_id | string | "abcdef-ghijklmn-qrstuvwxyz" | Токен push подписки |
unsubscribe | bool | false | Флаг, была ли подписка добавлена или наоборот отменена |
profile_id | string | "5fb62e815ae47a4aa04dfadd" | id профиля (переданный или вновь созданный), для которого добавлена подписка. |
provider | string | "android-firebase" | Идентификатор провайдера в Altcraft MP. Возможны следующие значения:
Каждому типу токена в AppMetrica соответствует свой id провайдера |
db_id | int | 2 | id базы данных в Altcraft MP, в которой находится профиль |
resource_id | int | 1 | id ресурса в Altcraft MP |
subscription_hash_id | string | "92807e89" | Хеш подписки |
status | string | "error" | Статус операции
|
description | string | "Duplicate push subscription" | Описание ошибки |
Примеры
Запрос с матчингом по системному id профиля
Запрос
{
"id": "59db33d269d426509e9c4bf9",
"resource_token": "3LXP2FRcRxJ-7b14db88ec937f14",
"subscriptions": [
{
"provider": "android-firebase",
"subscription_id": "%subscriptionid%"
}
]
}
Ответ
{
"data": [
{
"subscription_id": "%subscriptionid%",
"unsubscribe": false,
"profile_id": "59db33d269d426509e9c4bf9",
"provider": "android-firebase",
"db_id": 17,
"resource_id": 5,
"subscription_hash_id": "adsfdfdffdf",
"status": "ok",
"description": ""
}
],
"error": 0,
"error_text": "Successful operation"
}
Запрос с матчингом по дополнительному полю профиля.
Запрос
{
"resource_token": "3LXP2FRcRxJ-7b14db88ec937f14",
"matching": "custom",
"field_name": "CustomNumber1",
"field_value": 123,
"subscriptions": [
{
"provider": "android-firebase",
"subscription_id": "%subscriptionid%"
}
]
}
Ответ
{
"data": [
{
"subscription_id": "%subscriptionid%",
"unsubscribe": false,
"profile_id": "59db33d269d426509e9c4bfс",
"provider": "android-firebase",
"db_id": 17,
"resource_id": 5,
"subscription_hash_id": "adsfdfdffdf",
"status": "ok",
"description": ""
}
],
"error": 0,
"error_text": "Successful operation"
}
Запрос с матчингом по пуш подпискам
Запрос
{
"resource_token": "3LXP2FRcRxJ-7b14db88ec937f14",
"subscriptions": [
{
"provider": "android-firebase",
"subscription_id": "%subscriptionid%"
}
]
}
Ответ
{
"data": [
{
"subscription_id": "%subscriptionid%",
"unsubscribe": false,
"profile_id": "59db33d269d426509e9c4bfa",
"provider": "android-firebase",
"db_id": 17,
"resource_id": 5,
"subscription_hash_id": "adsfdfdffdf",
"status": "ok",
"description": ""
}
],
"error": 0,
"error_text": "Successful operation"
}
Запрос к ресурсу с несколькими базами данных
Запрос
{
"resource_token": "3LXP2FRcRxJ-7b14db88ec937f14",
"matching": "custom",
"field_name": "CustomNumber1",
"field_value": 12345,
"subscriptions": [
{
"provider": "android-firebase",
"subscription_id": "%subscriptionid%"
}
]
}
Ответ
{
"error": 200,
"error_text": "Successful operation",
"data": [
{
"db_id": 34,
"description": "",
"profile_id": "6156ed18eb7fec10a206e916",
"provider": "android-firebase",
"resource_id": 22,
"status": "ok",
"subscription_hash_id": "340ca49c",
"subscription_id": "%subscriptionid%",
"unsubscribe": false
},
{
"db_id": 2,
"description": "matching error: unknown field",
"resource_id": 22,
"status": "error"
}
]
}