Engage SDK Travel: инструкции по технической интеграции сторонних разработчиков

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

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

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

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

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

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

    • Кластер рекомендаций может состоять из списков ArticleEntity , EventEntity , LodgingEntity , PointOfInterestEntity или StoreEntity , но не из смеси различных типов сущностей.

    Ваши рекомендации имеют следующую структуру:

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

    • Сущность: Объект, представляющий один элемент в кластере. Эта интеграция предлагает некоторые сущности, которые будут отображены с помощью кластера рекомендаций:

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

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

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

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

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

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

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

    • RestaurantReservationEntity : RestaurantReservationEntity представляет собой бронирование столиков в ресторане или кафе и помогает пользователям отслеживать предстоящие или текущие бронирования столиков в ресторане.

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

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

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

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

      Рисунок 10. Пользовательский интерфейс, показывающий один объект VehicleRentalReservationEntity в кластере Reservation.
  • Кластер Featured демонстрирует выборку сущностей от нескольких партнеров-разработчиков в одной группе пользовательского интерфейса. Будет один кластер Featured, который будет отображаться в верхней части пользовательского интерфейса с приоритетным размещением над всеми кластерами Recommendation. Каждому партнеру-разработчику будет разрешено транслировать до 10 сущностей в кластере Featured.

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

      Рисунок 11: Пользовательский интерфейс, показывающий FeaturedCluster со списком GenericFeaturedEntity
  • Кластер Continue Search помогает пользователям возобновлять предыдущий поиск путешествий, показывая список поисковых запросов, которые пользователь недавно искал во всех своих туристических приложениях. Кластер будет закреплен на второй позиции, после бронирований и перед избранными и рекомендуемыми кластерами. Каждому партнеру-разработчику будет разрешено транслировать до 3 сущностей в кластере Continue Search.

    • PointOfInterestEntity: PointOfInterestEntity представляет собой интересующее вас место, например, заправочную станцию, место проведения мероприятия, тематический парк, музей, туристическую достопримечательность, пешеходную тропу и т. д. Он выделяет контент, который пользователь ранее искал.

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

Минимальный уровень 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.2'
}

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

Проект основан на реализации связанной службы .

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

Тип кластера Ограничения кластера Минимальные пределы сущностей в кластере Максимальные пределы сущностей в кластере
Кластер(ы) рекомендаций Максимум 7 По крайней мере 1 Максимум 50 ( ArticleEntity , EventEntity , LodgingEntity , StoreEntity или PointOfInterestEntity )
Резервирование кластера Максимум 1 По крайней мере 1 Максимум 20 ( RestaurantReservationEntity , EventReservationEntity , LodgingReservationEntity , TransportationReservationEntity или VehicleRentalReservationEntity )
Избранный кластер Максимум 1 По крайней мере 1 Максимум 20 ( GenericFeaturedEntity )
Продолжить поиск кластера Максимум 1 По крайней мере 1 Максимум 3 ( PointOfInterestEntity )

Шаг 1: Предоставьте данные об организации

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

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

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

GenericFeaturedEntity

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

Глубокая ссылка на сущность в приложении провайдера.

Примечание: Вы можете использовать глубокие ссылки для атрибуции. Обратитесь к этому FAQ

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

Мы покажем только 1 изображение, если предоставлено несколько изображений. Рекомендуемое соотношение сторон 16:9

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

Инструкции см. в разделе «Характеристики изображения» .
Заголовок Необязательный Название организации.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Название значка

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

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

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

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

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

Специальная обработка UX, например, наложение значка на миниатюру изображения/видео.

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

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

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

Инструкции см. в разделе «Категория контента» .

DisplayTimeWindow (необязательно) — установка временного интервала для отображения содержимого на поверхности.
Начало отметки времени Необязательный

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

Если не установлено, содержимое может быть отображено на поверхности.

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

Временная метка эпохи, после которой содержимое больше не отображается на поверхности.

Если не установлено, содержимое может быть отображено на поверхности.

Временная метка эпохи в миллисекундах

ArticleEntity

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

Глубокая ссылка на сущность в приложении провайдера.

Примечание: Вы можете использовать глубокие ссылки для атрибуции. Обратитесь к этому FAQ

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

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

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

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

Мы покажем только 1 изображение, если предоставлено несколько изображений. Рекомендуемое соотношение сторон 16:9

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Название значка

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

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

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

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

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

Специальная обработка UX, например, наложение значка на миниатюру изображения/видео.

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

Инструкции см. в разделе «Характеристики изображения» .
Время публикации контента Необязательный Это временная метка эпохи в миллисекундах, когда контент был опубликован/обновлен в приложении. Временная метка эпохи в миллисекундах
Время последнего участия Условно требуется

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

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

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

Процент всего контента, потребленного пользователем на сегодняшний день.

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

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

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

Инструкции см. в разделе «Категория контента» .

DisplayTimeWindow (необязательно) — установка временного интервала для отображения содержимого на поверхности.
Начало отметки времени Необязательный

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

Если не установлено, содержимое может быть отображено на поверхности.

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

Временная метка эпохи, после которой содержимое больше не отображается на поверхности.

Если не установлено, содержимое может быть отображено на поверхности.

Временная метка эпохи в миллисекундах

