Engage SDK Другие направления: инструкции по технической интеграции сторонних разработчиков. Engage SDK Другие направления: Инструкции по технической интеграции сторонних разработчиков.

Повысьте вовлеченность пользователей в приложение, взаимодействуя с ними там, где они находятся. Интегрируйте Engage SDK, чтобы предоставлять персонализированные рекомендации и дополнительный контент непосредственно пользователям на различных платформах устройства, таких как «Коллекции» , «Развлекательное пространство » и Play Store. Интеграция добавляет менее 50 КБ (в сжатом виде) к среднему размеру APK-файла и занимает у большинства приложений около недели на разработку. Узнайте больше на нашем корпоративном сайте .

В этом документе содержатся инструкции для партнеров-разработчиков по интеграции нового контента, такого как бронирования, мероприятия, размещение, достопримечательности, люди и другой контент, который может не относиться ни к одной из этих категорий.

Детали интеграции

Терминология

Данная интеграция включает в себя следующие три типа кластеров: Рекомендации , Рекомендуемые и Продолжение .

  • Кластеры рекомендаций отображают персонализированные предложения от конкретного разработчика-партнера. Это интерфейс, содержащий группу рекомендаций от одного и того же разработчика-партнера.

    • ArticleEntity : ArticleEntity — это текстовая рекомендация контента, относящегося к нескольким категориям. Элемент ArticleEntity позволяет разработчикам предоставлять разнообразный текстовый и графический контент с большим количеством метаданных для более точной передачи информации пользователям по сравнению с GenericFeaturedEntity. Например: маркетинговый контент, новостной сниппет.

      Рисунок 1: Пользовательский интерфейс, отображающий отдельный объект ArticleEntity в кластере «Рекомендации».
    • EventEntity : EventEntity представляет собой событие, которое произойдет в будущем. Время начала события — это важная информация, которую необходимо передать пользователям.

      Рисунок 2: Пользовательский интерфейс, отображающий отдельный объект EventEntity в кластере «Рекомендации».
    • LodgingEntity : LodgingEntity обозначает тип жилья, например, отель, апартаменты или дом для отдыха, сдаваемый в краткосрочную и долгосрочную аренду.

      Рисунок 3: Пользовательский интерфейс, отображающий отдельный объект размещения (LodgingEntity) в кластере рекомендаций.
    • StoreEntity : StoreEntity обозначает магазин, ресторан, кафе и т. д. Он выделяет контент, где информация о заведении общественного питания или магазине является критически важной для передачи пользователям.

      Рисунок 4: Пользовательский интерфейс, отображающий отдельный объект StoreEntity в кластере «Рекомендации».
    • Объект PointOfInterestEntity : PointOfInterestEntity обозначает место, представляющее интерес, например, автозаправочную станцию, место проведения мероприятия, тематический парк, музей, туристическую достопримечательность, пешеходную тропу и т. д. Он выделяет контент, где местоположение является критически важной информацией, которую необходимо передать пользователям. Его не следует использовать для обозначения гостиниц, магазинов или ресторанов.

      Рисунок 5: Пользовательский интерфейс, отображающий отдельный объект PointOfInterestEntity в кластере «Рекомендации».
    • PersonEntity : PersonEntity представляет собой человека. Рекомендации могут заключаться в том, чтобы выделить человека в таких категориях, как здоровье и фитнес, спорт, знакомства и т. д.

      Рисунок 5: Пользовательский интерфейс, отображающий отдельный объект PersonEntity в кластере «Рекомендации».
  • В кластере «Продолжение» отображается контент, недавно использованный пользователями из разных партнерских компаний-разработчиков, в рамках одной группы пользовательского интерфейса. Каждому партнеру-разработчику будет разрешено транслировать максимум 10 объектов в кластере «Продолжение».

    Продолжение вашего текста может иметь следующую структуру:

    • ArticleEntity : ArticleEntity — это текстовая рекомендация контента, относящегося к нескольким категориям. Эта сущность может использоваться для представления незавершенных новостных статей или другого контента, который пользователь хотел бы продолжить просмотр с того места, где он остановился. Например: маркетинговый контент, новостной фрагмент.

      Рисунок 6. Пользовательский интерфейс, отображающий отдельный объект ArticleEntity в кластере Continuation.
    • RestaurantReservationEntity : RestaurantReservationEntity представляет собой бронирование столика в ресторане или кафе и помогает пользователям отслеживать предстоящие или текущие бронирования в ресторанах.

      Рисунок 7. Пользовательский интерфейс, отображающий отдельный объект RestaurantReservationEntity в кластере Continuation.
    • EventReservationEntity : EventReservationEntity представляет собой бронирование на мероприятие и помогает пользователям отслеживать бронирования предстоящих или текущих мероприятий. Мероприятия могут включать, помимо прочего, следующие:

      • Спортивные мероприятия, такие как бронирование мест на футбольный матч.
      • Игровые мероприятия, такие как бронирование мест для киберспорта.
      • Развлекательные мероприятия, такие как бронирование билетов в кинотеатр, концерт, театр, автограф-сессия.
      • Бронирование поездок или посещение достопримечательностей, таких как экскурсии с гидом, билеты в музеи.
      • Бронирование мест на мероприятия / семинары / конференции
      • Бронирование образовательных/тренинговых сессий
      Рисунок 8. Пользовательский интерфейс, отображающий отдельный объект EventReservationEntity в кластере Continuation.
    • LodgingReservationEntity : LodgingEntityReservation представляет собой бронирование жилья для путешествия и помогает пользователям отслеживать предстоящие или текущие бронирования отелей или апартаментов для отдыха.

      Рисунок 9. Пользовательский интерфейс, отображающий отдельный объект LodgingReservationEntity в кластере Continuation.
    • TransportationReservationEntity : TransportationReservationEntity представляет собой бронирование транспортного средства любым видом транспорта и помогает пользователям отслеживать бронирования на предстоящие или текущие рейсы, паромы, поезда, автобусы, услуги такси или круизы.

      Рисунок 10. Пользовательский интерфейс, отображающий отдельный объект TransportationReservationEntity в кластере Continuation.
    • VehicleRentalReservationEntity : VehicleRentalReservationEntity представляет собой бронирование автомобиля в аренду и помогает пользователям отслеживать предстоящие или текущие бронирования автомобилей в аренду.

      Рисунок 11. Пользовательский интерфейс, отображающий отдельный объект VehicleRentalReservationEntity в кластере Continuation.
  • Кластер «Рекомендуемые» — это элемент пользовательского интерфейса, демонстрирующий выбранный объект GenericFeaturedEntity от множества партнеров-разработчиков в одной группе. Существует один кластер «Рекомендуемые», который отображается в верхней части интерфейса и имеет приоритетное расположение над всеми кластерами рекомендаций. Каждому партнеру-разработчику разрешено транслировать один объект поддерживаемого типа в кластере «Рекомендуемые», при этом в кластере «Рекомендуемые» может находиться множество объектов (потенциально разных типов) от нескольких разработчиков приложений.

    • GenericFeaturedEntity : GenericFeaturedEntity отличается от элемента «Рекомендация» тем, что элемент «Рекомендуемый» должен использоваться для отображения одного наиболее важного контента от разработчиков и представлять собой единственный наиболее важный контент, который будет интересен и актуален для пользователей.

      Рисунок 12: Пользовательский интерфейс, отображающий отдельную карточку GenericFeaturedEntity в кластере «Избранное».

Предварительная работа

Минимальный уровень API: 19

Добавьте библиотеку com.google.android.engage:engage-core в ваше приложение:

dependencies {
    // Make sure you also include that repository in your project's build.gradle file.
    implementation 'com.google.android.engage:engage-core:1.5.12'
}

Краткое содержание

Данная архитектура основана на реализации привязанного сервиса .

Для различных типов кластеров объем данных, которые может публиковать клиент, ограничен следующими лимитами:

Тип кластера Границы кластера Минимальное количество объектов в кластере Максимальное количество объектов в кластере.
Кластер(ы) рекомендаций Максимум 7 По крайней мере 1 Не более 50 ( ArticleEntity , EventEntity , LodgingEntity , StoreEntity , PointOfInterestEntity или PersonEntity )
Кластер продолжения Не более 1 По крайней мере 1 Не более 20 ( ArticleEntity , EventReservationEntity , LodgingReservationEntity , TransportationReservationEntity или VehicleRentalReservationEntity )
Выделенный кластер Не более 1 По крайней мере 1 Максимум 20 ( GenericFeaturedEntity )

Шаг 1: Предоставьте данные сущности.

В SDK определены различные сущности для представления каждого типа элементов. Для категории «Прочие» мы поддерживаем следующие сущности:

  1. GenericFeaturedEntity
  2. ArticleEntity
  3. EventEntity
  4. LodgingEntity
  5. StoreEntity
  6. PointOfInterestEntity
  7. PersonEntity
  8. RestaurantReservationEntity
  9. EventReservationEntity
  10. LodgingReservationEntity
  11. TransportationReservationEntity
  12. VehicleRentalReservationEntity

Приведенные ниже диаграммы описывают доступные характеристики и требования для каждого типа.

GenericFeaturedEntity

Атрибут Требование Описание Формат
Action Uri Необходимый

Прямая ссылка на сущность в приложении поставщика.

Примечание: Для указания источника можно использовать прямые ссылки. См. этот раздел часто задаваемых вопросов.

Ури
Изображения для плакатов Необходимый

При предоставлении нескольких изображений будет показано только одно. Рекомендуемое соотношение сторон — 16:9.

