Повысьте вовлеченность пользователей в приложении, обращаясь к ним там, где они находятся. Интегрируйте Engage SDK, чтобы доставлять персонализированные рекомендации и контент с продолжением прямо пользователям на различных устройствах, таких как «Коллекции» , «Развлечения» и 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.
Кластер «Избранное» отображает избранные сущности от нескольких партнёров-разработчиков в одной группе пользовательского интерфейса. Будет создан один кластер «Избранное», который будет отображаться в верхней части пользовательского интерфейса и будет иметь приоритет над всеми кластерами «Рекомендации». Каждому партнёру-разработчику будет разрешено транслировать до 10 сущностей в кластере «Избранное».
GenericFeaturedEntity : GenericFeaturedEntity отличается от элемента «Рекомендация» тем, что элемент «Избранное» должен использоваться для одного самого популярного контента от разработчиков и должен представлять собой самый важный контент, который будет интересен и актуален для пользователей.
Рисунок 11: Пользовательский интерфейс, отображающий FeaturedCluster со списком GenericFeaturedEntity
Кластер «Продолжить поиск» помогает пользователям продолжить предыдущий поиск путешествий, отображая список поисковых запросов, которые пользователь недавно искал во всех своих туристических приложениях. Кластер будет закреплён на второй позиции, после кластеров бронирования и перед кластерами рекомендуемых и рекомендуемых вариантов. Каждый партнёр-разработчик сможет транслировать до трёх объектов в кластере «Продолжить поиск».
- 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 определены различные сущности для представления каждого типа товаров. Для категории «Путешествия и мероприятия» поддерживаются следующие сущности:
-
GenericFeaturedEntity
-
ArticleEntity
-
EventEntity
-
LodgingEntity
-
StoreEntity
-
PointOfInterestEntity
-
RestaurantReservationEntity
-
EventReservationEntity
-
LodgingReservationEntity
-
TransportationReservationEntity
-
VehicleRentalReservationEntity
В приведенных ниже диаграммах представлены доступные атрибуты и требования для каждого типа.
GenericFeaturedEntity
Атрибут | Требование | Описание | Формат |
---|---|---|---|
Действие Uri | Необходимый | Глубокая ссылка на сущность в приложении поставщика. Примечание: для атрибуции можно использовать внешние ссылки. См. раздел «Часто задаваемые вопросы». | Ури |
Изображения постеров | Необходимый | При наличии нескольких изображений будет показано только одно. Рекомендуемое соотношение сторон — 16:9. Примечание: Если предоставляется бейдж, обеспечьте безопасное пространство в 24 dps сверху и снизу изображения. | Инструкции см. в разделе «Характеристики изображения» . |
Заголовок | Необязательный | Название организации. | Свободный текст Рекомендуемый размер текста: 50 символов. |
Описание | Необязательный | Один абзац текста, описывающий сущность. Примечание: пользователю будет показано либо описание, либо список субтитров, но не оба сразу. | Свободный текст Рекомендуемый размер текста: 180 символов. |
Список субтитров | Необязательный | До 3 субтитров, каждый из которых представляет собой отдельную строку текста. Примечание: пользователю будет показано либо описание, либо список субтитров, но не оба сразу. | Свободный текст Рекомендуемый размер текста для каждого субтитра: не более 50 символов. |
Значки | Необязательный | Каждый значок представляет собой либо свободный текст (максимум 15 символов), либо небольшое изображение. Специальная обработка UX поверх изображения/видео, например, наложение значка на изображение
| |
Значок - Текст | Необязательный | Название значка Примечание: для значка требуется текст или изображение. | Свободный текст Рекомендуемый размер текста: не более 15 символов. |
Значок - Изображение | Необязательный | Маленькое изображение Специальная обработка UX, например, наложение значка на миниатюру изображения/видео. Примечание: для значка требуется текст или изображение. | Инструкции см. в разделе «Характеристики изображения» . |
Категории контента | Необязательный | Опишите категорию контента в сущности. | Список перечислений Инструкции см. в разделе «Категория контента» . |
DisplayTimeWindow (необязательно) — задайте временное окно для отображения содержимого на поверхности. | |||
Начальная временная метка | Необязательный | Метка времени эпохи, после которой контент должен быть отображен на поверхности. Если не установлено, содержимое может быть отображено на поверхности. | Метка времени эпохи в миллисекундах |
Конечная временная метка | Необязательный | Метка времени эпохи, после которой контент больше не отображается на поверхности. Если не установлено, содержимое может быть отображено на поверхности. | Метка времени эпохи в миллисекундах |
ArticleEntity
Атрибут | Требование | Описание | Формат |
---|---|---|---|
Действие Uri | Необходимый | Глубокая ссылка на сущность в приложении поставщика. Примечание: для атрибуции можно использовать внешние ссылки. См. раздел «Часто задаваемые вопросы». | Ури |
Заголовок | Необходимый | Название организации. | Свободный текст Рекомендуемый размер текста: максимум 50 символов. |
Изображения постеров | Необязательный | При наличии нескольких изображений будет показано только одно. Рекомендуемое соотношение сторон — 16:9. Примечание: Изображение настоятельно рекомендуется. Если вы используете бейдж, оставьте свободное пространство 24 dps сверху и снизу изображения. | Инструкции см. в разделе «Характеристики изображения» . |
Источник - Название | Необязательный | Имя автора, организации или репортера | Свободный текст Рекомендуемый размер текста: менее 25 символов. |
Источник - Изображение | Необязательный | Изображение источника, например автора, организации, репортера | Инструкции см. в разделе «Характеристики изображения» . |
Описание | Необязательный | Один абзац текста, описывающий сущность. Примечание: пользователю будет показано либо описание, либо список субтитров, но не оба сразу. | Свободный текст Рекомендуемый размер текста: 180 символов. |
Список субтитров | Необязательный | До 3 субтитров, каждый из которых представляет собой отдельную строку текста. Примечание: пользователю будет показано либо описание, либо список субтитров, но не оба сразу. | Свободный текст Рекомендуемый размер текста для каждого субтитра: не более 50 символов. |
Значки | Необязательный | Каждый значок представляет собой либо свободный текст (максимум 15 символов), либо небольшое изображение. Специальная UX-обработка поверх изображения/видео, например, наложение значка на изображение
| |
Значок - Текст | Необязательный | Название значка Примечание: для значка требуется текст или изображение. | Свободный текст Рекомендуемый размер текста: не более 15 символов. |
Значок - Изображение | Необязательный | Маленькое изображение Специальная обработка UX, например, наложение значка на миниатюру изображения/видео. Примечание: для значка требуется текст или изображение. | Инструкции см. в разделе «Характеристики изображения» . |
Время публикации контента | Необязательный | Это временная метка эпохи в миллисекундах, когда контент был опубликован/обновлен в приложении. | Метка времени эпохи в миллисекундах |
Время последнего участия | Необязательный | Метка времени в миллисекундах, когда пользователь последний раз взаимодействовал с этой сущностью. | Метка времени эпохи в миллисекундах |
Процент прогресса | Необязательный | Процент всего контента, потребленного пользователем на текущий момент. | Целочисленное значение от 0 до 100 включительно. |
Категории контента | Необязательный | Опишите категорию контента в сущности. | Список перечислений Инструкции см. в разделе «Категория контента» . |
DisplayTimeWindow (необязательно) — задайте временное окно для отображения содержимого на поверхности. | |||
Начальная временная метка | Необязательный | Метка времени эпохи, после которой контент должен быть отображен на поверхности. Если не установлено, содержимое может быть отображено на поверхности. | Метка времени эпохи в миллисекундах |
Конечная временная метка | Необязательный | Метка времени эпохи, после которой контент больше не отображается на поверхности. Если не установлено, содержимое может быть отображено на поверхности. | Метка времени эпохи в миллисекундах |
EventEntity
Атрибут | Требование | Описание | Формат |
---|---|---|---|
Действие Uri | Необходимый | Глубокая ссылка на сущность в приложении поставщика. Примечание: для атрибуции можно использовать внешние ссылки. См. раздел «Часто задаваемые вопросы». | Ури |
Заголовок | Необходимый | Название организации. | Нить Рекомендуемый размер текста: максимум 50 символов. |
Локализованное время начала — временная метка | Необходимый | Метка времени эпохи, когда ожидается начало события. | Joda-Time Instant |
Локализованное время начала — часовой пояс | Необходимый | Часовой пояс, в котором ожидается начало события. | Joda-Time DateTimeZone Инструкции см. в разделе Характеристики часовых поясов . |
Режим событий | Необходимый | Поле для указания того, будет ли мероприятие виртуальным, очным или и тем, и другим. | Перечисление: VIRTUAL, IN_PERSON или HYBRID |
Изображения постеров | Необходимый | При наличии нескольких изображений будет показано только одно. Рекомендуемое соотношение сторон — 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 символов (слишком длинный текст может содержать многоточия) |
Категории контента | Необязательный | Опишите категорию контента в сущности. | Список допустимых перечислений
Инструкции см. в разделе «Категория контента» . |
DisplayTimeWindow (необязательно) — задайте временное окно для отображения содержимого на поверхности. | |||
Начальная временная метка | Необязательный | Метка времени эпохи, после которой контент должен быть отображен на поверхности. Если не установлено, содержимое может быть отображено на поверхности. | Метка времени эпохи в миллисекундах |
Конечная временная метка | Необязательный | Метка времени эпохи, после которой контент больше не отображается на поверхности. Если не установлено, содержимое может быть отображено на поверхности. | Метка времени эпохи в миллисекундах |
LodgingEntity
Атрибут | Требование | Описание | Формат |
---|---|---|---|
Действие Uri | Необходимый | Глубокая ссылка на сущность в приложении поставщика. Примечание: для атрибуции можно использовать внешние ссылки. См. раздел «Часто задаваемые вопросы». | Ури |
Заголовок | Необходимый | Название организации. | Нить Рекомендуемый размер текста: максимум 50 символов. |
Изображения постеров | Необходимый | При наличии нескольких изображений будет показано только одно. Рекомендуемое соотношение сторон — 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 | Необходимый | Глубокая ссылка на сущность в приложении поставщика. Примечание: для атрибуции можно использовать внешние ссылки. См. раздел «Часто задаваемые вопросы». | Ури |
Заголовок | Необязательный | Название магазина. | Свободный текст Рекомендуемый размер текста: менее 45 символов (слишком длинный текст может содержать многоточия) |
Расположение | Необязательный | Местоположение магазина. | Свободный текст Рекомендуемый размер текста: менее 45 символов (слишком длинный текст может содержать многоточия) |
Вызывать | Необязательный | Расскажите об акции, мероприятии или обновлении магазина, если таковое имеется. | Свободный текст Рекомендуемый размер текста: менее 45 символов (слишком длинный текст может содержать многоточия) |
Выноска мелким шрифтом | Необязательный | Текст выноски, набранный мелким шрифтом. | Свободный текст Рекомендуемый размер текста: менее 45 символов (слишком длинный текст может содержать многоточия) |
Описание | Необязательный | Описание магазина. | Свободный текст Рекомендуемый размер текста: менее 90 символов (слишком длинный текст может содержать многоточия) |
Категория | Необязательный | Категория магазина, в контексте заведений общественного питания, это может быть кухня типа «французская», «новая американская», «рамен», «изысканная кухня». | Свободный текст Рекомендуемый размер текста: менее 45 символов (слишком длинный текст может содержать многоточия) |
Рейтинг - Максимальное значение | Необязательный | Максимальное значение шкалы оценок. Обязательно, если указано текущее значение рейтинга. | Число >= 0,0 |
Рейтинг - Текущее значение | Необязательный | Текущее значение шкалы оценки. Обязательно должно быть указано, если также указано максимальное значение рейтинга. | Число >= 0,0 |
Рейтинг - Количество | Необязательный | Количество оценок объекта размещения. Примечание: укажите это поле, если ваше приложение хочет управлять отображением этого значения для пользователей. Укажите краткую строку, которая будет отображаться для пользователя. Например, если значение равно 1 000 000, рассмотрите возможность использования сокращений, таких как 1M, чтобы оно не обрезалось на экранах с меньшим разрешением. | Нить |
Рейтинг - Количество | Необязательный | Количество оценок объекта размещения. Примечание: укажите это поле, если вы не хотите самостоятельно обрабатывать логику отображения сокращений. Если указаны и Count, и Count Value, мы будем использовать Count для отображения пользователям. | Длинный |
DisplayTimeWindow (необязательно) — задайте временное окно для отображения содержимого на поверхности. | |||
Начальная временная метка | Необязательный | Метка времени эпохи, после которой контент должен быть отображен на поверхности. Если не установлено, содержимое может быть отображено на поверхности. | Метка времени эпохи в миллисекундах |
Конечная временная метка | Необязательный | Метка времени эпохи, после которой контент больше не отображается на поверхности. Если не установлено, содержимое может быть отображено на поверхности. | Метка времени эпохи в миллисекундах |
PointOfInterestEntity
Атрибут | Требование | Описание | Формат |
---|---|---|---|
Действие Uri | Необходимый | Глубокая ссылка на сущность в приложении поставщика. Примечание: для атрибуции можно использовать внешние ссылки. См. раздел «Часто задаваемые вопросы». | Ури |
Заголовок | Необходимый | Название организации. | Нить Рекомендуемый размер текста: максимум 50 символов. |
Изображения постеров | Условно требуется | При наличии нескольких изображений будет показано только одно. Рекомендуемое соотношение сторон — 16:9. Примечание: Изображение обязательно, если объект входит в кластер рекомендаций. Если предоставляется значок, обеспечьте свободное пространство в 24 точки сверху и снизу изображения. | Инструкции см. в разделе «Характеристики изображения» . |
Время последнего участия | Условно требуется | Метка времени эпохи, когда пользователь последний раз взаимодействовал с этой сущностью. Примечание: это поле обязательно для заполнения, если объект является частью кластера продолжения поиска. | 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 символов (слишком длинный текст может содержать многоточия) |
Категории контента | Необязательный | Опишите категорию контента в сущности. | Список допустимых перечислений
Инструкции см. в разделе «Категория контента» . |
DisplayTimeWindow (необязательно) — задайте временное окно для отображения содержимого на поверхности. | |||
Начальная временная метка | Необязательный | Метка времени эпохи, после которой контент должен быть отображен на поверхности. Если не установлено, содержимое может быть отображено на поверхности. | Метка времени эпохи в миллисекундах |
Конечная временная метка | Необязательный | Метка времени эпохи, после которой контент больше не отображается на поверхности. Если не установлено, содержимое может быть отображено на поверхности. | Метка времени эпохи в миллисекундах |
RestaurantReservationEntity
Атрибут | Требование | Описание | Формат |
---|---|---|---|
Действие Uri | Необходимый | Глубокая ссылка на сущность в приложении поставщика. Примечание: для атрибуции можно использовать внешние ссылки. См. раздел «Часто задаваемые вопросы». | Ури |
Заголовок | Необходимый | Название организации. | Нить Рекомендуемый размер текста: максимум 50 символов. |
Локализованное время начала бронирования — временная метка | Необходимый | Метка времени эпохи, когда ожидается начало резервирования. | Joda-Time Instant |
Локализованное время начала бронирования — часовой пояс | Необходимый | Часовой пояс, в котором ожидается начало бронирования. | Joda-Time DateTimeZone Инструкции см. в разделе Характеристики часовых поясов . |
Местоположение - Страна | Необходимый | Страна, в которой находится ресторан. | Свободный текст Рекомендуемый размер текста: максимум ~20 символов. |
Местоположение - Город | Необходимый | Город, в котором находится ресторан. | Свободный текст Рекомендуемый размер текста: максимум ~20 символов. |
Местоположение - Отображение адреса | Необходимый | Адрес ресторана, который будет отображаться пользователю. | Свободный текст Рекомендуемый размер текста: максимум ~20 символов. |
Местоположение - Уличный адрес | Необязательный | Укажите почтовый адрес ресторана (если применимо). | Свободный текст Рекомендуемый размер текста: максимум ~20 символов. |
Местоположение - Штат | Необязательный | Штат или провинция (если применимо), в которой расположен ресторан. | Свободный текст Рекомендуемый размер текста: максимум ~20 символов. |
Местоположение - почтовый индекс | Необязательный | Почтовый индекс ресторана (если применимо). | Свободный текст Рекомендуемый размер текста: максимум ~20 символов. |
Расположение - Район | Необязательный | Район расположения ресторана (если применимо). | Свободный текст Рекомендуемый размер текста: максимум ~20 символов. |
Изображения постеров | Необязательный | При наличии нескольких изображений будет показано только одно. Рекомендуемое соотношение сторон — 16:9. | Инструкции см. в разделе «Характеристики изображения» . |
Описание | Необязательный | Один абзац текста, описывающий сущность. Примечание: пользователю будет показано либо описание, либо список субтитров, но не оба сразу. | Свободный текст Рекомендуемый размер текста: 180 символов. |
Список субтитров | Необязательный | До 3 субтитров, каждый из которых представляет собой отдельную строку текста. Примечание: пользователю будет показано либо описание, либо список субтитров, но не оба сразу. | Свободный текст Рекомендуемый размер текста для каждого субтитра: не более 50 символов. |
Размер стола | Необязательный | Количество человек в группе бронирования | Целое число > 0 |
DisplayTimeWindow (необязательно) — задайте временное окно для отображения содержимого на поверхности. | |||
Начальная временная метка | Необязательный | Метка времени эпохи, после которой контент должен быть отображен на поверхности. Если не установлено, содержимое может быть отображено на поверхности. | Метка времени эпохи в миллисекундах |
Конечная временная метка | Необязательный | Метка времени эпохи, после которой контент больше не отображается на поверхности. Если не установлено, содержимое может быть отображено на поверхности. | Метка времени эпохи в миллисекундах |
EventReservationEntity
Атрибут | Требование | Описание | Формат |
---|---|---|---|
Действие Uri | Необходимый | Глубокая ссылка на сущность в приложении поставщика. Примечание: для атрибуции можно использовать внешние ссылки. См. раздел «Часто задаваемые вопросы». | Ури |
Заголовок | Необходимый | Название организации. | Нить Рекомендуемый размер текста: максимум 50 символов. |
Локализованное время начала — временная метка | Необходимый | Метка времени эпохи, когда ожидается начало события. | Joda-Time Instant |
Локализованное время начала — часовой пояс | Необходимый | Часовой пояс, в котором ожидается начало события. | Joda-Time DateTimeZone Инструкции см. в разделе Характеристики часовых поясов . |
Режим событий | Необходимый | Поле для указания того, будет ли мероприятие виртуальным, очным или и тем, и другим. | Перечисление: VIRTUAL, IN_PERSON или HYBRID. |
Местоположение - Страна | Условно требуется | Страна, в которой происходит событие. Примечание. Это необходимо для событий IN_PERSON или HYBRID. | Свободный текст Рекомендуемый размер текста: максимум ~20 символов. |
Местоположение - Город | Условно требуется | Город, в котором происходит событие. Примечание. Это необходимо для событий IN_PERSON или HYBRID. | Свободный текст Рекомендуемый размер текста: максимум ~20 символов. |
Местоположение – отображение адреса | Условно требуется | Адрес или название места проведения мероприятия, которое должно отображаться пользователю. Примечание. Это необходимо для событий IN_PERSON или HYBRID. | Свободный текст Рекомендуемый размер текста: максимум ~20 символов. |
Местоположение – адрес | Необязательный | Адрес (если применимо) места проведения мероприятия. | Свободный текст Рекомендуемый размер текста: максимум ~20 символов. |
Местоположение — штат | Необязательный | Штат или провинция (если применимо), в которой проводится мероприятие. | Свободный текст Рекомендуемый размер текста: максимум ~20 символов. |
Местоположение — почтовый индекс | Необязательный | Почтовый индекс (если применимо) места, в котором проводится мероприятие. | Свободный текст Рекомендуемый размер текста: максимум ~20 символов. |
Местоположение – район | Необязательный | Район (если применимо), в котором проводится мероприятие. | Свободный текст Рекомендуемый размер текста: максимум ~20 символов. |
Изображения для плакатов | Необязательный | Если предоставлено несколько изображений, мы покажем только одно изображение. Рекомендуемое соотношение сторон — 16:9. Примечание. Изображение настоятельно рекомендуется. Если имеется значок, обеспечьте безопасное пространство в 24 dps вверху и внизу изображения. | Дополнительные сведения см. в разделе «Спецификации изображения» . |
Локализованное время окончания – временная метка | Необязательный | Временная метка эпохи, когда ожидается завершение события. | Джода-время мгновенное |
Локализованное время окончания – часовой пояс | Необязательный | Часовой пояс, в котором ожидается завершение события. | Джода-время DateTimeZone Дополнительные сведения см. в разделе «Спецификации часового пояса» . |
Поставщик услуг – имя | Необязательный | Имя поставщика услуг. Примечание. Для поставщика услуг требуется либо текст, либо изображение. | Свободный текст. Например, имя организатора мероприятия/тура. |
Поставщик услуг – изображение | Необязательный | Логотип/изображение поставщика услуг. Примечание. Для поставщика услуг требуется либо текст, либо изображение. | Дополнительные сведения см. в разделе «Спецификации изображения» . |
Описание | Необязательный | Один абзац текста для описания объекта. Примечание. Пользователю будет отображаться либо описание, либо список субтитров, но не оба одновременно. | Свободный текст Рекомендуемый размер текста: 180 символов. |
Список субтитров | Необязательный | До трех субтитров, каждый из которых представляет собой одну строку текста. Примечание. Пользователю будет отображаться либо описание, либо список субтитров, но не оба одновременно. | Свободный текст Рекомендуемый размер текста для каждого субтитра: максимум 50 символов. |
Значки | Необязательный | Каждый значок представляет собой либо произвольный текст (максимум 15 символов), либо небольшое изображение. | |
Значок – текст | Необязательный | Название для значка Примечание. Для значка требуется текст или изображение. | Свободный текст Рекомендуемый размер текста: максимум 15 символов. |
Значок – изображение | Необязательный | Маленькое изображение Специальная UX-обработка, например наложение значка на миниатюру изображения или видео. Примечание. Для значка требуется текст или изображение. | Дополнительные сведения см. в разделе «Спецификации изображения» . |
Идентификатор бронирования | Необязательный | Идентификатор резервирования для резервирования события. | Свободный текст |
Цена - Текущая цена | Условно требуется | Текущая цена билета/пропуска на мероприятие. Должно быть указано, если указана зачеркнутая цена. | Свободный текст |
Цена - Зачеркнутая цена | Необязательный | Первоначальная цена билета/пропуска на мероприятие. | Свободный текст |
Выноска цен | Необязательный | Выноска цены, чтобы указать промо-акцию, мероприятие, скидку для участников, если таковая имеется. | Свободный текст Рекомендуемый размер текста: до 45 символов (слишком длинный текст может содержать многоточие). |
Рейтинг – максимальное значение | Необязательный | Максимальное значение рейтинговой шкалы. Должно быть указано, если также указано текущее значение рейтинга. | Число >= 0,0 |
Рейтинг - Текущее значение | Необязательный | Текущее значение оценочной шкалы. Должно быть указано, если также указано максимальное значение рейтинга. | Число >= 0,0 |
Рейтинг – подсчет | Необязательный | Подсчет рейтингов события. Примечание. Укажите это поле, если ваше приложение хочет контролировать, как оно отображается пользователям. Укажите краткую строку, которая может быть отображена пользователю. Например, если количество составляет 1 000 000, рассмотрите возможность использования сокращений, таких как 1M, чтобы оно не обрезалось на дисплеях меньшего размера. | Нить |
Рейтинг – значение подсчета | Необязательный | Подсчет рейтингов события. Примечание. Укажите это поле, если вы не хотите самостоятельно обрабатывать логику отображаемых сокращений. Если присутствуют и счетчик, и значение счетчика, мы будем использовать счетчик для отображения пользователям. | Длинный |
Категории контента | Необязательный | Опишите категорию контента в сущности. | Список подходящих перечислений
Дополнительные сведения см. в разделе «Категория контента» . |
DisplayTimeWindow (необязательно) — установите временное окно для отображения содержимого на поверхности. | |||
Начальная отметка времени | Необязательный | Временная метка эпохи, после которой содержимое должно отображаться на поверхности. Если не установлено, контент может отображаться на поверхности. | Временная метка эпохи в миллисекундах |
Конечная временная метка | Необязательный | Временная метка эпохи, после которой содержимое больше не отображается на поверхности. Если не установлено, контент может отображаться на поверхности. | Временная метка эпохи в миллисекундах |
LodgingReservationEntity
Атрибут | Требование | Описание | Формат |
---|---|---|---|
Действие Ури | Необходимый | Глубокая ссылка на объект в приложении поставщика. Примечание. Для атрибуции можно использовать глубокие ссылки. Обратитесь к этому FAQ | Ури |
Заголовок | Необходимый | Название сущности. | Свободный текст. Например, «Ваше пребывание с 12 декабря». Рекомендуемый размер текста: максимум 50 символов. |
Локализованное время регистрации – временная метка | Необходимый | Временная метка эпохи, обозначающая время прибытия для резервирования. | Джода-время мгновенное |
Локализованное время регистрации – часовой пояс | Необходимый | Часовой пояс, в котором указано время заезда для бронирования. | Джода-время DateTimeZone Дополнительные сведения см. в разделе «Спецификации часового пояса» . |
Локализованное время выезда – отметка времени | Необходимый | Временная метка эпохи, обозначающая время выезда для резервирования. | Джода-время мгновенное |
Локализованное время выезда – часовой пояс | Необходимый | Часовой пояс, в котором указано время выезда для бронирования. | Джода-время DateTimeZone Дополнительные сведения см. в разделе «Спецификации часового пояса» . |
Местоположение - Страна | Необходимый | Страна, в которой находится жилье. | Свободный текст Рекомендуемый размер текста: максимум ~20 символов. |
Местоположение - Город | Необходимый | Город, в котором находится жилье. | Свободный текст Рекомендуемый размер текста: максимум ~20 символов. |
Местоположение – отображение адреса | Необходимый | Адрес, который будет отображаться пользователю. Укажите краткий адрес, по возможности используя сокращения (например, «St» вместо «Улица», «Ave» вместо «Авеню»). Эта строка может быть усечена в зависимости от устройства и настроек пользователя. Укажите название города для четкой идентификации. | Свободный текст Рекомендуемый размер текста: максимум ~35 символов. |
Местоположение – адрес | Необязательный | Адрес (если применимо) места проживания. | Свободный текст Рекомендуемый размер текста: максимум ~20 символов. |
Местоположение — штат | Необязательный | Штат или провинция (если применимо), в которой находится жилье. | Свободный текст Рекомендуемый размер текста: максимум ~20 символов. |
Местоположение — почтовый индекс | Необязательный | Почтовый индекс (если применимо) места проживания. | Свободный текст Рекомендуемый размер текста: максимум ~20 символов. |
Местоположение – район | Необязательный | Район (если применимо) места проживания. | Свободный текст Рекомендуемый размер текста: максимум ~20 символов. |
Изображения для плакатов | Необязательный | Если предоставлено несколько изображений, мы покажем только одно изображение. Рекомендуемое соотношение сторон — 16:9. Примечание. Если значок предоставляется, обеспечьте безопасное пространство в 24 dps как вверху, так и внизу изображения. | Дополнительные сведения см. в разделе «Спецификации изображения» . |
Описание | Необязательный | Один абзац текста для описания объекта. Примечание. Пользователю будет отображаться либо описание, либо список субтитров, но не оба одновременно. | Свободный текст Рекомендуемый размер текста: 180 символов. |
Список субтитров | Необязательный | До трех субтитров, каждый из которых представляет собой одну строку текста. Примечание. Пользователю будет отображаться либо описание, либо список субтитров, но не оба одновременно. | Свободный текст Рекомендуемый размер текста для каждого субтитра: максимум 50 символов. |
Идентификатор бронирования | Необязательный | Идентификатор бронирования для бронирования жилья. | Свободный текст |
Рейтинг – максимальное значение | Необязательный | Максимальное значение рейтинговой шкалы. Должно быть указано, если также указано текущее значение рейтинга. | Число >= 0,0 |
Рейтинг - Текущее значение | Необязательный | Текущее значение оценочной шкалы. Должно быть указано, если также указано максимальное значение рейтинга. | Число >= 0,0 |
Рейтинг – подсчет | Необязательный | Подсчет оценок за жилье. Примечание. Укажите это поле, если ваше приложение хочет контролировать, как оно отображается пользователям. Укажите краткую строку, которая может быть отображена пользователю. Например, если количество составляет 1 000 000, рассмотрите возможность использования сокращений, таких как 1M, чтобы оно не обрезалось на дисплеях меньшего размера. | Нить |
Рейтинг – значение подсчета | Необязательный | Подсчет оценок за жилье. Примечание. Укажите это поле, если вы не хотите самостоятельно обрабатывать логику отображаемых сокращений. Если присутствуют и счетчик, и значение счетчика, мы будем использовать счетчик для отображения пользователям. | Длинный |
Цена - Текущая цена | Условно требуется | Текущая стоимость проживания. Должно быть указано, если указана зачеркнутая цена. | Свободный текст |
Цена - Зачеркнутая цена | Необязательный | Исходная цена проживания, которая будет зачеркнута в пользовательском интерфейсе. | Свободный текст |
Выноска цен | Необязательный | Выноска цены, чтобы указать промо-акцию, мероприятие, скидку для участников, если таковая имеется. | Свободный текст Рекомендуемый размер текста: до 45 символов (слишком длинный текст может содержать многоточие). |
DisplayTimeWindow (необязательно) — установите временное окно для отображения содержимого на поверхности. | |||
Начальная отметка времени | Необязательный | Временная метка эпохи, после которой содержимое должно отображаться на поверхности. Если не установлено, контент может отображаться на поверхности. | Временная метка эпохи в миллисекундах |
Конечная временная метка | Необязательный | Временная метка эпохи, после которой содержимое больше не отображается на поверхности. Если не установлено, контент может отображаться на поверхности. | Временная метка эпохи в миллисекундах |
TransportationReservationEntity
Атрибут | Требование | Описание | Формат |
---|---|---|---|
Действие Ури | Необходимый | Глубокая ссылка на объект в приложении поставщика. Примечание. Для атрибуции можно использовать глубокие ссылки. Обратитесь к этому FAQ | Ури |
Заголовок | Необходимый | Название сущности. | Свободный текст. Например, «SFO в SAN». Рекомендуемый размер текста: максимум 50 символов. |
Тип транспорта | Необходимый | Вид/тип транспорта для бронирования. | Перечисление: ПОЛЕТ, ПОЕЗД, АВТОБУС или ПАРОМ. |
Локализованное время отправления – отметка времени | Необходимый | Временная метка эпохи, обозначающая время отправления. | Джода-время мгновенное |
Локализованное время отправления – часовой пояс | Необходимый | Часовой пояс времени отправления. | Джода-время DateTimeZone Дополнительные сведения см. в разделе «Спецификации часового пояса» . |
Локализованное время прибытия – временная метка | Необходимый | Временная метка эпохи, обозначающая время прибытия. | Джода-время мгновенное |
Локализованное время прибытия – часовой пояс | Необходимый | Часовой пояс времени прибытия. | Джода-время DateTimeZone Дополнительные сведения см. в разделе «Спецификации часового пояса» . |
Номер транспорта | Необходимый | Номер рейса, номер автобуса, номер поезда или номер парома/круиза. | Свободный текст |
Локализованное время посадки — отметка времени | Необходимый | Временная метка эпохи, обозначающая время посадки для бронирования (если применимо). | Джода-время мгновенное |
Локализованное время посадки – часовой пояс | Необходимый | Часовой пояс времени посадки для бронирования (если применимо) | Джода-время DateTimeZone Дополнительные сведения см. в разделе «Спецификации часового пояса» . |
Место отправления — Страна | Необязательный | Страна отправления. | Свободный текст Рекомендуемый размер текста: максимум ~20 символов. |
Место отправления – город | Необязательный | Город отправления. | Свободный текст Рекомендуемый размер текста: максимум ~20 символов. |
Место отправления – отображение адреса | Необязательный | Место отправления, которое будет отображаться пользователю. | Свободный текст Рекомендуемый размер текста: максимум ~20 символов. |
Место отправления – адрес | Необязательный | Адрес (если применимо) места отправления. | Свободный текст Рекомендуемый размер текста: максимум ~20 символов. |
Место отправления — штат | Необязательный | Штат или провинция (если применимо) места отправления. | Свободный текст Рекомендуемый размер текста: максимум ~20 символов. |
Место отправления — почтовый индекс | Необязательный | Почтовый индекс (если применимо) места отправления. | Свободный текст Рекомендуемый размер текста: максимум ~20 символов. |
Место отправления – район | Необязательный | Район (если применимо) места отправления. | Свободный текст Рекомендуемый размер текста: максимум ~20 символов. |
Место прибытия — Страна | Необязательный | Страна прибытия. | Свободный текст Рекомендуемый размер текста: максимум ~20 символов. |
Место прибытия – город | Необязательный | Город прибытия. | Свободный текст Рекомендуемый размер текста: максимум ~20 символов. |
Место прибытия – отображение адреса | Необязательный | Место прибытия, которое будет отображаться пользователю. | Свободный текст Рекомендуемый размер текста: максимум ~20 символов. |
Место прибытия — адрес | Необязательный | Адрес (если применимо) места прибытия. | Свободный текст Рекомендуемый размер текста: максимум ~20 символов. |
Место прибытия — штат | Необязательный | Штат или провинция (если применимо) места прибытия. | Свободный текст Рекомендуемый размер текста: максимум ~20 символов. |
Место прибытия — почтовый индекс | Необязательный | Почтовый индекс (если применимо) места прибытия. | Свободный текст Рекомендуемый размер текста: максимум ~20 символов. |
Место прибытия – район | Необязательный | Район (если применимо) места прибытия. | Свободный текст Рекомендуемый размер текста: максимум ~20 символов. |
Поставщик услуг – имя | Необязательный | Имя поставщика услуг. Примечание. Для поставщика услуг требуется либо текст, либо изображение. | Свободный текст. Например, название авиакомпании |
Поставщик услуг – изображение | Необязательный | Логотип/изображение поставщика услуг. Примечание. Для поставщика услуг требуется либо текст, либо изображение. | Дополнительные сведения см. в разделе «Спецификации изображения» . |
Изображения для плакатов | Необязательный | Если предоставлено несколько изображений, мы покажем только одно изображение. Рекомендуемое соотношение сторон — 16:9. | Дополнительные сведения см. в разделе «Спецификации изображения» . |
Описание | Необязательный | Один абзац текста для описания объекта. Примечание. Пользователю будет отображаться либо описание, либо список субтитров, но не оба одновременно. | Свободный текст Рекомендуемый размер текста: 180 символов. |
Список субтитров | Необязательный | До трех субтитров, каждый из которых представляет собой одну строку текста. Примечание. Пользователю будет отображаться либо описание, либо список субтитров, но не оба одновременно. | Свободный текст Рекомендуемый размер текста для каждого субтитра: максимум 50 символов. |
Идентификатор бронирования | Необязательный | Идентификатор бронирования для бронирования перевозки. | Свободный текст |
Цена - Текущая цена | Условно требуется | Текущая цена бронирования. Должно быть указано, если указана зачеркнутая цена. | Свободный текст |
Цена - Зачеркнутая цена | Необязательный | Исходная цена резервирования, которая будет зачеркнута в пользовательском интерфейсе. | Свободный текст |
Выноска цен | Необязательный | Выноска цены, чтобы указать промо-акцию, мероприятие, скидку для участников, если таковая имеется. | Свободный текст Рекомендуемый размер текста: до 45 символов (слишком длинный текст может содержать многоточие). |
DisplayTimeWindow (необязательно) — установите временное окно для отображения содержимого на поверхности. | |||
Начальная отметка времени | Необязательный | Временная метка эпохи, после которой содержимое должно отображаться на поверхности. Если не установлено, контент может отображаться на поверхности. | Временная метка эпохи в миллисекундах |
Конечная временная метка | Необязательный | Временная метка эпохи, после которой содержимое больше не отображается на поверхности. Если не установлено, контент может отображаться на поверхности. | Временная метка эпохи в миллисекундах |
VehicleRentalReservationEntity
Атрибут | Требование | Описание | Формат |
---|---|---|---|
Действие Ури | Необходимый | Глубокая ссылка на объект в приложении поставщика. Примечание. Для атрибуции можно использовать глубокие ссылки. Обратитесь к этому FAQ | Ури |
Заголовок | Необходимый | Название сущности. | Свободный текст. Например, "Авис Юнион Сквер SF" Рекомендуемый размер текста: максимум 50 символов. |
Локализованное время получения – временная метка | Необходимый | Временная метка эпохи, обозначающая время получения бронирования. | Джода-время мгновенное |
Локализованное время получения – часовой пояс | Необходимый | Часовой пояс времени получения для бронирования. | Джода-время DateTimeZone Дополнительные сведения см. в разделе «Спецификации часового пояса» . |
Локализованное время возврата – отметка времени | Необязательный | Временная метка эпохи, обозначающая время выезда для резервирования. | Джода-время мгновенное |
Локализованное время возврата – часовой пояс | Необязательный | Часовой пояс времени выезда для бронирования. | Джода-время DateTimeZone Дополнительные сведения см. в разделе «Спецификации часового пояса» . |
Адрес получения — Страна | Необязательный | Страна места получения. | Свободный текст Рекомендуемый размер текста: максимум ~20 символов. |
Адрес самовывоза — город | Необязательный | Город места получения. | Свободный текст Рекомендуемый размер текста: максимум ~20 символов. |
Адрес получения – отображение адреса | Необязательный | Место получения, которое будет отображаться пользователю. | Свободный текст Рекомендуемый размер текста: максимум ~20 символов. |
Адрес самовывоза — адрес улицы | Необязательный | Адрес (если применимо) места получения автомобиля. | Свободный текст Рекомендуемый размер текста: максимум ~20 символов. |
Адрес получения — штат | Необязательный | Штат или провинция (если применимо) места получения. | Свободный текст Рекомендуемый размер текста: максимум ~20 символов. |
Адрес получения — почтовый индекс | Необязательный | Почтовый индекс (если применимо) места получения. | Свободный текст Рекомендуемый размер текста: максимум ~20 символов. |
Адрес самовывоза — район | Необязательный | Район (если применимо) места получения. | Свободный текст Рекомендуемый размер текста: максимум ~20 символов. |
Обратный адрес – страна | Необязательный | Страна места возврата. | Свободный текст Рекомендуемый размер текста: максимум ~20 символов. |
Обратный адрес – город | Необязательный | Город места возврата. | Свободный текст Рекомендуемый размер текста: максимум ~20 символов. |
Обратный адрес — отображение адреса | Необязательный | Место возврата, которое будет отображаться пользователю. | Свободный текст Рекомендуемый размер текста: максимум ~20 символов. |
Обратный адрес – уличный адрес | Необязательный | Уличный адрес (если применимо) места возврата. | Свободный текст Рекомендуемый размер текста: максимум ~20 символов. |
Обратный адрес – штат | Необязательный | Штат или провинция (если применимо) места возврата. | Свободный текст Рекомендуемый размер текста: максимум ~20 символов. |
Обратный адрес — почтовый индекс | Необязательный | Почтовый индекс (если применимо) места возврата. | Свободный текст Рекомендуемый размер текста: максимум ~20 символов. |
Обратный адрес – район | Необязательный | Район (если применимо) места возврата. | Свободный текст Рекомендуемый размер текста: максимум ~20 символов. |
Поставщик услуг – имя | Необязательный | Имя поставщика услуг. Примечание. Для поставщика услуг требуется либо текст, либо изображение. | Свободный текст. Например, «Авис Прокат автомобилей». |
Поставщик услуг – изображение | Необязательный | Логотип/изображение поставщика услуг. Примечание. Для поставщика услуг требуется либо текст, либо изображение. | Дополнительные сведения см. в разделе «Спецификации изображения» . |
Изображения для плакатов | Необязательный | Если предоставлено несколько изображений, мы покажем только одно изображение. Рекомендуемое соотношение сторон — 16:9. | Дополнительные сведения см. в разделе «Спецификации изображения» . |
Описание | Необязательный | Один абзац текста для описания объекта. Примечание. Пользователю будет отображаться либо описание, либо список субтитров, но не оба одновременно. | Свободный текст Рекомендуемый размер текста: 180 символов. |
Список субтитров | Необязательный | До трех субтитров, каждый из которых представляет собой одну строку текста. Примечание. Пользователю будет отображаться либо описание, либо список субтитров, но не оба одновременно. | Свободный текст Рекомендуемый размер текста для каждого субтитра: максимум 50 символов. |
Подтверждение идентификатора | Необязательный | Идентификатор подтверждения бронирования аренды автомобиля. | Свободный текст |
Цена - Текущая цена | Условно требуется | Текущая цена бронирования. Должно быть указано, если указана зачеркнутая цена. | Свободный текст |
Цена - Зачеркнутая цена | Необязательный | Исходная цена резервирования, которая будет зачеркнута в пользовательском интерфейсе. | Свободный текст |
Выноска цен | Необязательный | Выноска цены, чтобы указать промо-акцию, мероприятие, скидку для участников, если таковая имеется. | Свободный текст Рекомендуемый размер текста: до 45 символов (слишком длинный текст может содержать многоточие). |
DisplayTimeWindow (необязательно) — установите временное окно для отображения содержимого на поверхности. | |||
Начальная отметка времени | Необязательный | Временная метка эпохи, после которой содержимое должно отображаться на поверхности. Если не установлено, контент может отображаться на поверхности. | Временная метка эпохи в миллисекундах |
Конечная временная метка | Необязательный | Временная метка эпохи, после которой содержимое больше не отображается на поверхности. Если не установлено, контент может отображаться на поверхности. | Временная метка эпохи в миллисекундах |
Характеристики изображения
Необходимые характеристики для графических ресурсов перечислены в этой таблице:
Соотношение сторон | Минимум пикселей | Рекомендуемые пиксели |
---|---|---|
Квадрат (1х1) Предпочтительный | 300x300 | 1200x1200 |
Пейзаж (1,91x1) | 600x314 | 1200x628 |
Портрет (4х5) | 480x600 | 960x1200 |
Изображения должны размещаться на общедоступных CDN, чтобы Google мог получить к ним доступ.
Форматы файлов
PNG, JPG, статический 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 мог получить к ним доступ.
Рекомендации по использованию категорий контента
- Некоторые сущности, такие как ArticleEntity и GenericFeaturedEntity, имеют право использовать любую из категорий контента. Для других сущностей, таких как EventEntity , EventReservationEntity , PointOfInterestEntity , допускается только подмножество этих категорий. Прежде чем заполнять список, проверьте список категорий, подходящих для типа сущности.
Используйте конкретный тип сущности для некоторых категорий контента вместо комбинации общих сущностей и ContentCategory:
- TYPE_MOVIES_AND_TV_SHOWS – проверьте объекты из руководства по интеграции Watch, прежде чем использовать общие объекты.
- TYPE_BOOKS — проверьте EbookEntity перед использованием общих объектов.
- TYPE_AUDIOBOOKS — проверьте AudiobookEntity перед использованием общих объектов.
- TYPE_SHOPPING — проверьте ShoppingEntity перед использованием общих объектов.
- TYPE_FOOD_AND_DRINK — проверьте объекты из руководства по интеграции продуктов питания, прежде чем использовать общие объекты.
Поле ContentCategory является необязательным и его следует оставить пустым, если контент не принадлежит ни к одной из категорий, упомянутых ранее.
Если указано несколько категорий контента, укажите их в порядке релевантности контенту, при этом наиболее релевантная категория контента будет располагаться первой в списке.
Шаг 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 используется для публикации карты входа. Действие входа направляет пользователей на страницу входа в приложение, чтобы приложение могло публиковать контент (или предоставлять более персонализированный контент).
Следующие метаданные являются частью карты входа:
Атрибут | Требование | Описание |
---|---|---|
Действие Ури | Необходимый | Глубокая ссылка на действие (т. е. переход на страницу входа в приложение) |
Изображение | Необязательно: если не указано, необходимо указать название. | Изображение на карте Изображения с соотношением сторон 16x9 и разрешением 1264x712. |
Заголовок | Необязательно: если не указано, необходимо предоставить изображение. | Титул на карте |
Текст действия | Необязательный | Текст, отображаемый в призыве к действию (т. е. войдите в систему) |
Подзаголовок | Необязательный | Дополнительный субтитр на карте |
Котлин
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
от партнера-разработчика удаляются. - Данные запроса анализируются и сохраняются в обновленном кластере UserAccountManagementCluster.
В случае ошибки весь запрос отклоняется и существующее состояние сохраняется.
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),
com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
/*scheduler=*/null)
// Register Featured Cluster Publish Intent
context.registerReceiver(AppEngageBroadcastReceiver(),
IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_FEATURED),
com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
/*scheduler=*/null)
// Register Continue Search Cluster Publish Intent
context.registerReceiver(AppEngageBroadcastReceiver(),
IntentFilter(com.google.android.engage.travel.service.Intents.ACTION_PUBLISH_CONTINUE_SEARCH),
com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
/*scheduler=*/null)
// Register Reservation Cluster Publish Intent
context.registerReceiver(AppEngageBroadcastReceiver(),
IntentFilter(com.google.android.engage.travel.service.Intents.ACTION_PUBLISH_RESERVATION),
com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
/*scheduler=*/null)
}
Ява
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),
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 Continue Search Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.travel.service.Intents.ACTION_PUBLISH_CONTINUE_SEARCH),
com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
/*scheduler=*/null);
// Register Reservation Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.travel.service.Intents.ACTION_PUBLISH_RESERVATION),
com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
/*scheduler=*/null);
}
Статически объявите реализацию с помощью тега
<receiver>
в файлеAndroidManifest.xml
. Это позволяет приложению получать широковещательные намерения, когда оно не запущено, а также позволяет приложению публиковать контент.
<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.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
It is recommended to start apublishReservationCluster
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 , Reservation , and Continue Search clusters may be published and visible to users.