EventEntity

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

Глубокая ссылка на сущность в приложении провайдера.

Примечание: Вы можете использовать глубокие ссылки для атрибуции. Обратитесь к этому FAQ

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

Нить

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

Локализованное время начала — временная метка Необходимый

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

Joda-Time Instant
Локализованное время начала - Часовой пояс Необходимый

Часовой пояс, в котором ожидается начало события.

Joda-Time DateTimeZone

Для получения инструкций см. Характеристики часовых поясов .

Режим события Необходимый

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

Перечисление: VIRTUAL, IN_PERSON или HYBRID
Изображения постеров Необходимый

Мы покажем только 1 изображение, если предоставлено несколько изображений. Рекомендуемое соотношение сторон 16:9

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

Инструкции см. в разделе «Характеристики изображения» .
Местоположение - Страна Условно требуется

Страна, в которой происходит событие.

Примечание: это необходимо для событий IN_PERSON или HYBRID.

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

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

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

Город, в котором происходит событие.

Примечание: это необходимо для событий IN_PERSON или HYBRID.

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

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

Местоположение - Отображение адреса Условно требуется

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

Примечание: это необходимо для событий IN_PERSON или HYBRID.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Примечание: значение будет указано в миллисекундах.

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

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

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

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

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

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

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

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

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

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

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

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

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

Название значка

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

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

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

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

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

Специальная обработка UX, например, наложение значка на миниатюру изображения/видео.

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

Инструкции см. в разделе «Характеристики изображения» .
Цена - ТекущаяЦена Условно требуется

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

Обязательно, если указана зачеркнутая цена.

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

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

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

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

Список допустимых перечислений

  • TYPE_MOVIES_AND_TV_SHOWS (Пример - Кино)
  • TYPE_DIGITAL_GAMES (Пример - киберспорт)
  • TYPE_MUSIC (Пример - Концерт)
  • TYPE_TRAVEL_AND_LOCAL (Пример — тур, фестиваль)
  • ТИП_ЗДОРОВЬЕ_И_ФИТНЕС (Пример — занятия йогой)
  • ТИП_ОБРАЗОВАНИЯ (Пример - Класс)
  • TYPE_SPORTS (Пример — Футбольный матч)
  • TYPE_DATING (Пример - встреча)

Инструкции см. в разделе «Категория контента» .

DisplayTimeWindow (необязательно) — установка временного интервала для отображения содержимого на поверхности.
Начало отметки времени Необязательный

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

Если не установлено, содержимое может быть отображено на поверхности.

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

Временная метка эпохи, после которой содержимое больше не отображается на поверхности.

Если не установлено, содержимое может быть отображено на поверхности.

Временная метка эпохи в миллисекундах

LodgingEntity

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

Глубокая ссылка на сущность в приложении провайдера.

Примечание: Вы можете использовать глубокие ссылки для атрибуции. Обратитесь к этому FAQ

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

Нить

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

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

Мы покажем только 1 изображение, если предоставлено несколько изображений. Рекомендуемое соотношение сторон 16:9

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

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

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

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

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

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

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

Местоположение - Отображение адреса Необходимый Адрес, который будет отображаться пользователю. Мы рекомендуем включать название города и, возможно, штат или страну для большинства случаев использования. Включайте адрес улицы или район только в том случае, если пользователь находится недалеко от местоположения, пользователь знаком с местоположением или город включен в заголовок кластера. Если вы включаете адрес улицы, укажите краткий адрес, используя сокращения, где это возможно (например, «St» вместо «Street», «Ave» вместо «Avenue»).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Название значка

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

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

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

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

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

Специальная обработка UX, например, наложение значка на миниатюру изображения/видео.

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

Инструкции см. в разделе «Характеристики изображения» .
Описание Необязательный

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

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

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

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

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

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

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

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

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

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

Joda-Time DateTimeZone

Для получения инструкций см. Характеристики часовых поясов .

AvailabilityTimeWindow - Локализованное время окончания - Временная метка Необязательный Временная метка эпохи, до которой ожидается открытие/доступность жилья. Joda-Time Instant
AvailabilityTimeWindow - Локализованное время окончания - Часовой пояс Необязательный Часовой пояс, в котором ожидается открытие/доступность жилья.

Joda-Time DateTimeZone

Для получения инструкций см. Характеристики часовых поясов .

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Обязательно, если указана зачеркнутая цена.

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

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

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

DisplayTimeWindow (необязательно) — установка временного интервала для отображения содержимого на поверхности.
Начало отметки времени Необязательный

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

Если не установлено, содержимое может быть отображено на поверхности.

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

Временная метка эпохи, после которой содержимое больше не отображается на поверхности.

Если не установлено, содержимое может быть отображено на поверхности.

Временная метка эпохи в миллисекундах

StoreEntity

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

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

Глубокая ссылка на сущность в приложении провайдера.

Примечание: Вы можете использовать глубокие ссылки для атрибуции. Обратитесь к этому FAQ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Категория магазина, в контексте заведений общественного питания, это может быть кухня типа «французская», «новая американская», «рамен», «изысканная кухня».

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Длинный
DisplayTimeWindow (необязательно) — установка временного интервала для отображения содержимого на поверхности.
Начало отметки времени Необязательный

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