Примечание: Если предоставляется бейдж, обеспечьте безопасное расстояние в 24 dps как сверху, так и снизу изображения.

См. раздел «Технические характеристики изображения» для получения дополнительной информации.
Заголовок Необязательный Название организации.

Свободный текст

Рекомендуемый размер текста: 50 символов.

Описание Необязательный

Один абзац текста, описывающий объект.

Примечание: Пользователю будет отображаться либо описание, либо список подзаголовков, но не оба одновременно.

Свободный текст

Рекомендуемый размер текста: 180 символов.

список субтитров Необязательный

До 3 субтитров, каждый из которых представляет собой отдельную строку текста.

Примечание: Пользователю будет отображаться либо описание, либо список подзаголовков, но не оба одновременно.

Свободный текст

Рекомендуемый размер текста для каждого субтитра: максимум 50 символов.

Значки Необязательный

Каждый значок представляет собой либо произвольный текст (максимум 15 символов), либо небольшое изображение.

Специальная обработка пользовательского интерфейса поверх изображения/видео, например, в виде наложения значка на изображение.

  • "Обновление в режиме реального времени"
  • Продолжительность чтения статьи
Значок - Текст Необязательный

Название для значка

Примечание: для значка требуется либо текст, либо изображение.

Свободный текст

Рекомендуемый размер текста: максимум 15 символов.

Значок - Изображение Необязательный

Маленькое изображение

Особое оформление пользовательского интерфейса, например, наложение значка на миниатюру изображения/видео.

Примечание: для значка требуется либо текст, либо изображение.

См. раздел «Технические характеристики изображения» для получения дополнительной информации.
Категории контента Необязательный Опишите категорию контента в сущности.

Список перечислений

См. раздел «Категории контента» для получения рекомендаций.

ArticleEntity

Атрибут Требование Описание Формат
Action Uri Необходимый

Прямая ссылка на сущность в приложении поставщика.

Примечание: Для указания источника можно использовать прямые ссылки. См. этот раздел часто задаваемых вопросов.

Ури
Заголовок Необходимый Название организации.

Свободный текст

Рекомендуемый размер текста: максимум 50 символов.

Изображения для плакатов Необязательный

При предоставлении нескольких изображений будет показано только одно. Рекомендуемое соотношение сторон — 16:9.

Примечание: Настоятельно рекомендуется использовать изображение. Если предоставляется бейдж, обеспечьте безопасное пространство в 24 dps как сверху, так и снизу изображения.

См. раздел «Технические характеристики изображения» для получения дополнительной информации.
Источник - Название Необязательный Имя автора, организации или журналиста.

Свободный текст

Рекомендуемый размер текста: менее 25 символов.

Источник - Изображение Необязательный Изображение источника, например, автора, организации, репортера. См. раздел «Технические характеристики изображения» для получения дополнительной информации.
Описание Необязательный

Один абзац текста, описывающий объект.

Примечание: Пользователю будет отображаться либо описание, либо список подзаголовков, но не оба одновременно.

Свободный текст

Рекомендуемый размер текста: 180 символов.

список субтитров Необязательный

До 3 субтитров, каждый из которых представляет собой отдельную строку текста.

Примечание: Пользователю будет отображаться либо описание, либо список подзаголовков, но не оба одновременно.

Свободный текст

Рекомендуемый размер текста для каждого субтитра: максимум 50 символов.

Значки Необязательный

Каждый значок представляет собой либо произвольный текст (максимум 15 символов), либо небольшое изображение.

Специальное оформление пользовательского интерфейса поверх изображения/видео, например, в виде наложения значка поверх изображения.

  • "Обновление в режиме реального времени"
  • Продолжительность чтения статьи
Значок - Текст Необязательный

Название для значка

Примечание: для значка требуется либо текст, либо изображение.

Свободный текст

Рекомендуемый размер текста: максимум 15 символов.

Значок - Изображение Необязательный

Маленькое изображение

Особое оформление пользовательского интерфейса, например, наложение значка на миниатюру изображения/видео.

Примечание: для значка требуется либо текст, либо изображение.

См. раздел «Технические характеристики изображения» для получения дополнительной информации.
Время публикации контента Необязательный Это метка времени в миллисекундах, соответствующая дате публикации/обновления контента в приложении. Временная метка эпохи в миллисекундах
Последнее время помолвки Требуется при определенных условиях

Временная метка в миллисекундах, отражающая момент последнего взаимодействия пользователя с данным объектом.

Примечание: это поле обязательно для заполнения, если данная сущность является частью кластера продолжения.

Временная метка эпохи в миллисекундах
Процент выполнения Требуется при определенных условиях

Процент от общего объема контента, потребленного пользователем на данный момент.

Примечание: это поле обязательно для заполнения, если данная сущность является частью кластера продолжения.

Целочисленное значение в диапазоне от 0 до 100 включительно.
Категории контента Необязательный Опишите категорию контента в сущности.

Список перечислений

См. раздел «Категории контента» для получения рекомендаций.

EventEntity

Атрибут Требование Описание Формат
Action Uri Необходимый

Прямая ссылка на сущность в приложении поставщика.

Примечание: Для указания источника можно использовать прямые ссылки. См. этот раздел часто задаваемых вопросов.

Ури
Заголовок Необходимый Название организации.

Нить

Рекомендуемый размер текста: максимум 50 символов.

Время начала Необходимый

Временная метка эпохи, когда ожидается начало события.

Примечание: Данные будут представлены в миллисекундах.

Временная метка эпохи в миллисекундах
Режим событий Необходимый

Поле для указания того, будет ли мероприятие виртуальным, очным или и тем, и другим.

Перечисление: ВИРТУАЛЬНЫЙ, ОЧНЫЙ или ГИБРИДНЫЙ формат
Изображения для плакатов Необходимый

При предоставлении нескольких изображений будет показано только одно. Рекомендуемое соотношение сторон — 16:9.

Примечание: Настоятельно рекомендуется использовать изображение. Если предоставляется бейдж, обеспечьте безопасное пространство в 24 dps как сверху, так и снизу изображения.

См. раздел «Технические характеристики изображения» для получения дополнительной информации.
Местоположение - Страна Требуется при определенных условиях

Страна, в которой проходит мероприятие.

Примечание: Это необходимо для мероприятий, проводимых в очном или гибридном формате.

Свободный текст

Рекомендуемый размер текста: максимум ~20 символов.

Местоположение - Город Требуется при определенных условиях

Город, в котором проходит мероприятие.

Примечание: Это необходимо для мероприятий, проводимых в очном или гибридном формате.

Свободный текст

Рекомендуемый размер текста: максимум ~20 символов.

Местоположение - Отображаемый адрес Требуется при определенных условиях

Адрес или название места проведения мероприятия, которое должно быть отображено пользователю.

Примечание: Это необходимо для мероприятий, проводимых в очном или гибридном формате.

Свободный текст

Рекомендуемый размер текста: максимум ~20 символов.

Местоположение - Уличный адрес Необязательный Адрес (если имеется) места проведения мероприятия.

Свободный текст

Рекомендуемый размер текста: максимум ~20 символов.

Местоположение - Штат Необязательный Штат или провинция (если применимо), в которой проводится мероприятие.

Свободный текст

Рекомендуемый размер текста: максимум ~20 символов.

Местоположение - почтовый индекс Необязательный Почтовый индекс (если применимо) места проведения мероприятия.

Свободный текст

Рекомендуемый размер текста: максимум ~20 символов.

Местоположение - Район Необязательный Район (если применимо), в котором проводится мероприятие.

Свободный текст

Рекомендуемый размер текста: максимум ~20 символов.

Конец времени Необязательный

Временная метка эпохи, когда ожидается завершение события.

Примечание: Данные будут представлены в миллисекундах.

Временная метка эпохи в миллисекундах
Описание Необязательный

Один абзац текста, описывающий объект.

Примечание: Пользователю будет отображаться либо описание, либо список подзаголовков, но не оба одновременно.

Свободный текст

Рекомендуемый размер текста: 180 символов.

список субтитров Необязательный

До 3 субтитров, каждый из которых представляет собой отдельную строку текста.

Примечание: Пользователю будет отображаться либо описание, либо список подзаголовков, но не оба одновременно.

Свободный текст

Рекомендуемый размер текста для каждого субтитра: максимум 50 символов.

Значки Необязательный

Каждый значок представляет собой либо произвольный текст (максимум 15 символов), либо небольшое изображение.

Значок - Текст Необязательный

Название для значка

Примечание: для значка требуется либо текст, либо изображение.

Свободный текст

Рекомендуемый размер текста: максимум 15 символов.

Значок - Изображение Необязательный

Маленькое изображение

Особое оформление пользовательского интерфейса, например, наложение значка на миниатюру изображения/видео.

Примечание: для значка требуется либо текст, либо изображение.

См. раздел «Технические характеристики изображения» для получения дополнительной информации.
Цена - Текущая цена Условно обязательно

Текущая цена билета/пропуска на мероприятие.

Необходимо указать, если указана перечеркнутая цена.

Свободный текст
Цена - Зачеркнутая цена Необязательный Первоначальная цена билета/пропуска на мероприятие. Свободный текст
Указание цены Необязательный Укажите цену, чтобы отобразить информацию о промоакции, мероприятии или скидке для участников, если таковая имеется.

Свободный текст

Рекомендуемый размер текста: менее 45 символов (слишком длинный текст может содержать многоточие).

Категории контента Необязательный Опишите категорию контента в сущности.

