Краткий обзор: Вы рекламная сеть? Найдите ответы на часто задаваемые вопросы о подключениях партнеров аудиторий.
Ключ API и ключ partner pull
Для чего используются ключ API и тестовый ключ API?
Ключ API — это уникальный ключ, который партнер выдает каждому рекламодателю. Ключ API идентифицирует рекламодателя в каждом вызове API и обычно представляет собой длинную шестнадцатеричную строку (например, d41ac239b3b918e28fa0c). В ходе тестирования вам нужно будет предоставить нам тестовый API-ключ, который мы будем использовать для тестирования вашей интеграции аудиторий.
Что такое PARTNER_PULL_KEY?
PARTNER_PULL_KEY — это ключ, который AppsFlyer генерирует и предоставляет каждому партнеру. Затем партнер использует его в переменной шаблона в URL-адресе {{PARTNER_PULL_KEY}} для загрузки файла сегмента.
Как и когда мы получаем PARTNER_PULL_KEY?
На более позднем этапе, когда мы будем тестировать вашу конечную точку /sync, команда AppsFlyer Audiences отправит вам PARTNER_PULL_KEY.
Файл аудитории, размер и ограничения
Есть ли ограничение на размер сегмента?
Мы загружаем данные в AWS S3 с помощью multipart upload. Ограничения AWS см. здесь: supports:https://docs.aws.amazon.com/AmazonS3/latest/userguide/qfacts.html
Насколько велики файлы?
Мы поддерживаем большие файлы. В итоге это CSV-файлы, хранящиеся в AWS S3. Ограничения AWS см. здесь: supports:https://docs.aws.amazon.com/AmazonS3/latest/userguide/qfacts.html
Есть ли верхний предел для количества строк с идентификаторами устройств?
Максимальное количество строк зависит от ограничения AWS на размер файла в 5 ТБ.
Можем ли мы использовать прямой путь Amazon AWS/бакет для API аудиторий?
Да, мы предоставим бакет AWS и отправим предварительно подписанный URL-адрес к пути в AWS, где находится файл.
Файл сжат?
№
Есть ли у аудитории срок действия по умолчанию?
Срок действия аудитории не истекает. После создания и подключения аудитория загружается каждый день. Однако аудиторию можно удалить, и тогда она больше не будет загружаться.
Формат файла разделяется переносами строк (или запятыми)? Первая строка — это заголовок, например advertiser_id?
Файл разделен переносами строк, а первая строка содержит заголовок, например advertiser_id_sha256 (в зависимости от загружаемого идентификатора).
Будут ли в каждом запросе /sync URL-адреса всех 3 файлов (например, ADID, email и телефона)?
Каждый запрос /sync будет содержать URL-адреса файлов, которые поддерживает интеграция. Если вы поддерживаете ADID, email и телефон, он будет содержать эти 3 URL-адреса.
В результате шага 3 (/sync) мы получаем ссылку для загрузки файла аудитории. Можно ли создавать и передавать такие шаблоны URL-адресов без API-синхронизации?
На данный момент нет. URL-адреса генерируются на основе вашего уникального PARTNER_PULL_KEY. На этапе тестирования URL-адреса будут предоставлены, и их можно будет протестировать.
Вот пример URL-адреса:
https://audiencespull.appsflyer.com/{{PARTNER_PULL_KEY}}/12cjv4dq1zyxz3nh-HASHED.csv?X-Amz-A lgorithm=AWS1-HMAC-SHA256&X-Amz-Date=20190503T091923Z&X-Amz-SignedHeaders=host&X-Amz-Expires=3599&X-Amz-Credential=AKIB22QYTATEGB2HBFJR%2F20190603%2Feu-west-1%2Fs3%2Faws4_request&X-Amz-Signature=c8287819a21d2f7832154df609c55ab8c0afe53540d542918b2739a9234923a
Для чего нужен container_id?
Мы будем отправлять идентификаторы устройств аудитории в указанный вами container ID через API. Создание контейнера аудитории обязательно для разработки интеграции аудитории.
Вызовы API, ответы и коды статуса
Когда нужно возвращать ответ?
/validate: когда ключ API совпадает с тем, который вам предоставили.
/create: когда контейнер создан на вашей стороне.
/sync: мы ожидаем получить ответ после того, как вы получите наш вызов и сможете получить доступ к файлу. Вы можете загрузить и обработать файл после отправки ответа. Ссылка доступна для загрузки в течение 2 часов.
Как следует обрабатывать неудачные запросы?
С помощью кодов состояния:
200 — если запрос выполнен успешно
401 — при недействительном ключе API — аутентификация
Для других случаев стандартного решения нет. В этих случаях рекламодатель увидит, что загрузка не удалась из-за общей ошибки. Если проблемы повторяются, свяжитесь с нами, чтобы обсудить эти кейсы.
Когда AppsFlyer вызывает наши эндпоинты?
/validate: AppsFlyer вызовет этот эндпоинт один раз — каждый раз, когда рекламодатель создает новое подключение к вашей системе.
/create: Этот эндпоинт вызывается только один раз для каждого контейнера. Это означает, что для каждой новой аудитории, которая впервые подключается к вашей системе, мы вызываем эндпоинт /create и сохраняем идентификатор ID контейнера. Мы ожидаем, что в ответ на каждый вызов /create будет возвращаться другой идентификатор контейнера. Мы разделяем платформы и названия аудиторий на своей стороне (другими словами, у каждой платформы на нашей стороне будет своя аудитория, и для нее будет инициирован вызов /create).
/sync: Этот эндпоинт вызывается каждый раз при запуске загрузки: либо в ходе ежедневного процесса, который выполняет запланированную загрузку всех аудиторий AppsFlyer, либо когда рекламодатель инициирует загрузку вручную через наш интерфейс или вызов API.
Запросы /sync выполняются только один раз или AppsFlyer повторно запускает их позже?
Запрос /sync выполняется каждый раз при запуске загрузки. Это происходит в ходе ежедневного процесса, который выполняет запланированную загрузку всех аудиторий AppsFlyer, либо когда рекламодатель инициирует загрузку вручную через наш интерфейс или вызов API.
Как часто AppsFlyer отправляет вызовы на эндпоинт /sync?
Это зависит от количества рекламодателей, с которыми вы работаете, и количества аудиторий, которые они загружают. Для каждой загружаемой аудитории будет вызван эндпоинт /sync. Это происходит в ходе ежедневного процесса, который выполняет запланированную загрузку всех аудиторий AppsFlyer, либо когда рекламодатель инициирует загрузку вручную через наш интерфейс или вызов API.
Если у нас высокий трафик, можем ли мы поддерживать несколько эндпоинтов API (например, несколько маршрутов или даже доменов)?
Предпочтительное решение — убедиться, что текущий API может обрабатывать относительно высокий трафик. Доступна модификация API, однако это может привести к задержкам на недели или месяцы при завершении интеграции.
Правила именования
В интерфейсе /validate поле api_key — это строка или массив строк?
Это строка.
В интерфейсе /create должно ли поле name (имя аудитории) поддерживать только английские символы или также другие наборы символов? Каковы правила валидации для имен?
Имя аудитории совпадает с именем в интерфейсе AppsFlyer.
- Имя должно быть уникальным и содержать от 2 до 100 символов
- Поддерживаются все языки
- Поддерживаются специальные символы (например, $, %, ^, @ и т. д.)
В интерфейсе /create поле container_id должно содержать только цифры или может также поддерживать английские символы?
Поддерживаются и цифры, и английские символы.
SHA256 и хешированный URL
Почему наша попытка декодировать SHA256 GAID/IDFA аудитории не удалась?
SHA256 не предназначен для декодирования. Этот механизм предназначен для того, чтобы вы и AppsFlyer могли кодировать идентификатор устройства (что позволяет сопоставлять закодированные значения, если у вас есть доступ к исходному идентификатору устройства).
Предоставляет ли AppsFlyer нам нехешированные идентификаторы?
Нет, нехешированные идентификаторы устройств доступны только рекламодателям. Чтобы обеспечить конфиденциальность данных, мы хешируем идентификаторы рекламодателей в файлах сегментов с помощью алгоритма SHA256. Идентификаторы рекламодателей будут передаваться в полезной нагрузке запроса с использованием этого ключа: url_adid_sha256.
Если все GAID хешированы, как мы можем узнать, какие GAID мы получили?
Если у вас есть обычный GAID из приложения и хешированный GAID из AppsFlyer, вы можете хешировать обычный GAID с помощью SHA256, а затем сопоставить его с хешированным GAID из AppsFlyer.