Google در حال ساخت یک سطح روی دستگاه است که برنامه های کاربران را بر اساس عمودی سازماندهی می کند و یک تجربه همهجانبه جدید را برای مصرف شخصی و کشف محتوای برنامه امکان پذیر می کند. این تجربه تمام صفحه به شرکای توسعهدهنده فرصتی میدهد تا بهترین محتوای غنی خود را در یک کانال اختصاصی خارج از برنامه خود به نمایش بگذارند. این راهنما حاوی دستورالعملهایی برای شرکای برنامهنویس است تا محتوای سفر و رویدادهای خود را با استفاده از Engage SDK برای پر کردن این سطح جدید یکپارچه کنند.
جزئیات یکپارچه سازی
اصطلاحات
این ادغام شامل انواع خوشه زیر است: توصیه ، ویژه ، رزرو و ادامه جستجو .
دستههای توصیه ، پیشنهادهای شخصیشده سفر و رویداد را از یک شریک توسعهدهنده نشان میدهند. این توصیهها را میتوان برای کاربر شخصیسازی کرد یا تعمیم داد (به عنوان مثال، موارد پرطرفدار). از آنها برای نمایش مقالات، رویدادها، اقامتگاه ها یا توصیه های مکان های دیدنی استفاده کنید.
- یک خوشه Recommendation می تواند از لیست های
ArticleEntity
،EventEntity
،LodgingEntity
،PointOfInterestEntity
یاStoreEntity
ساخته شود، اما ترکیبی از انواع موجودیت های مختلف نباشد.
توصیه های شما ساختار زیر را دارد:
Recommendation Cluster: نمای رابط کاربری که شامل گروهی از توصیههای یک شریک توسعهدهنده است.
Entity: یک شی که یک آیتم را در یک خوشه نشان می دهد. این ادغام برخی از موجودیت هایی را ارائه می دهد که با استفاده از خوشه توصیه ظاهر می شوند:
ArticleEntity : ArticleEntity یک توصیه برای محتوای متنی مرتبط با سفر و رویدادها است. می توان از آن برای مقالات، پست های وبلاگ، محتوای بازاریابی، قطعات خبری و غیره استفاده کرد.
شکل 1: UI که یک ArticleEntity را در کلاستر Recommendations نشان می دهد. EventEntity : EventEntity نشان دهنده رویدادی است که در آینده اتفاق می افتد. زمان شروع رویداد یک بخش مهم از اطلاعات است که باید به کاربران منتقل شود.
شکل 2: رابط کاربری که یک EventEntity را در کلاستر Recommendations نشان می دهد. LodgingEntity : LodgingEntity نشان دهنده محل اقامتی مانند هتل، آپارتمان، خانه تعطیلات برای اجاره کوتاه مدت و بلند مدت است.
شکل 3: رابط کاربری یک LodgingEntity را در کلاستر Recommendations نشان می دهد. StoreEntity : StoreEntity یک فروشگاه، رستوران، کافه و غیره را نشان میدهد. محتوایی را که در آن مکان غذاخوری یا فروشگاه، بخش مهمی از اطلاعات است که باید به کاربران منتقل شود، برجسته میکند.
شکل 4: رابط کاربری که یک StoreEntity را در کلاستر Recommendations نشان می دهد. PointOfInterestEntity : PointOfInterestEntity نشان دهنده مکان مورد علاقه مانند، پمپ بنزین، محل برگزاری رویداد، پارک موضوعی، موزه، جاذبه توریستی، مسیر پیاده روی و غیره است. محتوایی را برجسته می کند که در آن مکان یک قطعه اطلاعات مهم است که باید به کاربران منتقل شود. نباید برای اقامت، فروشگاه یا محل غذاخوری استفاده شود.
شکل 5: رابط کاربری که یک PointOfInterestEntity را در کلاستر Recommendations نشان می دهد.
- یک خوشه Recommendation می تواند از لیست های
خوشه رزرو ، محتوایی را نشان میدهد که اخیراً توسط کاربران چندین شریک توسعهدهنده در یک گروه UI واحد درگیر شدهاند. هر شریک توسعهدهنده مجاز است حداکثر 10 موجودیت را در خوشه رزرو پخش کند.
محتوای رزرو شما می تواند ساختار زیر را داشته باشد:
RestaurantReservationEntity : RestaurantReservationEntity نشان دهنده رزرو یک رستوران یا کافه است و به کاربران کمک می کند تا رزروهای رستوران آتی یا در حال انجام را پیگیری کنند.
شکل 6. رابط کاربری یک RestaurantReservationEntity را در یک کلاستر رزرو نشان می دهد. EventReservationEntity : EventReservationEntity یک رزرو برای یک رویداد را نشان می دهد و به کاربران کمک می کند رزرو رویدادهای آینده یا در حال انجام را پیگیری کنند. رویدادها می توانند شامل موارد زیر باشند، اما نه محدود به آنها:
- رویدادهای ورزشی مانند رزرو برای یک مسابقه فوتبال
- رویدادهای بازی مانند رزرو برای ورزش های الکترونیکی
- رویدادهای سرگرمی مانند رزرو فیلم در سینما، کنسرت، تئاتر، امضای کتاب
- رزرو سفر یا نقاط مورد علاقه مانند تورهای راهنما، بلیط موزه
- اجتماعی / سمینار / کنفرانس ها رزرو
- آموزش / رزرو جلسات آموزشی
شکل 7. رابط کاربری که یک EventReservationEntity را در یک کلاستر رزرو نشان می دهد. LodgingReservationEntity : LodgingEntityReservation نشان دهنده رزرو اقامتگاه مسافرتی است و به کاربران کمک می کند رزروهای آتی یا جاری هتل یا تعطیلات را ردیابی کنند.
شکل 8. UI که یک LodgingReservationEntity را در یک کلاستر رزرو نشان می دهد. TransportationReservationEntity : TransportationReservationEntity نشان دهنده رزرو برای حمل و نقل با هر حالتی است و به کاربران کمک می کند تا رزروهای پرواز آینده یا جاری، کشتی، قطار، اتوبوس، سواری-تگرگ، یا سفر دریایی را پیگیری کنند.
شکل 9. UI که یک TransportationReservationEntity را در یک کلاستر رزرو نشان می دهد. VehicleRentalReservationEntity : VehicleRentalReservationEntity نشان دهنده رزرو کرایه وسیله نقلیه است و به کاربران کمک می کند رزروهای اجاره خودروی آینده یا در حال انجام را پیگیری کنند.
شکل 10. رابط کاربری که یک VehicleRentalReservationEntity را در یک کلاستر رزرو نشان می دهد.
خوشه ویژه مجموعهای از موجودیتها را از چندین شریک توسعهدهنده در یک گروهبندی UI به نمایش میگذارد. یک خوشه ویژه وجود خواهد داشت که در نزدیکی بالای رابط کاربری با اولویت بالاتر از همه خوشههای توصیه ظاهر میشود. هر شریک توسعه دهنده مجاز به پخش حداکثر 10 موجودیت در خوشه ویژه خواهد بود.
GenericFeaturedEntity : GenericFeaturedEntity با آیتم توصیه تفاوت دارد زیرا آیتم Featured باید برای یک محتوای برتر از توسعه دهندگان استفاده شود و باید مهمترین محتوایی را نشان دهد که برای کاربران جالب و مرتبط باشد.
شکل 11: رابط کاربری که یک FeaturedCluster را با لیستی از GenericFeaturedEntity نشان می دهد.
خوشه Continue Search به کاربران کمک میکند تا با نمایش فهرستی از عبارتهای جستجویی که کاربر اخیراً در تمام برنامههای سفر خود جستجو کرده است، سفر جستجوی سفر قبلی خود را از سر بگیرند. خوشه در موقعیت دوم، پس از رزرو و قبل از خوشه های ویژه و توصیه سنجاق می شود. هر شریک توسعه دهنده مجاز به پخش حداکثر 3 موجودیت در خوشه جستجوی ادامه دارد.
- 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
صفت | مورد نیاز | توضیحات | قالب |
---|---|---|---|
اکشن اوری | مورد نیاز | پیوند عمیق به نهاد موجود در برنامه ارائه دهنده. توجه: می توانید از پیوندهای عمیق برای ذکر منبع استفاده کنید. به این سؤالات متداول مراجعه کنید | اوری |
تصاویر پوستر | مورد نیاز | هنگامی که چندین تصویر ارائه می شود، تنها 1 تصویر را نشان خواهیم داد. نسبت تصویر پیشنهادی 16:9 است توجه: در صورت ارائه نشان، از فضای ایمن 24 dps در بالا و پایین تصویر اطمینان حاصل کنید. | برای راهنمایی به مشخصات تصویر مراجعه کنید. |
عنوان | اختیاری | عنوان نهاد. | متن رایگان اندازه متن پیشنهادی: 50 کاراکتر |
توضیحات | اختیاری | یک پاراگراف متنی برای توصیف موجودیت. توجه: توضیحات یا لیست زیرنویس برای کاربر نمایش داده می شود، نه هر دو. | متن رایگان اندازه متن پیشنهادی: 180 کاراکتر |
لیست زیرنویس | اختیاری | حداکثر 3 زیرنویس، با هر زیرنویس یک خط متن. توجه: توضیحات یا لیست زیرنویس برای کاربر نمایش داده می شود، نه هر دو. | متن رایگان اندازه متن توصیه شده برای هر زیرنویس: حداکثر 50 کاراکتر |
نشان ها | اختیاری | هر نشان یا متن آزاد (حداکثر 15 کاراکتر) یا تصویر کوچک است. درمان ویژه UX در بالای تصویر/فیلم، به عنوان مثال، به عنوان پوشش نشان روی تصویر
| |
نشان - متن | اختیاری | عنوان برای نشان توجه: متن یا تصویر برای نشان مورد نیاز است | متن رایگان اندازه متن پیشنهادی: حداکثر 15 کاراکتر |
نشان - تصویر | اختیاری | تصویر کوچک درمان ویژه UX، برای مثال به عنوان روکش نشان روی تصویر کوچک تصویر/ویدیو. توجه: متن یا تصویر برای نشان مورد نیاز است | برای راهنمایی به مشخصات تصویر مراجعه کنید. |
دسته بندی های محتوا | اختیاری | دسته بندی محتوا را در موجودیت توضیح دهید. | فهرست Enums برای راهنمایی به بخش دسته بندی محتوا مراجعه کنید. |
DisplayTimeWindow (اختیاری) - یک پنجره زمانی برای نمایش محتوا روی سطح تنظیم کنید | |||
مهر زمانی را شروع کنید | اختیاری | مهر زمانی دوره که پس از آن محتوا باید روی سطح نشان داده شود. اگر تنظیم نشود، محتوا واجد شرایط نمایش در سطح است. | مهر زمانی دوره در میلی ثانیه |
پایان مهر زمان | اختیاری | مهر زمانی دوره ای که پس از آن محتوا دیگر روی سطح نشان داده نمی شود. اگر تنظیم نشود، محتوا واجد شرایط نمایش در سطح است. | مهر زمانی دوره در میلی ثانیه |
ArticleEntity
صفت | مورد نیاز | توضیحات | قالب |
---|---|---|---|
اکشن اوری | مورد نیاز | پیوند عمیق به نهاد موجود در برنامه ارائه دهنده. توجه: می توانید از پیوندهای عمیق برای ذکر منبع استفاده کنید. به این سؤالات متداول مراجعه کنید | اوری |
عنوان | مورد نیاز | عنوان نهاد. | متن رایگان اندازه متن پیشنهادی: حداکثر 50 کاراکتر |
تصاویر پوستر | اختیاری | هنگامی که چندین تصویر ارائه می شود، تنها 1 تصویر را نشان خواهیم داد. نسبت تصویر پیشنهادی 16:9 است توجه: تصویر به شدت توصیه می شود. اگر نشان ارائه شده است، از فضای ایمن 24 dps در بالا و پایین تصویر اطمینان حاصل کنید | برای راهنمایی به مشخصات تصویر مراجعه کنید. |
منبع - عنوان | اختیاری | نام نویسنده، سازمان یا گزارشگر | متن رایگان اندازه متن پیشنهادی: زیر 25 کاراکتر |
منبع - تصویر | اختیاری | تصویری از منبع مانند نویسنده، سازمان، گزارشگر | برای راهنمایی به مشخصات تصویر مراجعه کنید. |
توضیحات | اختیاری | یک پاراگراف متنی برای توصیف موجودیت. توجه: توضیحات یا لیست زیرنویس برای کاربر نمایش داده می شود، نه هر دو. | متن رایگان اندازه متن پیشنهادی: 180 کاراکتر |
لیست زیرنویس | اختیاری | حداکثر 3 زیرنویس، با هر زیرنویس یک خط متن. توجه: توضیحات یا لیست زیرنویس برای کاربر نمایش داده می شود، نه هر دو. | متن رایگان اندازه متن توصیه شده برای هر زیرنویس: حداکثر 50 کاراکتر |
نشان ها | اختیاری | هر نشان یا متن آزاد (حداکثر 15 کاراکتر) یا تصویر کوچک است. درمان ویژه UX در بالای تصویر/فیلم، به عنوان مثال، به عنوان همپوشانی نشان روی تصویر
| |
نشان - متن | اختیاری | عنوان برای نشان توجه: متن یا تصویر برای نشان مورد نیاز است | متن رایگان اندازه متن پیشنهادی: حداکثر 15 کاراکتر |
نشان - تصویر | اختیاری | تصویر کوچک درمان ویژه UX، برای مثال به عنوان روکش نشان روی تصویر کوچک تصویر/ویدیو. توجه: متن یا تصویر برای نشان مورد نیاز است | برای راهنمایی به مشخصات تصویر مراجعه کنید. |
زمان انتشار محتوا | اختیاری | این مهر زمانی در میلی ثانیه در زمانی است که محتوا در برنامه منتشر شد/بهروزرسانی شد. | مهر زمانی دوره در میلی ثانیه |
آخرین زمان نامزدی | مشروط مورد نیاز است | مهر زمانی دوره در میلی ثانیه زمانی که کاربر آخرین بار با این موجودیت تعامل داشت. توجه: اگر این موجودیت بخشی از خوشه رزرو باشد، این فیلد ضروری است. | مهر زمانی دوره در میلی ثانیه |
درصد پیشرفت | مشروط مورد نیاز است | درصد محتوای کامل مصرف شده توسط کاربر تا به امروز. توجه: اگر این موجودیت بخشی از خوشه رزرو باشد، این فیلد ضروری است. | مقدار int بین 0 تا 100 شامل. |
دسته بندی های محتوا | اختیاری | دسته بندی محتوا را در موجودیت توضیح دهید. | فهرست Enums برای راهنمایی به بخش دسته بندی محتوا مراجعه کنید. |
DisplayTimeWindow (اختیاری) - یک پنجره زمانی برای نمایش محتوا روی سطح تنظیم کنید | |||
مهر زمانی را شروع کنید | اختیاری | مهر زمانی دوره که پس از آن محتوا باید روی سطح نشان داده شود. اگر تنظیم نشود، محتوا واجد شرایط نمایش در سطح است. | مهر زمانی دوره در میلی ثانیه |
پایان مهر زمان | اختیاری | مهر زمانی دوره ای که پس از آن محتوا دیگر روی سطح نشان داده نمی شود. اگر تنظیم نشود، محتوا واجد شرایط نمایش در سطح است. | مهر زمانی دوره در میلی ثانیه |
EventEntity
صفت | مورد نیاز | توضیحات | قالب |
---|---|---|---|
اکشن اوری | مورد نیاز | پیوند عمیق به نهاد موجود در برنامه ارائه دهنده. توجه: می توانید از پیوندهای عمیق برای ذکر منبع استفاده کنید. به این سؤالات متداول مراجعه کنید | اوری |
عنوان | مورد نیاز | عنوان نهاد. | رشته اندازه متن پیشنهادی: حداکثر 50 کاراکتر |
زمان شروع محلی - مهر زمانی | مورد نیاز | مهر زمانی دورانی که انتظار می رود رویداد شروع شود. | Joda-Time Instant |
زمان شروع محلی - منطقه زمانی | مورد نیاز | منطقه زمانی که انتظار می رود رویداد در آن شروع شود. | Joda-Time DateTimeZone |
حالت رویداد | مورد نیاز | فیلدی برای نشان دادن اینکه آیا رویداد مجازی، حضوری یا هر دو خواهد بود. | تعداد: VIRTUAL، IN_PERSON، یا HYBRID |
تصاویر پوستر | مورد نیاز | هنگامی که چندین تصویر ارائه می شود، تنها 1 تصویر را نشان خواهیم داد. نسبت تصویر پیشنهادی 16:9 است توجه: تصویر به شدت توصیه می شود. اگر نشان ارائه شده است، از فضای ایمن 24 dps در بالا و پایین تصویر اطمینان حاصل کنید | برای راهنمایی به مشخصات تصویر مراجعه کنید. |
مکان - کشور | مشروط مورد نیاز است | کشوری که رویداد در آن رخ می دهد. توجه: این برای رویدادهایی که IN_PERSON یا HYBRID هستند لازم است | متن رایگان اندازه متن پیشنهادی: حداکثر ~20 کاراکتر |
مکان - شهر | مشروط مورد نیاز است | شهری که رویداد در آن اتفاق می افتد. توجه: این برای رویدادهایی که IN_PERSON یا HYBRID هستند لازم است | متن رایگان اندازه متن پیشنهادی: حداکثر ~20 کاراکتر |
مکان - نشانی نمایش | مشروط مورد نیاز است | آدرس یا نام محل برگزاری رویداد که باید به کاربر نمایش داده شود. توجه: این برای رویدادهایی که IN_PERSON یا HYBRID هستند لازم است | متن رایگان اندازه متن پیشنهادی: حداکثر ~20 کاراکتر |
مکان - آدرس خیابان | اختیاری | آدرس خیابان (در صورت وجود) مکانی که رویداد در آن میزبانی می شود. | متن رایگان اندازه متن پیشنهادی: حداکثر ~20 کاراکتر |
مکان - ایالت | اختیاری | ایالت یا استان (در صورت وجود) که رویداد در آن میزبانی می شود. | متن رایگان اندازه متن پیشنهادی: حداکثر ~20 کاراکتر |
مکان - کد پستی | اختیاری | کد پستی (در صورت وجود) مکانی که رویداد در آن میزبانی می شود. | متن رایگان اندازه متن پیشنهادی: حداکثر ~20 کاراکتر |
محل - محله | اختیاری | محله ای (در صورت وجود) که رویداد در آن برگزار می شود. | متن رایگان اندازه متن پیشنهادی: حداکثر ~20 کاراکتر |
زمان پایان | اختیاری | مهر زمانی دوره ای که انتظار می رود رویداد به پایان برسد. توجه: این در میلی ثانیه نمایش داده می شود. | مهر زمانی دوره در میلی ثانیه |
توضیحات | اختیاری | یک پاراگراف متنی برای توصیف موجودیت. توجه: توضیحات یا لیست زیرنویس برای کاربر نمایش داده می شود، نه هر دو. | متن رایگان اندازه متن پیشنهادی: 180 کاراکتر |
لیست زیرنویس | اختیاری | حداکثر 3 زیرنویس، با هر زیرنویس یک خط متن. توجه: توضیحات یا لیست زیرنویس برای کاربر نمایش داده می شود، نه هر دو. | متن رایگان اندازه متن توصیه شده برای هر زیرنویس: حداکثر 50 کاراکتر |
نشان ها | اختیاری | هر نشان یا متن آزاد (حداکثر 15 کاراکتر) یا تصویر کوچک است. | |
نشان - متن | اختیاری | عنوان برای نشان توجه: متن یا تصویر برای نشان مورد نیاز است | متن رایگان اندازه متن پیشنهادی: حداکثر 15 کاراکتر |
نشان - تصویر | اختیاری | تصویر کوچک درمان ویژه UX، برای مثال به عنوان روکش نشان روی تصویر کوچک تصویر/ویدیو. توجه: متن یا تصویر برای نشان مورد نیاز است | برای راهنمایی به مشخصات تصویر مراجعه کنید. |
قیمت - قیمت فعلی | مشروط مورد نیاز است | قیمت فعلی بلیط/گذرنامه برای رویداد. در صورت ارائه قیمت خطی باید ارائه شود. | متن رایگان |
قیمت - StrikethroughPrice | اختیاری | قیمت اصلی بلیط/گذرنامه برای رویداد. | متن رایگان |
فراخوان قیمت | اختیاری | اعلام قیمت برای نمایش تبلیغات، رویداد، تخفیف عضو، در صورت وجود. | متن رایگان اندازه متن توصیه شده: کمتر از 45 کاراکتر (متنی که خیلی طولانی است ممکن است بیضی نشان دهد) |
دسته بندی های محتوا | اختیاری | دسته بندی محتوا را در موجودیت توضیح دهید. | فهرست فهرست های واجد شرایط
برای راهنمایی به بخش دسته بندی محتوا مراجعه کنید. |
DisplayTimeWindow (اختیاری) - یک پنجره زمانی برای نمایش محتوا روی سطح تنظیم کنید | |||
مهر زمانی را شروع کنید | اختیاری | مهر زمانی دوره که پس از آن محتوا باید روی سطح نشان داده شود. اگر تنظیم نشود، محتوا واجد شرایط نمایش در سطح است. | مهر زمانی دوره در میلی ثانیه |
پایان مهر زمان | اختیاری | مهر زمانی دوره ای که پس از آن محتوا دیگر روی سطح نشان داده نمی شود. اگر تنظیم نشود، محتوا واجد شرایط نمایش در سطح است. | مهر زمانی دوره در میلی ثانیه |
LodgingEntity
صفت | مورد نیاز | توضیحات | قالب |
---|---|---|---|
اکشن اوری | مورد نیاز | پیوند عمیق به نهاد موجود در برنامه ارائه دهنده. توجه: می توانید از پیوندهای عمیق برای ذکر منبع استفاده کنید. به این سؤالات متداول مراجعه کنید | اوری |
عنوان | مورد نیاز | عنوان نهاد. | رشته اندازه متن پیشنهادی: حداکثر 50 کاراکتر |
تصاویر پوستر | مورد نیاز | هنگامی که چندین تصویر ارائه می شود، تنها 1 تصویر را نشان خواهیم داد. نسبت تصویر پیشنهادی 16:9 است توجه: در صورت ارائه نشان، از فضای ایمن 24 dps در بالا و پایین تصویر اطمینان حاصل کنید. | برای راهنمایی به مشخصات تصویر مراجعه کنید. |
مکان - کشور | مورد نیاز | کشوری که اقامت در آن اتفاق می افتد. | متن رایگان اندازه متن پیشنهادی: حداکثر ~20 کاراکتر |
مکان - شهر | مورد نیاز | شهری که در آن اقامتگاه اتفاق می افتد. | متن رایگان اندازه متن پیشنهادی: حداکثر ~20 کاراکتر |
مکان - نشانی نمایش | مورد نیاز | آدرسی که به کاربر نمایش داده می شود. توصیه می کنیم نام شهر و احتمالاً ایالت یا کشور را برای بیشتر موارد استفاده درج کنید. فقط در صورتی آدرس خیابان یا محله را درج کنید که کاربر در نزدیکی مکان باشد، کاربر با مکان آشنا باشد یا شهر در عنوان خوشه گنجانده شده باشد. اگر آدرس خیابان را وارد میکنید، با استفاده از اختصارات در صورت امکان، یک آدرس مختصر ارائه دهید (به عنوان مثال، "St" برای "خیابان"، "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 استفاده کنید تا در اندازههای نمایشگر کوچکتر کوتاه نشود. | رشته |
رتبه بندی - مقدار شمارش | اختیاری | شمارش رتبه بندی برای اقامتگاه. توجه: اگر نمیخواهید منطق مخفف نمایش را خودتان مدیریت کنید، این فیلد را وارد کنید. اگر تعداد و مقدار تعداد هر دو موجود باشد، از تعداد برای نمایش به کاربران استفاده خواهیم کرد | طولانی |
قیمت - قیمت فعلی | مشروط مورد نیاز است | قیمت فعلی اقامتگاه در صورت ارائه قیمت خطی باید ارائه شود. | متن رایگان |
قیمت - StrikethroughPrice | اختیاری | قیمت اصلی اقامتگاه، که در UI مشخص شده است. | متن رایگان |
فراخوان قیمت | اختیاری | اعلام قیمت برای نمایش تبلیغات، رویداد، تخفیف عضو، در صورت وجود. | متن رایگان اندازه متن توصیه شده: کمتر از 45 کاراکتر (متنی که خیلی طولانی است ممکن است بیضی نشان دهد) |
DisplayTimeWindow (اختیاری) - یک پنجره زمانی برای نمایش محتوا روی سطح تنظیم کنید | |||
مهر زمانی را شروع کنید | اختیاری | مهر زمانی دوره که پس از آن محتوا باید روی سطح نشان داده شود. اگر تنظیم نشود، محتوا واجد شرایط نمایش در سطح است. | مهر زمانی دوره در میلی ثانیه |
پایان مهر زمان | اختیاری | مهر زمانی دوره ای که پس از آن محتوا دیگر روی سطح نشان داده نمی شود. اگر تنظیم نشود، محتوا واجد شرایط نمایش در سطح است. | مهر زمانی دوره در میلی ثانیه |
StoreEntity
شی StoreEntity
نشاندهنده فروشگاهی است که شرکای توسعهدهنده میخواهند آن را منتشر کنند، مانند یک غذاخوری یا غذاخوری محبوب که به تجربه سفر فرد مرتبط است.
صفت | مورد نیاز | توضیحات | قالب |
---|---|---|---|
تصاویر پوستر | مورد نیاز | حداقل یک تصویر باید ارائه شود. | برای راهنمایی به مشخصات تصویر مراجعه کنید. |
اکشن اوری | مورد نیاز | پیوند عمیق به نهاد موجود در برنامه ارائه دهنده. توجه: می توانید از پیوندهای عمیق برای ذکر منبع استفاده کنید. به این سؤالات متداول مراجعه کنید | اوری |
عنوان | اختیاری | نام فروشگاه. | متن رایگان اندازه متن توصیه شده: کمتر از 45 کاراکتر (متنی که خیلی طولانی است ممکن است بیضی نشان دهد) |
مکان | اختیاری | موقعیت فروشگاه. | متن رایگان اندازه متن توصیه شده: کمتر از 45 کاراکتر (متنی که خیلی طولانی است ممکن است بیضی نشان دهد) |
فراخوانی | اختیاری | فراخوانی برای ارائه تبلیغات، رویداد یا بهروزرسانی برای فروشگاه، در صورت وجود. | متن رایگان اندازه متن توصیه شده: کمتر از 45 کاراکتر (متنی که خیلی طولانی است ممکن است بیضی نشان دهد) |
چاپ ریز چاپ | اختیاری | متن چاپ دقیق برای فراخوانی. | متن رایگان اندازه متن توصیه شده: کمتر از 45 کاراکتر (متنی که خیلی طولانی است ممکن است بیضی نشان دهد) |
توضیحات | اختیاری | توضیحات فروشگاه | متن رایگان اندازه متن توصیه شده: کمتر از 90 کاراکتر (متنی که خیلی طولانی است ممکن است بیضی نشان دهد) |
دسته بندی | اختیاری | طبقه بندی یک فروشگاه، در زمینه مکان های غذاخوری، می تواند غذاهایی مانند "فرانسوی"، "آمریکایی جدید"، "رامن"، "ناهارخوری خوب" باشد. | متن رایگان اندازه متن توصیه شده: کمتر از 45 کاراکتر (متنی که خیلی طولانی است ممکن است بیضی نشان دهد) |
رتبه - حداکثر مقدار | اختیاری | حداکثر مقدار مقیاس رتبه بندی. اگر ارزش فعلی رتبهبندی نیز ارائه شده باشد، باید ارائه شود. | عدد >= 0.0 |
رتبه - ارزش فعلی | اختیاری | ارزش فعلی مقیاس رتبه بندی. اگر حداکثر مقدار رتبه بندی نیز ارائه شده باشد، باید ارائه شود. | عدد >= 0.0 |
رتبه بندی - شمارش | اختیاری | شمارش رتبه بندی برای اقامتگاه. توجه: اگر برنامه شما میخواهد نحوه نمایش آن را برای کاربران کنترل کند، این قسمت را وارد کنید. رشته مختصری را ارائه دهید که می تواند به کاربر نمایش داده شود. برای مثال، اگر تعداد 1,000,000 باشد، از اختصاراتی مانند 1M استفاده کنید تا در اندازههای نمایشگر کوچکتر کوتاه نشود. | رشته |
رتبه بندی - مقدار شمارش | اختیاری | شمارش رتبه بندی برای اقامتگاه. توجه: اگر نمیخواهید منطق مخفف نمایش را خودتان مدیریت کنید، این فیلد را وارد کنید. اگر تعداد و مقدار تعداد هر دو موجود باشد، از تعداد برای نمایش به کاربران استفاده خواهیم کرد | طولانی |
DisplayTimeWindow (اختیاری) - یک پنجره زمانی برای نمایش محتوا روی سطح تنظیم کنید | |||
مهر زمانی را شروع کنید | اختیاری | مهر زمانی دوره که پس از آن محتوا باید روی سطح نشان داده شود. اگر تنظیم نشود، محتوا واجد شرایط نمایش در سطح است. | مهر زمانی دوره در میلی ثانیه |
پایان مهر زمان | اختیاری | مهر زمانی دوره ای که پس از آن محتوا دیگر روی سطح نشان داده نمی شود. اگر تنظیم نشود، محتوا واجد شرایط نمایش در سطح است. | مهر زمانی دوره در میلی ثانیه |
PointOfInterestEntity
صفت | مورد نیاز | توضیحات | قالب |
---|---|---|---|
اکشن اوری | مورد نیاز | پیوند عمیق به نهاد موجود در برنامه ارائه دهنده. توجه: می توانید از پیوندهای عمیق برای ذکر منبع استفاده کنید. به این سؤالات متداول مراجعه کنید | اوری |
عنوان | مورد نیاز | عنوان نهاد. | رشته اندازه متن پیشنهادی: حداکثر 50 کاراکتر |
تصاویر پوستر | مشروط مورد نیاز است | هنگامی که چندین تصویر ارائه می شود، تنها 1 تصویر را نشان خواهیم داد. نسبت تصویر پیشنهادی 16:9 است توجه: اگر موجودیت بخشی از خوشه توصیه باشد، تصویر مورد نیاز است. اگر نشان ارائه شده است، از فضای ایمن 24 dps در بالا و پایین تصویر اطمینان حاصل کنید | برای راهنمایی به مشخصات تصویر مراجعه کنید. |
آخرین زمان نامزدی | مشروط مورد نیاز است | مهر زمانی زمانی که کاربر آخرین بار با این موجودیت تعامل داشته است. توجه: اگر موجودیت بخشی از خوشه جستجوی ادامه باشد، این فیلد ضروری است. | Joda-Time Instant |
مکان - کشور | مشروط مورد نیاز است | کشوری که نقطه مورد علاقه در آن اتفاق می افتد. توجه: اگر موجودیت بخشی از خوشه توصیه باشد، این فیلد ضروری است. | متن رایگان اندازه متن پیشنهادی: حداکثر ~20 کاراکتر |
مکان - شهر | مشروط مورد نیاز است | شهری که نقطه دیدنی در آن اتفاق می افتد. توجه: اگر موجودیت بخشی از خوشه توصیه باشد، این فیلد ضروری است. | متن رایگان اندازه متن پیشنهادی: حداکثر ~20 کاراکتر |
مکان - نشانی نمایش | مشروط مورد نیاز است | آدرسی که به کاربر نمایش داده می شود. در صورت امکان از اختصارات استفاده کنید (به عنوان مثال، "St" برای "Street"، "Ave" برای "Avenue") یک آدرس مختصر ارائه دهید. این رشته ممکن است بسته به دستگاه و تنظیمات کاربر کوتاه شود. نام شهر را برای شناسایی واضح درج کنید. توجه: اگر موجودیت بخشی از خوشه توصیه باشد، این فیلد ضروری است. | متن رایگان اندازه متن توصیه شده: حداکثر ~ 35 کاراکتر |
مکان - آدرس خیابان | اختیاری | آدرس خیابان (در صورت وجود) نقطه مورد علاقه. | متن رایگان اندازه متن پیشنهادی: حداکثر ~20 کاراکتر |
مکان - ایالت | اختیاری | ایالت یا استان (در صورت وجود) که نقطه مورد نظر در آن واقع شده است. | متن رایگان اندازه متن پیشنهادی: حداکثر ~20 کاراکتر |
مکان - کد پستی | اختیاری | کد پستی (در صورت وجود) نقطه مورد علاقه. | متن رایگان اندازه متن پیشنهادی: حداکثر ~20 کاراکتر |
محل - محله | اختیاری | محله (در صورت وجود) نقطه مورد علاقه. | متن رایگان اندازه متن پیشنهادی: حداکثر ~20 کاراکتر |
AvailabilityTimeWindow - زمان شروع محلی - مهر زمانی | اختیاری | مهر زمانی دوره ای که انتظار می رود نقطه مورد علاقه باز/در دسترس باشد. | Joda-Time Instant |
AvailabilityTimeWindow - زمان شروع محلی - منطقه زمانی | اختیاری | منطقه زمانی که انتظار می رود نقطه مورد علاقه در آن باز/در دسترس باشد. | Joda-Time DateTimeZone |
AvailabilityTimeWindow - زمان پایان محلی شده - مهر زمانی | اختیاری | مهر زمانی دوره ای که انتظار می رود نقطه مورد علاقه تا آن زمان باز/در دسترس باشد. | Joda-Time Instant |
AvailabilityTimeWindow - زمان پایان موضعی - منطقه زمانی | اختیاری | منطقه زمانی که انتظار می رود نقطه مورد علاقه در آن باز/در دسترس باشد. | Joda-Time DateTimeZone |
نشان ها | اختیاری | هر نشان یا متن آزاد (حداکثر 15 کاراکتر) یا تصویر کوچک است. | |
نشان - متن | اختیاری | عنوان برای نشان توجه: متن یا تصویر برای نشان مورد نیاز است | متن رایگان اندازه متن پیشنهادی: حداکثر 15 کاراکتر |
نشان - تصویر | اختیاری | تصویر کوچک درمان ویژه UX، برای مثال به عنوان روکش نشان روی تصویر کوچک تصویر/ویدیو. توجه: متن یا تصویر برای نشان مورد نیاز است | برای راهنمایی به مشخصات تصویر مراجعه کنید. |
توضیحات | اختیاری | یک پاراگراف متنی برای توصیف موجودیت. توجه: توضیحات یا لیست زیرنویس برای کاربر نمایش داده می شود، نه هر دو. | متن رایگان اندازه متن پیشنهادی: 180 کاراکتر |
لیست زیرنویس | اختیاری | حداکثر 3 زیرنویس، با هر زیرنویس یک خط متن. توجه: توضیحات یا لیست زیرنویس برای کاربر نمایش داده می شود، نه هر دو. | متن رایگان اندازه متن توصیه شده برای هر زیرنویس: حداکثر 50 کاراکتر |
رتبه - حداکثر مقدار | اختیاری | حداکثر مقدار مقیاس رتبه بندی. اگر ارزش فعلی رتبهبندی نیز ارائه شده باشد، باید ارائه شود. | عدد >= 0.0 |
رتبه - ارزش فعلی | اختیاری | ارزش فعلی مقیاس رتبه بندی. اگر حداکثر مقدار رتبه بندی نیز ارائه شده باشد، باید ارائه شود. | عدد >= 0.0 |
رتبه بندی - شمارش | اختیاری | شمارش رتبه بندی برای نقطه مورد علاقه. توجه: اگر برنامه شما میخواهد نحوه نمایش آن را برای کاربران کنترل کند، این قسمت را وارد کنید. رشته مختصری را ارائه دهید که می تواند به کاربر نمایش داده شود. برای مثال، اگر تعداد 1,000,000 باشد، از اختصاراتی مانند 1M استفاده کنید تا در اندازههای نمایشگر کوچکتر کوتاه نشود. | رشته |
رتبه بندی - مقدار شمارش | اختیاری | شمارش رتبه بندی برای نقطه مورد علاقه. توجه: اگر نمیخواهید منطق مخفف نمایش را خودتان مدیریت کنید، این فیلد را وارد کنید. اگر تعداد و مقدار تعداد هر دو موجود باشد، از تعداد برای نمایش به کاربران استفاده خواهیم کرد | طولانی |
قیمت - قیمت فعلی | مشروط مورد نیاز است | قیمت فعلی بلیت / مجوز ورود برای نقطه مورد علاقه. در صورت ارائه قیمت خطی باید ارائه شود. | متن رایگان |
قیمت - StrikethroughPrice | اختیاری | قیمت اصلی بلیط / مجوز ورود برای نقطه مورد علاقه. | متن رایگان |
فراخوان قیمت | اختیاری | اعلام قیمت برای نمایش تبلیغات، رویداد، تخفیف عضو، در صورت وجود. | متن رایگان اندازه متن توصیه شده: کمتر از 45 کاراکتر (متنی که خیلی طولانی است ممکن است بیضی نشان دهد) |
دسته بندی های محتوا | اختیاری | دسته بندی محتوا را در موجودیت توضیح دهید. | فهرست فهرست های واجد شرایط
برای راهنمایی به بخش دسته بندی محتوا مراجعه کنید. |
DisplayTimeWindow (اختیاری) - یک پنجره زمانی برای نمایش محتوا روی سطح تنظیم کنید | |||
مهر زمانی را شروع کنید | اختیاری | مهر زمانی دوره که پس از آن محتوا باید روی سطح نشان داده شود. اگر تنظیم نشود، محتوا واجد شرایط نمایش در سطح است. | مهر زمانی دوره در میلی ثانیه |
پایان مهر زمان | اختیاری | مهر زمانی دوره ای که پس از آن محتوا دیگر روی سطح نشان داده نمی شود. اگر تنظیم نشود، محتوا واجد شرایط نمایش در سطح است. | مهر زمانی دوره در میلی ثانیه |
RestaurantReservationEntity
صفت | مورد نیاز | توضیحات | قالب |
---|---|---|---|
اکشن اوری | مورد نیاز | پیوند عمیق به نهاد موجود در برنامه ارائه دهنده. توجه: می توانید از پیوندهای عمیق برای ذکر منبع استفاده کنید. به این سؤالات متداول مراجعه کنید | اوری |
عنوان | مورد نیاز | عنوان نهاد. | رشته اندازه متن پیشنهادی: حداکثر 50 کاراکتر |
زمان شروع رزرو محلی - مهر زمانی | مورد نیاز | مهر زمانی زمانی که انتظار می رود رزرو شروع شود. | Joda-Time Instant |
زمان شروع رزرو محلی - منطقه زمانی | مورد نیاز | منطقه زمانی که انتظار می رود رزرو در آن شروع شود. | Joda-Time DateTimeZone |
مکان - کشور | مورد نیاز | کشوری که رستوران در آن اتفاق می افتد. | متن رایگان اندازه متن پیشنهادی: حداکثر ~20 کاراکتر |
مکان - شهر | مورد نیاز | شهری که رستوران در آن اتفاق می افتد. | متن رایگان اندازه متن پیشنهادی: حداکثر ~20 کاراکتر |
مکان - نشانی نمایش | مورد نیاز | آدرس پیش رستورانی که به کاربر نمایش داده می شود. | متن رایگان اندازه متن پیشنهادی: حداکثر ~20 کاراکتر |
مکان - آدرس خیابان | اختیاری | آدرس خیابان (در صورت وجود) رستوران. | متن رایگان اندازه متن پیشنهادی: حداکثر ~20 کاراکتر |
مکان - ایالت | اختیاری | ایالت یا استان (در صورت وجود) که رستوران در آن واقع شده است. | متن رایگان اندازه متن پیشنهادی: حداکثر ~20 کاراکتر |
مکان - کد پستی | اختیاری | کد پستی (در صورت وجود) رستوران. | متن رایگان اندازه متن پیشنهادی: حداکثر ~20 کاراکتر |
محل - محله | اختیاری | محله (در صورت وجود) رستوران. | متن رایگان اندازه متن پیشنهادی: حداکثر ~20 کاراکتر |
تصاویر پوستر | اختیاری | هنگامی که چندین تصویر ارائه می شود، تنها 1 تصویر را نشان خواهیم داد. نسبت تصویر پیشنهادی 16:9 است | برای راهنمایی به مشخصات تصویر مراجعه کنید. |
توضیحات | اختیاری | یک پاراگراف متنی برای توصیف موجودیت. توجه: توضیحات یا لیست زیرنویس برای کاربر نمایش داده می شود، نه هر دو. | متن رایگان اندازه متن پیشنهادی: 180 کاراکتر |
لیست زیرنویس | اختیاری | حداکثر 3 زیرنویس، با هر زیرنویس یک خط متن. توجه: توضیحات یا لیست زیرنویس برای کاربر نمایش داده می شود، نه هر دو. | متن رایگان اندازه متن توصیه شده برای هر زیرنویس: حداکثر 50 کاراکتر |
اندازه جدول | اختیاری | تعداد افراد در گروه رزرو | عدد صحیح > 0 |
DisplayTimeWindow (اختیاری) - یک پنجره زمانی برای نمایش محتوا روی سطح تنظیم کنید | |||
مهر زمانی را شروع کنید | اختیاری | مهر زمانی دوره که پس از آن محتوا باید روی سطح نشان داده شود. اگر تنظیم نشود، محتوا واجد شرایط نمایش در سطح است. | مهر زمانی دوره در میلی ثانیه |
پایان مهر زمان | اختیاری | مهر زمانی دوره ای که پس از آن محتوا دیگر روی سطح نشان داده نمی شود. اگر تنظیم نشود، محتوا واجد شرایط نمایش در سطح است. | مهر زمانی دوره در میلی ثانیه |
EventReservationEntity
صفت | مورد نیاز | توضیحات | قالب |
---|---|---|---|
اکشن اوری | مورد نیاز | پیوند عمیق به نهاد موجود در برنامه ارائه دهنده. توجه: می توانید از پیوندهای عمیق برای ذکر منبع استفاده کنید. به این سؤالات متداول مراجعه کنید | اوری |
عنوان | مورد نیاز | عنوان نهاد. | رشته اندازه متن پیشنهادی: حداکثر 50 کاراکتر |
زمان شروع محلی - مهر زمانی | مورد نیاز | مهر زمانی دورانی که انتظار می رود رویداد شروع شود. | Joda-Time Instant |
زمان شروع محلی - منطقه زمانی | مورد نیاز | منطقه زمانی که انتظار می رود رویداد در آن شروع شود. | Joda-Time DateTimeZone |
حالت رویداد | مورد نیاز | فیلدی برای نشان دادن اینکه آیا رویداد مجازی، حضوری یا هر دو خواهد بود. | تعداد: VIRTUAL، IN_PERSON، یا HYBRID |
مکان - کشور | به طور مشروط مورد نیاز است | کشوری که این رویداد در آن اتفاق می افتد. توجه: این مورد برای رویدادهایی که در in_person یا هیبرید هستند لازم است | متن رایگان اندازه متن توصیه شده: حداکثر 20 chars |
مکان - شهر | به طور مشروط مورد نیاز است | شهری که این رویداد در آن اتفاق می افتد. توجه: این مورد برای رویدادهایی که در in_person یا هیبرید هستند لازم است | متن رایگان اندازه متن توصیه شده: حداکثر 20 chars |
مکان - آدرس نمایش | به طور مشروط مورد نیاز است | آدرس یا نام مکان که در آن رویداد برگزار می شود که باید به کاربر نمایش داده شود. توجه: این مورد برای رویدادهایی که در in_person یا هیبرید هستند لازم است | متن رایگان اندازه متن توصیه شده: حداکثر 20 chars |
مکان - آدرس خیابان | اختیاری | آدرس خیابان (در صورت وجود) از مکانی که در آن رویداد برگزار می شود. | متن رایگان اندازه متن توصیه شده: حداکثر 20 chars |
مکان - ایالت | اختیاری | ایالت یا استان (در صورت وجود) که در آن رویداد برگزار می شود. | متن رایگان اندازه متن توصیه شده: حداکثر 20 chars |
مکان - کد پستی | اختیاری | کد پستی (در صورت وجود) از مکانی که در آن رویداد برگزار می شود. | متن رایگان اندازه متن توصیه شده: حداکثر 20 chars |
مکان - محله | اختیاری | محله (در صورت وجود) که در آن رویداد برگزار می شود. | متن رایگان اندازه متن توصیه شده: حداکثر 20 chars |
تصاویر پوستر | اختیاری | ما فقط در هنگام ارائه چندین تصویر فقط 1 تصویر را نشان خواهیم داد. نسبت ابعاد توصیه شده 16: 9 است توجه: تصویر بسیار توصیه می شود. اگر نشان ارائه شده است ، از فضای امن 24 dps در هر دو قسمت بالا و پایین تصویر اطمینان حاصل کنید | برای راهنمایی به مشخصات تصویر مراجعه کنید. |
زمان پایان بومی شده - Timestamp | اختیاری | زمانی که انتظار می رود این رویداد به پایان برسد. | جودا-وقت فوری |
زمان پایان بومی شده - منطقه زمانی | اختیاری | منطقه زمانی که انتظار می رود این رویداد به پایان برسد. | joda-time datetimezone |
ارائه دهنده خدمات - نام | اختیاری | نام ارائه دهنده خدمات. توجه: برای ارائه دهنده خدمات یا متن یا تصویر لازم است. | متن رایگان. به عنوان مثال ، نام سازمان دهنده/تور رویداد |
ارائه دهنده خدمات - تصویر | اختیاری | آرم/تصویر ارائه دهنده خدمات. توجه: برای ارائه دهنده خدمات یا متن یا تصویر لازم است. | برای راهنمایی به مشخصات تصویر مراجعه کنید. |
توضیحات | اختیاری | یک پاراگراف واحد برای توصیف موجودیت. توجه: یا لیست توضیحات یا زیرنویس به کاربر نمایش داده می شود ، نه هر دو. | متن رایگان اندازه متن توصیه شده: 180 بار |
لیست زیرنویس | اختیاری | حداکثر 3 زیرنویس ، با هر زیرنویس یک خط متن. توجه: یا لیست توضیحات یا زیرنویس به کاربر نمایش داده می شود ، نه هر دو. | متن رایگان اندازه متن توصیه شده برای هر زیرنویس: حداکثر 50 کاراکتر |
نشان ها | اختیاری | هر نشان یا متن رایگان (حداکثر 15 کاراکتر) یا تصویر کوچک است. | |
نشان - متن | اختیاری | عنوان برای نشان توجه: برای نشان یا متن یا تصویر لازم است | متن رایگان اندازه متن توصیه شده: حداکثر 15 کاراکتر |
نشان - تصویر | اختیاری | تصویر کوچک درمان ویژه UX ، به عنوان مثال به عنوان پوشش نشان در تصویر کوچک تصویر/فیلم. توجه: برای نشان یا متن یا تصویر لازم است | برای راهنمایی به مشخصات تصویر مراجعه کنید. |
شناسه رزرو | اختیاری | شناسه رزرو برای رزرو رویداد. | متن رایگان |
قیمت - نسخه فعلی | به طور مشروط مورد نیاز است | قیمت فعلی بلیط/پاس برای این رویداد. در صورت ارائه قیمت Strikethrough باید ارائه شود. | متن رایگان |
قیمت - StrikethroughPrice | اختیاری | قیمت اصلی بلیط/پاس برای این رویداد. | متن رایگان |
فراخوان قیمت | اختیاری | در صورت وجود ، فراخوان قیمت برای ارائه یک تبلیغ ، رویداد ، تخفیف عضو. | متن رایگان اندازه متن توصیه شده: زیر 45 کاراکتر (متن خیلی طولانی ممکن است بیضی نشان دهد) |
رتبه بندی - مقدار حداکثر | اختیاری | حداکثر مقدار مقیاس رتبه بندی. اگر مقدار فعلی رتبه بندی نیز ارائه شود ، باید ارائه شود. | شماره> = 0.0 |
رتبه بندی - مقدار فعلی | اختیاری | مقدار فعلی مقیاس رتبه بندی. اگر حداکثر ارزش رتبه بندی نیز ارائه شود ، باید ارائه شود. | شماره> = 0.0 |
رتبه بندی - شمارش | اختیاری | تعداد رتبه بندی های این رویداد. توجه: اگر برنامه شما می خواهد نحوه نمایش این کار را به کاربران کنترل کند ، این قسمت را ارائه دهید. رشته مختصر را که می تواند برای کاربر نمایش داده شود فراهم کنید. به عنوان مثال ، اگر تعداد آنها 1،000،000 است ، استفاده از اختصارات مانند 1M را در نظر بگیرید تا در اندازه های صفحه نمایش کوچکتر کوتاه نشود. | رشته |
رتبه بندی - مقدار شمارش | اختیاری | تعداد رتبه بندی های این رویداد. توجه: اگر نمی خواهید منطق اختصاری نمایشگر را اداره کنید ، این قسمت را ارائه دهید. اگر هر دو مقدار شمارش و شمارش وجود داشته باشد ، ما از Count برای نمایش به کاربران استفاده خواهیم کرد | طولانی |
دسته بندی های محتوا | اختیاری | دسته مطالب موجود در موجودیت را شرح دهید. | لیست عناصر واجد شرایط
برای راهنمایی به بخش گروه محتوا مراجعه کنید. |
DisplayTimeWindow (اختیاری) - یک پنجره زمانی را تنظیم کنید تا یک محتوا روی سطح نشان داده شود | |||
Timestamp را شروع کنید | اختیاری | Timestamp Epoch پس از آن محتوا باید روی سطح نشان داده شود. در صورت عدم تنظیم ، محتوا واجد شرایط نشان داده شده در سطح است. | زمان سنجی دوره در میلی ثانیه |
پایان زمان سنج | اختیاری | Timestamp Epoch پس از آن محتوا دیگر روی سطح نشان داده نمی شود. در صورت عدم تنظیم ، محتوا واجد شرایط نشان داده شده در سطح است. | زمان سنجی دوره در میلی ثانیه |
LodgingReservationEntity
صفت | مورد نیاز | توضیحات | قالب |
---|---|---|---|
عمل | مورد نیاز | پیوند عمیق به نهاد در برنامه ارائه دهنده. توجه: می توانید از پیوندهای عمیق برای انتساب استفاده کنید. به این سؤالات متداول مراجعه کنید | اوری |
عنوان | مورد نیاز | عنوان موجودیت. | متن رایگان. به عنوان مثال ، "اقامت شما از 12 دسامبر" اندازه متن توصیه شده: حداکثر 50 کاراکتر |
زمان چک موضعی - Timestamp | مورد نیاز | جدول زمانی دوره ای که نشان دهنده چک در زمان رزرو است. | جودا-وقت فوری |
زمان چک موضعی - منطقه زمانی | مورد نیاز | منطقه زمانی که در آن زمان چک برای رزرو وجود دارد. | جودا-وقت فوری |
زمان چک موضعی - Timestamp | مورد نیاز | زمان سنجی که نشان دهنده زمان چک برای رزرو است. | جودا-وقت فوری |
زمان چک موضعی - منطقه زمانی | مورد نیاز | منطقه زمانی که در آن زمان چک برای رزرو وجود دارد. | joda-time datetimezone |
مکان - کشور | مورد نیاز | کشوری که اقامتگاه در آن قرار دارد. | متن رایگان اندازه متن توصیه شده: حداکثر 20 chars |
مکان - شهر | مورد نیاز | شهری که اقامتگاه در آن قرار دارد. | متن رایگان اندازه متن توصیه شده: حداکثر 20 chars |
مکان - آدرس نمایش | مورد نیاز | آدرس که به کاربر نمایش داده می شود. یک آدرس موجز ارائه دهید ، با استفاده از اختصارات در صورت امکان (به عنوان مثال ، "خیابان" برای "خیابان" ، "خیابان" برای "خیابان"). این رشته بسته به دستگاه و تنظیمات کاربر ممکن است کوتاه شود. نام شهر را برای شناسایی واضح درج کنید. | متن رایگان اندازه متن توصیه شده: حداکثر 35 chars |
مکان - آدرس خیابان | اختیاری | آدرس خیابان (در صورت وجود) از اقامتگاه. | متن رایگان اندازه متن توصیه شده: حداکثر 20 chars |
مکان - ایالت | اختیاری | ایالت یا استان (در صورت وجود) که در آن اقامتگاه قرار دارد. | متن رایگان اندازه متن توصیه شده: حداکثر 20 chars |
مکان - کد پستی | اختیاری | کد پستی (در صورت کاربرد) اقامتگاه. | متن رایگان اندازه متن توصیه شده: حداکثر 20 chars |
مکان - محله | اختیاری | محله (در صورت کاربرد) اقامتگاه. | متن رایگان اندازه متن توصیه شده: حداکثر 20 chars |
تصاویر پوستر | اختیاری | ما فقط در هنگام ارائه چندین تصویر فقط 1 تصویر را نشان خواهیم داد. نسبت ابعاد توصیه شده 16: 9 است توجه: اگر نشان ارائه شده است ، از فضای امن 24 dps در هر دو قسمت بالا و پایین تصویر اطمینان حاصل کنید | برای راهنمایی به مشخصات تصویر مراجعه کنید. |
توضیحات | اختیاری | یک پاراگراف واحد برای توصیف موجودیت. توجه: یا لیست توضیحات یا زیرنویس به کاربر نمایش داده می شود ، نه هر دو. | متن رایگان اندازه متن توصیه شده: 180 بار |
لیست زیرنویس | اختیاری | حداکثر 3 زیرنویس ، با هر زیرنویس یک خط متن. توجه: یا لیست توضیحات یا زیرنویس به کاربر نمایش داده می شود ، نه هر دو. | متن رایگان اندازه متن توصیه شده برای هر زیرنویس: حداکثر 50 کاراکتر |
شناسه رزرو | اختیاری | شناسه رزرو برای رزرو اقامتگاه. | متن رایگان |
رتبه بندی - مقدار حداکثر | اختیاری | حداکثر مقدار مقیاس رتبه بندی. اگر مقدار فعلی رتبه بندی نیز ارائه شود ، باید ارائه شود. | شماره> = 0.0 |
رتبه بندی - مقدار فعلی | اختیاری | مقدار فعلی مقیاس رتبه بندی. اگر حداکثر ارزش رتبه بندی نیز ارائه شود ، باید ارائه شود. | شماره> = 0.0 |
رتبه بندی - شمارش | اختیاری | تعداد رتبه بندی برای اقامتگاه. توجه: اگر برنامه شما می خواهد نحوه نمایش این کار را به کاربران کنترل کند ، این قسمت را ارائه دهید. رشته مختصر را که می تواند برای کاربر نمایش داده شود فراهم کنید. به عنوان مثال ، اگر تعداد آنها 1،000،000 است ، استفاده از اختصارات مانند 1M را در نظر بگیرید تا در اندازه های صفحه نمایش کوچکتر کوتاه نشود. | رشته |
رتبه بندی - مقدار شمارش | اختیاری | تعداد رتبه بندی برای اقامتگاه. توجه: اگر نمی خواهید منطق اختصاری نمایشگر را اداره کنید ، این قسمت را ارائه دهید. اگر هر دو مقدار شمارش و شمارش وجود داشته باشد ، ما از Count برای نمایش به کاربران استفاده خواهیم کرد | طولانی |
قیمت - نسخه فعلی | به طور مشروط مورد نیاز است | قیمت فعلی اقامتگاه. در صورت ارائه قیمت Strikethrough باید ارائه شود. | متن رایگان |
قیمت - StrikethroughPrice | اختیاری | قیمت اصلی اقامتگاه ، که در UI مورد ضرب و شتم قرار می گیرد. | متن رایگان |
فراخوان قیمت | اختیاری | در صورت وجود ، فراخوان قیمت برای ارائه یک تبلیغ ، رویداد ، تخفیف عضو. | متن رایگان اندازه متن توصیه شده: زیر 45 کاراکتر (متن خیلی طولانی ممکن است بیضی نشان دهد) |
DisplayTimeWindow (اختیاری) - یک پنجره زمانی را تنظیم کنید تا یک محتوا روی سطح نشان داده شود | |||
Timestamp را شروع کنید | اختیاری | Timestamp Epoch پس از آن محتوا باید روی سطح نشان داده شود. در صورت عدم تنظیم ، محتوا واجد شرایط نشان داده شده در سطح است. | زمان سنجی دوره در میلی ثانیه |
پایان زمان سنج | اختیاری | Timestamp Epoch پس از آن محتوا دیگر روی سطح نشان داده نمی شود. در صورت عدم تنظیم ، محتوا واجد شرایط نشان داده شده در سطح است. | زمان سنجی دوره در میلی ثانیه |
TransportationReservationEntity
صفت | مورد نیاز | توضیحات | قالب |
---|---|---|---|
عمل | مورد نیاز | پیوند عمیق به نهاد در برنامه ارائه دهنده. توجه: می توانید از پیوندهای عمیق برای انتساب استفاده کنید. به این سؤالات متداول مراجعه کنید | اوری |
عنوان | مورد نیاز | عنوان موجودیت. | متن رایگان. به عنوان مثال ، "SFO به SAN" اندازه متن توصیه شده: حداکثر 50 کاراکتر |
نوع حمل و نقل | مورد نیاز | حالت/نوع حمل و نقل برای رزرو. | enum: پرواز ، قطار ، اتوبوس یا کشتی |
زمان عزیمت موضعی - Timestamp | مورد نیاز | زمان سنجی که نشان دهنده زمان عزیمت است. | جودا-وقت فوری |
زمان عزیمت موضعی - منطقه زمانی | مورد نیاز | منطقه زمانی زمان عزیمت. | joda-time datetimezone |
زمان ورود موضعی - Timestamp | مورد نیاز | زمان سنجی که نشان دهنده زمان ورود است. | جودا-وقت فوری |
زمان ورود موضعی - منطقه زمانی | مورد نیاز | منطقه زمانی زمان ورود. | joda-time datetimezone |
شماره حمل و نقل | مورد نیاز | شماره پرواز ، شماره اتوبوس ، شماره قطار یا شماره کشتی/کروز. | متن رایگان |
زمان شبانه روزی موضعی - Timestamp | مورد نیاز | Timestamp Epoch که نشان دهنده زمان شبانه روزی برای رزرو است (در صورت کاربرد) | جودا-وقت فوری |
زمان شبانه روزی موضعی - منطقه زمانی | مورد نیاز | منطقه زمانی شبانه روزی برای رزرو (در صورت کاربرد) | joda-time datetimezone |
مکان عزیمت - کشور | اختیاری | کشور عزیمت. | متن رایگان اندازه متن توصیه شده: حداکثر 20 chars |
مکان عزیمت - شهر | اختیاری | شهر عزیمت. | متن رایگان اندازه متن توصیه شده: حداکثر 20 chars |
مکان عزیمت - آدرس نمایش | اختیاری | محل عزیمت که به کاربر نمایش داده می شود. | متن رایگان اندازه متن توصیه شده: حداکثر 20 chars |
محل عزیمت - آدرس خیابان | اختیاری | آدرس خیابان (در صورت وجود) محل عزیمت. | متن رایگان اندازه متن توصیه شده: حداکثر 20 chars |
محل عزیمت - ایالت | اختیاری | ایالت یا استان (در صورت لزوم) محل عزیمت. | متن رایگان اندازه متن توصیه شده: حداکثر 20 chars |
محل عزیمت - کد پستی | اختیاری | کد پستی (در صورت وجود) محل عزیمت. | متن رایگان اندازه متن توصیه شده: حداکثر 20 chars |
محل عزیمت - محله | اختیاری | محله (در صورت وجود) محل عزیمت. | متن رایگان اندازه متن توصیه شده: حداکثر 20 chars |
مکان ورود - کشور | اختیاری | کشور ورود. | متن رایگان اندازه متن توصیه شده: حداکثر 20 chars |
مکان ورود - شهر | اختیاری | شهر ورود. | متن رایگان اندازه متن توصیه شده: حداکثر 20 chars |
مکان ورود - آدرس نمایش | اختیاری | محل ورود که به کاربر نمایش داده می شود. | متن رایگان اندازه متن توصیه شده: حداکثر 20 chars |
مکان ورود - آدرس خیابان | اختیاری | آدرس خیابان (در صورت وجود) از محل ورود. | متن رایگان اندازه متن توصیه شده: حداکثر 20 chars |
مکان ورود - ایالت | اختیاری | ایالت یا استان (در صورت وجود) از محل ورود. | متن رایگان اندازه متن توصیه شده: حداکثر 20 chars |
مکان ورود - کد پستی | اختیاری | کد پستی (در صورت وجود) از محل ورود. | متن رایگان اندازه متن توصیه شده: حداکثر 20 chars |
مکان ورود - محله | اختیاری | محله (در صورت وجود) از محل ورود. | متن رایگان اندازه متن توصیه شده: حداکثر 20 chars |
ارائه دهنده خدمات - نام | اختیاری | نام ارائه دهنده خدمات. توجه: برای ارائه دهنده خدمات یا متن یا تصویر لازم است. | متن رایگان. به عنوان مثال ، نام هواپیمایی |
ارائه دهنده خدمات - تصویر | اختیاری | آرم/تصویر ارائه دهنده خدمات. توجه: برای ارائه دهنده خدمات یا متن یا تصویر لازم است. | برای راهنمایی به مشخصات تصویر مراجعه کنید. |
تصاویر پوستر | اختیاری | ما فقط در هنگام ارائه چندین تصویر فقط 1 تصویر را نشان خواهیم داد. نسبت ابعاد توصیه شده 16: 9 است | برای راهنمایی به مشخصات تصویر مراجعه کنید. |
توضیحات | اختیاری | یک پاراگراف واحد برای توصیف موجودیت. توجه: یا لیست توضیحات یا زیرنویس به کاربر نمایش داده می شود ، نه هر دو. | متن رایگان اندازه متن توصیه شده: 180 بار |
لیست زیرنویس | اختیاری | حداکثر 3 زیرنویس ، با هر زیرنویس یک خط متن. توجه: یا لیست توضیحات یا زیرنویس به کاربر نمایش داده می شود ، نه هر دو. | متن رایگان اندازه متن توصیه شده برای هر زیرنویس: حداکثر 50 کاراکتر |
شناسه رزرو | اختیاری | شناسه رزرو برای رزرو حمل و نقل. | متن رایگان |
قیمت - نسخه فعلی | به طور مشروط مورد نیاز است | قیمت فعلی رزرو. در صورت ارائه قیمت Strikethrough باید ارائه شود. | متن رایگان |
قیمت - StrikethroughPrice | اختیاری | قیمت اصلی رزرو ، که در UI از بین می رود. | متن رایگان |
فراخوان قیمت | اختیاری | در صورت وجود ، فراخوان قیمت برای ارائه یک تبلیغ ، رویداد ، تخفیف عضو. | متن رایگان اندازه متن توصیه شده: زیر 45 کاراکتر (متن خیلی طولانی ممکن است بیضی نشان دهد) |
DisplayTimeWindow (اختیاری) - یک پنجره زمانی را تنظیم کنید تا یک محتوا روی سطح نشان داده شود | |||
Timestamp را شروع کنید | اختیاری | Timestamp Epoch پس از آن محتوا باید روی سطح نشان داده شود. در صورت عدم تنظیم ، محتوا واجد شرایط نشان داده شده در سطح است. | زمان سنجی دوره در میلی ثانیه |
پایان زمان سنج | اختیاری | Timestamp Epoch پس از آن محتوا دیگر روی سطح نشان داده نمی شود. در صورت عدم تنظیم ، محتوا واجد شرایط نشان داده شده در سطح است. | زمان سنجی دوره در میلی ثانیه |
VehicleRentalReservationEntity
صفت | مورد نیاز | توضیحات | قالب |
---|---|---|---|
عمل | مورد نیاز | پیوند عمیق به نهاد در برنامه ارائه دهنده. توجه: می توانید از پیوندهای عمیق برای انتساب استفاده کنید. به این سؤالات متداول مراجعه کنید | اوری |
عنوان | مورد نیاز | عنوان موجودیت. | متن رایگان. به عنوان مثال ، "Avis Union Square SF" اندازه متن توصیه شده: حداکثر 50 کاراکتر |
زمان وانت بومی شده - Timestamp | مورد نیاز | زمان سنجی که نشان دهنده زمان انتخاب برای رزرو است. | جودا-وقت فوری |
زمان وانت موضعی - منطقه زمانی | مورد نیاز | منطقه زمانی انتخاب زمان برای رزرو. | joda-time datetimezone |
زمان بازگشت بومی شده - Timestamp | اختیاری | زمان سنجی که نشان دهنده زمان چک برای رزرو است. | جودا-وقت فوری |
زمان بازگشت بومی شده - منطقه زمانی | اختیاری | منطقه زمانی زمان چک برای رزرو. | joda-time datetimezone |
آدرس وانت - کشور | اختیاری | کشور محل وانت. | متن رایگان اندازه متن توصیه شده: حداکثر 20 chars |
آدرس وانت - شهر | اختیاری | شهر وانت. | متن رایگان اندازه متن توصیه شده: حداکثر 20 chars |
آدرس وانت - آدرس نمایش | اختیاری | مکان وانت که به کاربر نمایش داده می شود. | متن رایگان اندازه متن توصیه شده: حداکثر 20 chars |
آدرس وانت - آدرس خیابان | اختیاری | آدرس خیابان (در صورت وجود) از محل وانت. | متن رایگان اندازه متن توصیه شده: حداکثر 20 chars |
آدرس وانت - حالت | اختیاری | ایالت یا استان (در صورت وجود) از محل وانت. | متن رایگان اندازه متن توصیه شده: حداکثر 20 chars |
آدرس وانت - کد پستی | اختیاری | کد پستی (در صورت وجود) محل وانت. | متن رایگان اندازه متن توصیه شده: حداکثر 20 chars |
آدرس وانت - محله | اختیاری | محله (در صورت وجود) از محل وانت. | متن رایگان اندازه متن توصیه شده: حداکثر 20 chars |
آدرس بازگشت - کشور | اختیاری | محل بازگشت کشور. | متن رایگان اندازه متن توصیه شده: حداکثر 20 chars |
آدرس بازگشت - شهر | اختیاری | شهر بازگشت شهر. | متن رایگان اندازه متن توصیه شده: حداکثر 20 chars |
آدرس بازگشت - آدرس نمایش | اختیاری | مکان برگشتی که به کاربر نمایش داده می شود. | متن رایگان اندازه متن توصیه شده: حداکثر 20 chars |
آدرس بازگشت - آدرس خیابان | اختیاری | آدرس خیابان (در صورت وجود) از محل بازگشت. | متن رایگان اندازه متن توصیه شده: حداکثر 20 chars |
آدرس بازگشت - ایالت | اختیاری | ایالت یا استان (در صورت وجود) از محل بازگشت. | متن رایگان اندازه متن توصیه شده: حداکثر 20 chars |
آدرس بازگشت - کد پستی | اختیاری | کد پستی (در صورت وجود) از محل بازگشت. | متن رایگان اندازه متن توصیه شده: حداکثر 20 chars |
آدرس بازگشت - محله | اختیاری | محله (در صورت وجود) از محل بازگشت. | متن رایگان اندازه متن توصیه شده: حداکثر 20 chars |
ارائه دهنده خدمات - نام | اختیاری | نام ارائه دهنده خدمات. توجه: برای ارائه دهنده خدمات یا متن یا تصویر لازم است. | متن رایگان. به عنوان مثال ، "اجاره ماشین Avis" |
ارائه دهنده خدمات - تصویر | اختیاری | آرم/تصویر ارائه دهنده خدمات. توجه: برای ارائه دهنده خدمات یا متن یا تصویر لازم است. | برای راهنمایی به مشخصات تصویر مراجعه کنید. |
تصاویر پوستر | اختیاری | ما فقط در هنگام ارائه چندین تصویر فقط 1 تصویر را نشان خواهیم داد. نسبت ابعاد توصیه شده 16: 9 است | برای راهنمایی به مشخصات تصویر مراجعه کنید. |
توضیحات | اختیاری | یک پاراگراف واحد برای توصیف موجودیت. توجه: یا لیست توضیحات یا زیرنویس به کاربر نمایش داده می شود ، نه هر دو. | متن رایگان اندازه متن توصیه شده: 180 بار |
لیست زیرنویس | اختیاری | حداکثر 3 زیرنویس ، با هر زیرنویس یک خط متن. توجه: یا لیست توضیحات یا زیرنویس به کاربر نمایش داده می شود ، نه هر دو. | متن رایگان اندازه متن توصیه شده برای هر زیرنویس: حداکثر 50 کاراکتر |
شناسه تأیید | اختیاری | شناسه تأیید برای رزرو اجاره وسیله نقلیه. | متن رایگان |
قیمت - نسخه فعلی | به طور مشروط مورد نیاز است | قیمت فعلی رزرو. در صورت ارائه قیمت Strikethrough باید ارائه شود. | متن رایگان |
قیمت - StrikethroughPrice | اختیاری | قیمت اصلی رزرو ، که در UI از بین می رود. | متن رایگان |
فراخوان قیمت | اختیاری | در صورت وجود ، فراخوان قیمت برای ارائه یک تبلیغ ، رویداد ، تخفیف عضو. | متن رایگان اندازه متن توصیه شده: زیر 45 کاراکتر (متن خیلی طولانی ممکن است بیضی نشان دهد) |
DisplayTimeWindow (اختیاری) - یک پنجره زمانی را تنظیم کنید تا یک محتوا روی سطح نشان داده شود | |||
Timestamp را شروع کنید | اختیاری | Timestamp Epoch پس از آن محتوا باید روی سطح نشان داده شود. در صورت عدم تنظیم ، محتوا واجد شرایط نشان داده شده در سطح است. | زمان سنجی دوره در میلی ثانیه |
پایان زمان سنج | اختیاری | Timestamp Epoch پس از آن محتوا دیگر روی سطح نشان داده نمی شود. در صورت عدم تنظیم ، محتوا واجد شرایط نشان داده شده در سطح است. | زمان سنجی دوره در میلی ثانیه |
مشخصات تصویر
مشخصات لازم برای دارایی های تصویر در این جدول ذکر شده است:
نسبت ابعاد | حداقل پیکسل | پیکسل های توصیه شده |
---|---|---|
مربع (1x1) ترجیح داده شده است | 300x300 | 1200x1200 |
چشم انداز (1.91x1) | 600x314 | 1200x628 |
پرتره (4x5) | 480x600 | 960x1200 |
تصاویر لازم است در CDN های عمومی میزبانی شوند تا Google بتواند به آنها دسترسی پیدا کند.
فرمت های فایل
PNG ، JPG ، GIF استاتیک ، وب
حداکثر اندازه فایل
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 ، EventReservationEntity ، PointOfindestEntity ، فقط زیر مجموعه ای از این دسته ها واجد شرایط هستند. قبل از جمع آوری لیست ، لیست دسته های واجد شرایط برای یک نوع موجودیت را بررسی کنید.
از نوع موجودیت خاص برای برخی از دسته های محتوا در ترکیبی از اشخاص عمومی و ContentCategration استفاده کنید:
- type_movies_and_tv_shows - قبل از استفاده از اشخاص عمومی ، از راهنمای ادغام Watch Curedition را بررسی کنید.
- type_books - قبل از استفاده از اشخاص عمومی ، کتاب الکترونیکی را بررسی کنید.
- Type_AudioBooks - قبل از استفاده از اشخاص عمومی ، کتاب صوتی را بررسی کنید.
- Type_Shopping - قبل از استفاده از اشخاص عمومی ، از خرید خود دیدن کنید.
- 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 برای انتشار یک علامت در کارت استفاده می شود. اقدام Signin کاربران را به صفحه ورود به سیستم هدایت می کند تا برنامه بتواند محتوا را منتشر کند (یا محتوای شخصی تر ارائه می دهد)
ابرداده زیر بخشی از علامت در کارت است -
صفت | مورد نیاز | توضیحات |
---|---|---|
عمل | مورد نیاز | 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
از شریک توسعه دهنده حذف می شود. - داده های این درخواست در خوشه به روز شده UserAccountManagementCluster به روز شده و ذخیره می شوند.
در صورت بروز خطا ، کل درخواست رد می شود و وضعیت موجود حفظ می شود.
updatePublishStatus
اگر به هر دلیل تجاری داخلی ، هیچ یک از خوشه ها منتشر نشده باشد ، ما اکیداً توصیه می کنیم وضعیت انتشار را با استفاده از API UpdatePublishStatus به روز کنید. این مهم است زیرا:
- ارائه وضعیت در تمام سناریوها ، حتی در صورت انتشار محتوا (وضعیت == منتشر شده) ، برای جمع آوری داشبورد که از این وضعیت صریح برای انتقال سلامت و سایر معیارهای ادغام شما استفاده می کنند ، بسیار مهم است.
- اگر هیچ محتوا منتشر نشده باشد اما وضعیت ادغام شکسته نشده است (وضعیت == 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 توصیه می کند که علامت کارت را منتشر کند. اگر به هر دلیلی ارائه دهندگان قادر به انتشار علامت در کارت نیستند ، توصیه می کنیم با کد وضعیت به روزرسانی 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 Publish Content از طریق یک کار ، همچنین لازم است که برای دریافت درخواست انتشار محتوا ، یک BroadcastReceiver
تنظیم کنید.
هدف از اهداف پخش عمدتاً برای فعال سازی مجدد برنامه و مجبور کردن همگام سازی داده ها است. اهداف پخش به گونه ای طراحی نشده است که به طور مکرر ارسال می شود. این تنها هنگامی ایجاد می شود که سرویس ENGAGE تعیین کند که محتوا ممکن است بی رنگ باشد (به عنوان مثال ، یک هفته). به این ترتیب ، اطمینان بیشتری وجود دارد که کاربر می تواند تجربه محتوای تازه ای داشته باشد ، حتی اگر برنامه برای مدت طولانی اجرا نشده باشد.
BroadcastReceiver
باید به دو روش زیر تنظیم شود:
- به صورت پویا نمونه ای از کلاس
BroadcastReceiver
را با استفاده ازContext.registerReceiver()
ثبت کنید. این امکان ارتباط از برنامه هایی را فراهم می کند که هنوز در حافظه زندگی می کنند.
کاتلین
class AppEngageBroadcastReceiver : BroadcastReceiver(){ // Trigger recommendation cluster publish when PUBLISH_RECOMMENDATION broadcast // is received // Trigger featured cluster publish when PUBLISH_FEATURED broadcast is received // Trigger continue search cluster publish when PUBLISH_CONTINUE_SEARCH // broadcast is received // Trigger reservation cluster publish when PUBLISH_RESERVATION broadcast is // received } fun registerBroadcastReceivers(context: Context){ var context = context context = context.applicationContext // Register Recommendation Cluster Publish Intent context.registerReceiver(AppEngageBroadcastReceiver(), IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_RECOMMENDATION)) // Register Featured Cluster Publish Intent context.registerReceiver(AppEngageBroadcastReceiver(), IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_FEATURED)) // Register Continue Search Cluster Publish Intent context.registerReceiver(AppEngageBroadcastReceiver(), IntentFilter(com.google.android.engage.travel.service.Intents.ACTION_PUBLISH_CONTINUE_SEARCH)) // Register Reservation Cluster Publish Intent context.registerReceiver(AppEngageBroadcastReceiver(), IntentFilter(com.google.android.engage.travel.service.Intents.ACTION_PUBLISH_RESERVATION)) }
جاوا
class AppEngageBroadcastReceiver extends BroadcastReceiver { // Trigger recommendation cluster publish when PUBLISH_RECOMMENDATION broadcast // is received // Trigger featured cluster publish when PUBLISH_FEATURED broadcast is received // Trigger continue search cluster publish when PUBLISH_CONTINUE_SEARCH // broadcast is received // Trigger reservation cluster publish when PUBLISH_RESERVATION broadcast is // received } public static void registerBroadcastReceivers(Context context) { context = context.getApplicationContext(); // Register Recommendation Cluster Publish Intent context.registerReceiver(new AppEngageBroadcastReceiver(), new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_RECOMMENDATION)); // Register Featured Cluster Publish Intent context.registerReceiver(new AppEngageBroadcastReceiver(), new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_FEATURED)); // Register Continue Search Cluster Publish Intent context.registerReceiver(new AppEngageBroadcastReceiver(), new IntentFilter(com.google.android.engage.travel.service.Intents.ACTION_PUBLISH_CONTINUE_SEARCH)); // Register Reservation Cluster Publish Intent context.registerReceiver(new AppEngageBroadcastReceiver(), new IntentFilter(com.google.android.engage.travel.service.Intents.ACTION_PUBLISH_RESERVATION)); }
- به صورت آماری با برچسب
<receiver>
در پروندهAndroidManifest.xml
خود یک اجرای را اعلام کنید. این امر به برنامه اجازه می دهد تا هنگام اجرا ، اهداف پخش را دریافت کند و همچنین به برنامه اجازه می دهد تا محتوا را منتشر کند.
<application>
<receiver
android:name=".AppEngageBroadcastReceiver"
android:exported="true"
android:enabled="true">
<intent-filter>
<action android:name="com.google.android.engage.action.PUBLISH_RECOMMENDATION" />
</intent-filter>
<intent-filter>
<action android:name="com.google.android.engage.action.PUBLISH_FEATURED" />
</intent-filter>
<intent-filter>
<action android:name="com.google.android.engage.action.travel.PUBLISH_CONTINUE_SEARCH" />
</intent-filter>
<intent-filter>
<action android:name="com.google.android.engage.action.travel.PUBLISH_RESERVATION" />
</intent-filter>
</receiver>
</application>
اهداف زیر توسط سرویس ارسال می شود:
-
com.google.android.engage.action.PUBLISH_RECOMMENDATION
توصیه می شود هنگام دریافت این هدف ، تماسpublishRecommendationClusters
را شروع کنید. -
com.google.android.engage.action.PUBLISH_FEATURED
توصیه می شود هنگام دریافت این هدف ، یک تماس تلفنیpublishFeaturedCluster
کنید. -
com.google.android.engage.action.travel.PUBLISH_CONTINUE_SEARCH
توصیه می شود هنگام دریافت این هدف ، یک تماس تلفنیpublishContinueSearchCluster
کنید. -
com.google.android.engage.action.travel.PUBLISH_RESERVATION
توصیه می شود هنگام دریافت این هدف ، یک تماسpublishReservationCluster
شروع کنید.
گردش کار ادغام
برای یک راهنمای گام به گام در مورد تأیید ادغام خود پس از اتمام ، به گردش کار ادغام Engage Developer مراجعه کنید.
سوالات متداول
به Engage SDK که اغلب برای سؤالات متداول پرسیده می شود ، مراجعه کنید.
تماس بگیرید
در صورت وجود هرگونه سؤال در طی فرآیند ادغام ، با ingage-developers@google.com تماس بگیرید.
مراحل بعدی
پس از تکمیل این ادغام ، مراحل بعدی شما به شرح زیر است:
- Send an email to engage-developers@google.com and attach your integrated APK that is ready for testing by Google.
- Google performs a verification and reviews internally to make sure the integration works as expected. If changes are needed, Google contacts you with any necessary details.
- When testing is complete and no changes are needed, Google contacts you to notify you that you can start publishing the updated and integrated APK to the Play Store.
- After Google has confirmed that your updated APK has been published to the Play Store, your Recommendation , Featured , Reservation , and Continue Search clusters may be published and visible to users.
Google is building an on-device surface that organizes users' apps by verticals and enables a new immersive experience for personalized app content consumption and discovery. This fullscreen experience provides developer partners with an opportunity to showcase their best rich content in a dedicated channel outside of their app. This guide contains instructions for developer partners to integrate their travel & events content, using the Engage SDK to populate this new surface area.
Integration detail
اصطلاحات
This integration includes the following cluster types: Recommendation , Featured , Reservation and Continue Search .
Recommendation clusters show personalized travel & event suggestions from an individual developer partner. These recommendations can be personalized to the user or generalized (for example, trending items). Use these to surface articles, events, lodging, or places of interest recommendations.
- A Recommendation cluster can be made of
ArticleEntity
,EventEntity
,LodgingEntity
,PointOfInterestEntity
, orStoreEntity
listings, but not a mix of different entity types.
Your recommendations take the following structure:
Recommendation Cluster: A UI view that contains a group of recommendations from the same developer partner.
Entity: An object representing a single item in a cluster. This integration offers some entities that would be surfaced using the Recommendation Cluster:
ArticleEntity : ArticleEntity represents a recommendation for text-based content related to travel & events. It can be used for articles, blogposts, marketing content, news snippets, etc.
Figure 1: UI showing a single ArticleEntity within Recommendations cluster. EventEntity : EventEntity represents an event happening in the future. Event start time is a critical piece of information that needs to be conveyed to the users.
Figure 2: UI showing a single EventEntity within Recommendations cluster. LodgingEntity : LodgingEntity represents an accommodation, such as a hotel, apartment, vacation home for short term and long term rental.
Figure 3: UI showing a single LodgingEntity within Recommendations cluster. StoreEntity : StoreEntity represents a store, restaurant, cafe etc. It highlights content where a dining venue or store is the critical piece of information that needs to be conveyed to the users.
Figure 4: UI showing a single StoreEntity within Recommendations cluster. PointOfInterestEntity : PointOfInterestEntity represents a place of interest like, a gas station, event venue, theme park, museum, tourist attraction, hiking trail etc. It highlights content where location is a critical piece of information that needs to be conveyed to the users. It shouldn't be used for lodging, a store or a dining venue.
Figure 5: UI showing a single PointOfInterestEntity within Recommendations cluster.
- A Recommendation cluster can be made of
The Reservation cluster shows content recently engaged by users from multiple developer partners in a single UI grouping. Each developer partner will be allowed to broadcast a maximum of 10 entities in the Reservation cluster.
Your reservation content can take the following structure:
RestaurantReservationEntity : RestaurantReservationEntity represents a reservation for a restaurant or cafe and helps users track upcoming or ongoing restaurant reservations.
Figure 6. UI showing a single RestaurantReservationEntity within a Reservation cluster. EventReservationEntity : EventReservationEntity represents a reservation for an event and helps users track upcoming or ongoing events reservations. Events could include, but not limited to the following:
- Sports events like reservation for a football match
- Gaming events like reservation for eSports
- Entertainment events like reservation for movies in a cinema, concert, theater, book signing
- Travel or point of interest reservations like guided tours, museum tickets
- Social / Seminar / Conferences reservations
- Education / Training sessions reservations
Figure 7. UI showing a single EventReservationEntity within a Reservation cluster. LodgingReservationEntity : LodgingEntityReservation represents a reservation for travel lodging and helps users track upcoming or ongoing hotel or vacation rental reservations.
Figure 8. UI showing a single LodgingReservationEntity within a Reservation cluster. TransportationReservationEntity : TransportationReservationEntity represents reservation for transportation by any mode and helps users track reservations for upcoming or ongoing flight, ferry, train, bus, ride-hailing, or cruise.
Figure 9. UI showing a single TransportationReservationEntity within a Reservation cluster. VehicleRentalReservationEntity : VehicleRentalReservationEntity represents vehicle rental reservation and helps users track upcoming or ongoing vehicle rental reservations.
Figure 10. UI showing a single VehicleRentalReservationEntity within a Reservation cluster.
The Featured cluster showcases a selection of entities from multiple developer partners in one UI grouping. There will be a single Featured cluster, which is surfaced near the top of the UI with a priority placement above all Recommendation clusters. Each developer partner will be allowed to broadcast up to 10 entities in the Featured cluster.
GenericFeaturedEntity : GenericFeaturedEntity differs from Recommendation item in that Featured item should be used for a single top content from developers and should represent the single most important content that will be interesting and relevant to users.
Figure 11: UI showing a FeaturedCluster with a list of GenericFeaturedEntity
The Continue Search cluster helps users resume their previous travel search journey by showcasing a list of search queries that the user has recently searched for across all their travel apps. The cluster will be pinned in second position, after reservations and before featured and recommendation clusters. Each developer partner will be allowed to broadcast up to 3 entities in the Continue Search cluster.
- PointOfInterestEntity: PointOfInterestEntity represents a place of interest like, a gas station, event venue, theme park, museum, tourist attraction, hiking trail etc. It highlights content the user has previously searched for.
قبل از کار
Minimum API level: 19
Add the com.google.android.engage:engage-core
library to your app:
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'
}
خلاصه
The design is based on an implementation of a bound service .
The data a client can publish is subject to the following limits for different cluster types:
نوع خوشه | محدودیت های خوشه ای | Minimum entity limits in a cluster | Maximum entity limits in a cluster |
---|---|---|---|
Recommendation Cluster(s) | At most 7 | حداقل 1 | At most 50 ( ArticleEntity , EventEntity , LodgingEntity , StoreEntity , or PointOfInterestEntity ) |
Reservation Cluster | At most 1 | حداقل 1 | At most 20 ( RestaurantReservationEntity , EventReservationEntity , LodgingReservationEntity , TransportationReservationEntity , or VehicleRentalReservationEntity ) |
Featured Cluster | At most 1 | حداقل 1 | At most 20 ( GenericFeaturedEntity ) |
Continue Search Cluster | At most 1 | حداقل 1 | At most 3 ( PointOfInterestEntity ) |
Step 1: Provide entity data
The SDK has defined different entities to represent each item type. We support the following entities for the Travel & Events category:
-
GenericFeaturedEntity
-
ArticleEntity
-
EventEntity
-
LodgingEntity
-
StoreEntity
-
PointOfInterestEntity
-
RestaurantReservationEntity
-
EventReservationEntity
-
LodgingReservationEntity
-
TransportationReservationEntity
-
VehicleRentalReservationEntity
The charts below outline available attributes and requirements for each type.
GenericFeaturedEntity
صفت | مورد نیاز | توضیحات | قالب |
---|---|---|---|
Action Uri | مورد نیاز | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. Refer to this FAQ | اوری |
Poster images | مورد نیاز | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 Note: If a badge is provided, ensure safe space of 24 dps at both the top and bottom of the image | See Image Specifications for guidance. |
عنوان | اختیاری | Title of the entity. | متن رایگان Recommended text size: 50 chars |
توضیحات | اختیاری | A single paragraph of text to describe the entity. Note: Either description or subtitle list will be displayed to the user, not both. | متن رایگان Recommended text size: 180 chars |
لیست زیرنویس | اختیاری | Up to 3 subtitles, with each subtitle a single line of text. Note: Either description or subtitle list will be displayed to the user, not both. | متن رایگان Recommended text size for each subtitle: max 50 chars |
نشان ها | اختیاری | Each badge is either free text (max 15 chars) or small image. Special UX treatment on top of image/video, For example, as badge overlay on the image
| |
Badge - Text | اختیاری | Title for the badge Note: Either text or image is required for the badge | متن رایگان Recommended text size: max 15 chars |
Badge - Image | اختیاری | تصویر کوچک Special UX treatment, for example as badge overlay on the image/video thumbnail. Note: Either text or image is required for the badge | See Image Specifications for guidance. |
دسته بندی های محتوا | اختیاری | Describe the category of the content in the entity. | List of Enums See the Content Category section for guidance. |
DisplayTimeWindow (Optional) - Set a time window for a content to be shown on the surface | |||
Start Timestamp | اختیاری | The epoch timestamp after which the content should be shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
End Timestamp | اختیاری | The epoch timestamp after which the content is no longer shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
ArticleEntity
صفت | مورد نیاز | توضیحات | قالب |
---|---|---|---|
Action Uri | مورد نیاز | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. Refer to this FAQ | اوری |
عنوان | مورد نیاز | Title of the entity. | متن رایگان Recommended text size: Max 50 chars |
Poster images | اختیاری | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 Note: Image is highly recommended. If a badge is provided, ensure safe space of 24 dps at both the top and bottom of the image | See Image Specifications for guidance. |
Source - Title | اختیاری | The name of the author, organization, or reporter | متن رایگان Recommended text size: Under 25 chars |
Source - Image | اختیاری | An image of the source like the author, the organization, reporter | See Image Specifications for guidance. |
توضیحات | اختیاری | A single paragraph of text to describe the entity. Note: Either description or subtitle list will be displayed to the user, not both. | متن رایگان Recommended text size: 180 chars |
لیست زیرنویس | اختیاری | Up to 3 subtitles, with each subtitle a single line of text. Note: Either description or subtitle list will be displayed to the user, not both. | متن رایگان Recommended text size for each subtitle: max 50 chars |
نشان ها | اختیاری | Each badge is either free text (max 15 chars) or small image. Special UX treatment on top of image/video, for example, as badge overlay on the image
| |
Badge - Text | اختیاری | Title for the badge Note: Either text or image is required for the badge | متن رایگان Recommended text size: max 15 chars |
Badge - Image | اختیاری | تصویر کوچک Special UX treatment, for example as badge overlay on the image/video thumbnail. Note: Either text or image is required for the badge | See Image Specifications for guidance. |
Content Publish Time | اختیاری | This is the epoch timestamp in milliseconds on when the content was published / updated in the app. | Epoch timestamp in milliseconds |
Last Engagement Time | Conditionally required | The epoch timestamp in milliseconds when the user interacted with this entity last time. Note: This field is required if this entity is part of the reservation cluster. | Epoch timestamp in milliseconds |
Progress Percentage | Conditionally required | The percentage of the full content consumed by the user to date. Note: This field is required if this entity is part of the reservation cluster. | An int value between 0~100 inclusive. |
دسته بندی های محتوا | اختیاری | Describe the category of the content in the entity. | List of Enums See the Content Category section for guidance. |
DisplayTimeWindow (Optional) - Set a time window for a content to be shown on the surface | |||
Start Timestamp | اختیاری | The epoch timestamp after which the content should be shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
End Timestamp | اختیاری | The epoch timestamp after which the content is no longer shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
EventEntity
صفت | مورد نیاز | توضیحات | قالب |
---|---|---|---|
Action Uri | مورد نیاز | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. Refer to this FAQ | اوری |
عنوان | مورد نیاز | Title of the entity. | رشته Recommended text size: Max 50 chars |
Localized Start time - Timestamp | مورد نیاز | The epoch timestamp when the event is expected to start. | Joda-Time Instant |
Localized Start time - Timezone | مورد نیاز | The timezone in which the event is expected to start. | Joda-Time DateTimeZone |
Event mode | مورد نیاز | A field to indicate whether the event will be virtual, in-person or both. | Enum: VIRTUAL, IN_PERSON, or HYBRID |
Poster images | مورد نیاز | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 Note: Image is highly recommended. If a badge is provided, ensure safe space of 24 dps at both the top and bottom of the image | See Image Specifications for guidance. |
Location - Country | Conditionally required | The country in which the event is happening. Note: This is required for events which are IN_PERSON or HYBRID | متن رایگان Recommended text size: max ~20 chars |
Location - City | Conditionally required | The city in which the event is happening. Note: This is required for events which are IN_PERSON or HYBRID | متن رایگان Recommended text size: max ~20 chars |
Location - Display Address | Conditionally required | The address or venue name where the event will take place that should be displayed to the user. Note: This is required for events which are IN_PERSON or HYBRID | متن رایگان Recommended text size: max ~20 chars |
Location - Street Address | اختیاری | The street address (if applicable) of the location at which event is being hosted. | متن رایگان Recommended text size: max ~20 chars |
Location - State | اختیاری | The state or province (if applicable) in which the event is being hosted. | متن رایگان Recommended text size: max ~20 chars |
Location - Zip code | اختیاری | The zip code (if applicable) of the location in which the event is being hosted. | متن رایگان Recommended text size: max ~20 chars |
Location - Neighborhood | اختیاری | The neighborhood (if applicable) in which the event is being hosted. | متن رایگان Recommended text size: max ~20 chars |
زمان پایان | اختیاری | The epoch timestamp when the event is expected to end. Note: This will be represented in milliseconds. | Epoch timestamp in milliseconds |
توضیحات | اختیاری | A single paragraph of text to describe the entity. Note: Either description or subtitle list will be displayed to the user, not both. | Free text Recommended text size: 180 chars |
لیست زیرنویس | اختیاری | Up to 3 subtitles, with each subtitle a single line of text. Note: Either description or subtitle list will be displayed to the user, not both. | متن رایگان Recommended text size for each subtitle: max 50 chars |
نشان ها | اختیاری | Each badge is either free text (max 15 chars) or small image. | |
Badge - Text | اختیاری | Title for the badge Note: Either text or image is required for the badge | Free text Recommended text size: max 15 chars |
Badge - Image | اختیاری | تصویر کوچک Special UX treatment, for example as badge overlay on the image/video thumbnail. Note: Either text or image is required for the badge | See Image Specifications for guidance. |
Price - CurrentPrice | Conditionally required | The current price of the ticket/pass for the event. Must be provided if strikethrough price is provided. | Free text |
Price - StrikethroughPrice | اختیاری | The original price of the ticket/pass for the event. | Free text |
Price Callout | اختیاری | Price callout to feature a promo, event, member discount, if available. | Free text Recommended text size: under 45 chars (Text that is too long may show ellipses) |
دسته بندی های محتوا | اختیاری | Describe the category of the content in the entity. | List of Eligible Enums
See the Content Category section for guidance. |
DisplayTimeWindow (Optional) - Set a time window for a content to be shown on the surface | |||
Start Timestamp | اختیاری | The epoch timestamp after which the content should be shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
End Timestamp | اختیاری | The epoch timestamp after which the content is no longer shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
LodgingEntity
صفت | مورد نیاز | توضیحات | قالب |
---|---|---|---|
Action Uri | مورد نیاز | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. Refer to this FAQ | اوری |
عنوان | مورد نیاز | Title of the entity. | رشته Recommended text size: Max 50 chars |
Poster images | مورد نیاز | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 Note: If a badge is provided, ensure safe space of 24 dps at both the top and bottom of the image | See Image Specifications for guidance. |
Location - Country | مورد نیاز | The country in which the lodging is happening. | Free text Recommended text size: max ~20 chars |
Location - City | مورد نیاز | The city in which the lodging is happening. | متن رایگان Recommended text size: max ~20 chars |
Location - Display Address | مورد نیاز | The address that will be displayed to the user. We recommend including the city name and possibly state or country for most use cases. Only include the street address or neighborhood if the user is near the location, the user is familiar with the location, or the city is included in the cluster title. If you include the street address, provide a succinct address, using abbreviations where possible (for example, "St" for "Street", "Ave" for "Avenue"). | Free text Recommended text size: max ~20 chars |
Location - Street Address | اختیاری | The street address (if applicable) of the lodging. | Free text Recommended text size: max ~20 chars |
Location - State | اختیاری | The state or province (if applicable) in which the lodging is located. | Free text Recommended text size: max ~20 chars |
Location - Zip code | اختیاری | The zip code (if applicable) of the lodging. | Free text Recommended text size: max ~20 chars |
Location - Neighborhood | اختیاری | The neighborhood (if applicable) of the lodging. | Free text Recommended text size: max ~20 chars |
نشان ها | اختیاری | Each badge is either free text (max 15 chars) or small image. | |
Badge - Text | اختیاری | Title for the badge Note: Either text or image is required for the badge | Free text Recommended text size: max 15 chars |
Badge - Image | اختیاری | تصویر کوچک Special UX treatment, for example as badge overlay on the image/video thumbnail. Note: Either text or image is required for the badge | See Image Specifications for guidance. |
توضیحات | اختیاری | A single paragraph of text to describe the entity. Note: Either description or subtitle list will be displayed to the user, not both. | Free text Recommended text size: 180 chars |
لیست زیرنویس | اختیاری | Up to 3 subtitles, with each subtitle a single line of text. Note: Either description or subtitle list will be displayed to the user, not both. | Free text Recommended text size for each subtitle: max 50 chars |
AvailabilityTimeWindow - Localized Start Time - Timestamp | اختیاری | The epoch timestamp when the lodging is expected to be open/available. | Joda-Time Instant |
AvailabilityTimeWindow - Localized Start Time - Timezone | اختیاری | The timezone in which the lodging is expected to be open/available. | Joda-Time DateTimeZone |
AvailabilityTimeWindow - Localized End Time - Timestamp | اختیاری | The epoch timestamp until which the lodging is expected to be open/available. | Joda-Time Instant |
AvailabilityTimeWindow - Localized End Time - Timezone | اختیاری | The timezone in which the lodging is expected to be open/available. | Joda-Time DateTimeZone |
Rating - Max value | اختیاری | The maximum value of the rating scale. Must be provided if current value of rating is also provided. | Number >= 0.0 |
Rating - Current value | اختیاری | The current value of the rating scale. Must be provided if maximum value of rating is also provided. | Number >= 0.0 |
Rating - Count | اختیاری | The count of the ratings for the lodging. Note: Provide this field if your app wants to control how this is displayed to the users. Provide the concise string that can be displayed to the user. For example, if the count is 1,000,000, consider using abbreviations like 1M, so that it won't be truncated on smaller display sizes. | رشته |
Rating - Count Value | اختیاری | The count of the ratings for the lodging. Note: Provide this field if you don't want to handle the display abbreviation logic yourself. If both Count and Count Value are present, we will use the Count to display to users | طولانی |
Price - CurrentPrice | Conditionally required | The current price of the lodging. Must be provided if strikethrough price is provided. | Free text |
Price - StrikethroughPrice | اختیاری | The original price of the lodging, which is be struck-through in the UI. | Free text |
Price Callout | اختیاری | Price callout to feature a promo, event, member discount, if available. | Free text Recommended text size: under 45 chars (Text that is too long may show ellipses) |
DisplayTimeWindow (Optional) - Set a time window for a content to be shown on the surface | |||
Start Timestamp | اختیاری | The epoch timestamp after which the content should be shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
End Timestamp | اختیاری | The epoch timestamp after which the content is no longer shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
StoreEntity
The StoreEntity
object represents an individual store that developer partners want to publish, such as a popular dining place or eatery that are relevant to one's travel experience.
صفت | مورد نیاز | توضیحات | قالب |
---|---|---|---|
Poster images | مورد نیاز | At least one image must be provided. | See Image Specifications for guidance. |
Action Uri | مورد نیاز | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. Refer to this FAQ | اوری |
عنوان | اختیاری | The name of the store. | Free text Recommended text size: under 45 chars (Text that is too long may show ellipses) |
مکان | اختیاری | The location of the store. | Free text Recommended text size: under 45 chars (Text that is too long may show ellipses) |
فراخوانی | اختیاری | Callout to feature a promo, event, or update for the store, if available. | متن رایگان Recommended text size: under 45 chars (Text that is too long may show ellipses) |
Callout fine print | اختیاری | Fine print text for the callout. | Free text Recommended text size: under 45 chars (Text that is too long may show ellipses) |
توضیحات | اختیاری | A description of the store. | Free text Recommended text size: under 90 chars (Text that is too long may show ellipses) |
دسته بندی | اختیاری | Category of a store, in the context of dining places, it can be cuisine like "french", "new american", "ramen", "fine dining". | Free text Recommended text size: under 45 chars (Text that is too long may show ellipses) |
Rating - Max value | اختیاری | The maximum value of the rating scale. Must be provided if current value of rating is also provided. | Number >= 0.0 |
Rating - Current value | اختیاری | The current value of the rating scale. Must be provided if maximum value of rating is also provided. | Number >= 0.0 |
Rating - Count | اختیاری | The count of the ratings for the lodging. Note: Provide this field if your app wants to control how this is displayed to the users. Provide the concise string that can be displayed to the user. For example, if the count is 1,000,000, consider using abbreviations like 1M, so that it won't be truncated on smaller display sizes. | رشته |
Rating - Count Value | اختیاری | The count of the ratings for the lodging. Note: Provide this field if you don't want to handle the display abbreviation logic yourself. If both Count and Count Value are present, we will use the Count to display to users | طولانی |
DisplayTimeWindow (Optional) - Set a time window for a content to be shown on the surface | |||
Start Timestamp | اختیاری | The epoch timestamp after which the content should be shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
End Timestamp | اختیاری | The epoch timestamp after which the content is no longer shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
PointOfInterestEntity
صفت | مورد نیاز | توضیحات | قالب |
---|---|---|---|
Action Uri | مورد نیاز | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. Refer to this FAQ | اوری |
عنوان | مورد نیاز | Title of the entity. | رشته Recommended text size: Max 50 chars |
Poster images | Conditionally required | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 Note: Image is required if the entity is part of recommendation cluster. If a badge is provided, ensure safe space of 24 dps at both the top and bottom of the image | See Image Specifications for guidance. |
Last Engagement Time | Conditionally required | The epoch timestamp when the user last interacted with this entity. Note: This field is required if the entity is part of continue search cluster. | Joda-Time Instant |
Location - Country | Conditionally required | The country in which the point of interest is happening. Note: This field is required if the entity is part of recommendation cluster. | Free text Recommended text size: max ~20 chars |
Location - City | Conditionally required | The city in which the point of interest is happening. Note: This field is required if the entity is part of recommendation cluster. | Free text Recommended text size: max ~20 chars |
Location - Display Address | Conditionally required | The address that will be displayed to the user. Provide a succinct address, using abbreviations where possible (for example, "St" for "Street", "Ave" for "Avenue"). This string may be truncated depending on the user's device and settings. Include the city name for clear identification. Note: This field is required if the entity is part of recommendation cluster. | متن رایگان Recommended text size: max ~35 chars |
Location - Street Address | اختیاری | The street address (if applicable) of the point of interest. | Free text Recommended text size: max ~20 chars |
Location - State | اختیاری | The state or province (if applicable) in which the point of interest is located. | Free text Recommended text size: max ~20 chars |
Location - Zip code | اختیاری | The zip code (if applicable) of the point of interest. | Free text Recommended text size: max ~20 chars |
Location - Neighborhood | اختیاری | The neighborhood (if applicable) of the point of interest. | Free text Recommended text size: max ~20 chars |
AvailabilityTimeWindow - Localized Start Time - Timestamp | اختیاری | The epoch timestamp when the point of interest is expected to be open/available. | Joda-Time Instant |
AvailabilityTimeWindow - Localized Start Time - Timezone | اختیاری | The timezone in which the point of interest is expected to be open/available. | Joda-Time DateTimeZone |
AvailabilityTimeWindow - Localized End Time - Timestamp | اختیاری | The epoch timestamp until which the point of interest is expected to be open/available. | Joda-Time Instant |
AvailabilityTimeWindow - Localized End Time - Timezone | اختیاری | The timezone in which the point of interest is expected to be open/available. | Joda-Time DateTimeZone |
نشان ها | اختیاری | Each badge is either free text (max 15 chars) or small image. | |
Badge - Text | اختیاری | Title for the badge Note: Either text or image is required for the badge | Free text Recommended text size: max 15 chars |
Badge - Image | اختیاری | تصویر کوچک Special UX treatment, for example as badge overlay on the image/video thumbnail. Note: Either text or image is required for the badge | See Image Specifications for guidance. |
توضیحات | اختیاری | A single paragraph of text to describe the entity. Note: Either description or subtitle list will be displayed to the user, not both. | Free text Recommended text size: 180 chars |
لیست زیرنویس | اختیاری | Up to 3 subtitles, with each subtitle a single line of text. Note: Either description or subtitle list will be displayed to the user, not both. | متن رایگان Recommended text size for each subtitle: max 50 chars |
Rating - Max value | اختیاری | The maximum value of the rating scale. Must be provided if current value of rating is also provided. | Number >= 0.0 |
Rating - Current value | اختیاری | The current value of the rating scale. Must be provided if maximum value of rating is also provided. | Number >= 0.0 |
Rating - Count | اختیاری | The count of the ratings for the point of interest. Note: Provide this field if your app wants to control how this is displayed to the users. Provide the concise string that can be displayed to the user. For example, if the count is 1,000,000, consider using abbreviations like 1M, so that it won't be truncated on smaller display sizes. | رشته |
Rating - Count Value | اختیاری | The count of the ratings for the point of interest. Note: Provide this field if you don't want to handle the display abbreviation logic yourself. If both Count and Count Value are present, we will use the Count to display to users | طولانی |
Price - CurrentPrice | Conditionally required | The current price of the tickets/entry pass for the point of interest. Must be provided if strikethrough price is provided. | Free text |
Price - StrikethroughPrice | اختیاری | The original price of the tickets/entry pass for the point of interest. | Free text |
Price Callout | اختیاری | Price callout to feature a promo, event, member discount, if available. | متن رایگان Recommended text size: under 45 chars (Text that is too long may show ellipses) |
دسته بندی های محتوا | اختیاری | Describe the category of the content in the entity. | List of Eligible Enums
See the Content Category section for guidance. |
DisplayTimeWindow (Optional) - Set a time window for a content to be shown on the surface | |||
Start Timestamp | اختیاری | The epoch timestamp after which the content should be shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
End Timestamp | اختیاری | The epoch timestamp after which the content is no longer shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
RestaurantReservationEntity
صفت | مورد نیاز | توضیحات | قالب |
---|---|---|---|
Action Uri | مورد نیاز | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. Refer to this FAQ | اوری |
عنوان | مورد نیاز | Title of the entity. | رشته Recommended text size: Max 50 chars |
Localized Reservation Start Time - Timestamp | مورد نیاز | The epoch timestamp when the reservation is expected to start. | Joda-Time Instant |
Localized Reservation Start Time - Timezone | مورد نیاز | The timezone in which the reservation is expected to start. | Joda-Time DateTimeZone |
Location - Country | مورد نیاز | The country in which the restaurant is happening. | Free text Recommended text size: max ~20 chars |
Location - City | مورد نیاز | The city in which the restaurant is happening. | Free text Recommended text size: max ~20 chars |
Location - Display Address | مورد نیاز | The address of the prestaurant that will be displayed to the user. | Free text Recommended text size: max ~20 chars |
Location - Street Address | اختیاری | The street address (if applicable) of the restaurant. | Free text Recommended text size: max ~20 chars |
Location - State | اختیاری | The state or province (if applicable) in which the restaurant is located. | Free text Recommended text size: max ~20 chars |
Location - Zip code | اختیاری | The zip code (if applicable) of the restaurant. | Free text Recommended text size: max ~20 chars |
Location - Neighborhood | اختیاری | The neighborhood (if applicable) of the restaurant. | Free text Recommended text size: max ~20 chars |
Poster images | اختیاری | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 | See Image Specifications for guidance. |
توضیحات | اختیاری | A single paragraph of text to describe the entity. Note: Either description or subtitle list will be displayed to the user, not both. | متن رایگان Recommended text size: 180 chars |
لیست زیرنویس | اختیاری | Up to 3 subtitles, with each subtitle a single line of text. Note: Either description or subtitle list will be displayed to the user, not both. | Free text Recommended text size for each subtitle: max 50 chars |
اندازه جدول | اختیاری | The number of people in the reservation group | Integer > 0 |
DisplayTimeWindow (Optional) - Set a time window for a content to be shown on the surface | |||
Start Timestamp | اختیاری | The epoch timestamp after which the content should be shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
End Timestamp | اختیاری | The epoch timestamp after which the content is no longer shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
EventReservationEntity
صفت | مورد نیاز | توضیحات | قالب |
---|---|---|---|
Action Uri | مورد نیاز | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. Refer to this FAQ | اوری |
عنوان | مورد نیاز | Title of the entity. | رشته Recommended text size: Max 50 chars |
Localized Start time - Timestamp | مورد نیاز | The epoch timestamp when the event is expected to start. | Joda-Time Instant |
Localized Start time - Timezone | مورد نیاز | The timezone in which the event is expected to start. | Joda-Time DateTimeZone |
Event mode | مورد نیاز | A field to indicate whether the event will be virtual, in-person or both. | Enum: VIRTUAL, IN_PERSON, or HYBRID |
Location - Country | Conditionally required | The country in which the event is happening. Note: This is required for events which are IN_PERSON or HYBRID | Free text Recommended text size: max ~20 chars |
Location - City | Conditionally required | The city in which the event is happening. Note: This is required for events which are IN_PERSON or HYBRID | Free text Recommended text size: max ~20 chars |
Location - Display Address | Conditionally required | The address or venue name where the event will take place that should be displayed to the user. Note: This is required for events which are IN_PERSON or HYBRID | Free text Recommended text size: max ~20 chars |
Location - Street Address | اختیاری | The street address (if applicable) of the location at which event is being hosted. | Free text Recommended text size: max ~20 chars |
Location - State | اختیاری | The state or province (if applicable) in which the event is being hosted. | متن رایگان Recommended text size: max ~20 chars |
Location - Zip code | اختیاری | The zip code (if applicable) of the location in which the event is being hosted. | Free text Recommended text size: max ~20 chars |
Location - Neighborhood | اختیاری | The neighborhood (if applicable) in which the event is being hosted. | Free text Recommended text size: max ~20 chars |
Poster images | اختیاری | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 Note: Image is highly recommended. If a badge is provided, ensure safe space of 24 dps at both the top and bottom of the image | See Image Specifications for guidance. |
Localized End time - Timestamp | اختیاری | The epoch timestamp when the event is expected to end. | Joda-Time Instant |
Localized End time - Timezone | اختیاری | The timezone in which the event is expected to end. | Joda-Time DateTimeZone |
Service Provider - Name | اختیاری | The name of the service provider. Note: Either text or image is required for the service provider. | متن رایگان. For example, name of the event organizer/tour |
Service Provider - Image | اختیاری | The logo/image of the service provider. Note: Either text or image is required for the service provider. | See Image Specifications for guidance. |
توضیحات | اختیاری | A single paragraph of text to describe the entity. Note: Either description or subtitle list will be displayed to the user, not both. | Free text Recommended text size: 180 chars |
لیست زیرنویس | اختیاری | Up to 3 subtitles, with each subtitle a single line of text. Note: Either description or subtitle list will be displayed to the user, not both. | Free text Recommended text size for each subtitle: max 50 chars |
نشان ها | اختیاری | Each badge is either free text (max 15 chars) or small image. | |
Badge - Text | اختیاری | Title for the badge Note: Either text or image is required for the badge | Free text Recommended text size: max 15 chars |
Badge - Image | اختیاری | تصویر کوچک Special UX treatment, for example as badge overlay on the image/video thumbnail. Note: Either text or image is required for the badge | See Image Specifications for guidance. |
Reservation ID | اختیاری | The reservation ID for the event reservation. | متن رایگان |
Price - CurrentPrice | Conditionally required | The current price of the ticket/pass for the event. Must be provided if strikethrough price is provided. | Free text |
Price - StrikethroughPrice | اختیاری | The original price of the ticket/pass for the event. | Free text |
Price Callout | اختیاری | Price callout to feature a promo, event, member discount, if available. | Free text Recommended text size: under 45 chars (Text that is too long may show ellipses) |
Rating - Max value | اختیاری | The maximum value of the rating scale. Must be provided if current value of rating is also provided. | Number >= 0.0 |
Rating - Current value | اختیاری | The current value of the rating scale. Must be provided if maximum value of rating is also provided. | Number >= 0.0 |
Rating - Count | اختیاری | The count of the ratings for the event. Note: Provide this field if your app wants to control how this is displayed to the users. Provide the concise string that can be displayed to the user. For example, if the count is 1,000,000, consider using abbreviations like 1M, so that it won't be truncated on smaller display sizes. | رشته |
Rating - Count Value | اختیاری | The count of the ratings for the event. Note: Provide this field if you don't want to handle the display abbreviation logic yourself. If both Count and Count Value are present, we will use the Count to display to users | طولانی |
دسته بندی های محتوا | اختیاری | Describe the category of the content in the entity. | List of Eligible Enums
See the Content Category section for guidance. |
DisplayTimeWindow (Optional) - Set a time window for a content to be shown on the surface | |||
Start Timestamp | اختیاری | The epoch timestamp after which the content should be shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
End Timestamp | اختیاری | The epoch timestamp after which the content is no longer shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
LodgingReservationEntity
صفت | مورد نیاز | توضیحات | قالب |
---|---|---|---|
Action Uri | مورد نیاز | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. Refer to this FAQ | اوری |
عنوان | مورد نیاز | Title of the entity. | متن رایگان. For example, "Your Stay from Dec 12th" Recommended text size: Max 50 chars |
Localized Check-in Time - Timestamp | مورد نیاز | The epoch timestamp that represents the check in time for the reservation. | Joda-Time Instant |
Localized Check-in Time - Timezone | مورد نیاز | The timezone in which the check in time exists for the reservation. | Joda-Time Instant |
Localized Check-out Time - Timestamp | مورد نیاز | The epoch timestamp that represents the check out time for the reservation. | Joda-Time Instant |
Localized Check-out Time - Timezone | مورد نیاز | The timezone in which the check out time exists for the reservation. | Joda-Time DateTimeZone |
Location - Country | مورد نیاز | The country in which the lodging is located. | Free text Recommended text size: max ~20 chars |
Location - City | مورد نیاز | The city in which the lodging is located. | Free text Recommended text size: max ~20 chars |
Location - Display Address | مورد نیاز | The address that will be displayed to the user. Provide a succinct address, using abbreviations where possible (for example, "St" for "Street", "Ave" for "Avenue"). This string may be truncated depending on the user's device and settings. Include the city name for clear identification. | Free text Recommended text size: max ~35 chars |
Location - Street Address | اختیاری | The street address (if applicable) of the lodging. | متن رایگان Recommended text size: max ~20 chars |
Location - State | اختیاری | The state or province (if applicable) in which the lodging is located. | Free text Recommended text size: max ~20 chars |
Location - Zip code | اختیاری | The zip code (if applicable) of the lodging. | Free text Recommended text size: max ~20 chars |
Location - Neighborhood | اختیاری | The neighborhood (if applicable) of the lodging. | Free text Recommended text size: max ~20 chars |
Poster images | اختیاری | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 Note: If a badge is provided, ensure safe space of 24 dps at both the top and bottom of the image | See Image Specifications for guidance. |
توضیحات | اختیاری | A single paragraph of text to describe the entity. Note: Either description or subtitle list will be displayed to the user, not both. | Free text Recommended text size: 180 chars |
لیست زیرنویس | اختیاری | Up to 3 subtitles, with each subtitle a single line of text. Note: Either description or subtitle list will be displayed to the user, not both. | Free text Recommended text size for each subtitle: max 50 chars |
Reservation ID | اختیاری | The reservation ID for the lodging reservation. | Free text |
Rating - Max value | اختیاری | The maximum value of the rating scale. Must be provided if current value of rating is also provided. | Number >= 0.0 |
Rating - Current value | اختیاری | The current value of the rating scale. Must be provided if maximum value of rating is also provided. | Number >= 0.0 |
Rating - Count | اختیاری | The count of the ratings for the lodging. Note: Provide this field if your app wants to control how this is displayed to the users. Provide the concise string that can be displayed to the user. For example, if the count is 1,000,000, consider using abbreviations like 1M, so that it won't be truncated on smaller display sizes. | رشته |
Rating - Count Value | اختیاری | The count of the ratings for the lodging. Note: Provide this field if you don't want to handle the display abbreviation logic yourself. If both Count and Count Value are present, we will use the Count to display to users | طولانی |
Price - CurrentPrice | Conditionally required | The current price of the lodging. Must be provided if strikethrough price is provided. | Free text |
Price - StrikethroughPrice | اختیاری | The original price of the lodging, which is be struck-through in the UI. | متن رایگان |
Price Callout | اختیاری | Price callout to feature a promo, event, member discount, if available. | Free text Recommended text size: under 45 chars (Text that is too long may show ellipses) |
DisplayTimeWindow (Optional) - Set a time window for a content to be shown on the surface | |||
Start Timestamp | اختیاری | The epoch timestamp after which the content should be shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
End Timestamp | اختیاری | The epoch timestamp after which the content is no longer shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
TransportationReservationEntity
صفت | مورد نیاز | توضیحات | قالب |
---|---|---|---|
Action Uri | مورد نیاز | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. Refer to this FAQ | اوری |
عنوان | مورد نیاز | Title of the entity. | متن رایگان. For example, "SFO to SAN" Recommended text size: Max 50 chars |
نوع حمل و نقل | مورد نیاز | The mode/type of transportation for the reservation. | Enum: FLIGHT, TRAIN, BUS, or FERRY |
Localized Departure Time - Timestamp | مورد نیاز | The epoch timestamp that represents the departure time. | Joda-Time Instant |
Localized Departure Time - Timezone | مورد نیاز | The timezone of the departure time. | Joda-Time DateTimeZone |
Localized Arrival Time - Timestamp | مورد نیاز | The epoch timestamp that represents the arrival time. | Joda-Time Instant |
Localized Arrival Time - Timezone | مورد نیاز | The timezone of the arrival time. | Joda-Time DateTimeZone |
Transportation Number | مورد نیاز | The flight number, bus number, train number, or ferry/cruise number. | Free text |
Localized Boarding Time - Timestamp | مورد نیاز | The epoch timestamp that represents the boarding time for the reservation (if applicable) | Joda-Time Instant |
Localized Boarding Time - Timezone | مورد نیاز | The timezone of the boarding time for the reservation (if applicable) | Joda-Time DateTimeZone |
Departure Location - Country | اختیاری | The country of departure. | Free text Recommended text size: max ~20 chars |
Departure Location - City | اختیاری | The city of departure. | Free text Recommended text size: max ~20 chars |
Departure Location - Display Address | اختیاری | The location of departure that will be displayed to the user. | Free text Recommended text size: max ~20 chars |
Departure Location - Street Address | اختیاری | The street address (if applicable) of the departure location. | Free text Recommended text size: max ~20 chars |
Departure Location - State | اختیاری | The state or province (if applicable) of the departure location. | Free text Recommended text size: max ~20 chars |
Departure Location - Zip code | اختیاری | The zip code (if applicable) of the departure location. | Free text Recommended text size: max ~20 chars |
Departure Location - Neighborhood | اختیاری | The neighborhood (if applicable) of the departure location. | متن رایگان Recommended text size: max ~20 chars |
Arrival Location - Country | اختیاری | The country of arrival. | Free text Recommended text size: max ~20 chars |
Arrival Location - City | اختیاری | The city of arrival. | Free text Recommended text size: max ~20 chars |
Arrival Location - Display Address | اختیاری | The location of arrival that will be displayed to the user. | Free text Recommended text size: max ~20 chars |
Arrival Location - Street Address | اختیاری | The street address (if applicable) of the arrival location. | Free text Recommended text size: max ~20 chars |
Arrival Location - State | اختیاری | The state or province (if applicable) of the arrival location. | Free text Recommended text size: max ~20 chars |
Arrival Location - Zip code | اختیاری | The zip code (if applicable) of the arrival location. | Free text Recommended text size: max ~20 chars |
Arrival Location - Neighborhood | اختیاری | The neighborhood (if applicable) of the arrival location. | Free text Recommended text size: max ~20 chars |
Service Provider - Name | اختیاری | The name of the service provider. Note: Either text or image is required for the service provider. | متن رایگان. For example, Airline name |
Service Provider - Image | اختیاری | The logo/image of the service provider. Note: Either text or image is required for the service provider. | See Image Specifications for guidance. |
Poster images | اختیاری | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 | See Image Specifications for guidance. |
توضیحات | اختیاری | A single paragraph of text to describe the entity. Note: Either description or subtitle list will be displayed to the user, not both. | Free text Recommended text size: 180 chars |
لیست زیرنویس | اختیاری | Up to 3 subtitles, with each subtitle a single line of text. Note: Either description or subtitle list will be displayed to the user, not both. | Free text Recommended text size for each subtitle: max 50 chars |
Reservation ID | اختیاری | The reservation ID for the transportation reservation. | Free text |
Price - CurrentPrice | Conditionally required | The current price of the reservation. Must be provided if strikethrough price is provided. | متن رایگان |
Price - StrikethroughPrice | اختیاری | The original price of the reservation, which is be struck-through in the UI. | Free text |
Price Callout | اختیاری | Price callout to feature a promo, event, member discount, if available. | Free text Recommended text size: under 45 chars (Text that is too long may show ellipses) |
DisplayTimeWindow (Optional) - Set a time window for a content to be shown on the surface | |||
Start Timestamp | اختیاری | The epoch timestamp after which the content should be shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
End Timestamp | اختیاری | The epoch timestamp after which the content is no longer shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
VehicleRentalReservationEntity
صفت | مورد نیاز | توضیحات | قالب |
---|---|---|---|
Action Uri | مورد نیاز | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. Refer to this FAQ | اوری |
عنوان | مورد نیاز | Title of the entity. | متن رایگان. For example, "Avis Union Square SF" Recommended text size: Max 50 chars |
Localized Pickup Time - Timestamp | مورد نیاز | The epoch timestamp that represents the pick up time for the reservation. | Joda-Time Instant |
Localized Pickup Time - Timezone | مورد نیاز | The timezone of the pick up time for the reservation. | Joda-Time DateTimeZone |
Localized Return Time - Timestamp | اختیاری | The epoch timestamp that represents the check out time for the reservation. | Joda-Time Instant |
Localized Return Time - Timezone | اختیاری | The timezone of the check out time for the reservation. | Joda-Time DateTimeZone |
Pickup Address - Country | اختیاری | The country of the pickup location. | Free text Recommended text size: max ~20 chars |
Pickup Address - City | اختیاری | The city of the pickup location. | Free text Recommended text size: max ~20 chars |
Pickup Address - Display Address | اختیاری | The pickup location that will be displayed to the user. | Free text Recommended text size: max ~20 chars |
Pickup Address - Street Address | اختیاری | The street address (if applicable) of the pickup location. | Free text Recommended text size: max ~20 chars |
Pickup Address - State | اختیاری | The state or province (if applicable) of the pickup location. | Free text Recommended text size: max ~20 chars |
Pickup Address - Zip code | اختیاری | The zip code (if applicable) of the pickup location. | متن رایگان Recommended text size: max ~20 chars |
Pickup Address - Neighborhood | اختیاری | The neighborhood (if applicable) of the pickup location. | Free text Recommended text size: max ~20 chars |
Return Address - Country | اختیاری | The country of return location. | Free text Recommended text size: max ~20 chars |
Return Address - City | اختیاری | The city of return location. | Free text Recommended text size: max ~20 chars |
Return Address - Display Address | اختیاری | The return location that will be displayed to the user. | Free text Recommended text size: max ~20 chars |
Return Address - Street Address | اختیاری | The street address (if applicable) of the return location. | Free text Recommended text size: max ~20 chars |
Return Address - State | اختیاری | The state or province (if applicable) of the return location. | Free text Recommended text size: max ~20 chars |
Return Address - Zip code | اختیاری | The zip code (if applicable) of the return location. | متن رایگان Recommended text size: max ~20 chars |
Return Address - Neighborhood | اختیاری | The neighborhood (if applicable) of the return location. | Free text Recommended text size: max ~20 chars |
Service Provider - Name | اختیاری | The name of the service provider. Note: Either text or image is required for the service provider. | متن رایگان. For example, "Avis Car Rental" |
Service Provider - Image | اختیاری | The logo/image of the service provider. Note: Either text or image is required for the service provider. | See Image Specifications for guidance. |
Poster images | اختیاری | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 | See Image Specifications for guidance. |
توضیحات | اختیاری | A single paragraph of text to describe the entity. Note: Either description or subtitle list will be displayed to the user, not both. | Free text Recommended text size: 180 chars |
لیست زیرنویس | اختیاری | Up to 3 subtitles, with each subtitle a single line of text. Note: Either description or subtitle list will be displayed to the user, not both. | Free text Recommended text size for each subtitle: max 50 chars |
Confirmation ID | اختیاری | The confirmation ID for the vehicle rental reservation. | Free text |
Price - CurrentPrice | Conditionally required | The current price of the reservation. Must be provided if strikethrough price is provided. | Free text |
Price - StrikethroughPrice | اختیاری | The original price of the reservation, which is be struck-through in the UI. | Free text |
Price Callout | اختیاری | Price callout to feature a promo, event, member discount, if available. | Free text Recommended text size: under 45 chars (Text that is too long may show ellipses) |
DisplayTimeWindow (Optional) - Set a time window for a content to be shown on the surface | |||
Start Timestamp | اختیاری | The epoch timestamp after which the content should be shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
End Timestamp | اختیاری | The epoch timestamp after which the content is no longer shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
مشخصات تصویر
Required specifications for image assets are listed in this table:
نسبت ابعاد | حداقل پیکسل | پیکسل های توصیه شده |
---|---|---|
Square (1x1) ترجیح داده شده است | 300x300 | 1200x1200 |
Landscape (1.91x1) | 600x314 | 1200x628 |
Portrait (4x5) | 480x600 | 960x1200 |
The images are required to be hosted on public CDNs so that Google can access them.
فرمت های فایل
PNG, JPG, static GIF, WebP
حداکثر اندازه فایل
5120 کیلوبایت
توصیه های اضافی
- Image safe area: Put your important content in the center 80% of the image.
- Use a transparent background so that the image can be properly displayed in Dark and Light theme settings.
دسته بندی محتوا
The content category allows apps to publish content belonging to multiple categories. This maps the content with some of the predefined categories namely:
-
TYPE_EDUCATION
-
TYPE_SPORTS
-
TYPE_MOVIES_AND_TV_SHOWS
-
TYPE_BOOKS
-
TYPE_AUDIOBOOKS
-
TYPE_MUSIC
-
TYPE_DIGITAL_GAMES
-
TYPE_TRAVEL_AND_LOCAL
-
TYPE_HOME_AND_AUTO
-
TYPE_BUSINESS
-
TYPE_NEWS
-
TYPE_FOOD_AND_DRINK
-
TYPE_SHOPPING
-
TYPE_HEALTH_AND_FITENESS
-
TYPE_MEDICAL
-
TYPE_PARENTING
-
TYPE_DATING
The images are required to be hosted on public CDNs so that Google can access them.
Guidelines to use the content categories
- Some entities like ArticleEntity and GenericFeaturedEntity are eligible to use any of the content categories. For other entities like EventEntity , EventReservationEntity , PointOfInterestEntity , only a subset of these categories are eligible. Check the list of categories eligible for an entity type before populating the list.
Use the specific entity type for some content categories over a combination of the Generic entities and the ContentCategory:
- TYPE_MOVIES_AND_TV_SHOWS - Check out the entities from Watch integration guide before using the generic entities.
- TYPE_BOOKS - Check out the EbookEntity before using the generic entities.
- TYPE_AUDIOBOOKS - Check out AudiobookEntity before using the generic entities.
- TYPE_SHOPPING - Check out ShoppingEntity before using the generic entities.
- TYPE_FOOD_AND_DRINK - Check out entities from Food Integration guide before using the generic entities.
The ContentCategory field is optional and should be left blank if the content doesn't belong to any of the categories mentioned earlier.
In case multiple content categories are provided, provide them in the order of relevance to the content with the most relevant content category placed first in the list.
Step 2: Provide Cluster data
It is recommended to have the content publish job executed in the background (for example, using WorkManager ) and scheduled on a regular basis or on an event basis (for example, every time the user opens the app or when the user just added something to their cart).
AppEngageTravelClient
is responsible for publishing clusters.
There are following APIs to publish clusters in the client:
-
isServiceAvailable
-
publishRecommendationClusters
-
publishFeaturedCluster
-
publishReservationCluster
-
publishContinueSearchCluster
-
publishUserAccountManagementRequest
-
updatePublishStatus
-
deleteRecommendationsClusters
-
deleteFeaturedCluster
-
deleteReservationCluster
-
deleteContinueSearchCluster
-
deleteUserManagementCluster
-
deleteClusters
isServiceAvailable
This API is used to check if the service is available for integration and whether the content can be presented on the device.
کاتلین
client.isServiceAvailable.addOnCompleteListener { task -> if (task.isSuccessful) { // Handle IPC call success if(task.result) { // Service is available on the device, proceed with content publish // calls. } else { // Service is not available, no further action is needed. } } else { // The IPC call itself fails, proceed with error handling logic here, // such as retry. } }
جاوا
client.isServiceAvailable().addOnCompleteListener(task - > { if (task.isSuccessful()) { // Handle success if(task.getResult()) { // Service is available on the device, proceed with content publish // calls. } else { // Service is not available, no further action is needed. } } else { // The IPC call itself fails, proceed with error handling logic here, // such as retry. } });
publishRecommendationClusters
This API is used to publish a list of RecommendationCluster
objects.
کاتلین
client.publishRecommendationClusters( PublishRecommendationClustersRequest.Builder() .addRecommendationCluster( RecommendationCluster.Builder() .addEntity(entity1) .addEntity(entity2) .setTitle("Top Picks For You") .build() ) .build() )
جاوا
client.publishRecommendationClusters( new PublishRecommendationClustersRequest.Builder() .addRecommendationCluster( new RecommendationCluster.Builder() .addEntity(entity1) .addEntity(entity2) .setTitle("Top Picks For You") .build()) .build());
When the service receives the request, the following actions take place within one transaction:
- Existing
RecommendationCluster
data from the developer partner is removed. - Data from the request is parsed and stored in the updated Recommendation Cluster.
In case of an error, the entire request is rejected and the existing state is maintained.
publishFeaturedCluster
This API is used to publish a list of FeaturedCluster
objects.
کاتلین
client.publishFeaturedCluster( PublishFeaturedClusterRequest.Builder() .setFeaturedCluster( FeaturedCluster.Builder() .addEntity(entity1) .addEntity(entity2) .build()) .build())
جاوا
client.publishFeaturedCluster( new PublishFeaturedClustersRequest.Builder() .addFeaturedCluster( new FeaturedCluster.Builder() .addEntity(entity1) .addEntity(entity2) .build()) .build());
When the service receives the request, the following actions take place within one transaction:
- Existing
FeaturedCluster
data from the developer partner is removed. - Data from the request is parsed and stored in the updated Featured Cluster.
In case of an error, the entire request is rejected and the existing state is maintained.
publishReservationCluster
This API is used to publish a ReservationCluster
object.
کاتلین
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());
When the service receives the request, the following actions take place within one transaction:
- Existing
ReservationCluster
data from the developer partner is removed. - Data from the request is parsed and stored in the updated Reservation Cluster.
In case of an error, the entire request is rejected and the existing state is maintained.
publishContinueSearchCluster
This API is used to publish a list of ContinueSearchCluster
objects.
کاتلین
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());
When the service receives the request, the following actions take place within one transaction:
- Existing
ContinueSearchCluster
data from the developer partner is removed. - Data from the request is parsed and stored in the updated Continue Search Cluster.
In case of an error, the entire request is rejected and the existing state is maintained.
publishUserAccountManagementRequest
This API is used to publish a Sign In card . The signin action directs users to the app's sign in page so that the app can publish content (or provide more personalized content)
The following metadata is part of the Sign In Card -
صفت | مورد نیاز | توضیحات |
---|---|---|
Action Uri | مورد نیاز | Deeplink to Action (ie navigates to app sign in page) |
تصویر | Optional - If not provided, Title must be provided | Image Shown on the Card 16x9 aspect ratio images with a resolution of 1264x712 |
عنوان | Optional - If not provided, Image must be provided | Title on the Card |
متن اقدام | اختیاری | Text Shown on the CTA (ie Sign in) |
زیرنویس | اختیاری | Optional Subtitle on the Card |
کاتلین
var SIGN_IN_CARD_ENTITY = SignInCardEntity.Builder() .addPosterImage( Image.Builder() .setImageUri(Uri.parse("http://www.x.com/image.png")) .setImageHeightInPixel(500) .setImageWidthInPixel(500) .build()) .setActionText("Sign In") .setActionUri(Uri.parse("http://xx.com/signin")) .build() client.publishUserAccountManagementRequest( PublishUserAccountManagementRequest.Builder() .setSignInCardEntity(SIGN_IN_CARD_ENTITY) .build());
جاوا
SignInCardEntity SIGN_IN_CARD_ENTITY = new SignInCardEntity.Builder() .addPosterImage( new Image.Builder() .setImageUri(Uri.parse("http://www.x.com/image.png")) .setImageHeightInPixel(500) .setImageWidthInPixel(500) .build()) .setActionText("Sign In") .setActionUri(Uri.parse("http://xx.com/signin")) .build(); client.publishUserAccountManagementRequest( new PublishUserAccountManagementRequest.Builder() .setSignInCardEntity(SIGN_IN_CARD_ENTITY) .build());
When the service receives the request, the following actions take place within one transaction:
- Existing
UserAccountManagementCluster
data from the developer partner is removed. - Data from the request is parsed and stored in the updated UserAccountManagementCluster Cluster.
In case of an error, the entire request is rejected and the existing state is maintained.
updatePublishStatus
If for any internal business reason, none of the clusters is published, we strongly recommend updating the publish status using the updatePublishStatus API. This is important because :
- Providing the status in all scenarios, even when the content is published (STATUS == PUBLISHED), is critical to populate dashboards that use this explicit status to convey the health and other metrics of your integration.
- If no content is published but the integration status isn't broken (STATUS == NOT_PUBLISHED), Google can avoid triggering alerts in the app health dashboards. It confirms that content is not published due to an expected situation from the provider's standpoint.
- It helps developers provide insights into when the data is published versus not.
- Google may use the status codes to nudge the user to do certain actions in the app so they can see the app content or overcome it.
The list of eligible publish status codes are :
// Content is published
AppEngagePublishStatusCode.PUBLISHED,
// Content is not published as user is not signed in
AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN,
// Content is not published as user is not subscribed
AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SUBSCRIPTION,
// Content is not published as user location is ineligible
AppEngagePublishStatusCode.NOT_PUBLISHED_INELIGIBLE_LOCATION,
// Content is not published as there is no eligible content
AppEngagePublishStatusCode.NOT_PUBLISHED_NO_ELIGIBLE_CONTENT,
// Content is not published as the feature is disabled by the client
// Available in v1.3.1
AppEngagePublishStatusCode.NOT_PUBLISHED_FEATURE_DISABLED_BY_CLIENT,
// Content is not published as the feature due to a client error
// Available in v1.3.1
AppEngagePublishStatusCode.NOT_PUBLISHED_CLIENT_ERROR,
// Content is not published as the feature due to a service error
// Available in v1.3.1
AppEngagePublishStatusCode.NOT_PUBLISHED_SERVICE_ERROR,
// Content is not published due to some other reason
// Reach out to engage-developers@ before using this enum.
AppEngagePublishStatusCode.NOT_PUBLISHED_OTHER
If the content is not published due to a user not logged in, Google would recommend publishing the Sign In Card. If for any reason providers are not able to publish the Sign In Card then we recommend calling the updatePublishStatus API with the status code NOT_PUBLISHED_REQUIRES_SIGN_IN
کاتلین
client.updatePublishStatus( PublishStatusRequest.Builder() .setStatusCode(AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN) .build())
جاوا
client.updatePublishStatus( new PublishStatusRequest.Builder() .setStatusCode(AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN) .build());
deleteRecommendationClusters
This API is used to delete the content of Recommendation Clusters.
کاتلین
client.deleteRecommendationClusters()
جاوا
client.deleteRecommendationClusters();
When the service receives the request, it removes the existing data from the Recommendation Clusters. In case of an error, the entire request is rejected and the existing state is maintained.
deleteFeaturedCluster
This API is used to delete the content of Featured Cluster.
کاتلین
client.deleteFeaturedCluster()
جاوا
client.deleteFeaturedCluster();
When the service receives the request, it removes the existing data from the Featured Cluster. In case of an error, the entire request is rejected and the existing state is maintained.
deleteReservationCluster
This API is used to delete the content of Reservation Cluster.
کاتلین
client.deleteReservationCluster()
جاوا
client.deleteReservationCluster();
When the service receives the request, it removes the existing data from the Reservation Cluster. In case of an error, the entire request is rejected and the existing state is maintained.
deleteUserManagementCluster
This API is used to delete the content of UserAccountManagement Cluster.
کاتلین
client.deleteUserManagementCluster()
جاوا
client.deleteUserManagementCluster();
When the service receives the request, it removes the existing data from the UserAccountManagement Cluster. In case of an error, the entire request is rejected and the existing state is maintained.
deleteContinueSearchCluster
This API is used to delete the content of Continue Search Cluster.
کاتلین
client.deleteContinueSearchCluster()
جاوا
client.deleteContinueSearchCluster();
When the service receives the request, it removes the existing data from the Continue Search Cluster. In case of an error, the entire request is rejected, and the existing state is maintained.
deleteClusters
This API is used to delete the content of a given cluster type.
کاتلین
client.deleteClusters( DeleteClustersRequest.Builder() .addClusterType(ClusterType.TYPE_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());
When the service receives the request, it removes the existing data from all clusters matching the specified cluster types. Clients can choose to pass one or many cluster types. In case of an error, the entire request is rejected and the existing state is maintained.
رسیدگی به خطا
It is highly recommended to listen to the task result from the publish APIs such that a follow-up action can be taken to recover and resubmit an successful task.
کاتلین
client.publishRecommendationClusters( PublishRecommendationClustersRequest.Builder() .addRecommendationCluster(..) .build()) .addOnCompleteListener { task -> if (task.isSuccessful) { // do something } else { val exception = task.exception if (exception is AppEngageException) { @AppEngageErrorCode val errorCode = exception.errorCode if (errorCode == AppEngageErrorCode.SERVICE_NOT_FOUND) { // do something } } } }
جاوا
client.publishRecommendationClusters( new PublishRecommendationClustersRequest.Builder() .addRecommendationCluster(...) .build()) .addOnCompleteListener( task -> { if (task.isSuccessful()) { // do something } else { Exception exception = task.getException(); if (exception instanceof AppEngageException) { @AppEngageErrorCode int errorCode = ((AppEngageException) exception).getErrorCode(); if (errorCode == AppEngageErrorCode.SERVICE_NOT_FOUND) { // do something } } } });
The error is returned as an AppEngageException
with the cause included as an error code.
کد خطا | نام خطا | توجه داشته باشید |
---|---|---|
1 | SERVICE_NOT_FOUND | The service is not available on the given device. |
2 | SERVICE_NOT_AVAILABLE | The service is available on the given device, but it is not available at the time of the call (for example, it is explicitly disabled). |
3 | SERVICE_CALL_EXECUTION_FAILURE | The task execution failed due to threading issues. In this case, it can be retried. |
4 | SERVICE_CALL_PERMISSION_DENIED | The caller is not allowed to make the service call. |
5 | SERVICE_CALL_INVALID_ARGUMENT | The request contains invalid data (for example, more than the allowed number of clusters). |
6 | SERVICE_CALL_INTERNAL | There is an error on the service side. |
7 | SERVICE_CALL_RESOURCE_EXHAUSTED | The service call is made too frequently. |
Step 3: Handle broadcast intents
In addition to making publish content API calls through a job, it is also required to set up a BroadcastReceiver
to receive the request for a content publish.
The goal of broadcast intents is mainly for app reactivation and forcing data sync. Broadcast intents are not designed to be sent very frequently. It is only triggered when the Engage Service determines the content might be stale (for example, a week old). That way, there is more confidence that the user can have a fresh content experience, even if the application has not been executed for a long period of time.
The BroadcastReceiver
must be set up in the following two ways:
- Dynamically register an instance of the
BroadcastReceiver
class usingContext.registerReceiver()
. This enables communication from applications that are still live in memory.
کاتلین
class AppEngageBroadcastReceiver : BroadcastReceiver(){ // Trigger recommendation cluster publish when PUBLISH_RECOMMENDATION broadcast // is received // Trigger featured cluster publish when PUBLISH_FEATURED broadcast is received // Trigger continue search cluster publish when PUBLISH_CONTINUE_SEARCH // broadcast is received // Trigger reservation cluster publish when PUBLISH_RESERVATION broadcast is // received } fun registerBroadcastReceivers(context: Context){ var context = context context = context.applicationContext // Register Recommendation Cluster Publish Intent context.registerReceiver(AppEngageBroadcastReceiver(), IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_RECOMMENDATION)) // Register Featured Cluster Publish Intent context.registerReceiver(AppEngageBroadcastReceiver(), IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_FEATURED)) // Register Continue Search Cluster Publish Intent context.registerReceiver(AppEngageBroadcastReceiver(), IntentFilter(com.google.android.engage.travel.service.Intents.ACTION_PUBLISH_CONTINUE_SEARCH)) // Register Reservation Cluster Publish Intent context.registerReceiver(AppEngageBroadcastReceiver(), IntentFilter(com.google.android.engage.travel.service.Intents.ACTION_PUBLISH_RESERVATION)) }
جاوا
class AppEngageBroadcastReceiver extends BroadcastReceiver { // Trigger recommendation cluster publish when PUBLISH_RECOMMENDATION broadcast // is received // Trigger featured cluster publish when PUBLISH_FEATURED broadcast is received // Trigger continue search cluster publish when PUBLISH_CONTINUE_SEARCH // broadcast is received // Trigger reservation cluster publish when PUBLISH_RESERVATION broadcast is // received } public static void registerBroadcastReceivers(Context context) { context = context.getApplicationContext(); // Register Recommendation Cluster Publish Intent context.registerReceiver(new AppEngageBroadcastReceiver(), new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_RECOMMENDATION)); // Register Featured Cluster Publish Intent context.registerReceiver(new AppEngageBroadcastReceiver(), new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_FEATURED)); // Register Continue Search Cluster Publish Intent context.registerReceiver(new AppEngageBroadcastReceiver(), new IntentFilter(com.google.android.engage.travel.service.Intents.ACTION_PUBLISH_CONTINUE_SEARCH)); // Register Reservation Cluster Publish Intent context.registerReceiver(new AppEngageBroadcastReceiver(), new IntentFilter(com.google.android.engage.travel.service.Intents.ACTION_PUBLISH_RESERVATION)); }
- Statically declare an implementation with the
<receiver>
tag in yourAndroidManifest.xml
file. This allows the application to receive broadcast intents when it is not running, and also allows the application to publish the content.
<application>
<receiver
android:name=".AppEngageBroadcastReceiver"
android: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>
The following intents is sent by the service:
-
com.google.android.engage.action.PUBLISH_RECOMMENDATION
It is recommended to start apublishRecommendationClusters
call when receiving this intent. -
com.google.android.engage.action.PUBLISH_FEATURED
It is recommended to start apublishFeaturedCluster
call when receiving this intent. -
com.google.android.engage.action.travel.PUBLISH_CONTINUE_SEARCH
It is recommended to start apublishContinueSearchCluster
call when receiving this intent. -
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.
Google is building an on-device surface that organizes users' apps by verticals and enables a new immersive experience for personalized app content consumption and discovery. This fullscreen experience provides developer partners with an opportunity to showcase their best rich content in a dedicated channel outside of their app. This guide contains instructions for developer partners to integrate their travel & events content, using the Engage SDK to populate this new surface area.
Integration detail
اصطلاحات
This integration includes the following cluster types: Recommendation , Featured , Reservation and Continue Search .
Recommendation clusters show personalized travel & event suggestions from an individual developer partner. These recommendations can be personalized to the user or generalized (for example, trending items). Use these to surface articles, events, lodging, or places of interest recommendations.
- A Recommendation cluster can be made of
ArticleEntity
,EventEntity
,LodgingEntity
,PointOfInterestEntity
, orStoreEntity
listings, but not a mix of different entity types.
Your recommendations take the following structure:
Recommendation Cluster: A UI view that contains a group of recommendations from the same developer partner.
Entity: An object representing a single item in a cluster. This integration offers some entities that would be surfaced using the Recommendation Cluster:
ArticleEntity : ArticleEntity represents a recommendation for text-based content related to travel & events. It can be used for articles, blogposts, marketing content, news snippets, etc.
Figure 1: UI showing a single ArticleEntity within Recommendations cluster. EventEntity : EventEntity represents an event happening in the future. Event start time is a critical piece of information that needs to be conveyed to the users.
Figure 2: UI showing a single EventEntity within Recommendations cluster. LodgingEntity : LodgingEntity represents an accommodation, such as a hotel, apartment, vacation home for short term and long term rental.
Figure 3: UI showing a single LodgingEntity within Recommendations cluster. StoreEntity : StoreEntity represents a store, restaurant, cafe etc. It highlights content where a dining venue or store is the critical piece of information that needs to be conveyed to the users.
Figure 4: UI showing a single StoreEntity within Recommendations cluster. PointOfInterestEntity : PointOfInterestEntity represents a place of interest like, a gas station, event venue, theme park, museum, tourist attraction, hiking trail etc. It highlights content where location is a critical piece of information that needs to be conveyed to the users. It shouldn't be used for lodging, a store or a dining venue.
Figure 5: UI showing a single PointOfInterestEntity within Recommendations cluster.
- A Recommendation cluster can be made of
The Reservation cluster shows content recently engaged by users from multiple developer partners in a single UI grouping. Each developer partner will be allowed to broadcast a maximum of 10 entities in the Reservation cluster.
Your reservation content can take the following structure:
RestaurantReservationEntity : RestaurantReservationEntity represents a reservation for a restaurant or cafe and helps users track upcoming or ongoing restaurant reservations.
Figure 6. UI showing a single RestaurantReservationEntity within a Reservation cluster. EventReservationEntity : EventReservationEntity represents a reservation for an event and helps users track upcoming or ongoing events reservations. Events could include, but not limited to the following:
- Sports events like reservation for a football match
- Gaming events like reservation for eSports
- Entertainment events like reservation for movies in a cinema, concert, theater, book signing
- Travel or point of interest reservations like guided tours, museum tickets
- Social / Seminar / Conferences reservations
- Education / Training sessions reservations
Figure 7. UI showing a single EventReservationEntity within a Reservation cluster. LodgingReservationEntity : LodgingEntityReservation represents a reservation for travel lodging and helps users track upcoming or ongoing hotel or vacation rental reservations.
Figure 8. UI showing a single LodgingReservationEntity within a Reservation cluster. TransportationReservationEntity : TransportationReservationEntity represents reservation for transportation by any mode and helps users track reservations for upcoming or ongoing flight, ferry, train, bus, ride-hailing, or cruise.
Figure 9. UI showing a single TransportationReservationEntity within a Reservation cluster. VehicleRentalReservationEntity : VehicleRentalReservationEntity represents vehicle rental reservation and helps users track upcoming or ongoing vehicle rental reservations.
Figure 10. UI showing a single VehicleRentalReservationEntity within a Reservation cluster.
The Featured cluster showcases a selection of entities from multiple developer partners in one UI grouping. There will be a single Featured cluster, which is surfaced near the top of the UI with a priority placement above all Recommendation clusters. Each developer partner will be allowed to broadcast up to 10 entities in the Featured cluster.
GenericFeaturedEntity : GenericFeaturedEntity differs from Recommendation item in that Featured item should be used for a single top content from developers and should represent the single most important content that will be interesting and relevant to users.
Figure 11: UI showing a FeaturedCluster with a list of GenericFeaturedEntity
The Continue Search cluster helps users resume their previous travel search journey by showcasing a list of search queries that the user has recently searched for across all their travel apps. The cluster will be pinned in second position, after reservations and before featured and recommendation clusters. Each developer partner will be allowed to broadcast up to 3 entities in the Continue Search cluster.
- PointOfInterestEntity: PointOfInterestEntity represents a place of interest like, a gas station, event venue, theme park, museum, tourist attraction, hiking trail etc. It highlights content the user has previously searched for.
قبل از کار
Minimum API level: 19
Add the com.google.android.engage:engage-core
library to your app:
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'
}
خلاصه
The design is based on an implementation of a bound service .
The data a client can publish is subject to the following limits for different cluster types:
نوع خوشه | محدودیت های خوشه ای | Minimum entity limits in a cluster | Maximum entity limits in a cluster |
---|---|---|---|
Recommendation Cluster(s) | At most 7 | حداقل 1 | At most 50 ( ArticleEntity , EventEntity , LodgingEntity , StoreEntity , or PointOfInterestEntity ) |
Reservation Cluster | At most 1 | حداقل 1 | At most 20 ( RestaurantReservationEntity , EventReservationEntity , LodgingReservationEntity , TransportationReservationEntity , or VehicleRentalReservationEntity ) |
Featured Cluster | At most 1 | حداقل 1 | At most 20 ( GenericFeaturedEntity ) |
Continue Search Cluster | At most 1 | حداقل 1 | At most 3 ( PointOfInterestEntity ) |
Step 1: Provide entity data
The SDK has defined different entities to represent each item type. We support the following entities for the Travel & Events category:
-
GenericFeaturedEntity
-
ArticleEntity
-
EventEntity
-
LodgingEntity
-
StoreEntity
-
PointOfInterestEntity
-
RestaurantReservationEntity
-
EventReservationEntity
-
LodgingReservationEntity
-
TransportationReservationEntity
-
VehicleRentalReservationEntity
The charts below outline available attributes and requirements for each type.
GenericFeaturedEntity
صفت | مورد نیاز | توضیحات | قالب |
---|---|---|---|
Action Uri | مورد نیاز | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. Refer to this FAQ | اوری |
Poster images | مورد نیاز | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 Note: If a badge is provided, ensure safe space of 24 dps at both the top and bottom of the image | See Image Specifications for guidance. |
عنوان | اختیاری | Title of the entity. | متن رایگان Recommended text size: 50 chars |
توضیحات | اختیاری | A single paragraph of text to describe the entity. Note: Either description or subtitle list will be displayed to the user, not both. | Free text Recommended text size: 180 chars |
لیست زیرنویس | اختیاری | Up to 3 subtitles, with each subtitle a single line of text. Note: Either description or subtitle list will be displayed to the user, not both. | Free text Recommended text size for each subtitle: max 50 chars |
نشان ها | اختیاری | Each badge is either free text (max 15 chars) or small image. Special UX treatment on top of image/video, For example, as badge overlay on the image
| |
Badge - Text | اختیاری | Title for the badge Note: Either text or image is required for the badge | Free text Recommended text size: max 15 chars |
Badge - Image | اختیاری | تصویر کوچک Special UX treatment, for example as badge overlay on the image/video thumbnail. Note: Either text or image is required for the badge | See Image Specifications for guidance. |
دسته بندی های محتوا | اختیاری | Describe the category of the content in the entity. | List of Enums See the Content Category section for guidance. |
DisplayTimeWindow (Optional) - Set a time window for a content to be shown on the surface | |||
Start Timestamp | اختیاری | The epoch timestamp after which the content should be shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
End Timestamp | اختیاری | The epoch timestamp after which the content is no longer shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
ArticleEntity
صفت | مورد نیاز | توضیحات | قالب |
---|---|---|---|
Action Uri | مورد نیاز | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. Refer to this FAQ | اوری |
عنوان | مورد نیاز | Title of the entity. | Free text Recommended text size: Max 50 chars |
Poster images | اختیاری | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 Note: Image is highly recommended. If a badge is provided, ensure safe space of 24 dps at both the top and bottom of the image | See Image Specifications for guidance. |
Source - Title | اختیاری | The name of the author, organization, or reporter | Free text Recommended text size: Under 25 chars |
Source - Image | اختیاری | An image of the source like the author, the organization, reporter | See Image Specifications for guidance. |
توضیحات | اختیاری | A single paragraph of text to describe the entity. Note: Either description or subtitle list will be displayed to the user, not both. | Free text Recommended text size: 180 chars |
لیست زیرنویس | اختیاری | Up to 3 subtitles, with each subtitle a single line of text. Note: Either description or subtitle list will be displayed to the user, not both. | Free text Recommended text size for each subtitle: max 50 chars |
نشان ها | اختیاری | Each badge is either free text (max 15 chars) or small image. Special UX treatment on top of image/video, for example, as badge overlay on the image
| |
Badge - Text | اختیاری | Title for the badge Note: Either text or image is required for the badge | Free text Recommended text size: max 15 chars |
Badge - Image | اختیاری | تصویر کوچک Special UX treatment, for example as badge overlay on the image/video thumbnail. Note: Either text or image is required for the badge | See Image Specifications for guidance. |
Content Publish Time | اختیاری | This is the epoch timestamp in milliseconds on when the content was published / updated in the app. | Epoch timestamp in milliseconds |
Last Engagement Time | Conditionally required | The epoch timestamp in milliseconds when the user interacted with this entity last time. Note: This field is required if this entity is part of the reservation cluster. | Epoch timestamp in milliseconds |
Progress Percentage | Conditionally required | The percentage of the full content consumed by the user to date. Note: This field is required if this entity is part of the reservation cluster. | An int value between 0~100 inclusive. |
دسته بندی های محتوا | اختیاری | Describe the category of the content in the entity. | List of Enums See the Content Category section for guidance. |
DisplayTimeWindow (Optional) - Set a time window for a content to be shown on the surface | |||
Start Timestamp | اختیاری | The epoch timestamp after which the content should be shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
End Timestamp | اختیاری | The epoch timestamp after which the content is no longer shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
EventEntity
صفت | مورد نیاز | توضیحات | قالب |
---|---|---|---|
Action Uri | مورد نیاز | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. Refer to this FAQ | اوری |
عنوان | مورد نیاز | Title of the entity. | رشته Recommended text size: Max 50 chars |
Localized Start time - Timestamp | مورد نیاز | The epoch timestamp when the event is expected to start. | Joda-Time Instant |
Localized Start time - Timezone | مورد نیاز | The timezone in which the event is expected to start. | Joda-Time DateTimeZone |
Event mode | مورد نیاز | A field to indicate whether the event will be virtual, in-person or both. | Enum: VIRTUAL, IN_PERSON, or HYBRID |
Poster images | مورد نیاز | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 Note: Image is highly recommended. If a badge is provided, ensure safe space of 24 dps at both the top and bottom of the image | See Image Specifications for guidance. |
Location - Country | Conditionally required | The country in which the event is happening. Note: This is required for events which are IN_PERSON or HYBRID | Free text Recommended text size: max ~20 chars |
Location - City | Conditionally required | The city in which the event is happening. Note: This is required for events which are IN_PERSON or HYBRID | Free text Recommended text size: max ~20 chars |
Location - Display Address | Conditionally required | The address or venue name where the event will take place that should be displayed to the user. Note: This is required for events which are IN_PERSON or HYBRID | Free text Recommended text size: max ~20 chars |
Location - Street Address | اختیاری | The street address (if applicable) of the location at which event is being hosted. | Free text Recommended text size: max ~20 chars |
Location - State | اختیاری | The state or province (if applicable) in which the event is being hosted. | Free text Recommended text size: max ~20 chars |
Location - Zip code | اختیاری | The zip code (if applicable) of the location in which the event is being hosted. | Free text Recommended text size: max ~20 chars |
Location - Neighborhood | اختیاری | The neighborhood (if applicable) in which the event is being hosted. | Free text Recommended text size: max ~20 chars |
زمان پایان | اختیاری | The epoch timestamp when the event is expected to end. Note: This will be represented in milliseconds. | Epoch timestamp in milliseconds |
توضیحات | اختیاری | A single paragraph of text to describe the entity. Note: Either description or subtitle list will be displayed to the user, not both. | Free text Recommended text size: 180 chars |
لیست زیرنویس | اختیاری | Up to 3 subtitles, with each subtitle a single line of text. Note: Either description or subtitle list will be displayed to the user, not both. | Free text Recommended text size for each subtitle: max 50 chars |
نشان ها | اختیاری | Each badge is either free text (max 15 chars) or small image. | |
Badge - Text | اختیاری | Title for the badge Note: Either text or image is required for the badge | Free text Recommended text size: max 15 chars |
Badge - Image | اختیاری | تصویر کوچک Special UX treatment, for example as badge overlay on the image/video thumbnail. Note: Either text or image is required for the badge | See Image Specifications for guidance. |
Price - CurrentPrice | Conditionally required | The current price of the ticket/pass for the event. Must be provided if strikethrough price is provided. | Free text |
Price - StrikethroughPrice | اختیاری | The original price of the ticket/pass for the event. | Free text |
Price Callout | اختیاری | Price callout to feature a promo, event, member discount, if available. | Free text Recommended text size: under 45 chars (Text that is too long may show ellipses) |
دسته بندی های محتوا | اختیاری | Describe the category of the content in the entity. | List of Eligible Enums
See the Content Category section for guidance. |
DisplayTimeWindow (Optional) - Set a time window for a content to be shown on the surface | |||
Start Timestamp | اختیاری | The epoch timestamp after which the content should be shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
End Timestamp | اختیاری | The epoch timestamp after which the content is no longer shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
LodgingEntity
صفت | مورد نیاز | توضیحات | قالب |
---|---|---|---|
Action Uri | مورد نیاز | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. Refer to this FAQ | اوری |
عنوان | مورد نیاز | Title of the entity. | رشته Recommended text size: Max 50 chars |
Poster images | مورد نیاز | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 Note: If a badge is provided, ensure safe space of 24 dps at both the top and bottom of the image | See Image Specifications for guidance. |
Location - Country | مورد نیاز | The country in which the lodging is happening. | Free text Recommended text size: max ~20 chars |
Location - City | مورد نیاز | The city in which the lodging is happening. | Free text Recommended text size: max ~20 chars |
Location - Display Address | مورد نیاز | The address that will be displayed to the user. We recommend including the city name and possibly state or country for most use cases. Only include the street address or neighborhood if the user is near the location, the user is familiar with the location, or the city is included in the cluster title. If you include the street address, provide a succinct address, using abbreviations where possible (for example, "St" for "Street", "Ave" for "Avenue"). | Free text Recommended text size: max ~20 chars |
Location - Street Address | اختیاری | The street address (if applicable) of the lodging. | Free text Recommended text size: max ~20 chars |
Location - State | اختیاری | The state or province (if applicable) in which the lodging is located. | Free text Recommended text size: max ~20 chars |
Location - Zip code | اختیاری | The zip code (if applicable) of the lodging. | Free text Recommended text size: max ~20 chars |
Location - Neighborhood | اختیاری | The neighborhood (if applicable) of the lodging. | Free text Recommended text size: max ~20 chars |
نشان ها | اختیاری | Each badge is either free text (max 15 chars) or small image. | |
Badge - Text | اختیاری | Title for the badge Note: Either text or image is required for the badge | Free text Recommended text size: max 15 chars |
Badge - Image | اختیاری | تصویر کوچک Special UX treatment, for example as badge overlay on the image/video thumbnail. Note: Either text or image is required for the badge | See Image Specifications for guidance. |
توضیحات | اختیاری | A single paragraph of text to describe the entity. Note: Either description or subtitle list will be displayed to the user, not both. | Free text Recommended text size: 180 chars |
لیست زیرنویس | اختیاری | Up to 3 subtitles, with each subtitle a single line of text. Note: Either description or subtitle list will be displayed to the user, not both. | Free text Recommended text size for each subtitle: max 50 chars |
AvailabilityTimeWindow - Localized Start Time - Timestamp | اختیاری | The epoch timestamp when the lodging is expected to be open/available. | Joda-Time Instant |
AvailabilityTimeWindow - Localized Start Time - Timezone | اختیاری | The timezone in which the lodging is expected to be open/available. | Joda-Time DateTimeZone |
AvailabilityTimeWindow - Localized End Time - Timestamp | اختیاری | The epoch timestamp until which the lodging is expected to be open/available. | Joda-Time Instant |
AvailabilityTimeWindow - Localized End Time - Timezone | اختیاری | The timezone in which the lodging is expected to be open/available. | Joda-Time DateTimeZone |
Rating - Max value | اختیاری | The maximum value of the rating scale. Must be provided if current value of rating is also provided. | Number >= 0.0 |
Rating - Current value | اختیاری | The current value of the rating scale. Must be provided if maximum value of rating is also provided. | Number >= 0.0 |
Rating - Count | اختیاری | The count of the ratings for the lodging. Note: Provide this field if your app wants to control how this is displayed to the users. Provide the concise string that can be displayed to the user. For example, if the count is 1,000,000, consider using abbreviations like 1M, so that it won't be truncated on smaller display sizes. | رشته |
Rating - Count Value | اختیاری | The count of the ratings for the lodging. Note: Provide this field if you don't want to handle the display abbreviation logic yourself. If both Count and Count Value are present, we will use the Count to display to users | طولانی |
Price - CurrentPrice | Conditionally required | The current price of the lodging. Must be provided if strikethrough price is provided. | Free text |
Price - StrikethroughPrice | اختیاری | The original price of the lodging, which is be struck-through in the UI. | Free text |
Price Callout | اختیاری | Price callout to feature a promo, event, member discount, if available. | Free text Recommended text size: under 45 chars (Text that is too long may show ellipses) |
DisplayTimeWindow (Optional) - Set a time window for a content to be shown on the surface | |||
Start Timestamp | اختیاری | The epoch timestamp after which the content should be shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
End Timestamp | اختیاری | The epoch timestamp after which the content is no longer shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
StoreEntity
The StoreEntity
object represents an individual store that developer partners want to publish, such as a popular dining place or eatery that are relevant to one's travel experience.
صفت | مورد نیاز | توضیحات | قالب |
---|---|---|---|
Poster images | مورد نیاز | At least one image must be provided. | See Image Specifications for guidance. |
Action Uri | مورد نیاز | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. Refer to this FAQ | اوری |
عنوان | اختیاری | The name of the store. | Free text Recommended text size: under 45 chars (Text that is too long may show ellipses) |
مکان | اختیاری | The location of the store. | Free text Recommended text size: under 45 chars (Text that is too long may show ellipses) |
فراخوانی | اختیاری | Callout to feature a promo, event, or update for the store, if available. | Free text Recommended text size: under 45 chars (Text that is too long may show ellipses) |
Callout fine print | اختیاری | Fine print text for the callout. | Free text Recommended text size: under 45 chars (Text that is too long may show ellipses) |
توضیحات | اختیاری | A description of the store. | Free text Recommended text size: under 90 chars (Text that is too long may show ellipses) |
دسته بندی | اختیاری | Category of a store, in the context of dining places, it can be cuisine like "french", "new american", "ramen", "fine dining". | Free text Recommended text size: under 45 chars (Text that is too long may show ellipses) |
Rating - Max value | اختیاری | The maximum value of the rating scale. Must be provided if current value of rating is also provided. | Number >= 0.0 |
Rating - Current value | اختیاری | The current value of the rating scale. Must be provided if maximum value of rating is also provided. | Number >= 0.0 |
Rating - Count | اختیاری | The count of the ratings for the lodging. Note: Provide this field if your app wants to control how this is displayed to the users. Provide the concise string that can be displayed to the user. For example, if the count is 1,000,000, consider using abbreviations like 1M, so that it won't be truncated on smaller display sizes. | رشته |
Rating - Count Value | اختیاری | The count of the ratings for the lodging. Note: Provide this field if you don't want to handle the display abbreviation logic yourself. If both Count and Count Value are present, we will use the Count to display to users | طولانی |
DisplayTimeWindow (Optional) - Set a time window for a content to be shown on the surface | |||
Start Timestamp | اختیاری | The epoch timestamp after which the content should be shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
End Timestamp | اختیاری | The epoch timestamp after which the content is no longer shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
PointOfInterestEntity
صفت | مورد نیاز | توضیحات | قالب |
---|---|---|---|
Action Uri | مورد نیاز | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. Refer to this FAQ | اوری |
عنوان | مورد نیاز | Title of the entity. | رشته Recommended text size: Max 50 chars |
Poster images | Conditionally required | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 Note: Image is required if the entity is part of recommendation cluster. If a badge is provided, ensure safe space of 24 dps at both the top and bottom of the image | See Image Specifications for guidance. |
Last Engagement Time | Conditionally required | The epoch timestamp when the user last interacted with this entity. Note: This field is required if the entity is part of continue search cluster. | Joda-Time Instant |
Location - Country | Conditionally required | The country in which the point of interest is happening. Note: This field is required if the entity is part of recommendation cluster. | Free text Recommended text size: max ~20 chars |
Location - City | Conditionally required | The city in which the point of interest is happening. Note: This field is required if the entity is part of recommendation cluster. | Free text Recommended text size: max ~20 chars |
Location - Display Address | Conditionally required | The address that will be displayed to the user. Provide a succinct address, using abbreviations where possible (for example, "St" for "Street", "Ave" for "Avenue"). This string may be truncated depending on the user's device and settings. Include the city name for clear identification. Note: This field is required if the entity is part of recommendation cluster. | Free text Recommended text size: max ~35 chars |
Location - Street Address | اختیاری | The street address (if applicable) of the point of interest. | Free text Recommended text size: max ~20 chars |
Location - State | اختیاری | The state or province (if applicable) in which the point of interest is located. | Free text Recommended text size: max ~20 chars |
Location - Zip code | اختیاری | The zip code (if applicable) of the point of interest. | Free text Recommended text size: max ~20 chars |
Location - Neighborhood | اختیاری | The neighborhood (if applicable) of the point of interest. | Free text Recommended text size: max ~20 chars |
AvailabilityTimeWindow - Localized Start Time - Timestamp | اختیاری | The epoch timestamp when the point of interest is expected to be open/available. | Joda-Time Instant |
AvailabilityTimeWindow - Localized Start Time - Timezone | اختیاری | The timezone in which the point of interest is expected to be open/available. | Joda-Time DateTimeZone |
AvailabilityTimeWindow - Localized End Time - Timestamp | اختیاری | The epoch timestamp until which the point of interest is expected to be open/available. | Joda-Time Instant |
AvailabilityTimeWindow - Localized End Time - Timezone | اختیاری | The timezone in which the point of interest is expected to be open/available. | Joda-Time DateTimeZone |
نشان ها | اختیاری | Each badge is either free text (max 15 chars) or small image. | |
Badge - Text | اختیاری | Title for the badge Note: Either text or image is required for the badge | Free text Recommended text size: max 15 chars |
Badge - Image | اختیاری | تصویر کوچک Special UX treatment, for example as badge overlay on the image/video thumbnail. Note: Either text or image is required for the badge | See Image Specifications for guidance. |
توضیحات | اختیاری | A single paragraph of text to describe the entity. Note: Either description or subtitle list will be displayed to the user, not both. | Free text Recommended text size: 180 chars |
لیست زیرنویس | اختیاری | Up to 3 subtitles, with each subtitle a single line of text. Note: Either description or subtitle list will be displayed to the user, not both. | Free text Recommended text size for each subtitle: max 50 chars |
Rating - Max value | اختیاری | The maximum value of the rating scale. Must be provided if current value of rating is also provided. | Number >= 0.0 |
Rating - Current value | اختیاری | The current value of the rating scale. Must be provided if maximum value of rating is also provided. | Number >= 0.0 |
Rating - Count | اختیاری | The count of the ratings for the point of interest. Note: Provide this field if your app wants to control how this is displayed to the users. Provide the concise string that can be displayed to the user. For example, if the count is 1,000,000, consider using abbreviations like 1M, so that it won't be truncated on smaller display sizes. | رشته |
Rating - Count Value | اختیاری | The count of the ratings for the point of interest. Note: Provide this field if you don't want to handle the display abbreviation logic yourself. If both Count and Count Value are present, we will use the Count to display to users | طولانی |
Price - CurrentPrice | Conditionally required | The current price of the tickets/entry pass for the point of interest. Must be provided if strikethrough price is provided. | Free text |
Price - StrikethroughPrice | اختیاری | The original price of the tickets/entry pass for the point of interest. | Free text |
Price Callout | اختیاری | Price callout to feature a promo, event, member discount, if available. | Free text Recommended text size: under 45 chars (Text that is too long may show ellipses) |
دسته بندی های محتوا | اختیاری | Describe the category of the content in the entity. | List of Eligible Enums
See the Content Category section for guidance. |
DisplayTimeWindow (Optional) - Set a time window for a content to be shown on the surface | |||
Start Timestamp | اختیاری | The epoch timestamp after which the content should be shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
End Timestamp | اختیاری | The epoch timestamp after which the content is no longer shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
RestaurantReservationEntity
صفت | مورد نیاز | توضیحات | قالب |
---|---|---|---|
Action Uri | مورد نیاز | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. Refer to this FAQ | اوری |
عنوان | مورد نیاز | Title of the entity. | رشته Recommended text size: Max 50 chars |
Localized Reservation Start Time - Timestamp | مورد نیاز | The epoch timestamp when the reservation is expected to start. | Joda-Time Instant |
Localized Reservation Start Time - Timezone | مورد نیاز | The timezone in which the reservation is expected to start. | Joda-Time DateTimeZone |
Location - Country | مورد نیاز | The country in which the restaurant is happening. | Free text Recommended text size: max ~20 chars |
Location - City | مورد نیاز | The city in which the restaurant is happening. | Free text Recommended text size: max ~20 chars |
Location - Display Address | مورد نیاز | The address of the prestaurant that will be displayed to the user. | Free text Recommended text size: max ~20 chars |
Location - Street Address | اختیاری | The street address (if applicable) of the restaurant. | Free text Recommended text size: max ~20 chars |
Location - State | اختیاری | The state or province (if applicable) in which the restaurant is located. | Free text Recommended text size: max ~20 chars |
Location - Zip code | اختیاری | The zip code (if applicable) of the restaurant. | Free text Recommended text size: max ~20 chars |
Location - Neighborhood | اختیاری | The neighborhood (if applicable) of the restaurant. | Free text Recommended text size: max ~20 chars |
Poster images | اختیاری | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 | See Image Specifications for guidance. |
توضیحات | اختیاری | A single paragraph of text to describe the entity. Note: Either description or subtitle list will be displayed to the user, not both. | Free text Recommended text size: 180 chars |
لیست زیرنویس | اختیاری | Up to 3 subtitles, with each subtitle a single line of text. Note: Either description or subtitle list will be displayed to the user, not both. | Free text Recommended text size for each subtitle: max 50 chars |
اندازه جدول | اختیاری | The number of people in the reservation group | Integer > 0 |
DisplayTimeWindow (Optional) - Set a time window for a content to be shown on the surface | |||
Start Timestamp | اختیاری | The epoch timestamp after which the content should be shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
End Timestamp | اختیاری | The epoch timestamp after which the content is no longer shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
EventReservationEntity
صفت | مورد نیاز | توضیحات | قالب |
---|---|---|---|
Action Uri | مورد نیاز | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. Refer to this FAQ | اوری |
عنوان | مورد نیاز | Title of the entity. | رشته Recommended text size: Max 50 chars |
Localized Start time - Timestamp | مورد نیاز | The epoch timestamp when the event is expected to start. | Joda-Time Instant |
Localized Start time - Timezone | مورد نیاز | The timezone in which the event is expected to start. | Joda-Time DateTimeZone |
Event mode | مورد نیاز | A field to indicate whether the event will be virtual, in-person or both. | Enum: VIRTUAL, IN_PERSON, or HYBRID |
Location - Country | Conditionally required | The country in which the event is happening. Note: This is required for events which are IN_PERSON or HYBRID | Free text Recommended text size: max ~20 chars |
Location - City | Conditionally required | The city in which the event is happening. Note: This is required for events which are IN_PERSON or HYBRID | متن رایگان Recommended text size: max ~20 chars |
Location - Display Address | Conditionally required | The address or venue name where the event will take place that should be displayed to the user. Note: This is required for events which are IN_PERSON or HYBRID | Free text Recommended text size: max ~20 chars |
Location - Street Address | اختیاری | The street address (if applicable) of the location at which event is being hosted. | Free text Recommended text size: max ~20 chars |
Location - State | اختیاری | The state or province (if applicable) in which the event is being hosted. | Free text Recommended text size: max ~20 chars |
Location - Zip code | اختیاری | The zip code (if applicable) of the location in which the event is being hosted. | Free text Recommended text size: max ~20 chars |
Location - Neighborhood | اختیاری | The neighborhood (if applicable) in which the event is being hosted. | Free text Recommended text size: max ~20 chars |
Poster images | اختیاری | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 Note: Image is highly recommended. If a badge is provided, ensure safe space of 24 dps at both the top and bottom of the image | See Image Specifications for guidance. |
Localized End time - Timestamp | اختیاری | The epoch timestamp when the event is expected to end. | Joda-Time Instant |
Localized End time - Timezone | اختیاری | The timezone in which the event is expected to end. | Joda-Time DateTimeZone |
Service Provider - Name | اختیاری | The name of the service provider. Note: Either text or image is required for the service provider. | متن رایگان. For example, name of the event organizer/tour |
Service Provider - Image | اختیاری | The logo/image of the service provider. Note: Either text or image is required for the service provider. | See Image Specifications for guidance. |
توضیحات | اختیاری | A single paragraph of text to describe the entity. Note: Either description or subtitle list will be displayed to the user, not both. | Free text Recommended text size: 180 chars |
لیست زیرنویس | اختیاری | Up to 3 subtitles, with each subtitle a single line of text. Note: Either description or subtitle list will be displayed to the user, not both. | Free text Recommended text size for each subtitle: max 50 chars |
نشان ها | اختیاری | Each badge is either free text (max 15 chars) or small image. | |
Badge - Text | اختیاری | Title for the badge Note: Either text or image is required for the badge | Free text Recommended text size: max 15 chars |
Badge - Image | اختیاری | تصویر کوچک Special UX treatment, for example as badge overlay on the image/video thumbnail. Note: Either text or image is required for the badge | See Image Specifications for guidance. |
Reservation ID | اختیاری | The reservation ID for the event reservation. | Free text |
Price - CurrentPrice | Conditionally required | The current price of the ticket/pass for the event. Must be provided if strikethrough price is provided. | Free text |
Price - StrikethroughPrice | اختیاری | The original price of the ticket/pass for the event. | Free text |
Price Callout | اختیاری | Price callout to feature a promo, event, member discount, if available. | Free text Recommended text size: under 45 chars (Text that is too long may show ellipses) |
Rating - Max value | اختیاری | The maximum value of the rating scale. Must be provided if current value of rating is also provided. | Number >= 0.0 |
Rating - Current value | اختیاری | The current value of the rating scale. Must be provided if maximum value of rating is also provided. | Number >= 0.0 |
Rating - Count | اختیاری | The count of the ratings for the event. Note: Provide this field if your app wants to control how this is displayed to the users. Provide the concise string that can be displayed to the user. For example, if the count is 1,000,000, consider using abbreviations like 1M, so that it won't be truncated on smaller display sizes. | رشته |
Rating - Count Value | اختیاری | The count of the ratings for the event. Note: Provide this field if you don't want to handle the display abbreviation logic yourself. If both Count and Count Value are present, we will use the Count to display to users | طولانی |
دسته بندی های محتوا | اختیاری | Describe the category of the content in the entity. | List of Eligible Enums
See the Content Category section for guidance. |
DisplayTimeWindow (Optional) - Set a time window for a content to be shown on the surface | |||
Start Timestamp | اختیاری | The epoch timestamp after which the content should be shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
End Timestamp | اختیاری | The epoch timestamp after which the content is no longer shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
LodgingReservationEntity
صفت | مورد نیاز | توضیحات | قالب |
---|---|---|---|
Action Uri | مورد نیاز | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. Refer to this FAQ | اوری |
عنوان | مورد نیاز | Title of the entity. | متن رایگان. For example, "Your Stay from Dec 12th" Recommended text size: Max 50 chars |
Localized Check-in Time - Timestamp | مورد نیاز | The epoch timestamp that represents the check in time for the reservation. | Joda-Time Instant |
Localized Check-in Time - Timezone | مورد نیاز | The timezone in which the check in time exists for the reservation. | Joda-Time Instant |
Localized Check-out Time - Timestamp | مورد نیاز | The epoch timestamp that represents the check out time for the reservation. | Joda-Time Instant |
Localized Check-out Time - Timezone | مورد نیاز | The timezone in which the check out time exists for the reservation. | Joda-Time DateTimeZone |
Location - Country | مورد نیاز | The country in which the lodging is located. | Free text Recommended text size: max ~20 chars |
Location - City | مورد نیاز | The city in which the lodging is located. | Free text Recommended text size: max ~20 chars |
Location - Display Address | مورد نیاز | The address that will be displayed to the user. Provide a succinct address, using abbreviations where possible (for example, "St" for "Street", "Ave" for "Avenue"). This string may be truncated depending on the user's device and settings. Include the city name for clear identification. | Free text Recommended text size: max ~35 chars |
Location - Street Address | اختیاری | The street address (if applicable) of the lodging. | Free text Recommended text size: max ~20 chars |
Location - State | اختیاری | The state or province (if applicable) in which the lodging is located. | Free text Recommended text size: max ~20 chars |
Location - Zip code | اختیاری | The zip code (if applicable) of the lodging. | Free text Recommended text size: max ~20 chars |
Location - Neighborhood | اختیاری | The neighborhood (if applicable) of the lodging. | Free text Recommended text size: max ~20 chars |
Poster images | اختیاری | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 Note: If a badge is provided, ensure safe space of 24 dps at both the top and bottom of the image | See Image Specifications for guidance. |
توضیحات | اختیاری | A single paragraph of text to describe the entity. Note: Either description or subtitle list will be displayed to the user, not both. | Free text Recommended text size: 180 chars |
لیست زیرنویس | اختیاری | Up to 3 subtitles, with each subtitle a single line of text. Note: Either description or subtitle list will be displayed to the user, not both. | Free text Recommended text size for each subtitle: max 50 chars |
Reservation ID | اختیاری | The reservation ID for the lodging reservation. | Free text |
Rating - Max value | اختیاری | The maximum value of the rating scale. Must be provided if current value of rating is also provided. | Number >= 0.0 |
Rating - Current value | اختیاری | The current value of the rating scale. Must be provided if maximum value of rating is also provided. | Number >= 0.0 |
Rating - Count | اختیاری | The count of the ratings for the lodging. Note: Provide this field if your app wants to control how this is displayed to the users. Provide the concise string that can be displayed to the user. For example, if the count is 1,000,000, consider using abbreviations like 1M, so that it won't be truncated on smaller display sizes. | رشته |
Rating - Count Value | اختیاری | The count of the ratings for the lodging. Note: Provide this field if you don't want to handle the display abbreviation logic yourself. If both Count and Count Value are present, we will use the Count to display to users | طولانی |
Price - CurrentPrice | Conditionally required | The current price of the lodging. Must be provided if strikethrough price is provided. | Free text |
Price - StrikethroughPrice | اختیاری | The original price of the lodging, which is be struck-through in the UI. | Free text |
Price Callout | اختیاری | Price callout to feature a promo, event, member discount, if available. | Free text Recommended text size: under 45 chars (Text that is too long may show ellipses) |
DisplayTimeWindow (Optional) - Set a time window for a content to be shown on the surface | |||
Start Timestamp | اختیاری | The epoch timestamp after which the content should be shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
End Timestamp | اختیاری | The epoch timestamp after which the content is no longer shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
TransportationReservationEntity
صفت | مورد نیاز | توضیحات | قالب |
---|---|---|---|
Action Uri | مورد نیاز | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. Refer to this FAQ | اوری |
عنوان | مورد نیاز | Title of the entity. | متن رایگان. For example, "SFO to SAN" Recommended text size: Max 50 chars |
نوع حمل و نقل | مورد نیاز | The mode/type of transportation for the reservation. | Enum: FLIGHT, TRAIN, BUS, or FERRY |
Localized Departure Time - Timestamp | مورد نیاز | The epoch timestamp that represents the departure time. | Joda-Time Instant |
Localized Departure Time - Timezone | مورد نیاز | The timezone of the departure time. | Joda-Time DateTimeZone |
Localized Arrival Time - Timestamp | مورد نیاز | The epoch timestamp that represents the arrival time. | Joda-Time Instant |
Localized Arrival Time - Timezone | مورد نیاز | The timezone of the arrival time. | Joda-Time DateTimeZone |
Transportation Number | مورد نیاز | The flight number, bus number, train number, or ferry/cruise number. | Free text |
Localized Boarding Time - Timestamp | مورد نیاز | The epoch timestamp that represents the boarding time for the reservation (if applicable) | Joda-Time Instant |
Localized Boarding Time - Timezone | مورد نیاز | The timezone of the boarding time for the reservation (if applicable) | Joda-Time DateTimeZone |
Departure Location - Country | اختیاری | The country of departure. | Free text Recommended text size: max ~20 chars |
Departure Location - City | اختیاری | The city of departure. | Free text Recommended text size: max ~20 chars |
Departure Location - Display Address | اختیاری | The location of departure that will be displayed to the user. | Free text Recommended text size: max ~20 chars |
Departure Location - Street Address | اختیاری | The street address (if applicable) of the departure location. | متن رایگان Recommended text size: max ~20 chars |
Departure Location - State | اختیاری | The state or province (if applicable) of the departure location. | Free text Recommended text size: max ~20 chars |
Departure Location - Zip code | اختیاری | The zip code (if applicable) of the departure location. | Free text Recommended text size: max ~20 chars |
Departure Location - Neighborhood | اختیاری | The neighborhood (if applicable) of the departure location. | Free text Recommended text size: max ~20 chars |
Arrival Location - Country | اختیاری | The country of arrival. | Free text Recommended text size: max ~20 chars |
Arrival Location - City | اختیاری | The city of arrival. | Free text Recommended text size: max ~20 chars |
Arrival Location - Display Address | اختیاری | The location of arrival that will be displayed to the user. | Free text Recommended text size: max ~20 chars |
Arrival Location - Street Address | اختیاری | The street address (if applicable) of the arrival location. | Free text Recommended text size: max ~20 chars |
Arrival Location - State | اختیاری | The state or province (if applicable) of the arrival location. | Free text Recommended text size: max ~20 chars |
Arrival Location - Zip code | اختیاری | The zip code (if applicable) of the arrival location. | Free text Recommended text size: max ~20 chars |
Arrival Location - Neighborhood | اختیاری | The neighborhood (if applicable) of the arrival location. | Free text Recommended text size: max ~20 chars |
Service Provider - Name | اختیاری | The name of the service provider. Note: Either text or image is required for the service provider. | متن رایگان. For example, Airline name |
Service Provider - Image | اختیاری | The logo/image of the service provider. Note: Either text or image is required for the service provider. | See Image Specifications for guidance. |
Poster images | اختیاری | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 | See Image Specifications for guidance. |
توضیحات | اختیاری | A single paragraph of text to describe the entity. Note: Either description or subtitle list will be displayed to the user, not both. | متن رایگان Recommended text size: 180 chars |
لیست زیرنویس | اختیاری | Up to 3 subtitles, with each subtitle a single line of text. Note: Either description or subtitle list will be displayed to the user, not both. | Free text Recommended text size for each subtitle: max 50 chars |
Reservation ID | اختیاری | The reservation ID for the transportation reservation. | Free text |
Price - CurrentPrice | Conditionally required | The current price of the reservation. Must be provided if strikethrough price is provided. | Free text |
Price - StrikethroughPrice | اختیاری | The original price of the reservation, which is be struck-through in the UI. | Free text |
Price Callout | اختیاری | Price callout to feature a promo, event, member discount, if available. | Free text Recommended text size: under 45 chars (Text that is too long may show ellipses) |
DisplayTimeWindow (Optional) - Set a time window for a content to be shown on the surface | |||
Start Timestamp | اختیاری | The epoch timestamp after which the content should be shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
End Timestamp | اختیاری | The epoch timestamp after which the content is no longer shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
VehicleRentalReservationEntity
صفت | مورد نیاز | توضیحات | قالب |
---|---|---|---|
Action Uri | مورد نیاز | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. Refer to this FAQ | اوری |
عنوان | مورد نیاز | Title of the entity. | متن رایگان. For example, "Avis Union Square SF" Recommended text size: Max 50 chars |
Localized Pickup Time - Timestamp | مورد نیاز | The epoch timestamp that represents the pick up time for the reservation. | Joda-Time Instant |
Localized Pickup Time - Timezone | مورد نیاز | The timezone of the pick up time for the reservation. | Joda-Time DateTimeZone |
Localized Return Time - Timestamp | اختیاری | The epoch timestamp that represents the check out time for the reservation. | Joda-Time Instant |
Localized Return Time - Timezone | اختیاری | The timezone of the check out time for the reservation. | Joda-Time DateTimeZone |
Pickup Address - Country | اختیاری | The country of the pickup location. | Free text Recommended text size: max ~20 chars |
Pickup Address - City | اختیاری | The city of the pickup location. | Free text Recommended text size: max ~20 chars |
Pickup Address - Display Address | اختیاری | The pickup location that will be displayed to the user. | Free text Recommended text size: max ~20 chars |
Pickup Address - Street Address | اختیاری | The street address (if applicable) of the pickup location. | Free text Recommended text size: max ~20 chars |
Pickup Address - State | اختیاری | The state or province (if applicable) of the pickup location. | Free text Recommended text size: max ~20 chars |
Pickup Address - Zip code | اختیاری | The zip code (if applicable) of the pickup location. | Free text Recommended text size: max ~20 chars |
Pickup Address - Neighborhood | اختیاری | The neighborhood (if applicable) of the pickup location. | متن رایگان Recommended text size: max ~20 chars |
Return Address - Country | اختیاری | The country of return location. | Free text Recommended text size: max ~20 chars |
Return Address - City | اختیاری | The city of return location. | Free text Recommended text size: max ~20 chars |
Return Address - Display Address | اختیاری | The return location that will be displayed to the user. | Free text Recommended text size: max ~20 chars |
Return Address - Street Address | اختیاری | The street address (if applicable) of the return location. | Free text Recommended text size: max ~20 chars |
Return Address - State | اختیاری | The state or province (if applicable) of the return location. | Free text Recommended text size: max ~20 chars |
Return Address - Zip code | اختیاری | The zip code (if applicable) of the return location. | Free text Recommended text size: max ~20 chars |
Return Address - Neighborhood | اختیاری | The neighborhood (if applicable) of the return location. | Free text Recommended text size: max ~20 chars |
Service Provider - Name | اختیاری | The name of the service provider. Note: Either text or image is required for the service provider. | متن رایگان. For example, "Avis Car Rental" |
Service Provider - Image | اختیاری | The logo/image of the service provider. Note: Either text or image is required for the service provider. | See Image Specifications for guidance. |
Poster images | اختیاری | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 | See Image Specifications for guidance. |
توضیحات | اختیاری | A single paragraph of text to describe the entity. Note: Either description or subtitle list will be displayed to the user, not both. | Free text Recommended text size: 180 chars |
لیست زیرنویس | اختیاری | Up to 3 subtitles, with each subtitle a single line of text. Note: Either description or subtitle list will be displayed to the user, not both. | Free text Recommended text size for each subtitle: max 50 chars |
Confirmation ID | اختیاری | The confirmation ID for the vehicle rental reservation. | Free text |
Price - CurrentPrice | Conditionally required | The current price of the reservation. Must be provided if strikethrough price is provided. | Free text |
Price - StrikethroughPrice | اختیاری | The original price of the reservation, which is be struck-through in the UI. | Free text |
Price Callout | اختیاری | Price callout to feature a promo, event, member discount, if available. | Free text Recommended text size: under 45 chars (Text that is too long may show ellipses) |
DisplayTimeWindow (Optional) - Set a time window for a content to be shown on the surface | |||
Start Timestamp | اختیاری | The epoch timestamp after which the content should be shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
End Timestamp | اختیاری | The epoch timestamp after which the content is no longer shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
مشخصات تصویر
Required specifications for image assets are listed in this table:
نسبت ابعاد | حداقل پیکسل | پیکسل های توصیه شده |
---|---|---|
Square (1x1) ترجیح داده شده است | 300x300 | 1200x1200 |
Landscape (1.91x1) | 600x314 | 1200x628 |
Portrait (4x5) | 480x600 | 960x1200 |
The images are required to be hosted on public CDNs so that Google can access them.
فرمت های فایل
PNG, JPG, static GIF, WebP
حداکثر اندازه فایل
5120 کیلوبایت
توصیه های اضافی
- Image safe area: Put your important content in the center 80% of the image.
- Use a transparent background so that the image can be properly displayed in Dark and Light theme settings.
دسته بندی محتوا
The content category allows apps to publish content belonging to multiple categories. This maps the content with some of the predefined categories namely:
-
TYPE_EDUCATION
-
TYPE_SPORTS
-
TYPE_MOVIES_AND_TV_SHOWS
-
TYPE_BOOKS
-
TYPE_AUDIOBOOKS
-
TYPE_MUSIC
-
TYPE_DIGITAL_GAMES
-
TYPE_TRAVEL_AND_LOCAL
-
TYPE_HOME_AND_AUTO
-
TYPE_BUSINESS
-
TYPE_NEWS
-
TYPE_FOOD_AND_DRINK
-
TYPE_SHOPPING
-
TYPE_HEALTH_AND_FITENESS
-
TYPE_MEDICAL
-
TYPE_PARENTING
-
TYPE_DATING
The images are required to be hosted on public CDNs so that Google can access them.
Guidelines to use the content categories
- Some entities like ArticleEntity and GenericFeaturedEntity are eligible to use any of the content categories. For other entities like EventEntity , EventReservationEntity , PointOfInterestEntity , only a subset of these categories are eligible. Check the list of categories eligible for an entity type before populating the list.
Use the specific entity type for some content categories over a combination of the Generic entities and the ContentCategory:
- TYPE_MOVIES_AND_TV_SHOWS - Check out the entities from Watch integration guide before using the generic entities.
- TYPE_BOOKS - Check out the EbookEntity before using the generic entities.
- TYPE_AUDIOBOOKS - Check out AudiobookEntity before using the generic entities.
- TYPE_SHOPPING - Check out ShoppingEntity before using the generic entities.
- TYPE_FOOD_AND_DRINK - Check out entities from Food Integration guide before using the generic entities.
The ContentCategory field is optional and should be left blank if the content doesn't belong to any of the categories mentioned earlier.
In case multiple content categories are provided, provide them in the order of relevance to the content with the most relevant content category placed first in the list.
Step 2: Provide Cluster data
It is recommended to have the content publish job executed in the background (for example, using WorkManager ) and scheduled on a regular basis or on an event basis (for example, every time the user opens the app or when the user just added something to their cart).
AppEngageTravelClient
is responsible for publishing clusters.
There are following APIs to publish clusters in the client:
-
isServiceAvailable
-
publishRecommendationClusters
-
publishFeaturedCluster
-
publishReservationCluster
-
publishContinueSearchCluster
-
publishUserAccountManagementRequest
-
updatePublishStatus
-
deleteRecommendationsClusters
-
deleteFeaturedCluster
-
deleteReservationCluster
-
deleteContinueSearchCluster
-
deleteUserManagementCluster
-
deleteClusters
isServiceAvailable
This API is used to check if the service is available for integration and whether the content can be presented on the device.
کاتلین
client.isServiceAvailable.addOnCompleteListener { task -> if (task.isSuccessful) { // Handle IPC call success if(task.result) { // Service is available on the device, proceed with content publish // calls. } else { // Service is not available, no further action is needed. } } else { // The IPC call itself fails, proceed with error handling logic here, // such as retry. } }
جاوا
client.isServiceAvailable().addOnCompleteListener(task - > { if (task.isSuccessful()) { // Handle success if(task.getResult()) { // Service is available on the device, proceed with content publish // calls. } else { // Service is not available, no further action is needed. } } else { // The IPC call itself fails, proceed with error handling logic here, // such as retry. } });
publishRecommendationClusters
This API is used to publish a list of RecommendationCluster
objects.
کاتلین
client.publishRecommendationClusters( PublishRecommendationClustersRequest.Builder() .addRecommendationCluster( RecommendationCluster.Builder() .addEntity(entity1) .addEntity(entity2) .setTitle("Top Picks For You") .build() ) .build() )
جاوا
client.publishRecommendationClusters( new PublishRecommendationClustersRequest.Builder() .addRecommendationCluster( new RecommendationCluster.Builder() .addEntity(entity1) .addEntity(entity2) .setTitle("Top Picks For You") .build()) .build());
When the service receives the request, the following actions take place within one transaction:
- Existing
RecommendationCluster
data from the developer partner is removed. - Data from the request is parsed and stored in the updated Recommendation Cluster.
In case of an error, the entire request is rejected and the existing state is maintained.
publishFeaturedCluster
This API is used to publish a list of FeaturedCluster
objects.
کاتلین
client.publishFeaturedCluster( PublishFeaturedClusterRequest.Builder() .setFeaturedCluster( FeaturedCluster.Builder() .addEntity(entity1) .addEntity(entity2) .build()) .build())
جاوا
client.publishFeaturedCluster( new PublishFeaturedClustersRequest.Builder() .addFeaturedCluster( new FeaturedCluster.Builder() .addEntity(entity1) .addEntity(entity2) .build()) .build());
When the service receives the request, the following actions take place within one transaction:
- Existing
FeaturedCluster
data from the developer partner is removed. - Data from the request is parsed and stored in the updated Featured Cluster.
In case of an error, the entire request is rejected and the existing state is maintained.
publishReservationCluster
This API is used to publish a ReservationCluster
object.
کاتلین
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());
When the service receives the request, the following actions take place within one transaction:
- Existing
ReservationCluster
data from the developer partner is removed. - Data from the request is parsed and stored in the updated Reservation Cluster.
In case of an error, the entire request is rejected and the existing state is maintained.
publishContinueSearchCluster
This API is used to publish a list of ContinueSearchCluster
objects.
کاتلین
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());
When the service receives the request, the following actions take place within one transaction:
- Existing
ContinueSearchCluster
data from the developer partner is removed. - Data from the request is parsed and stored in the updated Continue Search Cluster.
In case of an error, the entire request is rejected and the existing state is maintained.
publishUserAccountManagementRequest
This API is used to publish a Sign In card . The signin action directs users to the app's sign in page so that the app can publish content (or provide more personalized content)
The following metadata is part of the Sign In Card -
صفت | مورد نیاز | توضیحات |
---|---|---|
Action Uri | مورد نیاز | Deeplink to Action (ie navigates to app sign in page) |
تصویر | Optional - If not provided, Title must be provided | Image Shown on the Card 16x9 aspect ratio images with a resolution of 1264x712 |
عنوان | Optional - If not provided, Image must be provided | Title on the Card |
متن اقدام | اختیاری | Text Shown on the CTA (ie Sign in) |
زیرنویس | اختیاری | Optional Subtitle on the Card |
کاتلین
var SIGN_IN_CARD_ENTITY = SignInCardEntity.Builder() .addPosterImage( Image.Builder() .setImageUri(Uri.parse("http://www.x.com/image.png")) .setImageHeightInPixel(500) .setImageWidthInPixel(500) .build()) .setActionText("Sign In") .setActionUri(Uri.parse("http://xx.com/signin")) .build() client.publishUserAccountManagementRequest( PublishUserAccountManagementRequest.Builder() .setSignInCardEntity(SIGN_IN_CARD_ENTITY) .build());
جاوا
SignInCardEntity SIGN_IN_CARD_ENTITY = new SignInCardEntity.Builder() .addPosterImage( new Image.Builder() .setImageUri(Uri.parse("http://www.x.com/image.png")) .setImageHeightInPixel(500) .setImageWidthInPixel(500) .build()) .setActionText("Sign In") .setActionUri(Uri.parse("http://xx.com/signin")) .build(); client.publishUserAccountManagementRequest( new PublishUserAccountManagementRequest.Builder() .setSignInCardEntity(SIGN_IN_CARD_ENTITY) .build());
When the service receives the request, the following actions take place within one transaction:
- Existing
UserAccountManagementCluster
data from the developer partner is removed. - Data from the request is parsed and stored in the updated UserAccountManagementCluster Cluster.
In case of an error, the entire request is rejected and the existing state is maintained.
updatePublishStatus
If for any internal business reason, none of the clusters is published, we strongly recommend updating the publish status using the updatePublishStatus API. This is important because :
- Providing the status in all scenarios, even when the content is published (STATUS == PUBLISHED), is critical to populate dashboards that use this explicit status to convey the health and other metrics of your integration.
- If no content is published but the integration status isn't broken (STATUS == NOT_PUBLISHED), Google can avoid triggering alerts in the app health dashboards. It confirms that content is not published due to an expected situation from the provider's standpoint.
- It helps developers provide insights into when the data is published versus not.
- Google may use the status codes to nudge the user to do certain actions in the app so they can see the app content or overcome it.
The list of eligible publish status codes are :
// Content is published
AppEngagePublishStatusCode.PUBLISHED,
// Content is not published as user is not signed in
AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN,
// Content is not published as user is not subscribed
AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SUBSCRIPTION,
// Content is not published as user location is ineligible
AppEngagePublishStatusCode.NOT_PUBLISHED_INELIGIBLE_LOCATION,
// Content is not published as there is no eligible content
AppEngagePublishStatusCode.NOT_PUBLISHED_NO_ELIGIBLE_CONTENT,
// Content is not published as the feature is disabled by the client
// Available in v1.3.1
AppEngagePublishStatusCode.NOT_PUBLISHED_FEATURE_DISABLED_BY_CLIENT,
// Content is not published as the feature due to a client error
// Available in v1.3.1
AppEngagePublishStatusCode.NOT_PUBLISHED_CLIENT_ERROR,
// Content is not published as the feature due to a service error
// Available in v1.3.1
AppEngagePublishStatusCode.NOT_PUBLISHED_SERVICE_ERROR,
// Content is not published due to some other reason
// Reach out to engage-developers@ before using this enum.
AppEngagePublishStatusCode.NOT_PUBLISHED_OTHER
If the content is not published due to a user not logged in, Google would recommend publishing the Sign In Card. If for any reason providers are not able to publish the Sign In Card then we recommend calling the updatePublishStatus API with the status code NOT_PUBLISHED_REQUIRES_SIGN_IN
کاتلین
client.updatePublishStatus( PublishStatusRequest.Builder() .setStatusCode(AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN) .build())
جاوا
client.updatePublishStatus( new PublishStatusRequest.Builder() .setStatusCode(AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN) .build());
deleteRecommendationClusters
This API is used to delete the content of Recommendation Clusters.
کاتلین
client.deleteRecommendationClusters()
جاوا
client.deleteRecommendationClusters();
When the service receives the request, it removes the existing data from the Recommendation Clusters. In case of an error, the entire request is rejected and the existing state is maintained.
deleteFeaturedCluster
This API is used to delete the content of Featured Cluster.
کاتلین
client.deleteFeaturedCluster()
جاوا
client.deleteFeaturedCluster();
When the service receives the request, it removes the existing data from the Featured Cluster. In case of an error, the entire request is rejected and the existing state is maintained.
deleteReservationCluster
This API is used to delete the content of Reservation Cluster.
کاتلین
client.deleteReservationCluster()
جاوا
client.deleteReservationCluster();
When the service receives the request, it removes the existing data from the Reservation Cluster. In case of an error, the entire request is rejected and the existing state is maintained.
deleteUserManagementCluster
This API is used to delete the content of UserAccountManagement Cluster.
کاتلین
client.deleteUserManagementCluster()
جاوا
client.deleteUserManagementCluster();
When the service receives the request, it removes the existing data from the UserAccountManagement Cluster. In case of an error, the entire request is rejected and the existing state is maintained.
deleteContinueSearchCluster
This API is used to delete the content of Continue Search Cluster.
کاتلین
client.deleteContinueSearchCluster()
جاوا
client.deleteContinueSearchCluster();
When the service receives the request, it removes the existing data from the Continue Search Cluster. In case of an error, the entire request is rejected, and the existing state is maintained.
deleteClusters
This API is used to delete the content of a given cluster type.
کاتلین
client.deleteClusters( DeleteClustersRequest.Builder() .addClusterType(ClusterType.TYPE_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());
When the service receives the request, it removes the existing data from all clusters matching the specified cluster types. Clients can choose to pass one or many cluster types. In case of an error, the entire request is rejected and the existing state is maintained.
رسیدگی به خطا
It is highly recommended to listen to the task result from the publish APIs such that a follow-up action can be taken to recover and resubmit an successful task.
کاتلین
client.publishRecommendationClusters( PublishRecommendationClustersRequest.Builder() .addRecommendationCluster(..) .build()) .addOnCompleteListener { task -> if (task.isSuccessful) { // do something } else { val exception = task.exception if (exception is AppEngageException) { @AppEngageErrorCode val errorCode = exception.errorCode if (errorCode == AppEngageErrorCode.SERVICE_NOT_FOUND) { // do something } } } }
جاوا
client.publishRecommendationClusters( new PublishRecommendationClustersRequest.Builder() .addRecommendationCluster(...) .build()) .addOnCompleteListener( task -> { if (task.isSuccessful()) { // do something } else { Exception exception = task.getException(); if (exception instanceof AppEngageException) { @AppEngageErrorCode int errorCode = ((AppEngageException) exception).getErrorCode(); if (errorCode == AppEngageErrorCode.SERVICE_NOT_FOUND) { // do something } } } });
The error is returned as an AppEngageException
with the cause included as an error code.
کد خطا | نام خطا | توجه داشته باشید |
---|---|---|
1 | SERVICE_NOT_FOUND | The service is not available on the given device. |
2 | SERVICE_NOT_AVAILABLE | The service is available on the given device, but it is not available at the time of the call (for example, it is explicitly disabled). |
3 | SERVICE_CALL_EXECUTION_FAILURE | The task execution failed due to threading issues. In this case, it can be retried. |
4 | SERVICE_CALL_PERMISSION_DENIED | The caller is not allowed to make the service call. |
5 | SERVICE_CALL_INVALID_ARGUMENT | The request contains invalid data (for example, more than the allowed number of clusters). |
6 | SERVICE_CALL_INTERNAL | There is an error on the service side. |
7 | SERVICE_CALL_RESOURCE_EXHAUSTED | The service call is made too frequently. |
Step 3: Handle broadcast intents
In addition to making publish content API calls through a job, it is also required to set up a BroadcastReceiver
to receive the request for a content publish.
The goal of broadcast intents is mainly for app reactivation and forcing data sync. Broadcast intents are not designed to be sent very frequently. It is only triggered when the Engage Service determines the content might be stale (for example, a week old). That way, there is more confidence that the user can have a fresh content experience, even if the application has not been executed for a long period of time.
The BroadcastReceiver
must be set up in the following two ways:
- Dynamically register an instance of the
BroadcastReceiver
class usingContext.registerReceiver()
. This enables communication from applications that are still live in memory.
کاتلین
class AppEngageBroadcastReceiver : BroadcastReceiver(){ // Trigger recommendation cluster publish when PUBLISH_RECOMMENDATION broadcast // is received // Trigger featured cluster publish when PUBLISH_FEATURED broadcast is received // Trigger continue search cluster publish when PUBLISH_CONTINUE_SEARCH // broadcast is received // Trigger reservation cluster publish when PUBLISH_RESERVATION broadcast is // received } fun registerBroadcastReceivers(context: Context){ var context = context context = context.applicationContext // Register Recommendation Cluster Publish Intent context.registerReceiver(AppEngageBroadcastReceiver(), IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_RECOMMENDATION)) // Register Featured Cluster Publish Intent context.registerReceiver(AppEngageBroadcastReceiver(), IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_FEATURED)) // Register Continue Search Cluster Publish Intent context.registerReceiver(AppEngageBroadcastReceiver(), IntentFilter(com.google.android.engage.travel.service.Intents.ACTION_PUBLISH_CONTINUE_SEARCH)) // Register Reservation Cluster Publish Intent context.registerReceiver(AppEngageBroadcastReceiver(), IntentFilter(com.google.android.engage.travel.service.Intents.ACTION_PUBLISH_RESERVATION)) }
جاوا
class AppEngageBroadcastReceiver extends BroadcastReceiver { // Trigger recommendation cluster publish when PUBLISH_RECOMMENDATION broadcast // is received // Trigger featured cluster publish when PUBLISH_FEATURED broadcast is received // Trigger continue search cluster publish when PUBLISH_CONTINUE_SEARCH // broadcast is received // Trigger reservation cluster publish when PUBLISH_RESERVATION broadcast is // received } public static void registerBroadcastReceivers(Context context) { context = context.getApplicationContext(); // Register Recommendation Cluster Publish Intent context.registerReceiver(new AppEngageBroadcastReceiver(), new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_RECOMMENDATION)); // Register Featured Cluster Publish Intent context.registerReceiver(new AppEngageBroadcastReceiver(), new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_FEATURED)); // Register Continue Search Cluster Publish Intent context.registerReceiver(new AppEngageBroadcastReceiver(), new IntentFilter(com.google.android.engage.travel.service.Intents.ACTION_PUBLISH_CONTINUE_SEARCH)); // Register Reservation Cluster Publish Intent context.registerReceiver(new AppEngageBroadcastReceiver(), new IntentFilter(com.google.android.engage.travel.service.Intents.ACTION_PUBLISH_RESERVATION)); }
- Statically declare an implementation with the
<receiver>
tag in yourAndroidManifest.xml
file. This allows the application to receive broadcast intents when it is not running, and also allows the application to publish the content.
<application>
<receiver
android:name=".AppEngageBroadcastReceiver"
android: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>
The following intents is sent by the service:
-
com.google.android.engage.action.PUBLISH_RECOMMENDATION
It is recommended to start apublishRecommendationClusters
call when receiving this intent. -
com.google.android.engage.action.PUBLISH_FEATURED
It is recommended to start apublishFeaturedCluster
call when receiving this intent. -
com.google.android.engage.action.travel.PUBLISH_CONTINUE_SEARCH
It is recommended to start apublishContinueSearchCluster
call when receiving this intent. -
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.
Google is building an on-device surface that organizes users' apps by verticals and enables a new immersive experience for personalized app content consumption and discovery. This fullscreen experience provides developer partners with an opportunity to showcase their best rich content in a dedicated channel outside of their app. This guide contains instructions for developer partners to integrate their travel & events content, using the Engage SDK to populate this new surface area.
Integration detail
اصطلاحات
This integration includes the following cluster types: Recommendation , Featured , Reservation and Continue Search .
Recommendation clusters show personalized travel & event suggestions from an individual developer partner. These recommendations can be personalized to the user or generalized (for example, trending items). Use these to surface articles, events, lodging, or places of interest recommendations.
- A Recommendation cluster can be made of
ArticleEntity
,EventEntity
,LodgingEntity
,PointOfInterestEntity
, orStoreEntity
listings, but not a mix of different entity types.
Your recommendations take the following structure:
Recommendation Cluster: A UI view that contains a group of recommendations from the same developer partner.
Entity: An object representing a single item in a cluster. This integration offers some entities that would be surfaced using the Recommendation Cluster:
ArticleEntity : ArticleEntity represents a recommendation for text-based content related to travel & events. It can be used for articles, blogposts, marketing content, news snippets, etc.
Figure 1: UI showing a single ArticleEntity within Recommendations cluster. EventEntity : EventEntity represents an event happening in the future. Event start time is a critical piece of information that needs to be conveyed to the users.
Figure 2: UI showing a single EventEntity within Recommendations cluster. LodgingEntity : LodgingEntity represents an accommodation, such as a hotel, apartment, vacation home for short term and long term rental.
Figure 3: UI showing a single LodgingEntity within Recommendations cluster. StoreEntity : StoreEntity represents a store, restaurant, cafe etc. It highlights content where a dining venue or store is the critical piece of information that needs to be conveyed to the users.
Figure 4: UI showing a single StoreEntity within Recommendations cluster. PointOfInterestEntity : PointOfInterestEntity represents a place of interest like, a gas station, event venue, theme park, museum, tourist attraction, hiking trail etc. It highlights content where location is a critical piece of information that needs to be conveyed to the users. It shouldn't be used for lodging, a store or a dining venue.
Figure 5: UI showing a single PointOfInterestEntity within Recommendations cluster.
- A Recommendation cluster can be made of
The Reservation cluster shows content recently engaged by users from multiple developer partners in a single UI grouping. Each developer partner will be allowed to broadcast a maximum of 10 entities in the Reservation cluster.
Your reservation content can take the following structure:
RestaurantReservationEntity : RestaurantReservationEntity represents a reservation for a restaurant or cafe and helps users track upcoming or ongoing restaurant reservations.
Figure 6. UI showing a single RestaurantReservationEntity within a Reservation cluster. EventReservationEntity : EventReservationEntity represents a reservation for an event and helps users track upcoming or ongoing events reservations. Events could include, but not limited to the following:
- Sports events like reservation for a football match
- Gaming events like reservation for eSports
- Entertainment events like reservation for movies in a cinema, concert, theater, book signing
- Travel or point of interest reservations like guided tours, museum tickets
- Social / Seminar / Conferences reservations
- Education / Training sessions reservations
Figure 7. UI showing a single EventReservationEntity within a Reservation cluster. LodgingReservationEntity : LodgingEntityReservation represents a reservation for travel lodging and helps users track upcoming or ongoing hotel or vacation rental reservations.
Figure 8. UI showing a single LodgingReservationEntity within a Reservation cluster. TransportationReservationEntity : TransportationReservationEntity represents reservation for transportation by any mode and helps users track reservations for upcoming or ongoing flight, ferry, train, bus, ride-hailing, or cruise.
Figure 9. UI showing a single TransportationReservationEntity within a Reservation cluster. VehicleRentalReservationEntity : VehicleRentalReservationEntity represents vehicle rental reservation and helps users track upcoming or ongoing vehicle rental reservations.
Figure 10. UI showing a single VehicleRentalReservationEntity within a Reservation cluster.
The Featured cluster showcases a selection of entities from multiple developer partners in one UI grouping. There will be a single Featured cluster, which is surfaced near the top of the UI with a priority placement above all Recommendation clusters. Each developer partner will be allowed to broadcast up to 10 entities in the Featured cluster.
GenericFeaturedEntity : GenericFeaturedEntity differs from Recommendation item in that Featured item should be used for a single top content from developers and should represent the single most important content that will be interesting and relevant to users.
Figure 11: UI showing a FeaturedCluster with a list of GenericFeaturedEntity
The Continue Search cluster helps users resume their previous travel search journey by showcasing a list of search queries that the user has recently searched for across all their travel apps. The cluster will be pinned in second position, after reservations and before featured and recommendation clusters. Each developer partner will be allowed to broadcast up to 3 entities in the Continue Search cluster.
- PointOfInterestEntity: PointOfInterestEntity represents a place of interest like, a gas station, event venue, theme park, museum, tourist attraction, hiking trail etc. It highlights content the user has previously searched for.
قبل از کار
Minimum API level: 19
Add the com.google.android.engage:engage-core
library to your app:
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'
}
خلاصه
The design is based on an implementation of a bound service .
The data a client can publish is subject to the following limits for different cluster types:
نوع خوشه | محدودیت های خوشه ای | Minimum entity limits in a cluster | Maximum entity limits in a cluster |
---|---|---|---|
Recommendation Cluster(s) | At most 7 | حداقل 1 | At most 50 ( ArticleEntity , EventEntity , LodgingEntity , StoreEntity , or PointOfInterestEntity ) |
Reservation Cluster | At most 1 | حداقل 1 | At most 20 ( RestaurantReservationEntity , EventReservationEntity , LodgingReservationEntity , TransportationReservationEntity , or VehicleRentalReservationEntity ) |
Featured Cluster | At most 1 | حداقل 1 | At most 20 ( GenericFeaturedEntity ) |
Continue Search Cluster | At most 1 | حداقل 1 | At most 3 ( PointOfInterestEntity ) |
Step 1: Provide entity data
The SDK has defined different entities to represent each item type. We support the following entities for the Travel & Events category:
-
GenericFeaturedEntity
-
ArticleEntity
-
EventEntity
-
LodgingEntity
-
StoreEntity
-
PointOfInterestEntity
-
RestaurantReservationEntity
-
EventReservationEntity
-
LodgingReservationEntity
-
TransportationReservationEntity
-
VehicleRentalReservationEntity
The charts below outline available attributes and requirements for each type.
GenericFeaturedEntity
صفت | مورد نیاز | توضیحات | قالب |
---|---|---|---|
Action Uri | مورد نیاز | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. Refer to this FAQ | اوری |
Poster images | مورد نیاز | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 Note: If a badge is provided, ensure safe space of 24 dps at both the top and bottom of the image | See Image Specifications for guidance. |
عنوان | اختیاری | Title of the entity. | متن رایگان Recommended text size: 50 chars |
توضیحات | اختیاری | A single paragraph of text to describe the entity. Note: Either description or subtitle list will be displayed to the user, not both. | Free text Recommended text size: 180 chars |
لیست زیرنویس | اختیاری | Up to 3 subtitles, with each subtitle a single line of text. Note: Either description or subtitle list will be displayed to the user, not both. | Free text Recommended text size for each subtitle: max 50 chars |
نشان ها | اختیاری | Each badge is either free text (max 15 chars) or small image. Special UX treatment on top of image/video, For example, as badge overlay on the image
| |
Badge - Text | اختیاری | Title for the badge Note: Either text or image is required for the badge | Free text Recommended text size: max 15 chars |
Badge - Image | اختیاری | تصویر کوچک Special UX treatment, for example as badge overlay on the image/video thumbnail. Note: Either text or image is required for the badge | See Image Specifications for guidance. |
دسته بندی های محتوا | اختیاری | Describe the category of the content in the entity. | List of Enums See the Content Category section for guidance. |
DisplayTimeWindow (Optional) - Set a time window for a content to be shown on the surface | |||
Start Timestamp | اختیاری | The epoch timestamp after which the content should be shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
End Timestamp | اختیاری | The epoch timestamp after which the content is no longer shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
ArticleEntity
صفت | مورد نیاز | توضیحات | قالب |
---|---|---|---|
Action Uri | مورد نیاز | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. Refer to this FAQ | اوری |
عنوان | مورد نیاز | Title of the entity. | Free text Recommended text size: Max 50 chars |
Poster images | اختیاری | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 Note: Image is highly recommended. If a badge is provided, ensure safe space of 24 dps at both the top and bottom of the image | See Image Specifications for guidance. |
Source - Title | اختیاری | The name of the author, organization, or reporter | Free text Recommended text size: Under 25 chars |
Source - Image | اختیاری | An image of the source like the author, the organization, reporter | See Image Specifications for guidance. |
توضیحات | اختیاری | A single paragraph of text to describe the entity. Note: Either description or subtitle list will be displayed to the user, not both. | Free text Recommended text size: 180 chars |
لیست زیرنویس | اختیاری | Up to 3 subtitles, with each subtitle a single line of text. Note: Either description or subtitle list will be displayed to the user, not both. | Free text Recommended text size for each subtitle: max 50 chars |
نشان ها | اختیاری | Each badge is either free text (max 15 chars) or small image. Special UX treatment on top of image/video, for example, as badge overlay on the image
| |
Badge - Text | اختیاری | Title for the badge Note: Either text or image is required for the badge | Free text Recommended text size: max 15 chars |
Badge - Image | اختیاری | تصویر کوچک Special UX treatment, for example as badge overlay on the image/video thumbnail. Note: Either text or image is required for the badge | See Image Specifications for guidance. |
Content Publish Time | اختیاری | This is the epoch timestamp in milliseconds on when the content was published / updated in the app. | Epoch timestamp in milliseconds |
Last Engagement Time | Conditionally required | The epoch timestamp in milliseconds when the user interacted with this entity last time. Note: This field is required if this entity is part of the reservation cluster. | Epoch timestamp in milliseconds |
Progress Percentage | Conditionally required | The percentage of the full content consumed by the user to date. Note: This field is required if this entity is part of the reservation cluster. | An int value between 0~100 inclusive. |
دسته بندی های محتوا | اختیاری | Describe the category of the content in the entity. | List of Enums See the Content Category section for guidance. |
DisplayTimeWindow (Optional) - Set a time window for a content to be shown on the surface | |||
Start Timestamp | اختیاری | The epoch timestamp after which the content should be shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
End Timestamp | اختیاری | The epoch timestamp after which the content is no longer shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
EventEntity
صفت | مورد نیاز | توضیحات | قالب |
---|---|---|---|
Action Uri | مورد نیاز | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. Refer to this FAQ | اوری |
عنوان | مورد نیاز | Title of the entity. | رشته Recommended text size: Max 50 chars |
Localized Start time - Timestamp | مورد نیاز | The epoch timestamp when the event is expected to start. | Joda-Time Instant |
Localized Start time - Timezone | مورد نیاز | The timezone in which the event is expected to start. | Joda-Time DateTimeZone |
Event mode | مورد نیاز | A field to indicate whether the event will be virtual, in-person or both. | Enum: VIRTUAL, IN_PERSON, or HYBRID |
Poster images | مورد نیاز | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 Note: Image is highly recommended. If a badge is provided, ensure safe space of 24 dps at both the top and bottom of the image | See Image Specifications for guidance. |
Location - Country | Conditionally required | The country in which the event is happening. Note: This is required for events which are IN_PERSON or HYBRID | Free text Recommended text size: max ~20 chars |
Location - City | Conditionally required | The city in which the event is happening. Note: This is required for events which are IN_PERSON or HYBRID | Free text Recommended text size: max ~20 chars |
Location - Display Address | Conditionally required | The address or venue name where the event will take place that should be displayed to the user. Note: This is required for events which are IN_PERSON or HYBRID | Free text Recommended text size: max ~20 chars |
Location - Street Address | اختیاری | The street address (if applicable) of the location at which event is being hosted. | Free text Recommended text size: max ~20 chars |
Location - State | اختیاری | The state or province (if applicable) in which the event is being hosted. | متن رایگان Recommended text size: max ~20 chars |
Location - Zip code | اختیاری | The zip code (if applicable) of the location in which the event is being hosted. | Free text Recommended text size: max ~20 chars |
Location - Neighborhood | اختیاری | The neighborhood (if applicable) in which the event is being hosted. | Free text Recommended text size: max ~20 chars |
زمان پایان | اختیاری | The epoch timestamp when the event is expected to end. Note: This will be represented in milliseconds. | Epoch timestamp in milliseconds |
توضیحات | اختیاری | A single paragraph of text to describe the entity. Note: Either description or subtitle list will be displayed to the user, not both. | Free text Recommended text size: 180 chars |
لیست زیرنویس | اختیاری | Up to 3 subtitles, with each subtitle a single line of text. Note: Either description or subtitle list will be displayed to the user, not both. | Free text Recommended text size for each subtitle: max 50 chars |
نشان ها | اختیاری | Each badge is either free text (max 15 chars) or small image. | |
Badge - Text | اختیاری | Title for the badge Note: Either text or image is required for the badge | Free text Recommended text size: max 15 chars |
Badge - Image | اختیاری | تصویر کوچک Special UX treatment, for example as badge overlay on the image/video thumbnail. Note: Either text or image is required for the badge | See Image Specifications for guidance. |
Price - CurrentPrice | Conditionally required | The current price of the ticket/pass for the event. Must be provided if strikethrough price is provided. | Free text |
Price - StrikethroughPrice | اختیاری | The original price of the ticket/pass for the event. | Free text |
Price Callout | اختیاری | Price callout to feature a promo, event, member discount, if available. | Free text Recommended text size: under 45 chars (Text that is too long may show ellipses) |
دسته بندی های محتوا | اختیاری | Describe the category of the content in the entity. | List of Eligible Enums
See the Content Category section for guidance. |
DisplayTimeWindow (Optional) - Set a time window for a content to be shown on the surface | |||
Start Timestamp | اختیاری | The epoch timestamp after which the content should be shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
End Timestamp | اختیاری | The epoch timestamp after which the content is no longer shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
LodgingEntity
صفت | مورد نیاز | توضیحات | قالب |
---|---|---|---|
Action Uri | مورد نیاز | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. Refer to this FAQ | اوری |
عنوان | مورد نیاز | Title of the entity. | رشته Recommended text size: Max 50 chars |
Poster images | مورد نیاز | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 Note: If a badge is provided, ensure safe space of 24 dps at both the top and bottom of the image | See Image Specifications for guidance. |
Location - Country | مورد نیاز | The country in which the lodging is happening. | Free text Recommended text size: max ~20 chars |
Location - City | مورد نیاز | The city in which the lodging is happening. | Free text Recommended text size: max ~20 chars |
Location - Display Address | مورد نیاز | The address that will be displayed to the user. We recommend including the city name and possibly state or country for most use cases. Only include the street address or neighborhood if the user is near the location, the user is familiar with the location, or the city is included in the cluster title. If you include the street address, provide a succinct address, using abbreviations where possible (for example, "St" for "Street", "Ave" for "Avenue"). | متن رایگان Recommended text size: max ~20 chars |
Location - Street Address | اختیاری | The street address (if applicable) of the lodging. | Free text Recommended text size: max ~20 chars |
Location - State | اختیاری | The state or province (if applicable) in which the lodging is located. | Free text Recommended text size: max ~20 chars |
Location - Zip code | اختیاری | The zip code (if applicable) of the lodging. | Free text Recommended text size: max ~20 chars |
Location - Neighborhood | اختیاری | The neighborhood (if applicable) of the lodging. | Free text Recommended text size: max ~20 chars |
نشان ها | اختیاری | Each badge is either free text (max 15 chars) or small image. | |
Badge - Text | اختیاری | Title for the badge Note: Either text or image is required for the badge | Free text Recommended text size: max 15 chars |
Badge - Image | اختیاری | تصویر کوچک Special UX treatment, for example as badge overlay on the image/video thumbnail. Note: Either text or image is required for the badge | See Image Specifications for guidance. |
توضیحات | اختیاری | A single paragraph of text to describe the entity. Note: Either description or subtitle list will be displayed to the user, not both. | Free text Recommended text size: 180 chars |
لیست زیرنویس | اختیاری | Up to 3 subtitles, with each subtitle a single line of text. Note: Either description or subtitle list will be displayed to the user, not both. | Free text Recommended text size for each subtitle: max 50 chars |
AvailabilityTimeWindow - Localized Start Time - Timestamp | اختیاری | The epoch timestamp when the lodging is expected to be open/available. | Joda-Time Instant |
AvailabilityTimeWindow - Localized Start Time - Timezone | اختیاری | The timezone in which the lodging is expected to be open/available. | Joda-Time DateTimeZone |
AvailabilityTimeWindow - Localized End Time - Timestamp | اختیاری | The epoch timestamp until which the lodging is expected to be open/available. | Joda-Time Instant |
AvailabilityTimeWindow - Localized End Time - Timezone | اختیاری | The timezone in which the lodging is expected to be open/available. | Joda-Time DateTimeZone |
Rating - Max value | اختیاری | The maximum value of the rating scale. Must be provided if current value of rating is also provided. | Number >= 0.0 |
Rating - Current value | اختیاری | The current value of the rating scale. Must be provided if maximum value of rating is also provided. | Number >= 0.0 |
Rating - Count | اختیاری | The count of the ratings for the lodging. Note: Provide this field if your app wants to control how this is displayed to the users. Provide the concise string that can be displayed to the user. For example, if the count is 1,000,000, consider using abbreviations like 1M, so that it won't be truncated on smaller display sizes. | رشته |
Rating - Count Value | اختیاری | The count of the ratings for the lodging. Note: Provide this field if you don't want to handle the display abbreviation logic yourself. If both Count and Count Value are present, we will use the Count to display to users | طولانی |
Price - CurrentPrice | Conditionally required | The current price of the lodging. Must be provided if strikethrough price is provided. | Free text |
Price - StrikethroughPrice | اختیاری | The original price of the lodging, which is be struck-through in the UI. | Free text |
Price Callout | اختیاری | Price callout to feature a promo, event, member discount, if available. | Free text Recommended text size: under 45 chars (Text that is too long may show ellipses) |
DisplayTimeWindow (Optional) - Set a time window for a content to be shown on the surface | |||
Start Timestamp | اختیاری | The epoch timestamp after which the content should be shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
End Timestamp | اختیاری | The epoch timestamp after which the content is no longer shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
StoreEntity
The StoreEntity
object represents an individual store that developer partners want to publish, such as a popular dining place or eatery that are relevant to one's travel experience.
صفت | مورد نیاز | توضیحات | قالب |
---|---|---|---|
Poster images | مورد نیاز | At least one image must be provided. | See Image Specifications for guidance. |
Action Uri | مورد نیاز | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. Refer to this FAQ | اوری |
عنوان | اختیاری | The name of the store. | Free text Recommended text size: under 45 chars (Text that is too long may show ellipses) |
مکان | اختیاری | The location of the store. | Free text Recommended text size: under 45 chars (Text that is too long may show ellipses) |
فراخوانی | اختیاری | Callout to feature a promo, event, or update for the store, if available. | Free text Recommended text size: under 45 chars (Text that is too long may show ellipses) |
Callout fine print | اختیاری | Fine print text for the callout. | Free text Recommended text size: under 45 chars (Text that is too long may show ellipses) |
توضیحات | اختیاری | A description of the store. | متن رایگان Recommended text size: under 90 chars (Text that is too long may show ellipses) |
دسته بندی | اختیاری | Category of a store, in the context of dining places, it can be cuisine like "french", "new american", "ramen", "fine dining". | Free text Recommended text size: under 45 chars (Text that is too long may show ellipses) |
Rating - Max value | اختیاری | The maximum value of the rating scale. Must be provided if current value of rating is also provided. | Number >= 0.0 |
Rating - Current value | اختیاری | The current value of the rating scale. Must be provided if maximum value of rating is also provided. | Number >= 0.0 |
Rating - Count | اختیاری | The count of the ratings for the lodging. Note: Provide this field if your app wants to control how this is displayed to the users. Provide the concise string that can be displayed to the user. For example, if the count is 1,000,000, consider using abbreviations like 1M, so that it won't be truncated on smaller display sizes. | رشته |
Rating - Count Value | اختیاری | The count of the ratings for the lodging. Note: Provide this field if you don't want to handle the display abbreviation logic yourself. If both Count and Count Value are present, we will use the Count to display to users | طولانی |
DisplayTimeWindow (Optional) - Set a time window for a content to be shown on the surface | |||
Start Timestamp | اختیاری | The epoch timestamp after which the content should be shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
End Timestamp | اختیاری | The epoch timestamp after which the content is no longer shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
PointOfInterestEntity
صفت | مورد نیاز | توضیحات | قالب |
---|---|---|---|
Action Uri | مورد نیاز | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. Refer to this FAQ | اوری |
عنوان | مورد نیاز | Title of the entity. | رشته Recommended text size: Max 50 chars |
Poster images | Conditionally required | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 Note: Image is required if the entity is part of recommendation cluster. If a badge is provided, ensure safe space of 24 dps at both the top and bottom of the image | See Image Specifications for guidance. |
Last Engagement Time | Conditionally required | The epoch timestamp when the user last interacted with this entity. Note: This field is required if the entity is part of continue search cluster. | Joda-Time Instant |
Location - Country | Conditionally required | The country in which the point of interest is happening. Note: This field is required if the entity is part of recommendation cluster. | Free text Recommended text size: max ~20 chars |
Location - City | Conditionally required | The city in which the point of interest is happening. Note: This field is required if the entity is part of recommendation cluster. | Free text Recommended text size: max ~20 chars |
Location - Display Address | Conditionally required | The address that will be displayed to the user. Provide a succinct address, using abbreviations where possible (for example, "St" for "Street", "Ave" for "Avenue"). This string may be truncated depending on the user's device and settings. Include the city name for clear identification. Note: This field is required if the entity is part of recommendation cluster. | Free text Recommended text size: max ~35 chars |
Location - Street Address | اختیاری | The street address (if applicable) of the point of interest. | Free text Recommended text size: max ~20 chars |
Location - State | اختیاری | The state or province (if applicable) in which the point of interest is located. | Free text Recommended text size: max ~20 chars |
Location - Zip code | اختیاری | The zip code (if applicable) of the point of interest. | Free text Recommended text size: max ~20 chars |
Location - Neighborhood | اختیاری | The neighborhood (if applicable) of the point of interest. | Free text Recommended text size: max ~20 chars |
AvailabilityTimeWindow - Localized Start Time - Timestamp | اختیاری | The epoch timestamp when the point of interest is expected to be open/available. | Joda-Time Instant |
AvailabilityTimeWindow - Localized Start Time - Timezone | اختیاری | The timezone in which the point of interest is expected to be open/available. | Joda-Time DateTimeZone |
AvailabilityTimeWindow - Localized End Time - Timestamp | اختیاری | The epoch timestamp until which the point of interest is expected to be open/available. | Joda-Time Instant |
AvailabilityTimeWindow - Localized End Time - Timezone | اختیاری | The timezone in which the point of interest is expected to be open/available. | Joda-Time DateTimeZone |
نشان ها | اختیاری | Each badge is either free text (max 15 chars) or small image. | |
Badge - Text | اختیاری | Title for the badge Note: Either text or image is required for the badge | متن رایگان Recommended text size: max 15 chars |
Badge - Image | اختیاری | تصویر کوچک Special UX treatment, for example as badge overlay on the image/video thumbnail. Note: Either text or image is required for the badge | See Image Specifications for guidance. |
توضیحات | اختیاری | A single paragraph of text to describe the entity. Note: Either description or subtitle list will be displayed to the user, not both. | Free text Recommended text size: 180 chars |
لیست زیرنویس | اختیاری | Up to 3 subtitles, with each subtitle a single line of text. Note: Either description or subtitle list will be displayed to the user, not both. | Free text Recommended text size for each subtitle: max 50 chars |
Rating - Max value | اختیاری | The maximum value of the rating scale. Must be provided if current value of rating is also provided. | Number >= 0.0 |
Rating - Current value | اختیاری | The current value of the rating scale. Must be provided if maximum value of rating is also provided. | Number >= 0.0 |
Rating - Count | اختیاری | The count of the ratings for the point of interest. Note: Provide this field if your app wants to control how this is displayed to the users. Provide the concise string that can be displayed to the user. For example, if the count is 1,000,000, consider using abbreviations like 1M, so that it won't be truncated on smaller display sizes. | رشته |
Rating - Count Value | اختیاری | The count of the ratings for the point of interest. Note: Provide this field if you don't want to handle the display abbreviation logic yourself. If both Count and Count Value are present, we will use the Count to display to users | طولانی |
Price - CurrentPrice | Conditionally required | The current price of the tickets/entry pass for the point of interest. Must be provided if strikethrough price is provided. | Free text |
Price - StrikethroughPrice | اختیاری | The original price of the tickets/entry pass for the point of interest. | Free text |
Price Callout | اختیاری | Price callout to feature a promo, event, member discount, if available. | Free text Recommended text size: under 45 chars (Text that is too long may show ellipses) |
دسته بندی های محتوا | اختیاری | Describe the category of the content in the entity. | List of Eligible Enums
See the Content Category section for guidance. |
DisplayTimeWindow (Optional) - Set a time window for a content to be shown on the surface | |||
Start Timestamp | اختیاری | The epoch timestamp after which the content should be shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
End Timestamp | اختیاری | The epoch timestamp after which the content is no longer shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
RestaurantReservationEntity
صفت | مورد نیاز | توضیحات | قالب |
---|---|---|---|
Action Uri | مورد نیاز | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. Refer to this FAQ | اوری |
عنوان | مورد نیاز | Title of the entity. | رشته Recommended text size: Max 50 chars |
Localized Reservation Start Time - Timestamp | مورد نیاز | The epoch timestamp when the reservation is expected to start. | Joda-Time Instant |
Localized Reservation Start Time - Timezone | مورد نیاز | The timezone in which the reservation is expected to start. | Joda-Time DateTimeZone |
Location - Country | مورد نیاز | The country in which the restaurant is happening. | Free text Recommended text size: max ~20 chars |
Location - City | مورد نیاز | The city in which the restaurant is happening. | Free text Recommended text size: max ~20 chars |
Location - Display Address | مورد نیاز | The address of the prestaurant that will be displayed to the user. | متن رایگان Recommended text size: max ~20 chars |
Location - Street Address | اختیاری | The street address (if applicable) of the restaurant. | Free text Recommended text size: max ~20 chars |
Location - State | اختیاری | The state or province (if applicable) in which the restaurant is located. | Free text Recommended text size: max ~20 chars |
Location - Zip code | اختیاری | The zip code (if applicable) of the restaurant. | Free text Recommended text size: max ~20 chars |
Location - Neighborhood | اختیاری | The neighborhood (if applicable) of the restaurant. | Free text Recommended text size: max ~20 chars |
Poster images | اختیاری | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 | See Image Specifications for guidance. |
توضیحات | اختیاری | A single paragraph of text to describe the entity. Note: Either description or subtitle list will be displayed to the user, not both. | متن رایگان Recommended text size: 180 chars |
لیست زیرنویس | اختیاری | Up to 3 subtitles, with each subtitle a single line of text. Note: Either description or subtitle list will be displayed to the user, not both. | Free text Recommended text size for each subtitle: max 50 chars |
اندازه جدول | اختیاری | The number of people in the reservation group | Integer > 0 |
DisplayTimeWindow (Optional) - Set a time window for a content to be shown on the surface | |||
Start Timestamp | اختیاری | The epoch timestamp after which the content should be shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
End Timestamp | اختیاری | The epoch timestamp after which the content is no longer shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
EventReservationEntity
صفت | مورد نیاز | توضیحات | قالب |
---|---|---|---|
Action Uri | مورد نیاز | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. Refer to this FAQ | اوری |
عنوان | مورد نیاز | Title of the entity. | رشته Recommended text size: Max 50 chars |
Localized Start time - Timestamp | مورد نیاز | The epoch timestamp when the event is expected to start. | Joda-Time Instant |
Localized Start time - Timezone | مورد نیاز | The timezone in which the event is expected to start. | Joda-Time DateTimeZone |
Event mode | مورد نیاز | A field to indicate whether the event will be virtual, in-person or both. | Enum: VIRTUAL, IN_PERSON, or HYBRID |
Location - Country | Conditionally required | The country in which the event is happening. Note: This is required for events which are IN_PERSON or HYBRID | Free text Recommended text size: max ~20 chars |
Location - City | Conditionally required | The city in which the event is happening. Note: This is required for events which are IN_PERSON or HYBRID | Free text Recommended text size: max ~20 chars |
Location - Display Address | Conditionally required | The address or venue name where the event will take place that should be displayed to the user. Note: This is required for events which are IN_PERSON or HYBRID | Free text Recommended text size: max ~20 chars |
Location - Street Address | اختیاری | The street address (if applicable) of the location at which event is being hosted. | Free text Recommended text size: max ~20 chars |
Location - State | اختیاری | The state or province (if applicable) in which the event is being hosted. | Free text Recommended text size: max ~20 chars |
Location - Zip code | اختیاری | The zip code (if applicable) of the location in which the event is being hosted. | Free text Recommended text size: max ~20 chars |
Location - Neighborhood | اختیاری | The neighborhood (if applicable) in which the event is being hosted. | Free text Recommended text size: max ~20 chars |
Poster images | اختیاری | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 Note: Image is highly recommended. If a badge is provided, ensure safe space of 24 dps at both the top and bottom of the image | See Image Specifications for guidance. |
Localized End time - Timestamp | اختیاری | The epoch timestamp when the event is expected to end. | Joda-Time Instant |
Localized End time - Timezone | اختیاری | The timezone in which the event is expected to end. | Joda-Time DateTimeZone |
Service Provider - Name | اختیاری | The name of the service provider. Note: Either text or image is required for the service provider. | متن رایگان. For example, name of the event organizer/tour |
Service Provider - Image | اختیاری | The logo/image of the service provider. Note: Either text or image is required for the service provider. | See Image Specifications for guidance. |
توضیحات | اختیاری | A single paragraph of text to describe the entity. Note: Either description or subtitle list will be displayed to the user, not both. | متن رایگان Recommended text size: 180 chars |
لیست زیرنویس | اختیاری | Up to 3 subtitles, with each subtitle a single line of text. Note: Either description or subtitle list will be displayed to the user, not both. | Free text Recommended text size for each subtitle: max 50 chars |
نشان ها | اختیاری | Each badge is either free text (max 15 chars) or small image. | |
Badge - Text | اختیاری | Title for the badge Note: Either text or image is required for the badge | Free text Recommended text size: max 15 chars |
Badge - Image | اختیاری | تصویر کوچک Special UX treatment, for example as badge overlay on the image/video thumbnail. Note: Either text or image is required for the badge | See Image Specifications for guidance. |
Reservation ID | اختیاری | The reservation ID for the event reservation. | Free text |
Price - CurrentPrice | Conditionally required | The current price of the ticket/pass for the event. Must be provided if strikethrough price is provided. | Free text |
Price - StrikethroughPrice | اختیاری | The original price of the ticket/pass for the event. | Free text |
Price Callout | اختیاری | Price callout to feature a promo, event, member discount, if available. | Free text Recommended text size: under 45 chars (Text that is too long may show ellipses) |
Rating - Max value | اختیاری | The maximum value of the rating scale. Must be provided if current value of rating is also provided. | Number >= 0.0 |
Rating - Current value | اختیاری | The current value of the rating scale. Must be provided if maximum value of rating is also provided. | Number >= 0.0 |
Rating - Count | اختیاری | The count of the ratings for the event. Note: Provide this field if your app wants to control how this is displayed to the users. Provide the concise string that can be displayed to the user. For example, if the count is 1,000,000, consider using abbreviations like 1M, so that it won't be truncated on smaller display sizes. | رشته |
Rating - Count Value | اختیاری | The count of the ratings for the event. Note: Provide this field if you don't want to handle the display abbreviation logic yourself. If both Count and Count Value are present, we will use the Count to display to users | طولانی |
دسته بندی های محتوا | اختیاری | Describe the category of the content in the entity. | List of Eligible Enums
See the Content Category section for guidance. |
DisplayTimeWindow (Optional) - Set a time window for a content to be shown on the surface | |||
Start Timestamp | اختیاری | The epoch timestamp after which the content should be shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
End Timestamp | اختیاری | The epoch timestamp after which the content is no longer shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
LodgingReservationEntity
صفت | مورد نیاز | توضیحات | قالب |
---|---|---|---|
Action Uri | مورد نیاز | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. Refer to this FAQ | اوری |
عنوان | مورد نیاز | Title of the entity. | متن رایگان. For example, "Your Stay from Dec 12th" Recommended text size: Max 50 chars |
Localized Check-in Time - Timestamp | مورد نیاز | The epoch timestamp that represents the check in time for the reservation. | Joda-Time Instant |
Localized Check-in Time - Timezone | مورد نیاز | The timezone in which the check in time exists for the reservation. | Joda-Time Instant |
Localized Check-out Time - Timestamp | مورد نیاز | The epoch timestamp that represents the check out time for the reservation. | Joda-Time Instant |
Localized Check-out Time - Timezone | مورد نیاز | The timezone in which the check out time exists for the reservation. | Joda-Time DateTimeZone |
Location - Country | مورد نیاز | The country in which the lodging is located. | متن رایگان Recommended text size: max ~20 chars |
Location - City | مورد نیاز | The city in which the lodging is located. | Free text Recommended text size: max ~20 chars |
Location - Display Address | مورد نیاز | The address that will be displayed to the user. Provide a succinct address, using abbreviations where possible (for example, "St" for "Street", "Ave" for "Avenue"). This string may be truncated depending on the user's device and settings. Include the city name for clear identification. | Free text Recommended text size: max ~35 chars |
Location - Street Address | اختیاری | The street address (if applicable) of the lodging. | Free text Recommended text size: max ~20 chars |
Location - State | اختیاری | The state or province (if applicable) in which the lodging is located. | Free text Recommended text size: max ~20 chars |
Location - Zip code | اختیاری | The zip code (if applicable) of the lodging. | Free text Recommended text size: max ~20 chars |
Location - Neighborhood | اختیاری | The neighborhood (if applicable) of the lodging. | Free text Recommended text size: max ~20 chars |
Poster images | اختیاری | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 Note: If a badge is provided, ensure safe space of 24 dps at both the top and bottom of the image | See Image Specifications for guidance. |
توضیحات | اختیاری | A single paragraph of text to describe the entity. Note: Either description or subtitle list will be displayed to the user, not both. | Free text Recommended text size: 180 chars |
لیست زیرنویس | اختیاری | Up to 3 subtitles, with each subtitle a single line of text. Note: Either description or subtitle list will be displayed to the user, not both. | متن رایگان Recommended text size for each subtitle: max 50 chars |
Reservation ID | اختیاری | The reservation ID for the lodging reservation. | Free text |
Rating - Max value | اختیاری | The maximum value of the rating scale. Must be provided if current value of rating is also provided. | Number >= 0.0 |
Rating - Current value | اختیاری | The current value of the rating scale. Must be provided if maximum value of rating is also provided. | Number >= 0.0 |
Rating - Count | اختیاری | The count of the ratings for the lodging. Note: Provide this field if your app wants to control how this is displayed to the users. Provide the concise string that can be displayed to the user. For example, if the count is 1,000,000, consider using abbreviations like 1M, so that it won't be truncated on smaller display sizes. | رشته |
Rating - Count Value | اختیاری | The count of the ratings for the lodging. Note: Provide this field if you don't want to handle the display abbreviation logic yourself. If both Count and Count Value are present, we will use the Count to display to users | طولانی |
Price - CurrentPrice | Conditionally required | The current price of the lodging. Must be provided if strikethrough price is provided. | Free text |
Price - StrikethroughPrice | اختیاری | The original price of the lodging, which is be struck-through in the UI. | Free text |
Price Callout | اختیاری | Price callout to feature a promo, event, member discount, if available. | Free text Recommended text size: under 45 chars (Text that is too long may show ellipses) |
DisplayTimeWindow (Optional) - Set a time window for a content to be shown on the surface | |||
Start Timestamp | اختیاری | The epoch timestamp after which the content should be shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
End Timestamp | اختیاری | The epoch timestamp after which the content is no longer shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
TransportationReservationEntity
صفت | مورد نیاز | توضیحات | قالب |
---|---|---|---|
Action Uri | مورد نیاز | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. Refer to this FAQ | اوری |
عنوان | مورد نیاز | Title of the entity. | متن رایگان. For example, "SFO to SAN" Recommended text size: Max 50 chars |
نوع حمل و نقل | مورد نیاز | The mode/type of transportation for the reservation. | Enum: FLIGHT, TRAIN, BUS, or FERRY |
Localized Departure Time - Timestamp | مورد نیاز | The epoch timestamp that represents the departure time. | Joda-Time Instant |
Localized Departure Time - Timezone | مورد نیاز | The timezone of the departure time. | Joda-Time DateTimeZone |
Localized Arrival Time - Timestamp | مورد نیاز | The epoch timestamp that represents the arrival time. | Joda-Time Instant |
Localized Arrival Time - Timezone | مورد نیاز | The timezone of the arrival time. | Joda-Time DateTimeZone |
Transportation Number | مورد نیاز | The flight number, bus number, train number, or ferry/cruise number. | Free text |
Localized Boarding Time - Timestamp | مورد نیاز | The epoch timestamp that represents the boarding time for the reservation (if applicable) | Joda-Time Instant |
Localized Boarding Time - Timezone | مورد نیاز | The timezone of the boarding time for the reservation (if applicable) | Joda-Time DateTimeZone |
Departure Location - Country | اختیاری | The country of departure. | Free text Recommended text size: max ~20 chars |
Departure Location - City | اختیاری | The city of departure. | متن رایگان Recommended text size: max ~20 chars |
Departure Location - Display Address | اختیاری | The location of departure that will be displayed to the user. | Free text Recommended text size: max ~20 chars |
Departure Location - Street Address | اختیاری | The street address (if applicable) of the departure location. | Free text Recommended text size: max ~20 chars |
Departure Location - State | اختیاری | The state or province (if applicable) of the departure location. | Free text Recommended text size: max ~20 chars |
Departure Location - Zip code | اختیاری | The zip code (if applicable) of the departure location. | Free text Recommended text size: max ~20 chars |
Departure Location - Neighborhood | اختیاری | The neighborhood (if applicable) of the departure location. | Free text Recommended text size: max ~20 chars |
Arrival Location - Country | اختیاری | The country of arrival. | Free text Recommended text size: max ~20 chars |
Arrival Location - City | اختیاری | The city of arrival. | Free text Recommended text size: max ~20 chars |
Arrival Location - Display Address | اختیاری | The location of arrival that will be displayed to the user. | Free text Recommended text size: max ~20 chars |
Arrival Location - Street Address | اختیاری | The street address (if applicable) of the arrival location. | متن رایگان Recommended text size: max ~20 chars |
Arrival Location - State | اختیاری | The state or province (if applicable) of the arrival location. | Free text Recommended text size: max ~20 chars |
Arrival Location - Zip code | اختیاری | The zip code (if applicable) of the arrival location. | Free text Recommended text size: max ~20 chars |
Arrival Location - Neighborhood | اختیاری | The neighborhood (if applicable) of the arrival location. | Free text Recommended text size: max ~20 chars |
Service Provider - Name | اختیاری | The name of the service provider. Note: Either text or image is required for the service provider. | متن رایگان. For example, Airline name |
Service Provider - Image | اختیاری | The logo/image of the service provider. Note: Either text or image is required for the service provider. | See Image Specifications for guidance. |
Poster images | اختیاری | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 | See Image Specifications for guidance. |
توضیحات | اختیاری | A single paragraph of text to describe the entity. Note: Either description or subtitle list will be displayed to the user, not both. | Free text Recommended text size: 180 chars |
لیست زیرنویس | اختیاری | Up to 3 subtitles, with each subtitle a single line of text. Note: Either description or subtitle list will be displayed to the user, not both. | Free text Recommended text size for each subtitle: max 50 chars |
Reservation ID | اختیاری | The reservation ID for the transportation reservation. | متن رایگان |
Price - CurrentPrice | Conditionally required | The current price of the reservation. Must be provided if strikethrough price is provided. | Free text |
Price - StrikethroughPrice | اختیاری | The original price of the reservation, which is be struck-through in the UI. | Free text |
Price Callout | اختیاری | Price callout to feature a promo, event, member discount, if available. | Free text Recommended text size: under 45 chars (Text that is too long may show ellipses) |
DisplayTimeWindow (Optional) - Set a time window for a content to be shown on the surface | |||
Start Timestamp | اختیاری | The epoch timestamp after which the content should be shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
End Timestamp | اختیاری | The epoch timestamp after which the content is no longer shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
VehicleRentalReservationEntity
صفت | مورد نیاز | توضیحات | قالب |
---|---|---|---|
Action Uri | مورد نیاز | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. Refer to this FAQ | اوری |
عنوان | مورد نیاز | Title of the entity. | متن رایگان. For example, "Avis Union Square SF" Recommended text size: Max 50 chars |
Localized Pickup Time - Timestamp | مورد نیاز | The epoch timestamp that represents the pick up time for the reservation. | Joda-Time Instant |
Localized Pickup Time - Timezone | مورد نیاز | The timezone of the pick up time for the reservation. | Joda-Time DateTimeZone |
Localized Return Time - Timestamp | اختیاری | The epoch timestamp that represents the check out time for the reservation. | Joda-Time Instant |
Localized Return Time - Timezone | اختیاری | The timezone of the check out time for the reservation. | Joda-Time DateTimeZone |
Pickup Address - Country | اختیاری | The country of the pickup location. | Free text Recommended text size: max ~20 chars |
Pickup Address - City | اختیاری | The city of the pickup location. | Free text Recommended text size: max ~20 chars |
Pickup Address - Display Address | اختیاری | The pickup location that will be displayed to the user. | Free text Recommended text size: max ~20 chars |
Pickup Address - Street Address | اختیاری | The street address (if applicable) of the pickup location. | متن رایگان Recommended text size: max ~20 chars |
Pickup Address - State | اختیاری | The state or province (if applicable) of the pickup location. | Free text Recommended text size: max ~20 chars |
Pickup Address - Zip code | اختیاری | The zip code (if applicable) of the pickup location. | Free text Recommended text size: max ~20 chars |
Pickup Address - Neighborhood | اختیاری | The neighborhood (if applicable) of the pickup location. | Free text Recommended text size: max ~20 chars |
Return Address - Country | اختیاری | The country of return location. | Free text Recommended text size: max ~20 chars |
Return Address - City | اختیاری | The city of return location. | Free text Recommended text size: max ~20 chars |
Return Address - Display Address | اختیاری | The return location that will be displayed to the user. | Free text Recommended text size: max ~20 chars |
Return Address - Street Address | اختیاری | The street address (if applicable) of the return location. | متن رایگان Recommended text size: max ~20 chars |
Return Address - State | اختیاری | The state or province (if applicable) of the return location. | Free text Recommended text size: max ~20 chars |
Return Address - Zip code | اختیاری | The zip code (if applicable) of the return location. | Free text Recommended text size: max ~20 chars |
Return Address - Neighborhood | اختیاری | The neighborhood (if applicable) of the return location. | Free text Recommended text size: max ~20 chars |
Service Provider - Name | اختیاری | The name of the service provider. Note: Either text or image is required for the service provider. | متن رایگان. For example, "Avis Car Rental" |
Service Provider - Image | اختیاری | The logo/image of the service provider. Note: Either text or image is required for the service provider. | See Image Specifications for guidance. |
Poster images | اختیاری | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 | See Image Specifications for guidance. |
توضیحات | اختیاری | A single paragraph of text to describe the entity. Note: Either description or subtitle list will be displayed to the user, not both. | Free text Recommended text size: 180 chars |
لیست زیرنویس | اختیاری | Up to 3 subtitles, with each subtitle a single line of text. Note: Either description or subtitle list will be displayed to the user, not both. | Free text Recommended text size for each subtitle: max 50 chars |
Confirmation ID | اختیاری | The confirmation ID for the vehicle rental reservation. | Free text |
Price - CurrentPrice | Conditionally required | The current price of the reservation. Must be provided if strikethrough price is provided. | Free text |
Price - StrikethroughPrice | اختیاری | The original price of the reservation, which is be struck-through in the UI. | Free text |
Price Callout | اختیاری | Price callout to feature a promo, event, member discount, if available. | متن رایگان Recommended text size: under 45 chars (Text that is too long may show ellipses) |
DisplayTimeWindow (Optional) - Set a time window for a content to be shown on the surface | |||
Start Timestamp | اختیاری | The epoch timestamp after which the content should be shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
End Timestamp | اختیاری | The epoch timestamp after which the content is no longer shown on the surface. If not set, content is eligible to be shown on the surface. | Epoch timestamp in milliseconds |
مشخصات تصویر
Required specifications for image assets are listed in this table:
نسبت ابعاد | حداقل پیکسل | پیکسل های توصیه شده |
---|---|---|
Square (1x1) ترجیح داده شده است | 300x300 | 1200x1200 |
Landscape (1.91x1) | 600x314 | 1200x628 |
Portrait (4x5) | 480x600 | 960x1200 |
The images are required to be hosted on public CDNs so that Google can access them.
فرمت های فایل
PNG, JPG, static GIF, WebP
حداکثر اندازه فایل
5120 کیلوبایت
توصیه های اضافی
- Image safe area: Put your important content in the center 80% of the image.
- Use a transparent background so that the image can be properly displayed in Dark and Light theme settings.
دسته بندی محتوا
The content category allows apps to publish content belonging to multiple categories. This maps the content with some of the predefined categories namely:
-
TYPE_EDUCATION
-
TYPE_SPORTS
-
TYPE_MOVIES_AND_TV_SHOWS
-
TYPE_BOOKS
-
TYPE_AUDIOBOOKS
-
TYPE_MUSIC
-
TYPE_DIGITAL_GAMES
-
TYPE_TRAVEL_AND_LOCAL
-
TYPE_HOME_AND_AUTO
-
TYPE_BUSINESS
-
TYPE_NEWS
-
TYPE_FOOD_AND_DRINK
-
TYPE_SHOPPING
-
TYPE_HEALTH_AND_FITENESS
-
TYPE_MEDICAL
-
TYPE_PARENTING
-
TYPE_DATING
The images are required to be hosted on public CDNs so that Google can access them.
Guidelines to use the content categories
- Some entities like ArticleEntity and GenericFeaturedEntity are eligible to use any of the content categories. For other entities like EventEntity , EventReservationEntity , PointOfInterestEntity , only a subset of these categories are eligible. Check the list of categories eligible for an entity type before populating the list.
Use the specific entity type for some content categories over a combination of the Generic entities and the ContentCategory:
- TYPE_MOVIES_AND_TV_SHOWS - Check out the entities from Watch integration guide before using the generic entities.
- TYPE_BOOKS - Check out the EbookEntity before using the generic entities.
- TYPE_AUDIOBOOKS - Check out AudiobookEntity before using the generic entities.
- TYPE_SHOPPING - Check out ShoppingEntity before using the generic entities.
- TYPE_FOOD_AND_DRINK - Check out entities from Food Integration guide before using the generic entities.
The ContentCategory field is optional and should be left blank if the content doesn't belong to any of the categories mentioned earlier.
In case multiple content categories are provided, provide them in the order of relevance to the content with the most relevant content category placed first in the list.
Step 2: Provide Cluster data
It is recommended to have the content publish job executed in the background (for example, using WorkManager ) and scheduled on a regular basis or on an event basis (for example, every time the user opens the app or when the user just added something to their cart).
AppEngageTravelClient
is responsible for publishing clusters.
There are following APIs to publish clusters in the client:
-
isServiceAvailable
-
publishRecommendationClusters
-
publishFeaturedCluster
-
publishReservationCluster
-
publishContinueSearchCluster
-
publishUserAccountManagementRequest
-
updatePublishStatus
-
deleteRecommendationsClusters
-
deleteFeaturedCluster
-
deleteReservationCluster
-
deleteContinueSearchCluster
-
deleteUserManagementCluster
-
deleteClusters
isServiceAvailable
This API is used to check if the service is available for integration and whether the content can be presented on the device.
کاتلین
client.isServiceAvailable.addOnCompleteListener { task -> if (task.isSuccessful) { // Handle IPC call success if(task.result) { // Service is available on the device, proceed with content publish // calls. } else { // Service is not available, no further action is needed. } } else { // The IPC call itself fails, proceed with error handling logic here, // such as retry. } }
جاوا
client.isServiceAvailable().addOnCompleteListener(task - > { if (task.isSuccessful()) { // Handle success if(task.getResult()) { // Service is available on the device, proceed with content publish // calls. } else { // Service is not available, no further action is needed. } } else { // The IPC call itself fails, proceed with error handling logic here, // such as retry. } });
publishRecommendationClusters
This API is used to publish a list of RecommendationCluster
objects.
کاتلین
client.publishRecommendationClusters( PublishRecommendationClustersRequest.Builder() .addRecommendationCluster( RecommendationCluster.Builder() .addEntity(entity1) .addEntity(entity2) .setTitle("Top Picks For You") .build() ) .build() )
جاوا
client.publishRecommendationClusters( new PublishRecommendationClustersRequest.Builder() .addRecommendationCluster( new RecommendationCluster.Builder() .addEntity(entity1) .addEntity(entity2) .setTitle("Top Picks For You") .build()) .build());
When the service receives the request, the following actions take place within one transaction:
- Existing
RecommendationCluster
data from the developer partner is removed. - Data from the request is parsed and stored in the updated Recommendation Cluster.
In case of an error, the entire request is rejected and the existing state is maintained.
publishFeaturedCluster
This API is used to publish a list of FeaturedCluster
objects.
کاتلین
client.publishFeaturedCluster( PublishFeaturedClusterRequest.Builder() .setFeaturedCluster( FeaturedCluster.Builder() .addEntity(entity1) .addEntity(entity2) .build()) .build())
جاوا
client.publishFeaturedCluster( new PublishFeaturedClustersRequest.Builder() .addFeaturedCluster( new FeaturedCluster.Builder() .addEntity(entity1) .addEntity(entity2) .build()) .build());
When the service receives the request, the following actions take place within one transaction:
- Existing
FeaturedCluster
data from the developer partner is removed. - Data from the request is parsed and stored in the updated Featured Cluster.
In case of an error, the entire request is rejected and the existing state is maintained.
publishReservationCluster
This API is used to publish a ReservationCluster
object.
کاتلین
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());
When the service receives the request, the following actions take place within one transaction:
- Existing
ReservationCluster
data from the developer partner is removed. - Data from the request is parsed and stored in the updated Reservation Cluster.
In case of an error, the entire request is rejected and the existing state is maintained.
publishContinueSearchCluster
This API is used to publish a list of ContinueSearchCluster
objects.
کاتلین
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());
When the service receives the request, the following actions take place within one transaction:
- Existing
ContinueSearchCluster
data from the developer partner is removed. - Data from the request is parsed and stored in the updated Continue Search Cluster.
In case of an error, the entire request is rejected and the existing state is maintained.
publishUserAccountManagementRequest
This API is used to publish a Sign In card . The signin action directs users to the app's sign in page so that the app can publish content (or provide more personalized content)
The following metadata is part of the Sign In Card -
صفت | مورد نیاز | توضیحات |
---|---|---|
Action Uri | مورد نیاز | Deeplink to Action (ie navigates to app sign in page) |
تصویر | Optional - If not provided, Title must be provided | Image Shown on the Card 16x9 aspect ratio images with a resolution of 1264x712 |
عنوان | Optional - If not provided, Image must be provided | Title on the Card |
متن اقدام | اختیاری | Text Shown on the CTA (ie Sign in) |
زیرنویس | اختیاری | Optional Subtitle on the Card |
کاتلین
var SIGN_IN_CARD_ENTITY = SignInCardEntity.Builder() .addPosterImage( Image.Builder() .setImageUri(Uri.parse("http://www.x.com/image.png")) .setImageHeightInPixel(500) .setImageWidthInPixel(500) .build()) .setActionText("Sign In") .setActionUri(Uri.parse("http://xx.com/signin")) .build() client.publishUserAccountManagementRequest( PublishUserAccountManagementRequest.Builder() .setSignInCardEntity(SIGN_IN_CARD_ENTITY) .build());
جاوا
SignInCardEntity SIGN_IN_CARD_ENTITY = new SignInCardEntity.Builder() .addPosterImage( new Image.Builder() .setImageUri(Uri.parse("http://www.x.com/image.png")) .setImageHeightInPixel(500) .setImageWidthInPixel(500) .build()) .setActionText("Sign In") .setActionUri(Uri.parse("http://xx.com/signin")) .build(); client.publishUserAccountManagementRequest( new PublishUserAccountManagementRequest.Builder() .setSignInCardEntity(SIGN_IN_CARD_ENTITY) .build());
When the service receives the request, the following actions take place within one transaction:
- Existing
UserAccountManagementCluster
data from the developer partner is removed. - Data from the request is parsed and stored in the updated UserAccountManagementCluster Cluster.
In case of an error, the entire request is rejected and the existing state is maintained.
updatePublishStatus
If for any internal business reason, none of the clusters is published, we strongly recommend updating the publish status using the updatePublishStatus API. This is important because :
- Providing the status in all scenarios, even when the content is published (STATUS == PUBLISHED), is critical to populate dashboards that use this explicit status to convey the health and other metrics of your integration.
- If no content is published but the integration status isn't broken (STATUS == NOT_PUBLISHED), Google can avoid triggering alerts in the app health dashboards. It confirms that content is not published due to an expected situation from the provider's standpoint.
- It helps developers provide insights into when the data is published versus not.
- Google may use the status codes to nudge the user to do certain actions in the app so they can see the app content or overcome it.
The list of eligible publish status codes are :
// Content is published
AppEngagePublishStatusCode.PUBLISHED,
// Content is not published as user is not signed in
AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN,
// Content is not published as user is not subscribed
AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SUBSCRIPTION,
// Content is not published as user location is ineligible
AppEngagePublishStatusCode.NOT_PUBLISHED_INELIGIBLE_LOCATION,
// Content is not published as there is no eligible content
AppEngagePublishStatusCode.NOT_PUBLISHED_NO_ELIGIBLE_CONTENT,
// Content is not published as the feature is disabled by the client
// Available in v1.3.1
AppEngagePublishStatusCode.NOT_PUBLISHED_FEATURE_DISABLED_BY_CLIENT,
// Content is not published as the feature due to a client error
// Available in v1.3.1
AppEngagePublishStatusCode.NOT_PUBLISHED_CLIENT_ERROR,
// Content is not published as the feature due to a service error
// Available in v1.3.1
AppEngagePublishStatusCode.NOT_PUBLISHED_SERVICE_ERROR,
// Content is not published due to some other reason
// Reach out to engage-developers@ before using this enum.
AppEngagePublishStatusCode.NOT_PUBLISHED_OTHER
If the content is not published due to a user not logged in, Google would recommend publishing the Sign In Card. If for any reason providers are not able to publish the Sign In Card then we recommend calling the updatePublishStatus API with the status code NOT_PUBLISHED_REQUIRES_SIGN_IN
کاتلین
client.updatePublishStatus( PublishStatusRequest.Builder() .setStatusCode(AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN) .build())
جاوا
client.updatePublishStatus( new PublishStatusRequest.Builder() .setStatusCode(AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN) .build());
deleteRecommendationClusters
This API is used to delete the content of Recommendation Clusters.
کاتلین
client.deleteRecommendationClusters()
جاوا
client.deleteRecommendationClusters();
When the service receives the request, it removes the existing data from the Recommendation Clusters. In case of an error, the entire request is rejected and the existing state is maintained.
deleteFeaturedCluster
This API is used to delete the content of Featured Cluster.
کاتلین
client.deleteFeaturedCluster()
جاوا
client.deleteFeaturedCluster();
When the service receives the request, it removes the existing data from the Featured Cluster. In case of an error, the entire request is rejected and the existing state is maintained.
deleteReservationCluster
This API is used to delete the content of Reservation Cluster.
کاتلین
client.deleteReservationCluster()
جاوا
client.deleteReservationCluster();
When the service receives the request, it removes the existing data from the Reservation Cluster. In case of an error, the entire request is rejected and the existing state is maintained.
deleteUserManagementCluster
This API is used to delete the content of UserAccountManagement Cluster.
کاتلین
client.deleteUserManagementCluster()
جاوا
client.deleteUserManagementCluster();
When the service receives the request, it removes the existing data from the UserAccountManagement Cluster. In case of an error, the entire request is rejected and the existing state is maintained.
deleteContinueSearchCluster
This API is used to delete the content of Continue Search Cluster.
کاتلین
client.deleteContinueSearchCluster()
جاوا
client.deleteContinueSearchCluster();
When the service receives the request, it removes the existing data from the Continue Search Cluster. In case of an error, the entire request is rejected, and the existing state is maintained.
deleteClusters
This API is used to delete the content of a given cluster type.
کاتلین
client.deleteClusters( DeleteClustersRequest.Builder() .addClusterType(ClusterType.TYPE_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());
When the service receives the request, it removes the existing data from all clusters matching the specified cluster types. Clients can choose to pass one or many cluster types. In case of an error, the entire request is rejected and the existing state is maintained.
رسیدگی به خطا
It is highly recommended to listen to the task result from the publish APIs such that a follow-up action can be taken to recover and resubmit an successful task.
کاتلین
client.publishRecommendationClusters( PublishRecommendationClustersRequest.Builder() .addRecommendationCluster(..) .build()) .addOnCompleteListener { task -> if (task.isSuccessful) { // do something } else { val exception = task.exception if (exception is AppEngageException) { @AppEngageErrorCode val errorCode = exception.errorCode if (errorCode == AppEngageErrorCode.SERVICE_NOT_FOUND) { // do something } } } }
جاوا
client.publishRecommendationClusters( new PublishRecommendationClustersRequest.Builder() .addRecommendationCluster(...) .build()) .addOnCompleteListener( task -> { if (task.isSuccessful()) { // do something } else { Exception exception = task.getException(); if (exception instanceof AppEngageException) { @AppEngageErrorCode int errorCode = ((AppEngageException) exception).getErrorCode(); if (errorCode == AppEngageErrorCode.SERVICE_NOT_FOUND) { // do something } } } });
The error is returned as an AppEngageException
with the cause included as an error code.
کد خطا | نام خطا | توجه داشته باشید |
---|---|---|
1 | SERVICE_NOT_FOUND | The service is not available on the given device. |
2 | SERVICE_NOT_AVAILABLE | The service is available on the given device, but it is not available at the time of the call (for example, it is explicitly disabled). |
3 | SERVICE_CALL_EXECUTION_FAILURE | The task execution failed due to threading issues. In this case, it can be retried. |
4 | SERVICE_CALL_PERMISSION_DENIED | The caller is not allowed to make the service call. |
5 | SERVICE_CALL_INVALID_ARGUMENT | The request contains invalid data (for example, more than the allowed number of clusters). |
6 | SERVICE_CALL_INTERNAL | There is an error on the service side. |
7 | SERVICE_CALL_RESOURCE_EXHAUSTED | The service call is made too frequently. |
Step 3: Handle broadcast intents
In addition to making publish content API calls through a job, it is also required to set up a BroadcastReceiver
to receive the request for a content publish.
The goal of broadcast intents is mainly for app reactivation and forcing data sync. Broadcast intents are not designed to be sent very frequently. It is only triggered when the Engage Service determines the content might be stale (for example, a week old). That way, there is more confidence that the user can have a fresh content experience, even if the application has not been executed for a long period of time.
The BroadcastReceiver
must be set up in the following two ways:
- Dynamically register an instance of the
BroadcastReceiver
class usingContext.registerReceiver()
. This enables communication from applications that are still live in memory.
کاتلین
class AppEngageBroadcastReceiver : BroadcastReceiver(){ // Trigger recommendation cluster publish when PUBLISH_RECOMMENDATION broadcast // is received // Trigger featured cluster publish when PUBLISH_FEATURED broadcast is received // Trigger continue search cluster publish when PUBLISH_CONTINUE_SEARCH // broadcast is received // Trigger reservation cluster publish when PUBLISH_RESERVATION broadcast is // received } fun registerBroadcastReceivers(context: Context){ var context = context context = context.applicationContext // Register Recommendation Cluster Publish Intent context.registerReceiver(AppEngageBroadcastReceiver(), IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_RECOMMENDATION)) // Register Featured Cluster Publish Intent context.registerReceiver(AppEngageBroadcastReceiver(), IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_FEATURED)) // Register Continue Search Cluster Publish Intent context.registerReceiver(AppEngageBroadcastReceiver(), IntentFilter(com.google.android.engage.travel.service.Intents.ACTION_PUBLISH_CONTINUE_SEARCH)) // Register Reservation Cluster Publish Intent context.registerReceiver(AppEngageBroadcastReceiver(), IntentFilter(com.google.android.engage.travel.service.Intents.ACTION_PUBLISH_RESERVATION)) }
جاوا
class AppEngageBroadcastReceiver extends BroadcastReceiver { // Trigger recommendation cluster publish when PUBLISH_RECOMMENDATION broadcast // is received // Trigger featured cluster publish when PUBLISH_FEATURED broadcast is received // Trigger continue search cluster publish when PUBLISH_CONTINUE_SEARCH // broadcast is received // Trigger reservation cluster publish when PUBLISH_RESERVATION broadcast is // received } public static void registerBroadcastReceivers(Context context) { context = context.getApplicationContext(); // Register Recommendation Cluster Publish Intent context.registerReceiver(new AppEngageBroadcastReceiver(), new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_RECOMMENDATION)); // Register Featured Cluster Publish Intent context.registerReceiver(new AppEngageBroadcastReceiver(), new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_FEATURED)); // Register Continue Search Cluster Publish Intent context.registerReceiver(new AppEngageBroadcastReceiver(), new IntentFilter(com.google.android.engage.travel.service.Intents.ACTION_PUBLISH_CONTINUE_SEARCH)); // Register Reservation Cluster Publish Intent context.registerReceiver(new AppEngageBroadcastReceiver(), new IntentFilter(com.google.android.engage.travel.service.Intents.ACTION_PUBLISH_RESERVATION)); }
- Statically declare an implementation with the
<receiver>
tag in yourAndroidManifest.xml
file. This allows the application to receive broadcast intents when it is not running, and also allows the application to publish the content.
<application>
<receiver
android:name=".AppEngageBroadcastReceiver"
android: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>
The following intents is sent by the service:
-
com.google.android.engage.action.PUBLISH_RECOMMENDATION
It is recommended to start apublishRecommendationClusters
call when receiving this intent. -
com.google.android.engage.action.PUBLISH_FEATURED
It is recommended to start apublishFeaturedCluster
call when receiving this intent. -
com.google.android.engage.action.travel.PUBLISH_CONTINUE_SEARCH
It is recommended to start apublishContinueSearchCluster
call when receiving this intent. -
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.