Список соответствующих требованиям перечней

  • TYPE_MOVIES_AND_TV_SHOWS (Пример - Кинотеатр)
  • TYPE_DIGITAL_GAMES (Пример - киберспорт)
  • TYPE_MUSIC (Пример - Концерт)
  • TYPE_TRAVEL_AND_LOCAL (Пример - Тур, фестиваль)
  • TYPE_HEALTH_AND_FITENESS (Пример - Занятие йогой)
  • TYPE_EDUCATION (Пример - Класс)
  • TYPE_SPORTS (Пример - Футбольный матч)
  • TYPE_DATING (Пример - встреча)

См. раздел «Категории контента» для получения рекомендаций.

LodgingEntity

Атрибут Требование Описание Формат
Action Uri Необходимый

Прямая ссылка на сущность в приложении поставщика.

Примечание: Для указания источника можно использовать прямые ссылки. См. этот раздел часто задаваемых вопросов.

Ури
Заголовок Необходимый Название организации.

Нить

Рекомендуемый размер текста: максимум 50 символов.

Изображения для плакатов Необходимый

При предоставлении нескольких изображений будет показано только одно. Рекомендуемое соотношение сторон — 16:9.

Примечание: Если предоставляется бейдж, обеспечьте безопасное расстояние в 24 dps как сверху, так и снизу изображения.

См. раздел «Технические характеристики изображения» для получения дополнительной информации.
Местоположение - Страна Необходимый Страна, в которой осуществляется размещение.

Свободный текст

Рекомендуемый размер текста: максимум ~20 символов.

Местоположение - Город Необходимый Город, в котором осуществляется размещение.

Свободный текст

Рекомендуемый размер текста: максимум ~20 символов.

Местоположение - Отображаемый адрес Необходимый Адрес места проживания, который будет отображен пользователю.

Свободный текст

Рекомендуемый размер текста: максимум ~20 символов.

Местоположение - Уличный адрес Необязательный Адрес проживания (если имеется).

Свободный текст

Рекомендуемый размер текста: максимум ~20 символов.

Местоположение - Штат Необязательный Штат или провинция (если применимо), в которой находится место проживания.

Свободный текст

Рекомендуемый размер текста: максимум ~20 символов.

Местоположение - почтовый индекс Необязательный Почтовый индекс (если имеется) места проживания.

Свободный текст

Рекомендуемый размер текста: максимум ~20 символов.

Местоположение - Район Необязательный Район (если применимо), где находится жилье.

Свободный текст

Рекомендуемый размер текста: максимум ~20 символов.

Значки Необязательный

Каждый значок представляет собой либо произвольный текст (максимум 15 символов), либо небольшое изображение.

Значок - Текст Необязательный

Название для значка

Примечание: для значка требуется либо текст, либо изображение.

Свободный текст

Рекомендуемый размер текста: максимум 15 символов.

Значок - Изображение Необязательный

Маленькое изображение

Особое оформление пользовательского интерфейса, например, наложение значка на миниатюру изображения/видео.

Примечание: для значка требуется либо текст, либо изображение.

См. раздел «Технические характеристики изображения» для получения дополнительной информации.
Описание Необязательный

Один абзац текста, описывающий объект.

Примечание: Пользователю будет отображаться либо описание, либо список подзаголовков, но не оба одновременно.

Свободный текст

Рекомендуемый размер текста: 180 символов.

список субтитров Необязательный

До 3 субтитров, каждый из которых представляет собой отдельную строку текста.

Примечание: Пользователю будет отображаться либо описание, либо список подзаголовков, но не оба одновременно.

Свободный текст

Рекомендуемый размер текста для каждого субтитра: максимум 50 символов.

AvailabilityTimeWindow - Время начала Необязательный Временная метка в миллисекундах, указывающая на предполагаемое время открытия/доступности жилья. Временная метка эпохи в миллисекундах
AvailabilityTimeWindow - Время окончания Необязательный Временная метка в миллисекундах, до которой ожидается, что жилье будет открыто/доступно. Временная метка эпохи в миллисекундах
Рейтинг - Максимальное значение Необязательный

Максимальное значение шкалы оценок.

Этот параметр необходимо указать, если также предоставлено текущее значение рейтинга.

Число >= 0,0
Рейтинг - Текущая стоимость Необязательный

Текущее значение рейтинговой шкалы.

Этот параметр необходимо указать, если также указано максимальное значение рейтинга.

Число >= 0,0
Рейтинг - Количество Необязательный

Количество оценок, выставленных отелю.

Примечание: Укажите это поле, если ваше приложение контролирует способ отображения количества для пользователей. Используйте краткую строку. Например, если количество равно 1 000 000, рассмотрите возможность использования сокращения, например, 1M, чтобы количество не обрезалось на экранах меньшего размера.

Нить
Рейтинг - Количество значений Необязательный

Количество оценок, выставленных отелю.

Примечание: Укажите это поле, если вы не обрабатываете логику отображения сокращений самостоятельно. Если присутствуют поля «Count» и «Count Value», пользователям будет отображаться значение «Count».

Длинный
Цена - Текущая цена Условно обязательно

Текущая цена проживания.

Необходимо указать, если указана перечеркнутая цена.

Свободный текст
Цена - Зачеркнутая цена Необязательный Первоначальная цена проживания, которая будет зачеркнута в UI. Свободный текст
Указание цены Необязательный Укажите цену, чтобы отобразить информацию о промоакции, мероприятии или скидке для участников, если таковая имеется.

Свободный текст

Рекомендуемый размер текста: менее 45 символов (слишком длинный текст может содержать многоточие).

StoreEntity

Объект StoreEntity представляет собой отдельный магазин, который партнеры-разработчики хотят опубликовать, например, ресторан или продуктовый магазин.

Атрибут Требование Описание Формат
Изображения для плакатов Необходимый Необходимо предоставить как минимум одно изображение. См. раздел «Технические характеристики изображения» для получения дополнительной информации.
Action Uri Необходимый

Прямая ссылка на сущность в приложении поставщика.

Примечание: Для указания источника можно использовать прямые ссылки. См. этот раздел часто задаваемых вопросов.

Ури
Заголовок Необязательный Название магазина.

Свободный текст

Рекомендуемый размер текста: менее 45 символов (слишком длинный текст может содержать многоточие).

Расположение Необязательный Местоположение магазина.

Свободный текст

Рекомендуемый размер текста: менее 45 символов (слишком длинный текст может содержать многоточие).

Вызывать Необязательный При необходимости укажите ссылку на акцию, мероприятие или обновление информации о магазине.

Свободный текст

Рекомендуемый размер текста: менее 45 символов (слишком длинный текст может содержать многоточие).

Мелкий шрифт в пояснительной записке Необязательный Текст, напечатанный мелким шрифтом для пояснения.

Свободный текст

Рекомендуемый размер текста: менее 45 символов (слишком длинный текст может содержать многоточие).

Описание Необязательный Описание магазина.

Свободный текст

Рекомендуемый размер текста: менее 90 символов (слишком длинный текст может содержать многоточие).

Рейтинг - Максимальное значение Необязательный

Максимальное значение шкалы оценок.

Этот параметр необходимо указать, если также предоставлено текущее значение рейтинга.

Число >= 0,0
Рейтинг - Текущая стоимость Необязательный

Текущее значение рейтинговой шкалы.

Этот параметр необходимо указать, если также указано максимальное значение рейтинга.

Число >= 0,0
Рейтинг - Количество Необязательный

Количество оценок, выставленных отелю.

Примечание: Укажите это поле, если ваше приложение хочет контролировать способ отображения этой информации пользователям. Укажите краткую строку, которая может быть показана пользователю. Например, если значение равно 1 000 000, используйте сокращения, такие как 1M, чтобы оно не обрезалось на экранах меньшего размера.

Нить
Рейтинг - Количество значений Необязательный

Количество оценок, выставленных отелю.

Примечание: Укажите это поле, если вы не хотите самостоятельно обрабатывать логику отображения сокращений. Если присутствуют поля «Количество» и «Значение количества», мы будем использовать значение «Количество» для отображения пользователям.

Длинный

PointOfInterestEntity

Атрибут Требование Описание Формат
Action Uri Необходимый

Прямая ссылка на сущность в приложении поставщика.

Примечание: Для указания источника можно использовать прямые ссылки. См. этот раздел часто задаваемых вопросов.

Ури
Заголовок Необходимый Название организации.

Нить

Рекомендуемый размер текста: максимум 50 символов.

Изображения для плакатов Необходимый

При предоставлении нескольких изображений будет показано только одно. Рекомендуемое соотношение сторон — 16:9.

Примечание: Настоятельно рекомендуется использовать изображение. Если предоставляется бейдж, обеспечьте безопасное пространство в 24 dps как сверху, так и снизу изображения.

См. раздел «Технические характеристики изображения» для получения дополнительной информации.
Местоположение - Страна Необходимый Страна, в которой происходит событие, представляющее интерес.

Свободный текст

Рекомендуемый размер текста: максимум ~20 символов.

Местоположение - Город Необходимый Город, в котором находится интересующее место.

Свободный текст

Рекомендуемый размер текста: максимум ~20 символов.

Местоположение - Отображаемый адрес Необходимый Адрес интересующего объекта, который будет отображен пользователю.

Свободный текст

Рекомендуемый размер текста: максимум ~20 символов.

Местоположение - Уличный адрес Необязательный Адрес (если имеется) интересующего объекта.

Свободный текст

Рекомендуемый размер текста: максимум ~20 символов.

Местоположение - Штат Необязательный Штат или провинция (если применимо), в которой находится интересующий объект.

Свободный текст

Рекомендуемый размер текста: максимум ~20 символов.

Местоположение - почтовый индекс Необязательный Почтовый индекс (если применимо) интересующего объекта.