Если не установлено, содержимое может быть отображено на поверхности.

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

Временная метка эпохи, после которой содержимое больше не отображается на поверхности.

Если не установлено, содержимое может быть отображено на поверхности.

Временная метка эпохи в миллисекундах

PointOfInterestEntity

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

Глубокая ссылка на сущность в приложении провайдера.

Примечание: Вы можете использовать глубокие ссылки для атрибуции. Обратитесь к этому FAQ

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

Нить

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

Изображения постеров Условно требуется

Мы покажем только 1 изображение, если предоставлено несколько изображений. Рекомендуемое соотношение сторон 16:9

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

Инструкции см. в разделе «Характеристики изображения» .
Время последнего участия Условно требуется

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

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

Joda-Time Instant
Местоположение - Страна Условно требуется

Страна, в которой происходит интересующее событие.

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

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

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

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

Город, в котором происходит событие.

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

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

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

Местоположение - Отображение адреса Условно требуется

Адрес, который будет отображаться пользователю. Укажите краткий адрес, используя сокращения, где это возможно (например, «St» вместо «Street», «Ave» вместо «Avenue»). Эта строка может быть усечена в зависимости от устройства и настроек пользователя. Включите название города для четкой идентификации.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Joda-Time DateTimeZone

Для получения инструкций см. Характеристики часовых поясов .

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

Joda-Time DateTimeZone

Для получения инструкций см. Характеристики часовых поясов .

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

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

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

Название значка

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

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

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

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

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

Специальная обработка UX, например, наложение значка на миниатюру изображения/видео.

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

Инструкции см. в разделе «Характеристики изображения» .
Описание Необязательный

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Текущая цена билетов/пропусков на посещение интересующего объекта.

Обязательно, если указана зачеркнутая цена.

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

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

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

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

Список допустимых перечислений

  • ТИП_ПУТЕШЕСТВИЯ_И_МЕСТНОСТИ
  • TYPE_MOVIES_AND_TV_SHOWS (Пример - театр)
  • TYPE_MEDICAL (Пример - больница)
  • ТИП_ОБРАЗОВАНИЯ (Пример - школа)
  • TYPE_SPORTS (Пример - стадион)

Инструкции см. в разделе «Категория контента» .

DisplayTimeWindow (необязательно) — установка временного интервала для отображения содержимого на поверхности.
Начало отметки времени Необязательный

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

Если не установлено, содержимое может быть отображено на поверхности.

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

Временная метка эпохи, после которой содержимое больше не отображается на поверхности.

Если не установлено, содержимое может быть отображено на поверхности.

Временная метка эпохи в миллисекундах

RestaurantReservationEntity

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

Глубокая ссылка на сущность в приложении провайдера.

Примечание: Вы можете использовать глубокие ссылки для атрибуции. Обратитесь к этому FAQ

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

Нить

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

Локализованное время начала бронирования — временная метка Необходимый Метка времени эпохи, когда ожидается начало резервирования. Joda-Time Instant
Локализованное время начала бронирования — часовой пояс Необходимый Часовой пояс, в котором ожидается начало бронирования.

Joda-Time DateTimeZone

Для получения инструкций см. Характеристики часовых поясов .

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Изображения постеров Необязательный Мы покажем только 1 изображение, если предоставлено несколько изображений. Рекомендуемое соотношение сторон 16:9 Инструкции см. в разделе «Характеристики изображения» .
Описание Необязательный

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

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

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

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

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

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

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

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

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

Размер стола Необязательный Количество человек в группе бронирования Целое число > 0
DisplayTimeWindow (необязательно) — установка временного интервала для отображения содержимого на поверхности.
Начало отметки времени Необязательный

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

Если не установлено, содержимое может быть отображено на поверхности.

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

Временная метка эпохи, после которой содержимое больше не отображается на поверхности.

Если не установлено, содержимое может быть отображено на поверхности.

Временная метка эпохи в миллисекундах

EventReservationEntity

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

Глубокая ссылка на сущность в приложении провайдера.

Примечание: Вы можете использовать глубокие ссылки для атрибуции. Обратитесь к этому FAQ

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

Нить

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

Локализованное время начала — временная метка Необходимый

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

Joda-Time Instant
Локализованное время начала - Часовой пояс Необходимый

Часовой пояс, в котором ожидается начало события.

Joda-Time DateTimeZone

Для получения инструкций см. Характеристики часовых поясов .

Режим события Необходимый

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

Перечисление: VIRTUAL, IN_PERSON или HYBRID
Местоположение - Страна Условно требуется

Страна, в которой происходит событие.

Примечание: это необходимо для событий IN_PERSON или HYBRID.

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

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

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

Город, в котором происходит событие.

Примечание: это необходимо для событий IN_PERSON или HYBRID.

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

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

Расположение - адрес отображения Условно требуется

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

Примечание: это требуется для событий, которые являются in_person или гибридными

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Мы покажем только 1 изображение, когда будут предоставлены несколько изображений. Рекомендуемое соотношение сторон - 16: 9

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

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

Epoch TimeStamp, когда ожидается, что событие закончится.

Joda-Time Instant
Локализованное время окончания - часовой пояс Необязательный

