Google создает поверхность на устройстве, которая организует приложения пользователей по вертикалям и обеспечивает новый захватывающий опыт для персонализированного потребления и обнаружения контента приложений. Этот полноэкранный режим дает партнерам-разработчикам возможность продемонстрировать свой лучший насыщенный контент на специальном канале за пределами своего приложения. В этом руководстве содержатся инструкции для партнеров-разработчиков по интеграции контента о путешествиях и мероприятиях с помощью Engage SDK для заполнения этой новой области поверхности.
Детали интеграции
Терминология
Эта интеграция включает следующие три типа кластеров: Рекомендация , Рекомендуемые и Продолжение .
В кластерах рекомендаций отображаются персонализированные предложения о поездках и мероприятиях от отдельного партнера-разработчика. Эти рекомендации могут быть персонализированы для пользователя или обобщены (например, трендовые элементы). Используйте их для поиска статей, мероприятий, жилья или рекомендаций по достопримечательностям.
- Кластер рекомендаций может состоять из списков
ArticleEntity
,EventEntity
,LodgingEntity
,PointOfInterestEntity
илиStoreEntity
, но не из смеси различных типов сущностей.
Ваши рекомендации имеют следующую структуру:
Кластер рекомендаций: представление пользовательского интерфейса, содержащее группу рекомендаций от одного и того же партнера-разработчика.
Сущность: объект, представляющий один элемент в кластере. Эта интеграция предлагает некоторые сущности, которые будут отображаться с использованием кластера рекомендаций:
ArticleEntity : ArticleEntity представляет собой рекомендацию по текстовому контенту, связанному с путешествиями и событиями. Его можно использовать для статей, постов в блогах, маркетингового контента, фрагментов новостей и т. д.
EventEntity : EventEntity представляет событие, которое произойдет в будущем. Время начала мероприятия — это важная информация, которую необходимо донести до пользователей.
LodgingEntity : LodgingEntity представляет собой жилье, например, отель, квартиру, дом для отдыха для краткосрочной и долгосрочной аренды.
StoreEntity : StoreEntity представляет магазин, ресторан, кафе и т. д. Он выделяет контент, в котором ресторан или магазин являются важной частью информации, которую необходимо передать пользователям.
PointOfInterestEntity : PointOfInterestEntity представляет собой достопримечательность, например заправочную станцию, место проведения мероприятий, тематический парк, музей, туристическую достопримечательность, пешеходную тропу и т. д. Он выделяет контент, местоположение которого является важной частью информации, которую необходимо передать пользователям. Его не следует использовать под жилье, магазин или столовую.
- Кластер рекомендаций может состоять из списков
Кластер «Продолжение» показывает контент, недавно использованный пользователями от нескольких партнеров-разработчиков, в одной группе пользовательского интерфейса. Каждому партнеру-разработчику будет разрешено транслировать максимум 10 сущностей в кластере продолжения.
Ваш контент-продолжение может иметь следующую структуру:
ArticleEntity : ArticleEntity представляет собой рекомендацию по контенту, связанному с путешествиями и событиями. Этот объект можно использовать для представления незаконченных новостных статей или другого контента, который пользователь хотел бы продолжать использовать с того места, где он его оставил. Пример: фрагмент новостей, фрагмент сообщения в блоге о пункте назначения или событии.
RestaurantReservationEntity : RestaurantReservationEntity представляет резервирование ресторана или кафе и помогает пользователям отслеживать предстоящие или текущие бронирования в ресторане.
EventReservationEntity : EventReservationEntity представляет собой резервирование события и помогает пользователям отслеживать резервирования предстоящих или текущих событий. События могут включать, помимо прочего, следующее:
- Спортивные мероприятия, такие как бронирование на футбольный матч
- Игровые мероприятия, такие как резервирование для киберспорта
- Развлекательные мероприятия, такие как бронирование фильмов в кинотеатре, на концерт, театр, автограф-сессия.
- Бронирование поездок или достопримечательностей, таких как экскурсии, билеты в музеи.
- Бронирование социальных сетей / семинаров / конференций
- Бронирование образовательных/тренировочных занятий
LodgingReservationEntity : LodgingEntityReservation представляет собой бронирование жилья для путешествий и помогает пользователям отслеживать предстоящие или текущие бронирования отелей или аренды на время отпуска.
TransportationReservationEntity : TransportationReservationEntity представляет резервирование для перевозки любым видом транспорта и помогает пользователям отслеживать резервирования на предстоящий или текущий рейс, паром, поезд, автобус, такси или круиз.
VehicleRentalReservationEntity : VehicleRentalReservationEntity представляет бронирование аренды автомобиля и помогает пользователям отслеживать предстоящие или текущие бронирования аренды автомобиля.
В кластере «Рекомендуемые» представлены объекты от нескольких партнеров-разработчиков в одной группе пользовательского интерфейса. Будет один кластер «Рекомендуемые», который будет отображаться в верхней части пользовательского интерфейса с приоритетом над всеми кластерами «Рекомендации». Каждому партнеру-разработчику будет разрешено транслировать до 10 объектов в избранном кластере.
GenericFeaturedEntity : GenericFeaturedEntity отличается от элемента «Рекомендация» тем, что избранный элемент должен использоваться для одного основного контента от разработчиков и должен представлять единственный наиболее важный контент, который будет интересен и актуален для пользователей.
Предварительная работа
Минимальный уровень API: 19
Добавьте библиотеку com.google.android.engage:engage-core
в свое приложение:
dependencies {
// Make sure you also include that repository in your project's build.gradle file.
implementation 'com.google.android.engage:engage-core:1.5.2'
}
Краткое содержание
Проект основан на реализации привязанного сервиса .
На данные, которые клиент может публиковать, распространяются следующие ограничения для разных типов кластеров:
Тип кластера | Ограничения кластера | Минимальные ограничения на сущности в кластере | Максимальные ограничения объектов в кластере |
---|---|---|---|
Кластер(ы) рекомендаций | Максимум 5 | минимум 5 | Не более 25 ( ArticleEntity , EventEntity , LodgingEntity , StoreEntity или PointOfInterestEntity ) |
Продолжение кластера | Максимум 1 | минимум 1 | Не более 10 ( ArticleEntity , RestaurantReservationEntity EventReservationEntity , LodgingReservationEntity , TransportationReservationEntity или VehicleRentalReservationEntity ) |
Рекомендуемый кластер | Максимум 1 | минимум 1 | Не более 10 ( GenericFeaturedEntity ). |
Шаг 1. Предоставьте данные об объекте
В SDK определены разные объекты для представления каждого типа элементов. Мы поддерживаем следующие организации в категории «Путешествия и мероприятия»:
-
GenericFeaturedEntity
-
ArticleEntity
-
EventEntity
-
LodgingEntity
-
StoreEntity
-
PointOfInterestEntity
-
RestaurantReservationEntity
-
EventReservationEntity
-
LodgingReservationEntity
-
TransportationReservationEntity
-
VehicleRentalReservationEntity
В таблицах ниже показаны доступные атрибуты и требования для каждого типа.
GenericFeaturedEntity
Атрибут | Требование | Описание | Формат |
---|---|---|---|
Действие Ури | Необходимый | Глубокая ссылка на объект в приложении поставщика. Примечание. Для атрибуции можно использовать глубокие ссылки. Обратитесь к этому FAQ | Ури |
Изображения для плакатов | Необходимый | Если предоставлено несколько изображений, мы покажем только одно изображение. Рекомендуемое соотношение сторон — 16:9. Примечание. Если значок предоставляется, обеспечьте безопасное пространство в 24 dps как вверху, так и внизу изображения. | Дополнительные сведения см. в разделе «Спецификации изображения» . |
Заголовок | Необязательный | Название сущности. | Произвольный текст Рекомендуемый размер текста: 50 символов. |
Описание | Необязательный | Один абзац текста для описания объекта. Примечание. Пользователю будет отображаться либо описание, либо список субтитров, но не оба одновременно. | Произвольный текст Рекомендуемый размер текста: 180 символов. |
Список субтитров | Необязательный | До трех субтитров, каждый из которых представляет собой одну строку текста. Примечание. Пользователю будет отображаться либо описание, либо список субтитров, но не оба одновременно. | Произвольный текст Рекомендуемый размер текста для каждого субтитра: максимум 50 символов. |
Значки | Необязательный | Каждый значок представляет собой либо произвольный текст (максимум 15 символов), либо небольшое изображение. Специальная UX-обработка поверх изображения/видео, например, в виде наложения значка на изображение.
| |
Значок – текст | Необязательный | Название для значка Примечание. Для значка требуется текст или изображение. | Произвольный текст Рекомендуемый размер текста: максимум 15 символов. |
Значок – изображение | Необязательный | Маленькое изображение Специальная UX-обработка, например наложение значка на миниатюру изображения или видео. Примечание. Для значка требуется текст или изображение. | Дополнительные сведения см. в разделе «Спецификации изображения» . |
Категории контента | Необязательный | Опишите категорию контента в сущности. | Список перечислений Дополнительные сведения см. в разделе «Категория контента» . |
ArticleEntity
Атрибут | Требование | Описание | Формат |
---|---|---|---|
Действие Ури | Необходимый | Глубокая ссылка на объект в приложении поставщика. Примечание. Для атрибуции можно использовать глубокие ссылки. Обратитесь к этому FAQ | Ури |
Заголовок | Необходимый | Название сущности. | Произвольный текст Рекомендуемый размер текста: максимум 50 символов. |
Изображения для плакатов | Необязательный | Если предоставлено несколько изображений, мы покажем только одно изображение. Рекомендуемое соотношение сторон — 16:9. Примечание. Изображение настоятельно рекомендуется. Если имеется значок, обеспечьте безопасное пространство в 24 dps вверху и внизу изображения. | Дополнительные сведения см. в разделе «Спецификации изображения» . |
Источник - Название | Необязательный | Имя автора, организации или репортера | Произвольный текст Рекомендуемый размер текста: до 25 символов. |
Источник – изображение | Необязательный | Изображение источника, например автора, организации, репортера. | Дополнительные сведения см. в разделе «Спецификации изображения» . |
Описание | Необязательный | Один абзац текста для описания объекта. Примечание. Пользователю будет отображаться либо описание, либо список субтитров, но не оба одновременно. | Произвольный текст Рекомендуемый размер текста: 180 символов. |
Список субтитров | Необязательный | До трех субтитров, каждый из которых представляет собой одну строку текста. Примечание. Пользователю будет отображаться либо описание, либо список субтитров, но не оба одновременно. | Произвольный текст Рекомендуемый размер текста для каждого субтитра: максимум 50 символов. |
Значки | Необязательный | Каждый значок представляет собой либо произвольный текст (максимум 15 символов), либо небольшое изображение. Специальная UX-обработка поверх изображения/видео, например, в виде значка на изображении.
| |
Значок – текст | Необязательный | Название для значка Примечание. Для значка требуется текст или изображение. | Произвольный текст Рекомендуемый размер текста: максимум 15 символов. |
Значок – изображение | Необязательный | Маленькое изображение Специальная UX-обработка, например наложение значка на миниатюру изображения или видео. Примечание. Для значка требуется текст или изображение. | Дополнительные сведения см. в разделе «Спецификации изображения» . |
Время публикации контента | Необязательный | Это временная метка эпохи в миллисекундах, когда контент был опубликован/обновлен в приложении. | Временная метка эпохи в миллисекундах |
Время последнего взаимодействия | Условно требуется | Временная метка эпохи в миллисекундах, когда пользователь последний раз взаимодействовал с этим объектом. Примечание. Это поле является обязательным, если данный объект является частью кластера продолжения. | Временная метка эпохи в миллисекундах |
Процент прогресса | Условно требуется | Процент всего контента, использованного пользователем на сегодняшний день. Примечание. Это поле является обязательным, если данный объект является частью кластера продолжения. | Целое значение от 0 до 100 включительно. |
Категории контента | Необязательный | Опишите категорию контента в сущности. | Список перечислений Дополнительные сведения см. в разделе «Категория контента» . |
EventEntity
Атрибут | Требование | Описание | Формат |
---|---|---|---|
Действие Ури | Необходимый | Глубокая ссылка на объект в приложении поставщика. Примечание. Для атрибуции можно использовать глубокие ссылки. Обратитесь к этому FAQ | Ури |
Заголовок | Необходимый | Название сущности. | Нить Рекомендуемый размер текста: максимум 50 символов. |
Время начала | Необходимый | Временная метка эпохи, когда ожидается начало события. Примечание. Это будет указано в миллисекундах. | Временная метка эпохи в миллисекундах |
Режим событий | Необходимый | Поле, указывающее, будет ли мероприятие виртуальным, очным или и тем, и другим. | Перечисление: 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 символов. |
Список субтитров | Необязательный | До трех субтитров, каждый из которых представляет собой одну строку текста. Примечание. Пользователю будет отображаться либо описание, либо список субтитров, но не оба одновременно. | Произвольный текст Рекомендуемый размер текста для каждого субтитра: максимум 50 символов. |
Значки | Необязательный | Каждый значок представляет собой либо произвольный текст (максимум 15 символов), либо небольшое изображение. | |
Значок – текст | Необязательный | Название для значка Примечание. Для значка требуется текст или изображение. | Произвольный текст Рекомендуемый размер текста: максимум 15 символов. |
Значок – изображение | Необязательный | Маленькое изображение Специальная UX-обработка, например наложение значка на миниатюру изображения или видео. Примечание. Для значка требуется текст или изображение. | Дополнительные сведения см. в разделе «Спецификации изображения» . |
Цена - Текущая цена | Условно требуется | Текущая цена билета/пропуска на мероприятие. Должно быть указано, если указана зачеркнутая цена. | Произвольный текст |
Цена - Зачеркнутая цена | Необязательный | Первоначальная цена билета/пропуска на мероприятие. | Произвольный текст |
Выноска цен | Необязательный | Выноска цены, чтобы указать промо-акцию, мероприятие, скидку для участников, если таковая имеется. | Произвольный текст Рекомендуемый размер текста: до 45 символов (слишком длинный текст может содержать многоточие). |
Категории контента | Необязательный | Опишите категорию контента в сущности. | Список подходящих перечислений
Дополнительные сведения см. в разделе «Категория контента» . |
LodgingEntity
Атрибут | Требование | Описание | Формат |
---|---|---|---|
Действие Ури | Необходимый | Глубокая ссылка на объект в приложении поставщика. Примечание. Для атрибуции можно использовать глубокие ссылки. Обратитесь к этому FAQ | Ури |
Заголовок | Необходимый | Название сущности. | Нить Рекомендуемый размер текста: максимум 50 символов. |
Изображения для плакатов | Необходимый | Если предоставлено несколько изображений, мы покажем только одно изображение. Рекомендуемое соотношение сторон — 16:9. Примечание. Если значок предоставляется, обеспечьте безопасное пространство в 24 dps как вверху, так и внизу изображения. | Дополнительные сведения см. в разделе «Спецификации изображения» . |
Местоположение - Страна | Необходимый | Страна, в которой происходит проживание. | Произвольный текст Рекомендуемый размер текста: максимум ~20 символов. |
Местоположение - Город | Необходимый | Город, в котором происходит проживание. | Произвольный текст Рекомендуемый размер текста: максимум ~20 символов. |
Местоположение – отображение адреса | Необходимый | Адрес проживания, который будет отображаться пользователю. | Произвольный текст Рекомендуемый размер текста: максимум ~20 символов. |
Местоположение – адрес | Необязательный | Адрес (если применимо) места проживания. | Произвольный текст Рекомендуемый размер текста: максимум ~20 символов. |
Местоположение — штат | Необязательный | Штат или провинция (если применимо), в которой находится жилье. | Произвольный текст Рекомендуемый размер текста: максимум ~20 символов. |
Местоположение — почтовый индекс | Необязательный | Почтовый индекс (если применимо) места проживания. | Произвольный текст Рекомендуемый размер текста: максимум ~20 символов. |
Местоположение – район | Необязательный | Район (если применимо) места проживания. | Произвольный текст Рекомендуемый размер текста: максимум ~20 символов. |
Значки | Необязательный | Каждый значок представляет собой либо произвольный текст (максимум 15 символов), либо небольшое изображение. | |
Значок – текст | Необязательный | Название для значка Примечание. Для значка требуется текст или изображение. | Произвольный текст Рекомендуемый размер текста: максимум 15 символов. |
Значок – изображение | Необязательный | Маленькое изображение Специальная UX-обработка, например наложение значка на миниатюру изображения или видео. Примечание. Для значка требуется текст или изображение. | Дополнительные сведения см. в разделе «Спецификации изображения» . |
Описание | Необязательный | Один абзац текста для описания объекта. Примечание. Пользователю будет отображаться либо описание, либо список субтитров, но не оба одновременно. | Произвольный текст Рекомендуемый размер текста: 180 символов. |
Список субтитров | Необязательный | До трех субтитров, каждый из которых представляет собой одну строку текста. Примечание. Пользователю будет отображаться либо описание, либо список субтитров, но не оба одновременно. | Произвольный текст Рекомендуемый размер текста для каждого субтитра: максимум 50 символов. |
AvailabilityTimeWindow — время начала | Необязательный | Временная метка эпохи в миллисекундах, когда ожидается, что жилье будет открыто/доступно. | Временная метка эпохи в миллисекундах |
AvailabilityTimeWindow — время окончания | Необязательный | Временная метка эпохи в миллисекундах, до которой жилье будет открыто/доступно. | Временная метка эпохи в миллисекундах |
Рейтинг – максимальное значение | Необязательный | Максимальное значение рейтинговой шкалы. Должно быть указано, если также указано текущее значение рейтинга. | Число >= 0,0 |
Рейтинг - Текущее значение | Необязательный | Текущее значение оценочной шкалы. Должно быть указано, если также указано максимальное значение рейтинга. | Число >= 0,0 |
Рейтинг – подсчет | Необязательный | Подсчет оценок за жилье. Примечание. Укажите это поле, если ваше приложение хочет контролировать, как оно отображается пользователям. Укажите краткую строку, которая может быть отображена пользователю. Например, если количество составляет 1 000 000, рассмотрите возможность использования сокращений, таких как 1M, чтобы оно не обрезалось на дисплеях меньшего размера. | Нить |
Рейтинг – значение подсчета | Необязательный | Подсчет оценок за жилье. Примечание. Укажите это поле, если вы не хотите самостоятельно обрабатывать логику отображаемых сокращений. Если присутствуют и счетчик, и значение счетчика, мы будем использовать счетчик для отображения пользователям. | Длинный |
Цена - Текущая цена | Условно требуется | Текущая стоимость проживания. Должно быть указано, если указана зачеркнутая цена. | Произвольный текст |
Цена - Зачеркнутая цена | Необязательный | Исходная цена проживания, которая будет зачеркнута в пользовательском интерфейсе. | Произвольный текст |
Выноска цен | Необязательный | Выноска цены, чтобы указать промо-акцию, мероприятие, скидку для участников, если таковая имеется. | Произвольный текст Рекомендуемый размер текста: до 45 символов (слишком длинный текст может содержать многоточие). |
StoreEntity
Объект StoreEntity
представляет отдельный магазин, который партнеры-разработчики хотят опубликовать, например ресторан или продуктовый магазин.
Атрибут | Требование | Описание | Формат |
---|---|---|---|
Изображения для плакатов | Необходимый | Необходимо предоставить хотя бы одно изображение. | Дополнительные сведения см. в разделе «Спецификации изображения» . |
Действие Ури | Необходимый | Глубокая ссылка на объект в приложении поставщика. Примечание. Для атрибуции можно использовать глубокие ссылки. Обратитесь к этому FAQ | Ури |
Заголовок | Необязательный | Название магазина. | Произвольный текст Рекомендуемый размер текста: до 45 символов (слишком длинный текст может содержать многоточие). |
Расположение | Необязательный | Расположение магазина. | Произвольный текст Рекомендуемый размер текста: до 45 символов (слишком длинный текст может содержать многоточие). |
Вызывать | Необязательный | Выноска, чтобы рассказать об акции, событии или обновлении магазина, если таковое имеется. | Произвольный текст Рекомендуемый размер текста: до 45 символов (слишком длинный текст может содержать многоточие). |
Выноска мелким шрифтом | Необязательный | Текст выноски мелким шрифтом. | Произвольный текст Рекомендуемый размер текста: до 45 символов (слишком длинный текст может содержать многоточие). |
Описание | Необязательный | Описание магазина. | Произвольный текст Рекомендуемый размер текста: до 90 символов (слишком длинный текст может содержать многоточие). |
Рейтинг – максимальное значение | Необязательный | Максимальное значение рейтинговой шкалы. Должно быть указано, если также указано текущее значение рейтинга. | Число >= 0,0 |
Рейтинг - Текущее значение | Необязательный | Текущее значение оценочной шкалы. Должно быть указано, если также указано максимальное значение рейтинга. | Число >= 0,0 |
Рейтинг – подсчет | Необязательный | Подсчет оценок за жилье. Примечание. Укажите это поле, если ваше приложение хочет контролировать, как оно отображается пользователям. Укажите краткую строку, которая может быть отображена пользователю. Например, если количество составляет 1 000 000, рассмотрите возможность использования сокращений, таких как 1M, чтобы оно не обрезалось на дисплеях меньшего размера. | Нить |
Рейтинг – значение подсчета | Необязательный | Подсчет оценок за жилье. Примечание. Укажите это поле, если вы не хотите самостоятельно обрабатывать логику отображаемых сокращений. Если присутствуют и счетчик, и значение счетчика, мы будем использовать счетчик для отображения пользователям. | Длинный |
PointOfInterestEntity
Атрибут | Требование | Описание | Формат |
---|---|---|---|
Действие Ури | Необходимый | Глубокая ссылка на объект в приложении поставщика. Примечание. Для атрибуции можно использовать глубокие ссылки. Обратитесь к этому FAQ | Ури |
Заголовок | Необходимый | Название сущности. | Нить Рекомендуемый размер текста: максимум 50 символов. |
Изображения для плакатов | Необходимый | Если предоставлено несколько изображений, мы покажем только одно изображение. Рекомендуемое соотношение сторон — 16:9. Примечание. Изображение настоятельно рекомендуется. Если имеется значок, обеспечьте безопасное пространство в 24 dps вверху и внизу изображения. | Дополнительные сведения см. в разделе «Спецификации изображения» . |
Местоположение - Страна | Необходимый | Страна, в которой происходит событие. | Произвольный текст Рекомендуемый размер текста: максимум ~20 символов. |
Местоположение - Город | Необходимый | Город, в котором происходит достопримечательность. | Произвольный текст Рекомендуемый размер текста: максимум ~20 символов. |
Местоположение — отображение адреса | Необходимый | Адрес достопримечательности, которая будет отображаться пользователю. | Произвольный текст Рекомендуемый размер текста: максимум ~20 символов. |
Местоположение – адрес | Необязательный | Уличный адрес (если применимо) достопримечательности. | Произвольный текст Рекомендуемый размер текста: максимум ~20 символов. |
Местоположение — штат | Необязательный | Штат или провинция (если применимо), в которой расположена достопримечательность. | Произвольный текст Рекомендуемый размер текста: максимум ~20 символов. |
Местоположение — почтовый индекс | Необязательный | Почтовый индекс (если применимо) достопримечательности. | Произвольный текст Рекомендуемый размер текста: максимум ~20 символов. |
Местоположение – район | Необязательный | Окрестности (если применимо) интересующей точки. | Произвольный текст Рекомендуемый размер текста: максимум ~20 символов. |
AvailabilityTimeWindow — время начала | Необязательный | Временная метка эпохи в миллисекундах, когда ожидается, что точка интереса будет открыта/доступна. | Временная метка эпохи в миллисекундах |
AvailabilityTimeWindow — время окончания | Необязательный | Временная метка эпохи в миллисекундах, до которой ожидается, что точка интереса будет открыта/доступна. | Временная метка эпохи в миллисекундах |
Значки | Необязательный | Каждый значок представляет собой либо произвольный текст (максимум 15 символов), либо небольшое изображение. | |
Значок – текст | Необязательный | Название для значка Примечание. Для значка требуется текст или изображение. | Произвольный текст Рекомендуемый размер текста: максимум 15 символов. |
Значок – изображение | Необязательный | Маленькое изображение Специальная UX-обработка, например наложение значка на миниатюру изображения или видео. Примечание. Для значка требуется текст или изображение. | Дополнительные сведения см. в разделе «Спецификации изображения» . |
Описание | Необязательный | Один абзац текста, описывающий сущность. Примечание. Пользователю будет отображаться либо описание, либо список субтитров, но не оба одновременно. | Произвольный текст Рекомендуемый размер текста: 180 символов. |
Список субтитров | Необязательный | До трех субтитров, каждый из которых представляет собой одну строку текста. Примечание. Пользователю будет отображаться либо описание, либо список субтитров, но не оба одновременно. | Произвольный текст Рекомендуемый размер текста для каждого субтитра: максимум 50 символов. |
Рейтинг – максимальное значение | Необязательный | Максимальное значение рейтинговой шкалы. Должно быть указано, если также указано текущее значение рейтинга. | Число >= 0,0 |
Рейтинг - Текущее значение | Необязательный | Текущее значение оценочной шкалы. Должно быть указано, если также указано максимальное значение рейтинга. | Число >= 0,0 |
Рейтинг – подсчет | Необязательный | Подсчет оценок для точки интереса. Примечание. Укажите это поле, если ваше приложение хочет контролировать, как оно отображается пользователям. Укажите краткую строку, которая может быть отображена пользователю. Например, если количество составляет 1 000 000, рассмотрите возможность использования сокращений, таких как 1M, чтобы оно не обрезалось на дисплеях меньшего размера. | Нить |
Рейтинг – значение подсчета | Необязательный | Подсчет оценок для точки интереса. Примечание. Укажите это поле, если вы не хотите самостоятельно обрабатывать логику отображаемых сокращений. Если присутствуют и счетчик, и значение счетчика, мы будем использовать счетчик для отображения пользователям. | Длинный |
Цена - Текущая цена | Условно требуется | Текущая цена билетов/пропуска на достопримечательность. Должно быть указано, если указана зачеркнутая цена. | Произвольный текст |
Цена - Зачеркнутая цена | Необязательный | Первоначальная цена билетов/входного пропуска на достопримечательность. | Произвольный текст |
Выноска цены | Необязательный | Выноска с ценами, чтобы указать промо-акцию, мероприятие, скидку для участников, если таковая имеется. | Произвольный текст Рекомендуемый размер текста: до 45 символов (слишком длинный текст может содержать многоточие). |
Категории контента | Необязательный | Опишите категорию контента в сущности. | Список подходящих перечислений
Дополнительные сведения см. в разделе «Категория контента» . |
RestaurantReservationEntity
Атрибут | Требование | Описание | Формат |
---|---|---|---|
Действие Ури | Необходимый | Глубокая ссылка на объект в приложении поставщика. Примечание. Для атрибуции можно использовать глубокие ссылки. Обратитесь к этому FAQ | Ури |
Заголовок | Необходимый | Название сущности. | Нить Рекомендуемый размер текста: максимум 50 символов. |
Время начала резервирования | Необходимый | Временная метка эпохи в миллисекундах, когда ожидается начало резервирования. | Временная метка эпохи в миллисекундах |
Местоположение - Страна | Необходимый | Страна, в которой работает ресторан. | Произвольный текст Рекомендуемый размер текста: максимум ~20 символов. |
Местоположение - Город | Необходимый | Город, в котором происходит ресторан. | Произвольный текст Рекомендуемый размер текста: максимум ~20 символов. |
Местоположение – отображение адреса | Необходимый | Адрес ресторана, который будет отображаться пользователю. | Произвольный текст Рекомендуемый размер текста: максимум ~20 символов. |
Местоположение – адрес | Необязательный | Адрес (если применимо) ресторана. | Произвольный текст Рекомендуемый размер текста: максимум ~20 символов. |
Местоположение — штат | Необязательный | Штат или провинция (если применимо), в которой расположен ресторан. | Произвольный текст Рекомендуемый размер текста: максимум ~20 символов. |
Местоположение — почтовый индекс | Необязательный | Почтовый индекс (если применимо) ресторана. | Произвольный текст Рекомендуемый размер текста: максимум ~20 символов. |
Местоположение – район | Необязательный | Район (если применимо) ресторана. | Произвольный текст Рекомендуемый размер текста: максимум ~20 символов. |
Изображения для плакатов | Необязательный | Если предоставлено несколько изображений, мы покажем только одно изображение. Рекомендуемое соотношение сторон — 16:9. | Дополнительные сведения см. в разделе «Спецификации изображения» . |
Описание | Необязательный | Один абзац текста для описания объекта. Примечание. Пользователю будет отображаться либо описание, либо список субтитров, но не оба одновременно. | Произвольный текст Рекомендуемый размер текста: 180 символов. |
Список субтитров | Необязательный | До трех субтитров, каждый из которых представляет собой одну строку текста. Примечание. Пользователю будет отображаться либо описание, либо список субтитров, но не оба одновременно. | Произвольный текст Рекомендуемый размер текста для каждого субтитра: максимум 50 символов. |
Размер стола | Необязательный | Количество человек в группе бронирования | Целое число > 0 |
EventReservationEntity
Атрибут | Требование | Описание | Формат |
---|---|---|---|
Действие Ури | Необходимый | Глубокая ссылка на объект в приложении поставщика. Примечание. Для атрибуции можно использовать глубокие ссылки. Обратитесь к этому FAQ | Ури |
Заголовок | Необходимый | Название сущности. | Нить Рекомендуемый размер текста: максимум 50 символов. |
Время начала | Необходимый | Временная метка эпохи, когда ожидается начало события. Примечание. Это будет указано в миллисекундах. | Временная метка эпохи в миллисекундах |
Режим событий | Необходимый | Поле, указывающее, будет ли мероприятие виртуальным, очным или и тем, и другим. | Перечисление: VIRTUAL, IN_PERSON или HYBRID. |
Местоположение - Страна | Условно требуется | Страна, в которой происходит событие. Примечание. Это необходимо для событий IN_PERSON или HYBRID. | Произвольный текст Рекомендуемый размер текста: максимум ~20 символов. |
Местоположение - Город | Условно требуется | Город, в котором происходит событие. Примечание. Это необходимо для событий IN_PERSON или HYBRID. | Произвольный текст Рекомендуемый размер текста: максимум ~20 символов. |
Местоположение – отображение адреса | Условно требуется | Адрес или название места проведения мероприятия, которое должно отображаться пользователю. Примечание. Это необходимо для событий IN_PERSON или HYBRID. | Произвольный текст Рекомендуемый размер текста: максимум ~20 символов. |
Местоположение – адрес | Необязательный | Адрес (если применимо) места проведения мероприятия. | Произвольный текст Рекомендуемый размер текста: максимум ~20 символов. |
Местоположение — штат | Необязательный | Штат или провинция (если применимо), в которой проводится мероприятие. | Произвольный текст Рекомендуемый размер текста: максимум ~20 символов. |
Местоположение — почтовый индекс | Необязательный | Почтовый индекс (если применимо) места, в котором проводится мероприятие. | Произвольный текст Рекомендуемый размер текста: максимум ~20 символов. |
Местоположение – район | Необязательный | Район (если применимо), в котором проводится мероприятие. | Произвольный текст Рекомендуемый размер текста: максимум ~20 символов. |
Изображения для плакатов | Необязательный | Если предоставлено несколько изображений, мы покажем только одно изображение. Рекомендуемое соотношение сторон — 16:9. Примечание. Изображение настоятельно рекомендуется. Если имеется значок, обеспечьте безопасное пространство в 24 dps вверху и внизу изображения. | Дополнительные сведения см. в разделе «Спецификации изображения» . |
Время окончания | Необязательный | Временная метка эпохи, когда ожидается завершение события. Примечание. Это будет указано в миллисекундах. | Временная метка эпохи в миллисекундах |
Поставщик услуг – имя | Необязательный | Имя поставщика услуг. Примечание. Для поставщика услуг требуется либо текст, либо изображение. | Свободный текст. Например, имя организатора мероприятия/тура. |
Поставщик услуг – изображение | Необязательный | Логотип/изображение поставщика услуг. Примечание. Для поставщика услуг требуется либо текст, либо изображение. | Дополнительные сведения см. в разделе «Спецификации изображения» . |
Описание | Необязательный | Один абзац текста для описания объекта. Примечание. Пользователю будет отображаться либо описание, либо список субтитров, но не оба одновременно. | Произвольный текст Рекомендуемый размер текста: 180 символов. |
Список субтитров | Необязательный | До трех субтитров, каждый из которых представляет собой одну строку текста. Примечание. Пользователю будет отображаться либо описание, либо список субтитров, но не оба одновременно. | Произвольный текст Рекомендуемый размер текста для каждого субтитра: максимум 50 символов. |
Значки | Необязательный | Каждый значок представляет собой либо произвольный текст (максимум 15 символов), либо небольшое изображение. | |
Значок – текст | Необязательный | Название для значка Примечание. Для значка требуется текст или изображение. | Произвольный текст Рекомендуемый размер текста: максимум 15 символов. |
Значок – изображение | Необязательный | Маленькое изображение Специальная UX-обработка, например наложение значка на миниатюру изображения или видео. Примечание. Для значка требуется текст или изображение. | Дополнительные сведения см. в разделе «Спецификации изображения» . |
Идентификатор резервирования | Необязательный | Идентификатор резервирования для резервирования события. | Произвольный текст |
Цена - Текущая цена | Условно требуется | Текущая цена билета/пропуска на мероприятие. Должно быть указано, если указана зачеркнутая цена. | Произвольный текст |
Цена - Зачеркнутая цена | Необязательный | Первоначальная цена билета/пропуска на мероприятие. | Произвольный текст |
Выноска цены | Необязательный | Выноска цены, чтобы указать промо-акцию, мероприятие, скидку для участников, если таковая имеется. | Произвольный текст Рекомендуемый размер текста: до 45 символов (слишком длинный текст может содержать многоточие). |
Рейтинг – максимальное значение | Необязательный | Максимальное значение рейтинговой шкалы. Должно быть указано, если также указано текущее значение рейтинга. | Число >= 0,0 |
Рейтинг - Текущее значение | Необязательный | Текущее значение оценочной шкалы. Должно быть указано, если также указано максимальное значение рейтинга. | Число >= 0,0 |
Рейтинг – подсчет | Необязательный | Подсчет рейтингов события. Примечание. Укажите это поле, если ваше приложение хочет контролировать, как оно отображается пользователям. Укажите краткую строку, которая может быть отображена пользователю. Например, если количество составляет 1 000 000, рассмотрите возможность использования сокращений, таких как 1M, чтобы оно не обрезалось на дисплеях меньшего размера. | Нить |
Рейтинг – значение подсчета | Необязательный | Подсчет рейтингов события. Примечание. Укажите это поле, если вы не хотите самостоятельно обрабатывать логику отображаемых сокращений. Если присутствуют и счетчик, и значение счетчика, мы будем использовать счетчик для отображения пользователям. | Длинный |
Категории контента | Необязательный | Опишите категорию контента в сущности. | Список подходящих перечислений
Дополнительные сведения см. в разделе «Категория контента» . |
LodgingReservationEntity
Атрибут | Требование | Описание | Формат |
---|---|---|---|
Действие Ури | Необходимый | Глубокая ссылка на объект в приложении поставщика. Примечание. Для атрибуции можно использовать глубокие ссылки. Обратитесь к этому FAQ | Ури |
Заголовок | Необходимый | Название сущности. | Свободный текст. Например, «Ваше пребывание с 12 декабря». Рекомендуемый размер текста: максимум 50 символов. |
Время заезда | Необходимый | Эпоха временной метки в миллисекундах, которая представляет собой время зарезервирования для резервации. | Эпоха временной метки в миллисекундах |
Время выезда | Необходимый | Эпоха временной метки в миллисекундах, которая представляет время проверки для резервации. | Эпоха временной метки в миллисекундах |
Расположение - страна | Необходимый | Страна, в которой находится жилье. | Бесплатный текст Рекомендуемый размер текста: максимум ~ 20 Chars |
Расположение - город | Необходимый | Город, в котором находится жилье. | Бесплатный текст Рекомендуемый размер текста: максимум ~ 20 Chars |
Расположение - адрес отображения | Необходимый | Адрес проживания, который будет отображаться пользователю. | Бесплатный текст Рекомендуемый размер текста: максимум ~ 20 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 (текст, который слишком длинный, может показать эллипсы) |
TransportationReservationEntity
Атрибут | Требование | Описание | Формат |
---|---|---|---|
Действие URI | Необходимый | Глубокая ссылка на сущность в приложении поставщика. Примечание. Вы можете использовать глубокие ссылки для атрибуции. Обратитесь к этому FAQ | Ури |
Заголовок | Необходимый | Название сущности. | Бесплатный текст. Например, "SFO в Сан" Рекомендуемый размер текста: максимум 50 Chars |
Тип транспорта | Необходимый | Режим/тип транспорта для резервации. | Enum: рейс, поезд, автобус или паром |
Время отправления | Необходимый | Эпоха временная метка в миллисекундах, которая представляет время отправления. | Эпоха временной метки в миллисекундах |
Время прибытия | Необходимый | Эпоха временной метки в миллисекундах, которая представляет время прибытия. | Эпоха временной метки в миллисекундах |
Место отправления - страна | Необязательный | Страна отправления. | Бесплатный текст Рекомендуемый размер текста: максимум ~ 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 (текст, который слишком длинный, может показать эллипсы) |
Транспортный номер | Необходимый | Номер полета, номер автобуса, номер поезда или номер паром/круиз. | Бесплатный текст |
Время посадки | Необходимый | Эпоха временной метки, которая представляет время посадки для резервирования (если применимо) | Эпоха временной метки в миллисекундах |
VehicleRentalReservationEntity
Атрибут | Требование | Описание | Формат |
---|---|---|---|
Действие URI | Необходимый | Глубокая ссылка на сущность в приложении поставщика. Примечание. Вы можете использовать глубокие ссылки для атрибуции. Обратитесь к этому FAQ | Ури |
Заголовок | Необходимый | Название сущности. | Бесплатный текст. Например, "Avis Union Square SF" Рекомендуемый размер текста: максимум 50 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 |
Обратный адрес - соседство | Необязательный | Район (если применимо) места возврата. | Бесплатный текст Рекомендуемый размер текста: максимум ~ 20 Chars |
Поставщик услуг - имя | Необязательный | Название поставщика услуг. Примечание. Либо текст или изображение требуется для поставщика услуг. | Бесплатный текст. Например, "Авиация автомобиля" прокат " |
Поставщик услуг - изображение | Необязательный | Логотип/изображение поставщика услуг. Примечание. Либо текст или изображение требуется для поставщика услуг. | См. Спецификации изображения для руководства. |
Плакатные изображения | Необязательный | Мы покажем только 1 изображение, когда будут предоставлены несколько изображений. Рекомендуемое соотношение сторон - 16: 9 | См. Спецификации изображения для руководства. |
Описание | Необязательный | Один абзац текста для описания сущности. ПРИМЕЧАНИЕ. Либо описание или список подзаголовок будут отображаться пользователю, а не обоим. | Бесплатный текст Рекомендуемый размер текста: 180 chars |
Список субтитров | Необязательный | До 3 субтитров, с каждым подзаготором одной линией текста. ПРИМЕЧАНИЕ. Либо описание или список подзаголовок будут отображаться пользователю, а не обоим. | Бесплатный текст Рекомендуемый размер текста для каждого подзатинка: макс. 50 Chars |
Идентификатор подтверждения | Необязательный | Идентификатор подтверждения для бронирования аренды автомобиля. | Бесплатный текст |
Цена - текущая плести | Условно требуется | Текущая цена резервации. Должен быть предоставлен, если предоставлена цена. | Бесплатный текст |
Цена - Strikethroughprice | Необязательный | Первоначальная цена резервации, которая проходит через пользовательский интерфейс. | Бесплатный текст |
Ценовой выносный | Необязательный | Прайский выносливый, чтобы включить промо, событие, скидка участника, если таковые имеются. | Бесплатный текст Рекомендуемый размер текста: до 45 chars (текст, который слишком длинный, может показать эллипсы) |
Спецификации изображения
Требуемые спецификации для активов изображений перечислены в этой таблице:
Соотношение сторон | Минимальные пиксели | Рекомендуемые пиксели |
---|---|---|
Квадрат (1x1) Предпочтительный | 300x300 | 1200x1200 |
Ландшафт (1,91x1) | 600x314 | 1200x628 |
Портрет (4x5) | 480x600 | 960x1200 |
Изображения должны быть размещены на публичных CDN, чтобы Google мог получить к ним доступ.
Форматы файлов
Png, JPG, Static Gif, Webp
Максимальный размер файла
5120 КБ
Дополнительные рекомендации
- Зона безопасного изображения: поместите свой важный контент в центр 80% изображения.
- Используйте прозрачный фон, чтобы изображение могло быть правильно отображаться в темных и легких настройках тем.
Категория контента
Категория контента позволяет приложениям публиковать контент, принадлежащий нескольким категориям. Это отображает содержание с некоторыми из предопределенных категорий, а именно:
-
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 мог получить к ним доступ.
Рекомендации по использованию категорий контента
- Некоторые сущности, такие как статья и genericfeaturedentity, имеют право использовать любую из категорий контента. Для других сущностей, таких как Evententity , EventReservationality , PointOfEntestity , только подмножество этих категорий имеет право. Проверьте список категорий, имеющих право на тип объекта, прежде чем заполнить список.
Используйте конкретный тип объекта для некоторых категорий контента по комбинации общих объектов и ContentCategory:
- TYPE_MOVIES_AND_TV_SHOWS - Проверьте объекты из руководства по интеграции Watch, прежде чем использовать общие объекты.
- Type_books - Проверьте электронную книгу перед использованием общих объектов.
- Type_audiobooks - Проверьте AudioBookentity, прежде чем использовать общие объекты.
- Type_shopping - Проверьте ShoppingEntity перед использованием универсальных объектов.
- TYPE_FOOD_AND_DRINK - Проверьте объекты из Руководства по интеграции продуктов питания, прежде чем использовать общие объекты.
Поле ContentCategory является необязательным и должно быть оставлено пустым, если контент не принадлежит ни к одной из категорий, упомянутых ранее.
В случае предоставлены несколько категорий контента, предоставьте их в порядке релевантности для контента с наиболее релевантной категорией контента, размещенной первым в списке.
Шаг 2: Предоставьте данные кластера
Рекомендуется, чтобы контент опубликовал задание, выполняемую в фоновом режиме (например, с использованием WorkManager ) и запланировано на регулярной основе или на основе событий (например, каждый раз, когда пользователь открывает приложение или когда пользователь просто что -то добавил к их тележка).
AppEngagePublishClient
отвечает за публикацию кластеров.
Есть следующие API для публикации кластеров в клиенте:
-
isServiceAvailable
-
publishRecommendationClusters
-
publishFeaturedCluster
-
publishContinuationCluster
-
publishUserAccountManagementRequest
-
updatePublishStatus
-
deleteRecommendationsClusters
-
deleteFeaturedCluster
-
deleteContinuationCluster
-
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
от партнера разработчика удалены. - Данные из запроса проанализированы и хранятся в обновленном избранном кластере.
В случае ошибки весь запрос отклоняется, и существующее состояние сохраняется.
publishContinuationCluster
Этот API используется для публикации объекта ContinuationCluster
.
Котлин
client.publishContinuationCluster( PublishContinuationClusterRequest.Builder() .setContinuationCluster( ContinuationCluster.Builder() .addEntity(entity1) .addEntity(entity2) .build()) .build())
Ява
client.publishContinuationCluster( new PublishContinuationClusterRequest.Builder() .setContinuationCluster( new ContinuationCluster.Builder() .addEntity(entity1) .addEntity(entity2) .build()) .build());
Когда служба получает запрос, в рамках одной транзакции происходят следующие действия:
- Существующие данные
ContinuationCluster
от партнера разработчика удалены. - Данные из запроса анализируются и хранятся в обновленном кластере продолжения.
В случае ошибки весь запрос отклоняется, и существующее состояние сохраняется.
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();
Когда служба получает запрос, он удаляет существующие данные из избранного кластера. В случае ошибки весь запрос отклоняется, и существующее состояние сохраняется.
deleteContinuationCluster
Этот API используется для удаления содержания кластера продолжения.
Котлин
client.deleteContinuationCluster()
Ява
client.deleteContinuationCluster();
Когда служба получает запрос, он удаляет существующие данные из кластера продолжения. В случае ошибки весь запрос отклоняется, и существующее состояние сохраняется.
deleteUserManagementCluster
Этот API используется для удаления содержания кластера UserAccountmanagement.
Котлин
client.deleteUserManagementCluster()
Ява
client.deleteUserManagementCluster();
Когда служба получает запрос, она удаляет существующие данные из кластера UserAccountmanagement. В случае ошибки весь запрос отклоняется, и существующее состояние сохраняется.
deleteClusters
Этот API используется для удаления содержания данного типа кластера.
Котлин
client.deleteClusters( DeleteClustersRequest.Builder() .addClusterType(ClusterType.TYPE_CONTINUATION) .addClusterType(ClusterType.TYPE_FEATURED) .addClusterType(ClusterType.TYPE_RECOMMENDATION) .build())
Ява
client.deleteClusters( new DeleteClustersRequest.Builder() .addClusterType(ClusterType.TYPE_CONTINUATION) .addClusterType(ClusterType.TYPE_FEATURED) .addClusterType(ClusterType.TYPE_RECOMMENDATION) .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 continuation cluster publish when PUBLISH_CONTINUATION broadcast is // received } fun registerBroadcastReceivers(context: Context){ var context = context context = context.applicationContext // Register Recommendation Cluster Publish Intent context.registerReceiver(AppEngageBroadcastReceiver(), IntentFilter(Intents.ACTION_PUBLISH_RECOMMENDATION)) // Register Featured Cluster Publish Intent context.registerReceiver(AppEngageBroadcastReceiver(), IntentFilter(Intents.ACTION_PUBLISH_FEATURED)) // Register Continuation Cluster Publish Intent context.registerReceiver(AppEngageBroadcastReceiver(), IntentFilter(Intents.ACTION_PUBLISH_CONTINUATION)) }
Ява
class AppEngageBroadcastReceiver extends BroadcastReceiver { // Trigger recommendation cluster publish when PUBLISH_RECOMMENDATION broadcast // is received // Trigger featured cluster publish when PUBLISH_FEATURED broadcast is received // Trigger continuation cluster publish when PUBLISH_CONTINUATION broadcast is // received } public static void registerBroadcastReceivers(Context context) { context = context.getApplicationContext(); // Register Recommendation Cluster Publish Intent context.registerReceiver(new AppEngageBroadcastReceiver(), new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_RECOMMENDATION)); // Register Featured Cluster Publish Intent context.registerReceiver(new AppEngageBroadcastReceiver(), new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_FEATURED)); // Register Continuation Cluster Publish Intent context.registerReceiver(new AppEngageBroadcastReceiver(), new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_CONTINUATION)); }
- Статически объявить реализацию с помощью тега
<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.PUBLISH_CONTINUATION" />
</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.PUBLISH_CONTINUATION
Рекомендуется начать вызовpublishContinuationCluster
при получении этого намерения.
Интеграционный рабочий процесс
Для пошагового руководства по проверке вашей интеграции после ее завершения см. Рабочий процесс интеграции разработчика Engage .
Часто задаваемые вопросы
См . Engage SDK часто задают вопросы о часто задаваемых вопросах.
Контакт
Свяжитесь с Engage-developers@google.com, если есть какие-либо вопросы в процессе интеграции.
Следующие шаги
После завершения этой интеграции ваши следующие шаги следующие:
- Отправьте электронное письмо на engage-developers@google.com и прикрепите свой интегрированный APK, который готов к тестированию Google.
- Google выполняет проверку и обзоры внутренне, чтобы убедиться, что интеграция работает, как и ожидалось. Если необходимы изменения, Google связывается с вами с любыми необходимыми деталями.
- Когда тестирование завершено, и никаких изменений не требуется, Google связывается с вами, чтобы уведомить вас, что вы можете начать публиковать обновленный и интегрированный APK в магазин Play.
- После того, как Google подтвердил, что ваш обновленный APK был опубликован в Play Store, ваша рекомендация , представленные и продолжительные кластеры могут быть опубликованы и видимы для пользователей.