Свободный текст

Рекомендуемый размер текста: максимум ~20 символов.

Местоположение - Район Необязательный Окрестности (если применимо) интересующего объекта.

Свободный текст

Рекомендуемый размер текста: максимум ~20 символов.

AvailabilityTimeWindow - Время начала Необязательный Временная метка в миллисекундах, указывающая на момент, когда интересующая точка, как ожидается, будет открыта/доступна. Временная метка эпохи в миллисекундах
AvailabilityTimeWindow - Время окончания Необязательный Временная метка эпохи в миллисекундах, до которой ожидается, что интересующая точка будет открыта/доступна. Временная метка эпохи в миллисекундах
Значки Необязательный

Каждый значок представляет собой либо произвольный текст (максимум 15 символов), либо небольшое изображение.

Значок - Текст Необязательный

Название для значка

Примечание: для значка требуется либо текст, либо изображение.

Свободный текст

Рекомендуемый размер текста: максимум 15 символов.

Значок - Изображение Необязательный

Маленькое изображение

Особое оформление пользовательского интерфейса, например, наложение значка на миниатюру изображения/видео.

Примечание: для значка требуется либо текст, либо изображение.

См. раздел «Технические характеристики изображения» для получения дополнительной информации.
Описание Необязательный

Один абзац текста, описывающий объект.

Примечание: Пользователю будет отображаться либо описание, либо список подзаголовков, но не оба одновременно.

Свободный текст

Рекомендуемый размер текста: 180 символов.

список субтитров Необязательный

До 3 субтитров, каждый из которых представляет собой отдельную строку текста.

Примечание: Пользователю будет отображаться либо описание, либо список подзаголовков, но не оба одновременно.

Свободный текст

Рекомендуемый размер текста для каждого субтитра: максимум 50 символов.

Рейтинг - Максимальное значение Необязательный

Максимальное значение шкалы оценок.

Этот параметр необходимо указать, если также предоставлено текущее значение рейтинга.

Число >= 0,0
Рейтинг - Текущая стоимость Необязательный

Текущее значение рейтинговой шкалы.

Этот параметр необходимо указать, если также указано максимальное значение рейтинга.

Число >= 0,0
Рейтинг - Количество Необязательный

Количество оценок для интересующего объекта.

Примечание: Укажите это поле, если ваше приложение контролирует способ отображения количества для пользователей. Используйте краткую строку. Например, если количество равно 1 000 000, рассмотрите возможность использования сокращения, например, 1M, чтобы количество не обрезалось на экранах меньшего размера.

Нить
Рейтинг - Количество значений Необязательный

Количество оценок для интересующего объекта.

Примечание: Укажите это поле, если вы не обрабатываете логику отображения сокращений самостоятельно. Если присутствуют поля «Count» и «Count Value», пользователям будет отображаться значение «Count».

Длинный
Цена - Текущая цена Условно обязательно

Текущая цена билетов/входного билета в достопримечательность.

Необходимо указать, если указана перечеркнутая цена.

Свободный текст
Цена - Зачеркнутая цена Необязательный Первоначальная цена билетов/входного билета в достопримечательность. Свободный текст
Указание цены Необязательный Укажите цену, чтобы отобразить информацию о промоакции, мероприятии или скидке для участников, если таковая имеется.

Свободный текст

Рекомендуемый размер текста: менее 45 символов (слишком длинный текст может содержать многоточие).

Категории контента Необязательный Опишите категорию контента в сущности.

Список соответствующих требованиям перечней

  • TYPE_TRAVEL_AND_LOCAL
  • TYPE_MOVIES_AND_TV_SHOWS (Пример - театр)
  • TYPE_MEDICAL (Пример - больница)
  • TYPE_EDUCATION (Пример - школа)
  • TYPE_SPORTS (Пример - стадион)

См. раздел «Категории контента» для получения рекомендаций.

PersonEntity

Атрибут Требование Описание Формат
Action Uri Необходимый

Прямая ссылка на сущность в приложении поставщика.

Примечание: Для указания источника можно использовать прямые ссылки. См. этот раздел часто задаваемых вопросов.

Ури
Профиль - Имя Необходимый Имя профиля, идентификатор или никнейм, например, "John Doe", "@TeamPixel" и т. д.

Нить

Рекомендуемый размер текста: максимум 50 символов.

Профиль - Аватар Необходимый

Фотография профиля или аватар пользователя.

Примечание: Изображение должно быть квадратным, в масштабе 1:1.

См. раздел «Технические характеристики изображения» для получения дополнительной информации.
Профиль - Дополнительный текст Необязательный Свободный текст, например, никнейм в профиле.

Свободный текст

Рекомендуемый размер текста: максимум 15 символов.

Профиль - Дополнительное изображение Необязательный Небольшое изображение, похожее на значок подтверждения. См. раздел «Технические характеристики изображения» для получения дополнительной информации.
Изображение в заголовке Необязательный

При предоставлении нескольких изображений будет показано только одно. Рекомендуемое соотношение сторон — 16:9.

Примечание: Настоятельно рекомендуется использовать изображение. Если предоставляется бейдж, обеспечьте безопасное пространство в 24 dps как сверху, так и снизу изображения.

См. раздел «Технические характеристики изображения» для получения дополнительной информации.
Популярность - Количество Необязательный

Укажите количество подписчиков или показатель популярности, например, "3,7 млн".

Примечание: Если указаны и значение Count, и значение Count, будет использовано значение Count.

Нить

Рекомендуемый размер текста: максимум 20 символов для количества символов и метки вместе взятых.

Популярность - значение количества Необязательный

Количество подписчиков или показатель популярности.

Примечание: укажите значение Count, если ваше приложение не хочет обрабатывать логику оптимизации больших чисел для разных размеров экрана. Если указаны и Count, и Count Value, будет использоваться Count.

Длинный
Популярность - Метка Необязательный Укажите, какой рейтинг используется. Например, «Лайки».

Нить

Рекомендуемый размер текста: максимум 20 символов для количества символов и метки вместе взятых.

Популярность - Визуальная Необязательный

Укажите, для чего предназначено это взаимодействие. Например: изображение со значком «Нравится», эмодзи.

Можно предоставить более одного изображения, однако не все из них могут отображаться на всех форм-факторах.

Примечание: Изображение должно быть квадратным, в масштабе 1:1.

См. раздел «Технические характеристики изображения» для получения дополнительной информации.
Рейтинг - Максимальное значение Необходимый

Максимальное значение шкалы оценок.

Этот параметр необходимо указать, если также предоставлено текущее значение рейтинга.

Число >= 0,0
Рейтинг - Текущая стоимость Необходимый

Текущее значение рейтинговой шкалы.

Этот параметр необходимо указать, если также указано максимальное значение рейтинга.

Число >= 0,0
Рейтинг - Количество Необязательный

Количество оценок для данной организации.

Примечание: Укажите это поле, если ваше приложение хочет контролировать способ отображения этой информации пользователям. Укажите краткую строку, которая может быть показана пользователю. Например, если значение равно 1 000 000, используйте сокращения, такие как 1M, чтобы оно не обрезалось на экранах меньшего размера.

Нить
Рейтинг - Количество значений Необязательный

Количество оценок для данной организации.

Примечание: Укажите это поле, если вы не хотите самостоятельно обрабатывать логику отображения сокращений. Если присутствуют поля «Количество» и «Значение количества», мы будем использовать значение «Количество» для отображения пользователям.

Длинный
Местоположение - Страна Необязательный Страна, в которой находится или работает данное лицо.

Свободный текст

Рекомендуемый размер текста: максимум ~20 символов.

Местоположение - Город Необязательный Город, в котором находится или работает данный человек.

Свободный текст

Рекомендуемый размер текста: максимум ~20 символов.

Местоположение - Отображаемый адрес Необязательный Пользователю будет показан адрес, по которому находится или оказывает свои услуги данное лицо.

Свободный текст

Рекомендуемый размер текста: максимум ~20 символов.

Местоположение - Уличный адрес Необязательный Адрес (если применимо), по которому находится или работает данное лицо.

Свободный текст

Рекомендуемый размер текста: максимум ~20 символов.

Местоположение - Штат Необязательный Штат (если применимо), где находится или работает данное лицо.

Свободный текст

Рекомендуемый размер текста: максимум ~20 символов.

Местоположение - почтовый индекс Необязательный Почтовый индекс (если применимо), по которому находится или проходит службу данное лицо.

Свободный текст

Рекомендуемый размер текста: максимум ~20 символов.

Местоположение - Район Необязательный Район (если применимо), где находится или работает данное лицо.

Свободный текст

Рекомендуемый размер текста: максимум ~20 символов.

Значки Необязательный

Каждый значок представляет собой либо произвольный текст (максимум 15 символов), либо небольшое изображение.

Значок - Текст Необязательный

Название для значка

Примечание: для значка требуется либо текст, либо изображение.

Свободный текст

Рекомендуемый размер текста: максимум 15 символов.

Значок - Изображение Необязательный

Маленькое изображение

Особое оформление пользовательского интерфейса, например, наложение значка на миниатюру изображения/видео.

Примечание: для значка требуется либо текст, либо изображение.

См. раздел «Технические характеристики изображения» для получения дополнительной информации.
Описание Необязательный

Один абзац текста, описывающий объект.

Примечание: Пользователю будет отображаться либо описание, либо список подзаголовков, но не оба одновременно.

Свободный текст

Рекомендуемый размер текста: 180 символов.

список субтитров Необязательный

До 3 субтитров, каждый из которых представляет собой отдельную строку текста.