Часовой пояс, на котором ожидается, что событие закончится.

Joda-Time Datetimezone

Смотрите спецификации часового пояса для руководства.

Поставщик услуг - имя Необязательный

Название поставщика услуг.

Примечание. Либо текст или изображение требуется для поставщика услуг.

Бесплатный текст. Например, название организатора мероприятия/тура
Поставщик услуг - изображение Необязательный

Логотип/изображение поставщика услуг.

Примечание. Либо текст или изображение требуется для поставщика услуг.

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

Один абзац текста для описания сущности.

ПРИМЕЧАНИЕ. Либо описание или список подзаголовок будут отображаться пользователю, а не обоим.

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

Рекомендуемый размер текста: 180 chars

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

До 3 субтитров, с каждым подзаготором одной линией текста.

ПРИМЕЧАНИЕ. Либо описание или список подзаголовок будут отображаться пользователю, а не обоим.

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

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

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

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

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

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

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

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

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

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

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

Специальное лечение UX, например, как наложение значков на миниатюре изображения/видео.

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

См. Спецификации изображения для руководства.
Идентификатор бронирования Необязательный Идентификатор резервирования для резервирования события. Свободный текст
Цена - текущая плести Условно требуется

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

Должен быть предоставлен, если предоставлена ​​цена.

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

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

Рекомендуемый размер текста: до 45 chars (текст, который слишком длинный, может показать эллипсы)

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

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

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

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

Текущее значение шкалы оценки.

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

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

Подсчет рейтингов для мероприятия.

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

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

Подсчет рейтингов для мероприятия.

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

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

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

  • Type_movies_and_tv_shows (пример - кино)
  • Type_digital_games (пример - киберспорт)
  • Type_music (пример - концерт)
  • Type_travel_and_local (пример - тур, фестиваль)
  • Type_health_and_fiteness (пример - класс йоги)
  • Type_education (пример - класс)
  • Type_sports (пример - футбольный матч)
  • Type_dation (пример - Meetup)

См. Раздел категории контента для руководства.

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

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

Если не установлено, содержание имеет право на показать на поверхности.

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

Эпоха временная метка, после которой содержание больше не отображается на поверхности.

Если не установлено, содержание имеет право на показать на поверхности.

Эпоха временной метки в миллисекундах

LodgingReservationEntity

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

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

Примечание. Вы можете использовать глубокие ссылки для атрибуции. Обратитесь к этому FAQ

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

Бесплатный текст. Например, «ваше пребывание с 12 декабря»

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

Локализованное время регистрации - временная метка Необходимый Эпоха временной метки, которая представляет собой время регистрации для резервации. Joda-Time Instant
Локализованное время регистрации - часовой пояс Необходимый Часовой пояс, в которой существует время регистрации для резервации.

Joda-Time Datetimezone

Смотрите спецификации часового пояса для руководства.

Локализованное время выезда - метка времени Необходимый Эпоха временной метки, которая представляет время проверки для резервации. Joda-Time Instant
Локализованное время выезда - часовой пояс Необходимый Часовой пояс, в которой существует время проверки для резервации.

Joda-Time Datetimezone

Смотрите спецификации часового пояса для руководства.

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

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

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

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

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

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

Расположение - адрес отображения Необходимый Адрес, который будет отображаться пользователю. Обеспечить краткий адрес, используя аббревиатуры, где это возможно, (например, «ST» для «улицы», «пр.» Для «Авеню»). Эта строка может быть усечена в зависимости от устройства пользователя и настроек. Включите название города для четкой идентификации.

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

Рекомендуемый размер текста: максимум ~ 35 Chars

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

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

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

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

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

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

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

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

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

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

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

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

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

Мы покажем только 1 изображение, когда будут предоставлены несколько изображений. Рекомендуемое соотношение сторон - 16: 9

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

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

Один абзац текста для описания сущности.

ПРИМЕЧАНИЕ. Либо описание или список подзаголовок будут отображаться пользователю, а не обоим.

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

Рекомендуемый размер текста: 180 chars

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

До 3 субтитров, с каждым подзаготором одной линией текста.

ПРИМЕЧАНИЕ. Либо описание или список подзаголовок будут отображаться пользователю, а не обоим.

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

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

Идентификатор бронирования Необязательный Идентификатор резервирования для бронирования жилья. Свободный текст
Рейтинг - максимальное значение Необязательный

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

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

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

Текущее значение шкалы оценки.

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

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

Подсчет рейтингов для жилья.

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

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

Подсчет рейтингов для жилья.

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

Длинный
Цена - текущая плести Условно требуется

Текущая цена жилья.

Должен быть предоставлен, если предоставлена ​​цена.

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

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

Рекомендуемый размер текста: до 45 chars (текст, который слишком длинный, может показать эллипсы)

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

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

Если не установлено, содержание имеет право на показать на поверхности.

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

Эпоха временная метка, после которой содержание больше не отображается на поверхности.

Если не установлено, содержание имеет право на показать на поверхности.

Эпоха временной метки в миллисекундах

TransportationReservationEntity

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

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

Примечание. Вы можете использовать глубокие ссылки для атрибуции. Обратитесь к этому FAQ

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

Бесплатный текст. Например, "SFO в Сан"

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

