Amazon S3
Интеграция Adapty с Amazon S3 позволяет хранить данные о событиях и посещениях пейволов в одном централизованном месте. Вы сможете сохранять события подписок в виде .csv-файлов в вашем бакете Amazon S3.
Для настройки интеграции потребуется выполнить несколько простых шагов в AWS Console и дашборде Adapty.
Расписание
Adapty отправляет данные каждые 24 часа в 4:00 UTC.
Каждый файл содержит данные о событиях за весь предыдущий календарный день по UTC. Например, данные, экспортированные автоматически в 4:00 UTC 8 марта, будут содержать все события, созданные 7 марта с 00:00:00 до 23:59:59 по UTC.
Как настроить интеграцию с Amazon S3
Для получения данных вам понадобятся следующие учётные данные:
- Access key ID
- Secret access key
- S3 bucket name
- Folder name inside the S3 bucket
Вложенные директории
В поле имени бакета Amazon S3 можно указывать вложенные директории, например: adapty-events/com.sample-app
Чтобы подключить Amazon S3, перейдите в Integrations -> Amazon S3, включите переключатель и заполните поля.
Сначала укажите учётные данные для установки соединения между Amazon S3 и профилями Adapty. В дашборде Adapty для настройки подключения нужны следующие поля:
| Поле | Описание |
|---|---|
| Access Key ID | Уникальный идентификатор для аутентификации пользователя или приложения при доступе к сервису AWS. Найдите этот идентификатор в загруженном csv-файле. |
| Secret Access Key | Приватный ключ, используемый совместно с Access Key ID для аутентификации при доступе к сервису AWS. Найдите этот ключ в загруженном csv-файле. |
| S3 Bucket Name | Глобально уникальное имя, идентифицирующее конкретный S3-бакет в облаке AWS. S3-бакеты — это простой сервис хранения, позволяющий хранить и получать объекты данных (файлы, изображения и т. д.) в облаке. |
| Folder Inside the Bucker | Название папки, которую вы хотите создать внутри выбранного S3-бакета. Обратите внимание: S3 имитирует папки с помощью префиксов ключей объектов, которые по сути и являются именами папок. |
Как создать учётные данные Amazon S3
Этот гайд поможет вам создать необходимые учётные данные в консоли AWS.
1. Создайте политику доступа
Сначала перейдите на страницу управления политиками IAM в консоли AWS и выберите Create Policy.
В редакторе политики вставьте следующий JSON и замените adapty-s3-integration-test на название вашего бакета:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowListObjectsInBucket",
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::adapty-s3-integration-test"
},
{
"Sid": "AllowAllObjectActions",
"Effect": "Allow",
"Action": "s3:*Object",
"Resource": [
"arn:aws:s3:::adapty-s3-integration-test/*",
"arn:aws:s3:::adapty-s3-integration-test"
]
},
{
"Sid": "AllowBucketLocation",
"Effect": "Allow",
"Action": "s3:GetBucketLocation",
"Resource": "arn:aws:s3:::adapty-s3-integration-test"
}
]
}
После завершения настройки политики вы можете добавить теги (необязательно), а затем нажать Next, чтобы перейти к последнему шагу. На этом шаге нужно указать название политики и нажать кнопку Create policy, чтобы завершить создание.
2. Создайте пользователя IAM
Чтобы Adapty мог загружать отчёты с сырыми данными в ваш бакет, необходимо предоставить Access Key ID и Secret Access Key пользователя с правом записи в этот бакет.
Для этого перейдите в IAM Console и откройте раздел Users. Затем нажмите кнопку Add users. Дайте пользователю имя, выберите Access key – Programmatic access и перейдите к настройке прав доступа.
На следующем шаге выберите опцию Add user to group, затем нажмите кнопку Create group.
Далее укажите имя для вашей группы пользователей и выберите политику, созданную ранее. После выбора политики нажмите кнопку Create group, чтобы завершить процесс.
После успешного создания группы выберите её и перейдите к следующему шагу.
Это последний шаг данного раздела — просто нажмите кнопку Create User. Наконец, вы можете скачать учётные данные в формате .csv или скопировать и вставить их прямо с дашборда.
Экспорт данных вручную
Помимо автоматического экспорта событий в Amazon S3, Adapty также поддерживает ручной экспорт файлов. С помощью этой функции вы можете выбрать конкретный временной интервал и экспортировать данные о событиях в свой S3-бакет вручную. Это даёт вам больше контроля над тем, какие данные и когда экспортировать.
Указанный диапазон дат используется для экспорта событий, созданных с Date A 00:00:00 UTC по Date B 23:59:59 UTC.
Структура таблицы
В интеграции с AWS S3 Adapty предоставляет таблицу для хранения исторических данных о транзакционных событиях и посещениях пейвола. Таблица содержит информацию о профиле пользователя, выручке и чистом доходе, источнике стора и других параметрах. По сути, эти таблицы фиксируют все транзакции, сгенерированные приложением за определённый период времени.
Обратите внимание, что эта структура может расширяться со временем — по мере добавления новых данных нами или сторонними сервисами, с которыми мы работаем. Убедитесь, что ваш код, обрабатывающий эти данные, достаточно устойчив и опирается на конкретные поля, а не на структуру целиком.
Ниже приведена структура таблицы для событий:
| Столбец | Описание |
|---|---|
| profile_id | ID пользователя Adapty. |
| event_type | Название события в нижнем регистре. Типы событий описаны в разделе События. |
| event_datetime | Дата в формате ISO 8601. |
| transaction_id | Уникальный идентификатор транзакции — покупки или продления. |
| original_transaction_id | Идентификатор транзакции первоначальной покупки. |
| subscription_expires_at | Дата истечения подписки. Как правило, в будущем. |
| environment | Sandbox или Production. |
| revenue_usd | Выручка в USD. Может быть пустым. |
| proceeds_usd | Поступления в USD. Может быть пустым. |
| net_revenue_usd | Чистая выручка (доход после уплаты налогов) в USD. Может быть пустым. |
| tax_amount_usd | Сумма налоговых отчислений в USD. Может быть пустым. |
| revenue_local | Выручка в местной валюте. Может быть пустым. |
| proceeds_local | Поступления в местной валюте. Может быть пустым. |
| net_revenue_local | Чистая выручка (доход после уплаты налогов) в местной валюте. Может быть пустым. |
| tax_amount_local | Сумма налоговых отчислений в местной валюте. Может быть пустым. |
| customer_user_id | ID пользователя на стороне разработчика. Например, UUID, email или любой другой идентификатор. Null, если не задан. |
| store | Может быть app_store или play_store. |
| product_id | ID продукта в Apple App Store, Google Play Store или Stripe. |
| base_plan_id | ID базового плана в Google Play Store или ID цены в Stripe. |
| developer_id | ID пейвола (SDK) разработчика, с которого была совершена транзакция. |
| ab_test_name | Название A/B-теста, в рамках которого была совершена транзакция. |
| ab_test_revision | Ревизия A/B-теста, в рамках которого была совершена транзакция. |
| paywall_name | Название пейвола, с которого была совершена транзакция. |
| paywall_revision | Ревизия пейвола, с которого была совершена транзакция. |
| profile_county | Страна профиля, определённая Adapty по IP-адресу. |
| install_date | Дата установки в формате ISO 8601. |
| idfv | identifierForVendor на устройствах iOS. |
| idfa | advertisingIdentifier на устройствах iOS. |
| advertising_id | Advertising ID — уникальный код, присваиваемый операционной системой Android, который рекламодатели могут использовать для идентификации устройства пользователя. |
| ip_address | IP-адрес устройства (IPv4 или IPv6; при наличии предпочтение отдаётся IPv4). Обновляется при каждой смене IP-адреса устройства. |
| cancellation_reason | Причина отмены подписки пользователем. Возможные значения: iOS & Android voluntarily_cancelled, billing_error, refund iOS price_increase, product_was_not_available, unknown, upgraded Android new_subscription_replace, cancelled_by_developer |
| android_app_set_id | AppSetId — уникальный, сбрасываемый пользователем идентификатор на уровне устройства и аккаунта разработчика для рекламных сценариев без монетизации. |
| android_id | На Android 8.0 (API level 26) и выше — 64-битное число (в шестнадцатеричном формате), уникальное для каждой комбинации ключа подписи приложения, пользователя и устройства. Подробнее см. документацию для разработчиков Android. |
| device | Название модели устройства, отображаемое конечному пользователю. |
| currency | Трёхбуквенный код валюты транзакции (ISO-4217). |
| store_country | Страна профиля, определённая Apple/Google store. |
| attribution_source | Источник атрибуции. |
| attribution_network_user_id | ID пользователя, присвоенный источником атрибуции. |
| attribution_status | Может быть organic, non_organic или unknown. |
| attribution_channel | Название маркетингового канала. |
| attribution_campaign | Название маркетинговой кампании. |
| attribution_ad_group | Группа объявлений атрибуции. |
| attribution_ad_set | Набор объявлений атрибуции. |
| attribution_creative | Ключевое слово креатива атрибуции. |
| attributes | JSON с пользовательскими атрибутами. Включает все пользовательские атрибуты, настроенные для отправки из мобильного приложения. Чтобы их отправлять, включите опцию Send User Attributes на странице Integrations -> Webhooks. |
| integration_ids | Все интеграционные ID, связанные с профилем. Словарь. Пример: {‘mixpanel_user_id’: ‘mixpanelUserId-test’, ‘facebook_anonymous_id’: ‘facebookAnonymousId-test’} |
| Here is the table structure for the paywall visits: | |
| Столбец | Описание |
| :-------------------- | :-------------------------------------------------------------------------------------------------------------------- |
| profile_id | Идентификатор пользователя Adapty. |
| customer_user_id | Идентификатор пользователя, заданный разработчиком. Например, это может быть UUID, email или любой другой ID. Null, если не задан. |
| profile_country | Страна профиля, определённая стором Apple/Google. |
| install_date | Дата установки в формате ISO 8601. |
| store | Может быть app_store или play_store. |
| paywall_showed_at | Дата, когда пейвол был показан пользователю. |
| developer_id | Developer (SDK) ID пейвола, из которого совершена транзакция. |
| ab_test_name | Название A/B-теста, из которого совершена транзакция. |
| ab_test_revision | Ревизия A/B-теста, из которого совершена транзакция. |
| paywall_name | Название пейвола, из которого совершена транзакция. |
| paywall_revision | Ревизия пейвола, из которого совершена транзакция. |
События и теги
Вы можете управлять тем, какие данные передаются в рамках интеграции. Доступны следующие параметры настройки:
| Настройка | Описание |
|---|---|
| Exclude Historical Events | Исключить события, произошедшие до установки приложения с Adapty SDK. Это предотвращает дублирование событий и обеспечивает точность отчётов. Например, если пользователь активировал ежемесячную подписку 10 января, а обновил приложение с Adapty SDK 6 марта, Adapty пропустит события до 6 марта и сохранит последующие. |
| Include events without profile | Включить транзакции, не связанные с профилем пользователя в Adapty. Сюда могут входить покупки, совершённые до установки Adapty SDK, или транзакции, полученные из серверных уведомлений стора, которые невозможно сразу сопоставить с конкретным пользователем. |
| Send User Attributes | Если вы хотите передавать атрибуты пользователей, например языковые настройки, и ваш тарифный план OneSignal поддерживает более 10 тегов, выберите эту опцию. При включении можно передавать дополнительную информацию сверх стандартных 10 тегов. Учтите, что превышение лимита тегов может приводить к ошибкам. |
Ниже настроек интеграции находятся три группы событий, которые можно экспортировать, отправлять и хранить в Amazon S3 из Adapty. Просто включите нужные. Полный список событий, предоставляемых Adapty, доступен здесь.