Примечание: Пользователю будет отображаться либо описание, либо список подзаголовков, но не оба одновременно.

Свободный текст

Рекомендуемый размер текста для каждого субтитра: максимум 50 символов.

Категории контента Необязательный Опишите категорию контента в сущности.

Список соответствующих требованиям перечней

  • TYPE_HEALTH_AND_FITENESS (Пример - Тренер по йоге/фитнесу)
  • TYPE_HOME_AND_AUTO (Пример - Сантехник)
  • TYPE_SPORTS (Пример - Игрок)
  • TYPE_DATING

См. раздел «Категории контента» для получения рекомендаций.

RestaurantReservationEntity

Атрибут Требование Описание Формат
Action Uri Необходимый

Прямая ссылка на сущность в приложении поставщика.

Примечание: Для указания источника можно использовать прямые ссылки. См. этот раздел часто задаваемых вопросов.

Ури
Заголовок Необходимый Название организации.

Нить

Рекомендуемый размер текста: максимум 50 символов.

Время начала бронирования Необходимый Временная метка в миллисекундах, указывающая на предполагаемое начало действия бронирования. Временная метка эпохи в миллисекундах
Местоположение - Страна Необходимый Страна, в которой расположен ресторан.

Свободный текст

Рекомендуемый размер текста: максимум ~20 символов.

Местоположение - Город Необходимый Город, в котором расположен ресторан.

Свободный текст

Рекомендуемый размер текста: максимум ~20 символов.

Местоположение - Отображаемый адрес Необходимый Адрес ресторана, который будет отображен пользователю.

Свободный текст

Рекомендуемый размер текста: максимум ~20 символов.

Местоположение - Уличный адрес Необязательный Адрес ресторана (если имеется).

Свободный текст

Рекомендуемый размер текста: максимум ~20 символов.

Местоположение - Штат Необязательный Штат или провинция (если применимо), в которой расположен ресторан.

Свободный текст

Рекомендуемый размер текста: максимум ~20 символов.

Местоположение - почтовый индекс Необязательный Почтовый индекс (если имеется) ресторана.

Свободный текст

Рекомендуемый размер текста: максимум ~20 символов.

Местоположение - Район Необязательный Район (если применимо), в котором расположен ресторан.

Свободный текст

Рекомендуемый размер текста: максимум ~20 символов.

Изображения для плакатов Необязательный При предоставлении нескольких изображений будет показано только одно. Рекомендуемое соотношение сторон — 16:9. См. раздел «Технические характеристики изображения» для получения дополнительной информации.
Описание Необязательный

Один абзац текста, описывающий объект.

Примечание: Пользователю будет отображаться либо описание, либо список подзаголовков, но не оба одновременно.

Свободный текст

Рекомендуемый размер текста: 180 символов.

список субтитров Необязательный

До 3 субтитров, каждый из которых представляет собой отдельную строку текста.

Примечание: Пользователю будет отображаться либо описание, либо список подзаголовков, но не оба одновременно.

Свободный текст

Рекомендуемый размер текста для каждого субтитра: максимум 50 символов.

Размер стола Необязательный Количество человек в резервационной группе Целое число > 0

EventReservationEntity

Атрибут Требование Описание Формат
Action Uri Необходимый

Прямая ссылка на сущность в приложении поставщика.

Примечание: Для указания источника можно использовать прямые ссылки. См. этот раздел часто задаваемых вопросов.

Ури
Заголовок Необходимый Название организации.

Нить

Рекомендуемый размер текста: максимум 50 символов.

Время начала Необходимый

Временная метка эпохи, когда ожидается начало события.

Примечание: Данные будут представлены в миллисекундах.

Временная метка эпохи в миллисекундах
Режим событий Необходимый

Поле для указания того, будет ли мероприятие виртуальным, очным или и тем, и другим.

Перечисление: ВИРТУАЛЬНЫЙ, ОЧНЫЙ или ГИБРИДНЫЙ формат
Местоположение - Страна Требуется при определенных условиях

Страна, в которой проходит мероприятие.

Примечание: Это необходимо для мероприятий, проводимых в очном или гибридном формате.

Свободный текст

Рекомендуемый размер текста: максимум ~20 символов.

Местоположение - Город Требуется при определенных условиях

Город, в котором проходит мероприятие.

Note: This is required for events which are IN_PERSON or HYBRID

Free text

Recommended text size: max ~20 chars

Location - Display Address Conditionally Required

The address or venue name where the event will take place that should be displayed to the user.

Note: This is required for events which are IN_PERSON or HYBRID

Free text

Recommended text size: max ~20 chars

Location - Street Address Необязательный The street address (if applicable) of the location at which event is being hosted.

Free text

Recommended text size: max ~20 chars

Location - State Необязательный The state or province (if applicable) in which the event is being hosted.

Free text

Recommended text size: max ~20 chars

Location - Zip code Необязательный The zip code (if applicable) of the location in which the event is being hosted.

Free text

Recommended text size: max ~20 chars

Location - Neighborhood Необязательный The neighborhood (if applicable) in which the event is being hosted.

Free text

Recommended text size: max ~20 chars

Poster images Необязательный

We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9

Note: Image is highly recommended. If a badge is provided, ensure safe space of 24 dps at both the top and bottom of the image

See Image Specifications for guidance.
End time Необязательный

The epoch timestamp when the event is expected to end.

Note: This will be represented in milliseconds.

Epoch timestamp in milliseconds
Service Provider - Name Необязательный

The name of the service provider.

Note: Either text or image is required for the service provider.

Free text. For example, name of the event organizer/tour
Service Provider - Image Необязательный

The logo/image of the service provider.

Note: Either text or image is required for the service provider.

See Image Specifications for guidance.
Описание Необязательный

A single paragraph of text to describe the entity.

Note: Either description or subtitle list will be displayed to the user, not both.

Free text

Recommended text size: 180 chars

Subtitle list Необязательный

Up to 3 subtitles, with each subtitle a single line of text.

Note: Either description or subtitle list will be displayed to the user, not both.

Free text

Recommended text size for each subtitle: max 50 chars

Значки Необязательный

Each badge is either free text (max 15 chars) or small image.

Badge - Text Необязательный

Title for the badge

Note: Either text or image is required for the badge

Free text

Recommended text size: max 15 chars

Badge - Image Необязательный

Small image

Special UX treatment, for example as badge overlay on the image/video thumbnail.

Note: Either text or image is required for the badge

See Image Specifications for guidance.
Идентификатор бронирования Необязательный The reservation ID for the event reservation. Free text
Price - CurrentPrice Conditionally required

The current price of the ticket/pass for the event.

Must be provided if strikethrough price is provided.

Free text
Price - StrikethroughPrice Необязательный The original price of the ticket/pass for the event. Free text
Price Callout Необязательный Price callout to feature a promo, event, member discount, if available.

Free text

Recommended text size: under 45 chars (Text that is too long may show ellipses)

Rating - Max value Необязательный

The maximum value of the rating scale.

Must be provided if current value of rating is also provided.

Number >= 0.0
Rating - Current value Необязательный

The current value of the rating scale.

Must be provided if maximum value of rating is also provided.

Number >= 0.0
Rating - Count Необязательный

The count of the ratings for the event.

Note: Provide this field if your app wants to control how this is displayed to the users. Provide the concise string that can be displayed to the user. For example, if the count is 1,000,000, consider using abbreviations like 1M, so that it won't be truncated on smaller display sizes.

Нить
Rating - Count Value Необязательный

The count of the ratings for the event.

Note: Provide this field if you don't want to handle the display abbreviation logic yourself. If both Count and Count Value are present, we will use the Count to display to users

Длинный
Категории контента Необязательный Describe the category of the content in the entity.

List of Eligible Enums

  • TYPE_MOVIES_AND_TV_SHOWS (Example - Cinema)
  • TYPE_DIGITAL_GAMES (Example - eSports)
  • TYPE_MUSIC (Example - Concert)
  • TYPE_TRAVEL_AND_LOCAL (Example - Tour, festival)
  • TYPE_HEALTH_AND_FITENESS (Example - Yoga class)
  • TYPE_EDUCATION (Example - Class)
  • TYPE_SPORTS (Example - Football game)
  • TYPE_DATING (Example - meetup)

See the Content Category section for guidance.

LodgingReservationEntity

Атрибут Requirement Описание Формат
Action Uri Необходимый

Deep Link to the entity in the provider app.

Note: You can use deep links for attribution. Refer to this FAQ

Ури
Заголовок Необходимый Title of the entity.

Free text. For example, "Your Stay from Dec 12th"

Recommended text size: Max 50 chars

Check-in Time Необходимый The epoch timestamp in milliseconds that represents the check in time for the reservation. Epoch timestamp in milliseconds
Время выезда Необходимый The epoch timestamp in milliseconds that represents the check out time for the reservation. Epoch timestamp in milliseconds
Location - Country Необходимый The country in which the lodging is located.

Free text

Recommended text size: max ~20 chars

Location - City Необходимый The city in which the lodging is located.

Free text

Recommended text size: max ~20 chars

Location - Display Address Необходимый The address of the lodging that will be displayed to the user.

Free text

Recommended text size: max ~20 chars

Location - Street Address Необязательный The street address (if applicable) of the lodging.

Free text

Recommended text size: max ~20 chars

Location - State Необязательный The state or province (if applicable) in which the lodging is located.

Free text

Recommended text size: max ~20 chars

Location - Zip code Необязательный The zip code (if applicable) of the lodging.

Free text

Recommended text size: max ~20 chars

Location - Neighborhood Необязательный The neighborhood (if applicable) of the lodging.

Free text