Тип транспорта Необходимый Режим/тип транспорта для резервации. Enum: рейс, поезд, автобус или паром
Локализованное время вылета - временная метка Необходимый Эпоха временной метки, которая представляет время отправления. Joda-Time Instant
Локализованное время отправления - часовой пояс Необходимый Часовой пояс времени отъезда.

Joda-Time Datetimezone

Смотрите спецификации часового пояса для руководства.

Локализованное время прибытия - временная метка Необходимый Эпоха временной метки, которая представляет время прибытия. Joda-Time Instant
Локализованное время прибытия - часовой пояс Необходимый Часовой пояс времени прибытия.

Joda-Time Datetimezone

Смотрите спецификации часового пояса для руководства.

Транспортный номер Необходимый Номер полета, номер автобуса, номер поезда или номер паром/круиз. Свободный текст
Локализованное время посадки - временная метка Необходимый Эпоха временной метки, которая представляет время посадки для резервирования (если применимо) Joda-Time Instant
Локализованное время посадки - часовой пояс Необходимый Часовой пояс времени посадки для бронирования (если применимо)

Joda-Time Datetimezone

Смотрите спецификации часового пояса для руководства.

Место отправления - страна Необязательный Страна отправления.

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

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

Место вылета - город Необязательный Город отправленного.

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

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

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

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

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

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

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

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

Место вылета - штат Необязательный Государство или провинция (если применимо) места вылета.

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

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

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

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

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

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

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

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

Место прибытия - страна Необязательный Страна прибытия.

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

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

Место прибытия - город Необязательный Город прибытия.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Поставщик услуг - имя Необязательный

Название поставщика услуг.

Примечание. Либо текст или изображение требуется для поставщика услуг.

Бесплатный текст. Например, название авиакомпании
Поставщик услуг - изображение Необязательный

Логотип/изображение поставщика услуг.

Примечание. Либо текст или изображение требуется для поставщика услуг.

См. Спецификации изображения для руководства.
Изображения постеров Необязательный

Мы покажем только 1 изображение, когда будут предоставлены несколько изображений. Рекомендуемое соотношение сторон - 16: 9

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

Один абзац текста для описания сущности.

ПРИМЕЧАНИЕ. Либо описание или список подзаголовок будут отображаться пользователю, а не обоим.

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

Рекомендуемый размер текста: 180 chars

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

До 3 субтитров, с каждым подзаготором одной линией текста.

ПРИМЕЧАНИЕ. Либо описание или список подзаголовок будут отображаться пользователю, а не обоим.

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

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

Идентификатор бронирования Необязательный Идентификатор резервирования для бронирования транспорта. Свободный текст
Цена - текущая плести Условно требуется

Текущая цена резервации.

Должен быть предоставлен, если предоставлена ​​цена.

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

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

Рекомендуемый размер текста: до 45 chars (текст, который слишком длинный, может показать эллипсы)

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

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

Если не установлено, содержание имеет право на показать на поверхности.

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

Эпоха временная метка, после которой содержание больше не отображается на поверхности.

Если не установлено, содержание имеет право на показать на поверхности.

Эпоха временной метки в миллисекундах

VehicleRentalReservationEntity

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

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

Примечание. Вы можете использовать глубокие ссылки для атрибуции. Обратитесь к этому FAQ

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

Бесплатный текст. Например, "Avis Union Square SF"

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

Локализованное время забрать Необходимый Эпоха временной метки, которая представляет время забора для резервации. Joda-Time Instant
Локализованное время набора - часовой пояс Необходимый Часовой пояс времени забора для резервации.

Joda-Time Datetimezone

Смотрите спецификации часового пояса для руководства.

Локализованное время возврата - временная метка Необязательный Эпоха временной метки, которая представляет время проверки для резервации. Joda-Time Instant
Локализованное время возвращения - часовой пояс Необязательный Часовой пояс времени проверки для резервации.

Joda-Time Datetimezone

Смотрите спецификации часового пояса для руководства.

Адрес пикапа - страна Необязательный Страна места пикапа.

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

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

Адрес пикапа - город Необязательный Город места пикапа.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Обратный адрес - страна Необязательный Страна возвращения.

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

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

Обратный адрес - город Необязательный Расположение города возвращения.

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

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

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

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

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

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

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

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

Адрес возврата - состояние Необязательный Государство или провинция (если применимо) места возврата.

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

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

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

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

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

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

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

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

Поставщик услуг - имя Необязательный

Название поставщика услуг.

Примечание. Либо текст или изображение требуется для поставщика услуг.

Бесплатный текст. Например, "Авиация автомобиля" прокат "
Поставщик услуг - изображение Необязательный

Логотип/изображение поставщика услуг.

Примечание. Либо текст или изображение требуется для поставщика услуг.

См. Спецификации изображения для руководства.
Изображения постеров Необязательный

Мы покажем только 1 изображение, когда будут предоставлены несколько изображений. Рекомендуемое соотношение сторон - 16: 9

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

Один абзац текста для описания сущности.

ПРИМЕЧАНИЕ. Либо описание или список подзаголовок будут отображаться пользователю, а не обоим.

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

Рекомендуемый размер текста: 180 chars

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

