Чем мы можем помочь?

Аудитории — FAQ по подключениям к рекламным сетям

  • Обновлено

Краткий обзор: Вы рекламная сеть? Найдите ответы на часто задаваемые вопросы о подключениях партнеров аудиторий.

Ключ 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.