Recommended text size: max ~20 chars

Poster images Необязательный

We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9

Note: If a badge is provided, ensure safe space of 24 dps at both the top and bottom of the image

See Image Specifications for guidance.
Описание Необязательный

A single paragraph of text to describe the entity.

Note: Either description or subtitle list will be displayed to the user, not both.

Free text

Recommended text size: 180 chars

Subtitle list Необязательный

Up to 3 subtitles, with each subtitle a single line of text.

Note: Either description or subtitle list will be displayed to the user, not both.

Free text

Recommended text size for each subtitle: max 50 chars

Идентификатор бронирования Необязательный The reservation ID for the lodging reservation. Free text
Rating - Max value Необязательный

The maximum value of the rating scale.

Must be provided if current value of rating is also provided.

Number >= 0.0
Rating - Current value Необязательный

The current value of the rating scale.

Must be provided if maximum value of rating is also provided.

Number >= 0.0
Rating - Count Необязательный

The count of the ratings for the lodging.

Note: Provide this field if your app wants to control how this is displayed to the users. Provide the concise string that can be displayed to the user. For example, if the count is 1,000,000, consider using abbreviations like 1M, so that it won't be truncated on smaller display sizes.

Нить
Rating - Count Value Необязательный

The count of the ratings for the lodging.

Note: Provide this field if you don't want to handle the display abbreviation logic yourself. If both Count and Count Value are present, we will use the Count to display to users

Длинный
Price - CurrentPrice Conditionally required

The current price of the lodging.

Must be provided if strikethrough price is provided.

Free text
Price - StrikethroughPrice Необязательный The original price of the lodging, which is be struck-through in the UI. Free text
Price Callout Необязательный Price callout to feature a promo, event, member discount, if available.

Free text

Recommended text size: under 45 chars (Text that is too long may show ellipses)

TransportationReservationEntity

Атрибут Requirement Описание Формат
Action Uri Необходимый

Deep Link to the entity in the provider app.

Note: You can use deep links for attribution. Refer to this FAQ

Ури
Заголовок Необходимый Title of the entity.

Free text. For example, "SFO to SAN"

Recommended text size: Max 50 chars

Transportation Type Необходимый The mode/type of transportation for the reservation. Enum: FLIGHT, TRAIN, BUS, or FERRY
Время отправления Необходимый The epoch timestamp in milliseconds that represents the departure time. Epoch timestamp in milliseconds
Время прибытия Необходимый The epoch timestamp in milliseconds that represents the arrival time. Epoch timestamp in milliseconds
Departure Location - Country Необязательный The country of departure.

Free text

Recommended text size: max ~20 chars

Departure Location - City Необязательный The city of departure.

Free text

Recommended text size: max ~20 chars

Departure Location - Display Address Необязательный The location of departure that will be displayed to the user.

Free text

Recommended text size: max ~20 chars

Departure Location - Street Address Необязательный The street address (if applicable) of the departure location.

Free text

Recommended text size: max ~20 chars

Departure Location - State Необязательный The state or province (if applicable) of the departure location.

Free text

Recommended text size: max ~20 chars

Departure Location - Zip code Необязательный The zip code (if applicable) of the departure location.

Free text

Recommended text size: max ~20 chars

Departure Location - Neighborhood Необязательный The neighborhood (if applicable) of the departure location.

Free text

Recommended text size: max ~20 chars

Arrival Location - Country Необязательный The country of arrival.

Free text

Recommended text size: max ~20 chars

Arrival Location - City Необязательный The city of arrival.

Free text

Recommended text size: max ~20 chars

Arrival Location - Display Address Необязательный The location of arrival that will be displayed to the user.

Free text

Recommended text size: max ~20 chars

Arrival Location - Street Address Необязательный The street address (if applicable) of the arrival location.

Free text

Recommended text size: max ~20 chars

Arrival Location - State Необязательный The state or province (if applicable) of the arrival location.

Free text

Recommended text size: max ~20 chars

Arrival Location - Zip code Необязательный The zip code (if applicable) of the arrival location.

Free text

Recommended text size: max ~20 chars

Arrival Location - Neighborhood Необязательный The neighborhood (if applicable) of the arrival location.

Free text

Recommended text size: max ~20 chars

Service Provider - Name Необязательный

The name of the service provider.

Note: Either text or image is required for the service provider.

Free text. For example, Airline name
Service Provider - Image Необязательный

The logo/image of the service provider.

Note: Either text or image is required for the service provider.

See Image Specifications for guidance.
Poster images Необязательный

We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9

See Image Specifications for guidance.
Описание Необязательный

A single paragraph of text to describe the entity.

Note: Either description or subtitle list will be displayed to the user, not both.

Free text

Recommended text size: 180 chars

Subtitle list Необязательный

Up to 3 subtitles, with each subtitle a single line of text.

Note: Either description or subtitle list will be displayed to the user, not both.

Free text

Recommended text size for each subtitle: max 50 chars

Идентификатор бронирования Необязательный The reservation ID for the transportation reservation. Free text
Price - CurrentPrice Conditionally required

The current price of the reservation.

Must be provided if strikethrough price is provided.

Free text
Price - StrikethroughPrice Необязательный The original price of the reservation, which is be struck-through in the UI. Free text
Price Callout Необязательный Price callout to feature a promo, event, member discount, if available.

Free text

Recommended text size: under 45 chars (Text that is too long may show ellipses)

Transportation Number Необходимый The flight number, bus number, train number, or ferry/cruise number. Free text
Boarding Time Необходимый The epoch timestamp that represents the boarding time for the reservation (if applicable) Epoch timestamp in milliseconds

VehicleRentalReservationEntity

Атрибут Requirement Описание Формат
Action Uri Необходимый

Deep Link to the entity in the provider app.

Note: You can use deep links for attribution. Refer to this FAQ

Ури
Заголовок Необходимый Title of the entity.

Free text. For example, "Avis Union Square SF"

Recommended text size: Max 50 chars

Время получения заказа Необходимый The epoch timestamp that represents the pick up time for the reservation. Epoch timestamp in milliseconds
Время возврата Необязательный The epoch timestamp that represents the check out time for the reservation. Epoch timestamp in milliseconds
Pickup Address - Country Необязательный The country of the pickup location.

Free text

Recommended text size: max ~20 chars

Pickup Address - City Необязательный The city of the pickup location.

Free text

Recommended text size: max ~20 chars

Pickup Address - Display Address Необязательный The pickup location that will be displayed to the user.

Free text

Recommended text size: max ~20 chars

Pickup Address - Street Address Необязательный The street address (if applicable) of the pickup location.

Free text

Recommended text size: max ~20 chars

Pickup Address - State Необязательный The state or province (if applicable) of the pickup location.

Free text

Recommended text size: max ~20 chars

Pickup Address - Zip code Необязательный The zip code (if applicable) of the pickup location.

Free text

Recommended text size: max ~20 chars

Pickup Address - Neighborhood Необязательный The neighborhood (if applicable) of the pickup location.

Free text

Recommended text size: max ~20 chars

Return Address - Country Необязательный The country of return location.

Free text

Recommended text size: max ~20 chars

Return Address - City Необязательный The city of return location.

Free text

Recommended text size: max ~20 chars

Return Address - Display Address Необязательный The return location that will be displayed to the user.

Free text

Recommended text size: max ~20 chars

Return Address - Street Address Необязательный The street address (if applicable) of the return location.

Free text

Recommended text size: max ~20 chars

Return Address - State Необязательный The state or province (if applicable) of the return location.

Free text

Recommended text size: max ~20 chars

Return Address - Zip code Необязательный The zip code (if applicable) of the return location.

Free text

Recommended text size: max ~20 chars

Return Address - Neighborhood Необязательный The neighborhood (if applicable) of the return location.

Free text

Recommended text size: max ~20 chars

Service Provider - Name Необязательный

The name of the service provider.

Note: Either text or image is required for the service provider.

Free text. For example, "Avis Car Rental"
Service Provider - Image Необязательный

The logo/image of the service provider.

Note: Either text or image is required for the service provider.

See Image Specifications for guidance.
Poster images Необязательный

We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9

See Image Specifications for guidance.
Описание Необязательный

A single paragraph of text to describe the entity.

Note: Either description or subtitle list will be displayed to the user, not both.

Free text

Recommended text size: 180 chars

Subtitle list Необязательный

Up to 3 subtitles, with each subtitle a single line of text.

Note: Either description or subtitle list will be displayed to the user, not both.

Free text

Recommended text size for each subtitle: max 50 chars

Confirmation ID Необязательный The confirmation ID for the vehicle rental reservation. Free text
Price - CurrentPrice Conditionally required

The current price of the reservation.

Must be provided if strikethrough price is provided.

Free text
Price - StrikethroughPrice Необязательный The original price of the reservation, which is be struck-through in the UI. Free text
Price Callout Необязательный Price callout to feature a promo, event, member discount, if available.

Free text

Recommended text size: under 45 chars (Text that is too long may show ellipses)

Image specifications

Required specifications for image assets are listed in this table:

Соотношение сторон Minimum pixels Recommended pixels

Square (1x1)

Предпочтительный

300x300 1200x1200
Landscape (1.91x1) 600x314 1200x628
Portrait (4x5) 480x600 960x1200

The images are required to be hosted on public CDNs so that Google can access them.

File formats

PNG, JPG, static GIF, WebP

Maximum file size

5120 KB

Дополнительные рекомендации

  • Image safe area: Put your important content in the center 80% of the image.
  • Use a transparent background so that the image can be properly displayed in Dark and Light theme settings.

Content Category