До 3 субтитров, с каждым подзаготором одной линией текста.

ПРИМЕЧАНИЕ. Либо описание или список подзаголовок будут отображаться пользователю, а не обоим.

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

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

Подтверждение идентификатора Необязательный Идентификатор подтверждения для бронирования аренды автомобиля. Свободный текст
Цена - текущая плести Условно требуется

Текущая цена резервации.

Должен быть предоставлен, если предоставлена ​​цена.

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

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

Рекомендуемый размер текста: до 45 chars (текст, который слишком длинный, может показать эллипсы)

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

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

Если не установлено, содержание имеет право на показать на поверхности.

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

Эпоха временная метка, после которой содержание больше не отображается на поверхности.

Если не установлено, содержание имеет право на показать на поверхности.

Эпоха временной метки в миллисекундах

Характеристики изображения

Требуемые спецификации для активов изображений перечислены в этой таблице:

Соотношение сторон Минимальные пиксели Рекомендуемые пиксели

Квадрат (1x1)

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

300x300 1200x1200
Ландшафт (1,91x1) 600x314 1200x628
Портрет (4x5) 480x600 960x1200

Изображения должны быть размещены на публичных CDN, чтобы Google мог получить к ним доступ.

Форматы файлов

Png, JPG, Static Gif, Webp

Максимальный размер файла

5120 КБ

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

  • Зона безопасного изображения: поместите свой важный контент в центр 80% изображения.
  • Используйте прозрачный фон, чтобы изображение могло быть правильно отображаться в темных и легких настройках тем.

Спецификации часового пояса

Предпочитаю идентификатор (например, «Америка/Лос-Ангелес») сверх смещения (например, «-07: 00»).

Пример использования: DateTimeZone.forID("America/Los_Angeles")

Категория контента

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

  • 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

Изображения должны быть размещены на публичных CDN, чтобы Google мог получить к ним доступ.

Рекомендации по использованию категорий контента

  1. Некоторые сущности, такие как статья и genericfeaturedentity, имеют право использовать любую из категорий контента. Для других сущностей, таких как Evententity , EventReservationality , PointOfEntestity , только подмножество этих категорий имеет право. Проверьте список категорий, имеющих право на тип объекта, прежде чем заполнить список.
  2. Используйте конкретный тип объекта для некоторых категорий контента по комбинации общих объектов и ContentCategory:

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

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

Шаг 2: Предоставьте данные кластера

Рекомендуется, чтобы контент публиковал работу, выполняемую в фоновом режиме (например, с использованием Workmanager ) и запланировано на регулярной основе или на основе событий (например, каждый раз, когда пользователь открывает приложение или когда пользователь только что добавил в свою корзину).

AppEngageTravelClient отвечает за публикацию кластеров.

Есть следующие API для публикации кластеров в клиенте:

  • isServiceAvailable
  • publishRecommendationClusters
  • publishFeaturedCluster
  • publishReservationCluster
  • publishContinueSearchCluster
  • publishUserAccountManagementRequest
  • updatePublishStatus
  • deleteRecommendationsClusters
  • deleteFeaturedCluster
  • deleteReservationCluster
  • deleteContinueSearchCluster
  • deleteUserManagementCluster
  • deleteClusters

isServiceAvailable

Этот API используется для проверки того, доступна ли служба для интеграции и может ли контент быть представлен на устройстве.

Котлин

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.
    }
}

Ява

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

Этот API используется для публикации списка объектов RecommendationCluster .

Котлин

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

Ява

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

Когда служба получает запрос, в рамках одной транзакции происходят следующие действия:

  • Существующие данные RecommendationCluster от партнера разработчика удалены.
  • Данные из запроса анализируются и хранятся в обновленном кластере рекомендаций.

В случае ошибки весь запрос отклоняется, и существующее состояние сохраняется.

publishFeaturedCluster

Этот API используется для публикации списка объектов FeaturedCluster .

Котлин

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

Ява

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

Когда служба получает запрос, в рамках одной транзакции происходят следующие действия:

  • Существующие данные FeaturedCluster от партнера разработчика удалены.
  • Данные из запроса проанализированы и хранятся в обновленном избранном кластере.

В случае ошибки весь запрос отклоняется, и существующее состояние сохраняется.

publishReservationCluster

Этот API используется для публикации объекта ReservationCluster .

Котлин

client.publishReservationCluster(
    PublishReservationClusterRequest.Builder()
      .setReservationCluster(
        ReservationCluster.Builder()
          .addLodgingReservationEntity(lodgingReservationEntity)
          .addVehicleRentalReservationEntity(vehicleRentalReservationEntity)
          .addTransportationReservationEntity(transportationReservationEntity)
          .addEventReservationEntity(eventReservationEntity)
          .addRestaurantReservationEntity(restaurantReservationEntity)
          .build())
      .build())

Ява

client.publishReservationCluster(
            new PublishReservationClusterRequest.Builder()
                .setReservationCluster(
                    new ReservationCluster.Builder()
                        .addLodgingReservationEntity(lodgingReservationEntity)
                        .addVehicleRentalReservationEntity(vehicleRentalReservationEntity)
                        .addTransportationReservationEntity(transportationReservationEntity)
                        .addEventReservationEntity(eventReservationEntity)
                        .addRestaurantReservationEntity(restaurantReservationEntity)
                        .build())
                .build());