The content category allows apps to publish content belonging to multiple categories. This maps the content with some of the predefined categories namely:

  • TYPE_EDUCATION
  • TYPE_SPORTS
  • TYPE_MOVIES_AND_TV_SHOWS
  • TYPE_BOOKS
  • TYPE_AUDIOBOOKS
  • TYPE_MUSIC
  • TYPE_DIGITAL_GAMES
  • TYPE_TRAVEL_AND_LOCAL
  • TYPE_HOME_AND_AUTO
  • TYPE_BUSINESS
  • TYPE_NEWS
  • TYPE_FOOD_AND_DRINK
  • TYPE_SHOPPING
  • TYPE_HEALTH_AND_FITENESS
  • TYPE_MEDICAL
  • TYPE_PARENTING
  • TYPE_DATING

The images are required to be hosted on public CDNs so that Google can access them.

Guidelines to use the content categories

  1. Some entities like ArticleEntity and GenericFeaturedEntity are eligible to use any of the content categories. For other entities like EventEntity , EventReservationEntity , PointOfInterestEntity , only a subset of these categories are eligible. Check the list of categories eligible for an entity type before populating the list.
  2. Use the specific entity type for some content categories over a combination of the Generic entities and the ContentCategory:

    • TYPE_MOVIES_AND_TV_SHOWS - Check out the entities from Watch integration guide before using the generic entities.
    • TYPE_BOOKS - Check out the EbookEntity before using the generic entities.
    • TYPE_AUDIOBOOKS - Check out AudiobookEntity before using the generic entities.
    • TYPE_SHOPPING - Check out ShoppingEntity before using the generic entities.
    • TYPE_FOOD_AND_DRINK - Check out entities from Food Integration guide before using the generic entities.
  3. The ContentCategory field is optional and should be left blank if the content doesn't belong to any of the categories mentioned earlier.

  4. In case multiple content categories are provided, provide them in the order of relevance to the content with the most relevant content category placed first in the list.

Step 2: Provide Cluster data

It is recommended to have the content publish job executed in the background (for example, using WorkManager ) and scheduled on a regular basis or on an event basis (for example, every time the user opens the app or when the user just added something to their cart).

AppEngagePublishClient is responsible for publishing clusters.

There are following APIs to publish clusters in the client:

  • isServiceAvailable
  • publishRecommendationClusters
  • publishFeaturedCluster
  • publishContinuationCluster
  • publishUserAccountManagementRequest
  • updatePublishStatus
  • deleteRecommendationsClusters
  • deleteFeaturedCluster
  • deleteContinuationCluster
  • deleteUserManagementCluster
  • deleteClusters

isServiceAvailable

This API is used to check if the service is available for integration and whether the content can be presented on the device.

Котлин

client.isServiceAvailable.addOnCompleteListener { task ->
    if (task.isSuccessful) {
        // Handle IPC call success
        if(task.result) {
          // Service is available on the device, proceed with content publish
          // calls.
        } else {
          // Service is not available, no further action is needed.
        }
    } else {
      // The IPC call itself fails, proceed with error handling logic here,
      // such as retry.
    }
}

Java

client.isServiceAvailable().addOnCompleteListener(task - > {
    if (task.isSuccessful()) {
        // Handle success
        if(task.getResult()) {
          // Service is available on the device, proceed with content publish
          // calls.
        } else {
          // Service is not available, no further action is needed.
        }
    } else {
      // The IPC call itself fails, proceed with error handling logic here,
      // such as retry.
    }
});

publishRecommendationClusters

This API is used to publish a list of RecommendationCluster objects.

Котлин

client.publishRecommendationClusters(
      PublishRecommendationClustersRequest.Builder()
        .addRecommendationCluster(
          RecommendationCluster.Builder()
            .addEntity(entity1)
            .addEntity(entity2)
            .setTitle("Top Picks For You")
            .build()
        )
        .build()
    )

Java

client.publishRecommendationClusters(
            new PublishRecommendationClustersRequest.Builder()
                .addRecommendationCluster(
                    new RecommendationCluster.Builder()
                        .addEntity(entity1)
                        .addEntity(entity2)
                        .setTitle("Top Picks For You")
                        .build())
                .build());

When the service receives the request, the following actions take place within one transaction:

  • Existing RecommendationCluster data from the developer partner is removed.
  • Data from the request is parsed and stored in the updated Recommendation Cluster.

In case of an error, the entire request is rejected and the existing state is maintained.

publishFeaturedCluster

This API is used to publish a list of FeaturedCluster objects.

Котлин

client.publishFeaturedCluster(
    PublishFeaturedClusterRequest.Builder()
      .setFeaturedCluster(
        FeaturedCluster.Builder()
          .addEntity(entity1)
          .addEntity(entity2)
          .build())
      .build())

Java

client.publishFeaturedCluster(
            new PublishFeaturedClustersRequest.Builder()
                .addFeaturedCluster(
                    new FeaturedCluster.Builder()
                        .addEntity(entity1)
                        .addEntity(entity2)
                        .build())
                .build());

When the service receives the request, the following actions take place within one transaction:

  • Existing FeaturedCluster data from the developer partner is removed.
  • Data from the request is parsed and stored in the updated Featured Cluster.

In case of an error, the entire request is rejected and the existing state is maintained.

publishContinuationCluster

This API is used to publish a ContinuationCluster object.

Котлин

client.publishContinuationCluster(
    PublishContinuationClusterRequest.Builder()
      .setContinuationCluster(
        ContinuationCluster.Builder()
          .addEntity(entity1)
          .addEntity(entity2)
          .build())
      .build())

Java

client.publishContinuationCluster(
            new PublishContinuationClusterRequest.Builder()
                .setContinuationCluster(
                    new ContinuationCluster.Builder()
                        .addEntity(entity1)
                        .addEntity(entity2)
                        .build())
                .build());

When the service receives the request, the following actions take place within one transaction:

  • Existing ContinuationCluster data from the developer partner is removed.
  • Data from the request is parsed and stored in the updated Continuation Cluster.

In case of an error, the entire request is rejected and the existing state is maintained.

publishUserAccountManagementRequest

This API is used to publish a Sign In card . The signin action directs users to the app's sign in page so that the app can publish content (or provide more personalized content)

The following metadata is part of the Sign In Card -

Атрибут Requirement Описание
Action Uri Необходимый Deeplink to Action (ie navigates to app sign in page)
Изображение Optional - If not provided, Title must be provided

Image Shown on the Card

16x9 aspect ratio images with a resolution of 1264x712

Заголовок Optional - If not provided, Image must be provided Title on the Card
Текст действия Необязательный Text Shown on the CTA (ie Sign in)
Субтитры Необязательный Optional Subtitle on the Card

Котлин

var SIGN_IN_CARD_ENTITY =
      SignInCardEntity.Builder()
          .addPosterImage(
              Image.Builder()
                  .setImageUri(Uri.parse("http://www.x.com/image.png"))
                  .setImageHeightInPixel(500)
                  .setImageWidthInPixel(500)
                  .build())
          .setActionText("Sign In")
          .setActionUri(Uri.parse("http://xx.com/signin"))
          .build()

client.publishUserAccountManagementRequest(
            PublishUserAccountManagementRequest.Builder()
                .setSignInCardEntity(SIGN_IN_CARD_ENTITY)
                .build());

Java

SignInCardEntity SIGN_IN_CARD_ENTITY =
      new SignInCardEntity.Builder()
          .addPosterImage(
              new Image.Builder()
                  .setImageUri(Uri.parse("http://www.x.com/image.png"))
                  .setImageHeightInPixel(500)
                  .setImageWidthInPixel(500)
                  .build())
          .setActionText("Sign In")
          .setActionUri(Uri.parse("http://xx.com/signin"))
          .build();

client.publishUserAccountManagementRequest(
            new PublishUserAccountManagementRequest.Builder()
                .setSignInCardEntity(SIGN_IN_CARD_ENTITY)
                .build());

When the service receives the request, the following actions take place within one transaction:

  • Existing UserAccountManagementCluster data from the developer partner is removed.
  • Data from the request is parsed and stored in the updated UserAccountManagementCluster Cluster.

In case of an error, the entire request is rejected and the existing state is maintained.

updatePublishStatus

If for any internal business reason, none of the clusters is published, we strongly recommend updating the publish status using the updatePublishStatus API. This is important because :

  • Providing the status in all scenarios, even when the content is published (STATUS == PUBLISHED), is critical to populate dashboards that use this explicit status to convey the health and other metrics of your integration.
  • If no content is published but the integration status isn't broken (STATUS == NOT_PUBLISHED), Google can avoid triggering alerts in the app health dashboards. It confirms that content is not published due to an expected situation from the provider's standpoint.
  • It helps developers provide insights into when the data is published versus not.
  • Google may use the status codes to nudge the user to do certain actions in the app so they can see the app content or overcome it.

The list of eligible publish status codes are :

// Content is published
AppEngagePublishStatusCode.PUBLISHED,

// Content is not published as user is not signed in
AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN,

// Content is not published as user is not subscribed
AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SUBSCRIPTION,

// Content is not published as user location is ineligible
AppEngagePublishStatusCode.NOT_PUBLISHED_INELIGIBLE_LOCATION,

// Content is not published as there is no eligible content
AppEngagePublishStatusCode.NOT_PUBLISHED_NO_ELIGIBLE_CONTENT,

// Content is not published as the feature is disabled by the client
// Available in v1.3.1
AppEngagePublishStatusCode.NOT_PUBLISHED_FEATURE_DISABLED_BY_CLIENT,

// Content is not published as the feature due to a client error
// Available in v1.3.1
AppEngagePublishStatusCode.NOT_PUBLISHED_CLIENT_ERROR,

// Content is not published as the feature due to a service error
// Available in v1.3.1
AppEngagePublishStatusCode.NOT_PUBLISHED_SERVICE_ERROR,

// Content is not published due to some other reason
// Reach out to engage-developers@ before using this enum.
AppEngagePublishStatusCode.NOT_PUBLISHED_OTHER

If the content is not published due to a user not logged in, Google would recommend publishing the Sign In Card. If for any reason providers are not able to publish the Sign In Card then we recommend calling the updatePublishStatus API with the status code NOT_PUBLISHED_REQUIRES_SIGN_IN

Котлин

client.updatePublishStatus(
   PublishStatusRequest.Builder()
     .setStatusCode(AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN)
     .build())

Java

client.updatePublishStatus(
    new PublishStatusRequest.Builder()
        .setStatusCode(AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN)
        .build());

deleteRecommendationClusters

This API is used to delete the content of Recommendation Clusters.

Котлин

client.deleteRecommendationClusters()

Java

client.deleteRecommendationClusters();

When the service receives the request, it removes the existing data from the Recommendation Clusters. In case of an error, the entire request is rejected and the existing state is maintained.

deleteFeaturedCluster

This API is used to delete the content of Featured Cluster.

Котлин

client.deleteFeaturedCluster()

Java

client.deleteFeaturedCluster();

When the service receives the request, it removes the existing data from the Featured Cluster. In case of an error, the entire request is rejected and the existing state is maintained.

deleteContinuationCluster

This API is used to delete the content of Continuation Cluster.

Котлин

client.deleteContinuationCluster()

Java

client.deleteContinuationCluster();

When the service receives the request, it removes the existing data from the Continuation Cluster. In case of an error, the entire request is rejected and the existing state is maintained.

deleteUserManagementCluster

This API is used to delete the content of UserAccountManagement Cluster.

Котлин

client.deleteUserManagementCluster()

Java

client.deleteUserManagementCluster();

When the service receives the request, it removes the existing data from the UserAccountManagement Cluster. In case of an error, the entire request is rejected and the existing state is maintained.

deleteClusters

This API is used to delete the content of a given cluster type.

Котлин

client.deleteClusters(
    DeleteClustersRequest.Builder()
      .addClusterType(ClusterType.TYPE_CONTINUATION)
      .addClusterType(ClusterType.TYPE_FEATURED)
      .addClusterType(ClusterType.TYPE_RECOMMENDATION)
      .build())

Java

client.deleteClusters(
            new DeleteClustersRequest.Builder()
                .addClusterType(ClusterType.TYPE_CONTINUATION)
                .addClusterType(ClusterType.TYPE_FEATURED)
                .addClusterType(ClusterType.TYPE_RECOMMENDATION)
                .build());

When the service receives the request, it removes the existing data from all clusters matching the specified cluster types. Clients can choose to pass one or many cluster types. In case of an error, the entire request is rejected and the existing state is maintained.

Обработка ошибок

It is highly recommended to listen to the task result from the publish APIs such that a follow-up action can be taken to recover and resubmit an successful task.

Котлин

client.publishRecommendationClusters(
        PublishRecommendationClustersRequest.Builder()
          .addRecommendationCluster(..)
          .build())
      .addOnCompleteListener { task ->
        if (task.isSuccessful) {
          // do something
        } else {
          val exception = task.exception
          if (exception is AppEngageException) {
            @AppEngageErrorCode val errorCode = exception.errorCode
            if (errorCode == AppEngageErrorCode.SERVICE_NOT_FOUND) {
              // do something
            }
          }
        }
      }

Java

client.publishRecommendationClusters(
              new PublishRecommendationClustersRequest.Builder()
                  .addRecommendationCluster(...)
                  .build())
          .addOnCompleteListener(
              task -> {
                if (task.isSuccessful()) {
                  // do something
                } else {
                  Exception exception = task.getException();
                  if (exception instanceof AppEngageException) {
                    @AppEngageErrorCode
                    int errorCode = ((AppEngageException) exception).getErrorCode();
                    if (errorCode == AppEngageErrorCode.SERVICE_NOT_FOUND) {
                      // do something
                    }
                  }
                }
              });

The error is returned as an AppEngageException with the cause included as an error code.

Код ошибки Error name Примечание
1 SERVICE_NOT_FOUND The service is not available on the given device.
2 SERVICE_NOT_AVAILABLE The service is available on the given device, but it is not available at the time of the call (for example, it is explicitly disabled).
3 SERVICE_CALL_EXECUTION_FAILURE The task execution failed due to threading issues. In this case, it can be retried.
4 SERVICE_CALL_PERMISSION_DENIED The caller is not allowed to make the service call.
5 SERVICE_CALL_INVALID_ARGUMENT The request contains invalid data (for example, more than the allowed number of clusters).
6 SERVICE_CALL_INTERNAL There is an error on the service side.
7 SERVICE_CALL_RESOURCE_EXHAUSTED The service call is made too frequently.

Step 3: Handle broadcast intents

In addition to making publish content API calls through a job, it is also required to set up a BroadcastReceiver to receive the request for a content publish.

The goal of broadcast intents is mainly for app reactivation and forcing data sync. Broadcast intents are not designed to be sent very frequently. It is only triggered when the Engage Service determines the content might be stale (for example, a week old). That way, there is more confidence that the user can have a fresh content experience, even if the application has not been executed for a long period of time.

The BroadcastReceiver must be set up in the following two ways:

  • Dynamically register an instance of the BroadcastReceiver class using Context.registerReceiver() . This enables communication from applications that are still live in memory.

Котлин

class AppEngageBroadcastReceiver : BroadcastReceiver(){
  // Trigger recommendation cluster publish when PUBLISH_RECOMMENDATION broadcast
  // is received
  // Trigger featured cluster publish when PUBLISH_FEATURED broadcast is received
  // Trigger continuation cluster publish when PUBLISH_CONTINUATION broadcast is
  // received
}

fun registerBroadcastReceivers(context: Context){
  var  context = context
  context = context.applicationContext

// Register Recommendation Cluster Publish Intent
  context.registerReceiver(AppEngageBroadcastReceiver(),
                           IntentFilter(Intents.ACTION_PUBLISH_RECOMMENDATION),
                           com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
                           /*scheduler=*/null)

// Register Featured Cluster Publish Intent
  context.registerReceiver(AppEngageBroadcastReceiver(),
                           IntentFilter(Intents.ACTION_PUBLISH_FEATURED),
                           com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
                           /*scheduler=*/null)

// Register Continuation Cluster Publish Intent
  context.registerReceiver(AppEngageBroadcastReceiver(),
                           IntentFilter(Intents.ACTION_PUBLISH_CONTINUATION),
                           com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
                           /*scheduler=*/null)
}

Java

class AppEngageBroadcastReceiver extends BroadcastReceiver {
// Trigger recommendation cluster publish when PUBLISH_RECOMMENDATION broadcast
// is received

// Trigger featured cluster publish when PUBLISH_FEATURED broadcast is received

// Trigger continuation cluster publish when PUBLISH_CONTINUATION broadcast is
// received
}

public static void registerBroadcastReceivers(Context context) {

context = context.getApplicationContext();

// Register Recommendation Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
                         new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_RECOMMENDATION),
                         com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
                         /*scheduler=*/null);

// Register Featured Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
                         new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_FEATURED),
                         com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
                         /*scheduler=*/null);

// Register Continuation Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
                         new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_CONTINUATION),
                         com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
                         /*scheduler=*/null);
}
  • Statically declare an implementation with the <receiver> tag in your AndroidManifest.xml file. This allows the application to receive broadcast intents when it is not running, and also allows the application to publish the content.

<application>
   <receiver
      android:name=".AppEngageBroadcastReceiver"
      android:permission="com.google.android.engage.REQUEST_ENGAGE_DATA"
      android:exported="true"
      android:enabled="true">
      <intent-filter>
         <action android:name="com.google.android.engage.action.PUBLISH_RECOMMENDATION" />
      </intent-filter>
      <intent-filter>
         <action android:name="com.google.android.engage.action.PUBLISH_FEATURED" />
      </intent-filter>
      <intent-filter>
         <action android:name="com.google.android.engage.action.PUBLISH_CONTINUATION" />
      </intent-filter>
   </receiver>
</application>

The following intents is sent by the service:

  • com.google.android.engage.action.PUBLISH_RECOMMENDATION It is recommended to start a publishRecommendationClusters call when receiving this intent.
  • com.google.android.engage.action.PUBLISH_FEATURED It is recommended to start a publishFeaturedCluster call when receiving this intent.
  • com.google.android.engage.action.PUBLISH_CONTINUATION It is recommended to start a publishContinuationCluster call when receiving this intent.

Integration workflow

For a step-by-step guide on verifying your integration after it is complete, see Engage developer integration workflow .

Часто задаваемые вопросы

See Engage SDK Frequently Asked Questions for FAQs.

Контакт

Contact engage-developers@google.com if there are any questions during the integration process.

Следующие шаги

After completing this integration, your next steps are as follows:

  • Send an email to engage-developers@google.com and attach your integrated APK that is ready for testing by Google.
  • Google performs a verification and reviews internally to make sure the integration works as expected. If changes are needed, Google contacts you with any necessary details.
  • When testing is complete and no changes are needed, Google contacts you to notify you that you can start publishing the updated and integrated APK to the Play Store.
  • After Google has confirmed that your updated APK has been published to the Play Store, your Recommendation , Featured , and Continuation clusters may be published and visible to users.