Когда служба получает запрос, в рамках одной транзакции происходят следующие действия:

  • Существующие данные ReservationCluster от партнера -разработчика удаляются.
  • Данные по запросу проанализированы и хранятся в обновленном кластере резервации.

В случае ошибки весь запрос отклоняется, и существующее состояние сохраняется.

publishContinueSearchCluster

Этот API используется для публикации списка объектов ContinueSearchCluster .

Котлин

client.publishContinueSearchCluster(
    PublishContinueSearchClusterRequest.Builder()
      .setContinueSearchCluster(
        ContinueSearchCluster.Builder()
          .addPointOfInterestEntity(entity1)
          .addPointOfInterestEntity(entity2)
          .build())
      .build())

Ява

client.publishContinueSearchCluster(
            new PublishContinueSearchClusterRequest.Builder()
                .setContinueSearchCluster(
                    new ContinueSearchCluster.Builder()
                        .addPointOfInterestEntity(entity1)
                        .addPointOfInterestEntity(entity2)
                        .build())
                .build());

Когда служба получает запрос, в рамках одной транзакции происходят следующие действия:

  • Существующие данные ContinueSearchCluster от партнера разработчика удаляются.
  • Данные из запроса проанализированы и хранятся в обновленном кластере продолжения поиска.

В случае ошибки весь запрос отклоняется, и существующее состояние сохраняется.

publishUserAccountManagementRequest

Этот API используется для публикации знаки в карте. Действие SIGNIN направляет пользователей на страницу входа в приложение, чтобы приложение могло публиковать контент (или предоставлять более персонализированный контент)

Следующие метаданные являются частью знаки в карте -

Атрибут Требование Описание
Действие URI Необходимый DeepLink to Action (т. Е. Перейдите на страницу входа в приложение)
Изображение Необязательно - если не предоставлено, название должно быть предоставлено

Изображение, показанное на карте

Изображения соотношения сторон 16x9 с разрешением 1264x712

Заголовок Необязательно - если не предоставлено, изображение должно быть предоставлено Название на карте
Текст действия Необязательный Текст, показанный на CTA (т.е. войти в систему)
Подзаголовок Необязательный Дополнительный субтитры на карте

Котлин

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());

Ява

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());

Когда служба получает запрос, в рамках одной транзакции происходят следующие действия:

  • Существующие данные UserAccountManagementCluster от партнера разработчика удаляются.
  • Данные из запроса анализируются и хранятся в обновленном кластере userAccountmanagementluster.

В случае ошибки весь запрос отклоняется, и существующее состояние сохраняется.

updatePublishStatus

Если по какой -либо внутренней деловой причине, ни один из кластеров не опубликована, мы настоятельно рекомендуем обновить статус публикации, используя API UpdatePublishStatus . Это важно, потому что:

  • Предоставление статуса во всех сценариях, даже когда контент опубликован (Status == Опубликовано), имеет решающее значение для заполнения информационных панелей, которые используют этот явный статус для передачи здоровья и других показателей вашей интеграции.
  • Если контент не опубликовано, но статус интеграции не нарушено (состояние == not_published), Google может избежать запуска оповещений на панели оздоровительных панелей приложения. Это подтверждает, что содержание не опубликовано из -за ожидаемой ситуации с точки зрения поставщика.
  • Это помогает разработчикам дать представление о том, когда данные опубликованы по сравнению с нет.
  • Google может использовать коды состояния, чтобы подтолкнуть пользователя для выполнения определенных действий в приложении, чтобы они могли видеть содержимое приложения или преодолеть его.

Список подходящих кодов статуса публикации:

// 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

Если контент не опубликован из -за того, что пользователь не вошел в систему, Google рекомендует опубликовать карту знаки. Если по какой -либо причине поставщики не могут опубликовать карту подписи, мы рекомендуем позвонить в API UpdatePublishStatus с кодом состояния not_published_requires_sign_in

Котлин

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

Ява

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

deleteRecommendationClusters

Этот API используется для удаления содержания кластеров рекомендаций.

Котлин

client.deleteRecommendationClusters()

Ява

client.deleteRecommendationClusters();

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

deleteFeaturedCluster

Этот API используется для удаления содержания избранного кластера.

Котлин

client.deleteFeaturedCluster()

Ява

client.deleteFeaturedCluster();

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

deleteReservationCluster

Этот API используется для удаления содержания кластера резервации.

Котлин

client.deleteReservationCluster()

Ява

client.deleteReservationCluster();

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

deleteUserManagementCluster

Этот API используется для удаления содержания кластера UserAccountmanagement.

Котлин

client.deleteUserManagementCluster()

Ява

client.deleteUserManagementCluster();

Когда служба получает запрос, она удаляет существующие данные из кластера UserAccountmanagement. В случае ошибки весь запрос отклоняется, и существующее состояние сохраняется.

deleteContinueSearchCluster

Этот API используется для удаления содержания кластера продолжения поиска.

Котлин

client.deleteContinueSearchCluster()

Ява

client.deleteContinueSearchCluster();

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

deleteClusters

Этот API используется для удаления содержания данного типа кластера.

Котлин

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

Ява

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

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

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

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

Котлин

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
            }
          }
        }
      }

Ява

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
                    }
                  }
                }
              });

Ошибка возвращается как AppEngageException с причиной, включенной в качестве кода ошибки.

Код ошибки Имя ошибки Примечание
1 SERVICE_NOT_FOUND Сервис недоступен на данном устройстве.
2 SERVICE_NOT_AVAILABLE Служба доступна на данном устройстве, но он недоступен во время вызова (например, он явно отключен).
3 SERVICE_CALL_EXECUTION_FAILURE Выполнение задачи не удалось из -за проблем с потоком. В этом случае его можно повторно.
4 SERVICE_CALL_PERMISSION_DENIED Вызывающему не разрешено совершать сервисный звонок.
5 SERVICE_CALL_INVALID_ARGUMENT Запрос содержит неверные данные (например, больше, чем разрешенное количество кластеров).
6 SERVICE_CALL_INTERNAL Есть ошибка на стороне службы.
7 SERVICE_CALL_RESOURCE_EXHAUSTED Сервисный звонок выполняется слишком часто.

Шаг 3: Обработка вещания

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

Целью вещательных намерений является в основном для реактивации приложений и принуждения синхронизации данных. Намерения вещания не предназначены для того, чтобы отправляться очень часто. Это запускается только тогда, когда служба Engage определяет, что содержание может быть несвежим (например, неделя). Таким образом, есть больше уверенности в том, что пользователь может иметь новый опыт контента, даже если приложение не выполнялось в течение длительного периода времени.

BroadcastReceiver должен быть настроен следующим двумя способами:

  • Динамически зарегистрируйте экземпляр класса BroadcastReceiver с использованием Context.registerReceiver() . Это позволяет общаться из приложений, которые все еще живут в памяти.

Котлин

class AppEngageBroadcastReceiver : BroadcastReceiver(){
  // Trigger recommendation cluster publish when PUBLISH_RECOMMENDATION broadcast
  // is received
  // Trigger featured cluster publish when PUBLISH_FEATURED broadcast is received
  // Trigger continue search cluster publish when PUBLISH_CONTINUE_SEARCH
  // broadcast is received
  // Trigger reservation cluster publish when PUBLISH_RESERVATION broadcast is
  // received
}

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

// Register Recommendation Cluster Publish Intent
  context.registerReceiver(AppEngageBroadcastReceiver(),
                           IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_RECOMMENDATION))

// Register Featured Cluster Publish Intent
  context.registerReceiver(AppEngageBroadcastReceiver(),
                           IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_FEATURED))

// Register Continue Search Cluster Publish Intent
  context.registerReceiver(AppEngageBroadcastReceiver(),
                           IntentFilter(com.google.android.engage.travel.service.Intents.ACTION_PUBLISH_CONTINUE_SEARCH))

// Register Reservation Cluster Publish Intent
  context.registerReceiver(AppEngageBroadcastReceiver(),
                           IntentFilter(com.google.android.engage.travel.service.Intents.ACTION_PUBLISH_RESERVATION))
}

Ява

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 continue search cluster publish when PUBLISH_CONTINUE_SEARCH
// broadcast is received

// Trigger reservation cluster publish when PUBLISH_RESERVATION 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));

// Register Featured Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_FEATURED));

// Register Continue Search Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.travel.service.Intents.ACTION_PUBLISH_CONTINUE_SEARCH));

// Register Reservation Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.travel.service.Intents.ACTION_PUBLISH_RESERVATION));

}
  • Статически объявить реализацию с помощью тега <receiver> в вашем файле AndroidManifest.xml . Это позволяет приложению получать намерения вещания, когда оно не работает, а также позволяет приложению публиковать контент.
<application>
   <receiver
      android:name=".AppEngageBroadcastReceiver"
      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.travel.PUBLISH_CONTINUE_SEARCH" />
      </intent-filter>
      <intent-filter>
         <action android:name="com.google.android.engage.action.travel.PUBLISH_RESERVATION" />
      </intent-filter>
   </receiver>
</application>

Служба отправляется в следующие намерения :

  • com.google.android.engage.action.PUBLISH_RECOMMENDATION Рекомендуется начать звонок publishRecommendationClusters при получении этого намерения.
  • com.google.android.engage.action.PUBLISH_FEATURED . Рекомендуется начать вызов publishFeaturedCluster при получении этого намерения.
  • com.google.android.engage.action.travel.PUBLISH_CONTINUE_SEARCH Рекомендуется начать вызов publishContinueSearchCluster при получении этого намерения.
  • com.google.android.engage.action.travel.PUBLISH_RESERVATION Рекомендуется начать вызов publishReservationCluster при получении этого намерения.

Интеграционный рабочий процесс

Для пошагового руководства по проверке вашей интеграции после ее завершения см. Рабочий процесс интеграции разработчика Engage .

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

См. Engage SDK часто задают вопросы о часто задаваемых вопросах.

Контакт

Свяжитесь с Engage-developers@google.com , если есть какие-либо вопросы в процессе интеграции.

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

После завершения этой интеграции ваши следующие шаги следующие:

  • 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 , Reservation , and Continue Search clusters may be published and visible to users.