Engage SDK Travel: دستورالعمل‌های یکپارچه‌سازی فنی شخص ثالث، Engage SDK Travel: دستورالعمل‌های یکپارچه‌سازی فنی شخص ثالث

با دسترسی به کاربران خود در هر کجا که هستند، تعامل با برنامه را افزایش دهید. Engage SDK را ادغام کنید تا توصیه‌های شخصی‌سازی‌شده و محتوای مداوم را مستقیماً به کاربران در سطوح مختلف روی دستگاه، مانند Collections ، Entertainment Space و Play Store ارائه دهید. این ادغام کمتر از ۵۰ کیلوبایت (فشرده‌شده) به میانگین APK اضافه می‌کند و برای اکثر برنامه‌ها حدود یک هفته از زمان توسعه‌دهنده را می‌گیرد. برای اطلاعات بیشتر به سایت تجاری ما مراجعه کنید.

این راهنما شامل دستورالعمل‌هایی برای شرکای توسعه‌دهنده است تا محتوای سفر و رویدادها را به سطوح محتوای Engage ارائه دهند.

جزئیات ادغام

اصطلاحات

این ادغام شامل انواع خوشه‌های زیر است: توصیه ، ویژه ، رزرو و ادامه جستجو .

  • خوشه‌های توصیه، پیشنهادهای شخصی‌سازی‌شده‌ی سفر و رویداد را از یک شریک توسعه‌دهنده‌ی منفرد نشان می‌دهند. این توصیه‌ها می‌توانند برای کاربر شخصی‌سازی شده یا عمومی شوند (برای مثال، موارد پرطرفدار). از این موارد برای ارائه‌ی توصیه‌های مقالات، رویدادها، اقامتگاه‌ها یا مکان‌های دیدنی استفاده کنید.

    • یک خوشه توصیه می‌تواند از فهرست‌های ArticleEntity ، EventEntity ، LodgingEntity ، PointOfInterestEntity یا StoreEntity ساخته شود، اما ترکیبی از انواع مختلف موجودیت‌ها نیست.

    توصیه‌های شما ساختار زیر را دارند:

    • خوشه توصیه: یک نمای رابط کاربری که شامل گروهی از توصیه‌ها از یک شریک توسعه‌دهنده است.

    • موجودیت: شیئی که یک آیتم واحد را در یک خوشه نشان می‌دهد. این ادغام، موجودیت‌هایی را ارائه می‌دهد که با استفاده از خوشه توصیه، نمایان می‌شوند:

      • ArticleEntity : ArticleEntity یک پیشنهاد برای محتوای متنی مرتبط با سفر و رویدادها ارائه می‌دهد. می‌توان از آن برای مقالات، پست‌های وبلاگ، محتوای بازاریابی، گزیده‌های خبری و غیره استفاده کرد.

        شکل ۱: رابط کاربری که یک ArticleEntity واحد را در خوشه توصیه‌ها نشان می‌دهد.
      • EventEntity : EventEntity نشان دهنده رویدادی است که در آینده اتفاق می‌افتد. زمان شروع رویداد، بخش مهمی از اطلاعات است که باید به کاربران منتقل شود.

        شکل ۲: رابط کاربری که یک EventEntity واحد را در خوشه توصیه‌ها نشان می‌دهد.
      • LodgingEntity : LodgingEntity نشان دهنده یک اقامتگاه، مانند هتل، آپارتمان، خانه تعطیلات برای اجاره کوتاه مدت و بلند مدت است.

        شکل ۳: رابط کاربری که یک LodgingEntity واحد را در خوشه توصیه‌ها نشان می‌دهد.
      • StoreEntity : StoreEntity نشان‌دهنده یک فروشگاه، رستوران، کافه و غیره است. این عنصر، محتوایی را برجسته می‌کند که در آن یک محل غذاخوری یا فروشگاه، بخش مهمی از اطلاعات است که باید به کاربران منتقل شود.

        شکل ۴: رابط کاربری که یک StoreEntity واحد را در خوشه توصیه‌ها نشان می‌دهد.
      • PointOfInterestEntity : PointOfInterestEntity نشان‌دهنده یک مکان مورد علاقه مانند پمپ بنزین، محل برگزاری رویداد، پارک تفریحی، موزه، جاذبه گردشگری، مسیر پیاده‌روی و غیره است. این مکان، محتوایی را برجسته می‌کند که در آن مکان، اطلاعات مهمی است که باید به کاربران منتقل شود. نباید از آن برای اقامت، فروشگاه یا محل غذاخوری استفاده شود.

        شکل ۵: رابط کاربری که یک PointOfInterestEntity واحد را در خوشه توصیه‌ها نشان می‌دهد.
  • خوشه رزرو ، محتوایی را که اخیراً توسط کاربران چندین شریک توسعه‌دهنده در یک گروه‌بندی رابط کاربری واحد مورد استفاده قرار گرفته است، نشان می‌دهد. هر شریک توسعه‌دهنده مجاز به پخش حداکثر ۱۰ موجودیت در خوشه رزرو خواهد بود.

    محتوای رزرو شما می‌تواند ساختار زیر را داشته باشد:

    • RestaurantReservationEntity : RestaurantReservationEntity نشان‌دهنده رزرو برای یک رستوران یا کافه است و به کاربران کمک می‌کند تا رزروهای آینده یا جاری رستوران را پیگیری کنند.

      شکل ۶. رابط کاربری که یک RestaurantReservationEntity واحد را در یک خوشه Reservation نشان می‌دهد.
    • EventReservationEntity : EventReservationEntity نشان‌دهنده رزرو برای یک رویداد است و به کاربران کمک می‌کند تا رزرو رویدادهای آینده یا در حال انجام را پیگیری کنند. رویدادها می‌توانند شامل موارد زیر باشند، اما محدود به آنها نیستند:

      • رویدادهای ورزشی مانند رزرو مسابقه فوتبال
      • رویدادهای بازی مانند رزرو برای eSports
      • رویدادهای سرگرمی مانند رزرو فیلم در سینما، کنسرت، تئاتر، امضای کتاب
      • رزرو سفر یا مکان‌های مورد علاقه مانند تورهای گردشگری، بلیط موزه
      • رزروهای اجتماعی / سمینار / کنفرانس
      • رزرو جلسات آموزشی/تربیتی
      شکل ۷. رابط کاربری که یک EventReservationEntity واحد را درون یک خوشه Reservation نشان می‌دهد.
    • LodgingReservationEntity : LodgingEntityReservation نشان‌دهنده رزرو برای اقامتگاه مسافرتی است و به کاربران کمک می‌کند تا رزروهای هتل یا اجاره تعطیلات آینده یا در حال انجام را پیگیری کنند.

      شکل ۸. رابط کاربری که یک LodgingReservationEntity واحد را در یک خوشه Reservation نشان می‌دهد.
    • TransportationReservationEntity : TransportationReservationEntity نشان‌دهنده رزرو حمل و نقل با هر روشی است و به کاربران کمک می‌کند تا رزروهای پرواز، کشتی، قطار، اتوبوس، تاکسی اینترنتی یا سفر دریایی آینده یا در حال انجام را پیگیری کنند.

      شکل ۹. رابط کاربری که یک TransportationReservationEntity واحد را درون یک خوشه Reservation نشان می‌دهد.
    • VehicleRentalReservationEntity : VehicleRentalReservationEntity نشان‌دهنده رزرو اجاره خودرو است و به کاربران کمک می‌کند تا رزروهای اجاره خودرو در آینده یا در حال انجام را پیگیری کنند.

      شکل ۱۰. رابط کاربری که یک VehicleRentalReservationEntity واحد را در یک خوشه Reservation نشان می‌دهد.
  • خوشه ویژه ، مجموعه‌ای از موجودیت‌ها را از چندین شریک توسعه‌دهنده در یک گروه‌بندی رابط کاربری نمایش می‌دهد. یک خوشه ویژه وجود خواهد داشت که در نزدیکی بالای رابط کاربری با اولویت بالاتر از همه خوشه‌های توصیه نمایش داده می‌شود. هر شریک توسعه‌دهنده مجاز به پخش حداکثر 10 موجودیت در خوشه ویژه خواهد بود.

    • موجودیت ویژه عمومی (GenericFeaturedEntity) : موجودیت ویژه عمومی با آیتم توصیه (Recommendation item) متفاوت است، زیرا آیتم ویژه باید برای یک محتوای برتر از توسعه‌دهندگان استفاده شود و باید مهم‌ترین محتوایی را که برای کاربران جالب و مرتبط خواهد بود، نشان دهد.

      شکل 11: رابط کاربری که یک FeaturedCluster را با لیستی از GenericFeaturedEntity نشان می‌دهد
  • خوشه «ادامه جستجو» با نمایش فهرستی از جستجوهایی که کاربر اخیراً در تمام برنامه‌های سفر خود جستجو کرده است، به کاربران کمک می‌کند تا سفر جستجوی سفر قبلی خود را از سر بگیرند. این خوشه در جایگاه دوم، پس از رزروها و قبل از خوشه‌های ویژه و توصیه‌شده، پین خواهد شد. هر شریک توسعه‌دهنده مجاز خواهد بود تا حداکثر ۳ موجودیت را در خوشه «ادامه جستجو» پخش کند.

    • PointOfInterestEntity: PointOfInterestEntity نشان‌دهنده یک مکان مورد علاقه مانند پمپ بنزین، محل برگزاری رویداد، پارک موضوعی، موزه، جاذبه گردشگری، مسیر پیاده‌روی و غیره است. این عنصر، محتوایی را که کاربر قبلاً جستجو کرده است، برجسته می‌کند.

پیش کار

حداقل سطح API: ۱۹

کتابخانه 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.6.0'
}

خلاصه

طراحی بر اساس پیاده‌سازی یک سرویس محدود (bound service) است.

داده‌هایی که یک کلاینت می‌تواند منتشر کند، برای انواع مختلف خوشه‌ها مشمول محدودیت‌های زیر است:

نوع خوشه محدودیت‌های خوشه حداقل محدودیت موجودیت در یک خوشه حداکثر محدودیت‌های موجودیت در یک خوشه
خوشه(های) پیشنهادی حداکثر ۷ عدد حداقل ۱ حداکثر ۵۰ ( ArticleEntity ، EventEntity ، LodgingEntity ، StoreEntity یا PointOfInterestEntity )
خوشه رزرو حداکثر ۱ حداقل ۱ حداکثر ۲۰ ( RestaurantReservationEntity ، EventReservationEntity ، LodgingReservationEntity ، TransportationReservationEntity ، یا VehicleRentalReservationEntity )
خوشه ویژه حداکثر ۱ حداقل ۱ حداکثر 20 ( GenericFeaturedEntity )
ادامه جستجو در خوشه حداکثر ۱ حداقل ۱ حداکثر ۳ ( PointOfInterestEntity )

مرحله ۱: ارائه داده‌های موجودیت

SDK برای نمایش هر نوع آیتم، موجودیت‌های مختلفی تعریف کرده است. ما از موجودیت‌های زیر برای دسته‌بندی سفر و رویدادها پشتیبانی می‌کنیم:

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

نمودارهای زیر ویژگی‌ها و الزامات موجود برای هر نوع را شرح می‌دهند.

GenericFeaturedEntity

ویژگی مورد نیاز توضیحات قالب
اکشن اوری مورد نیاز

پیوند عمیق به موجودیت در برنامه ارائه دهنده.

توجه: می‌توانید از لینک‌های عمیق برای ارجاع استفاده کنید. به این سوالات متداول مراجعه کنید.

اوری
تصاویر پوستر مورد نیاز

در صورت ارائه چندین تصویر، فقط ۱ تصویر نمایش داده می‌شود. نسبت تصویر توصیه شده ۱۶:۹ است.

توجه: اگر نشان ارائه می‌شود، فضای امن ۲۴ dps را در بالا و پایین تصویر تضمین کنید.

برای راهنمایی به مشخصات تصویر مراجعه کنید.
عنوان اختیاری عنوان نهاد.

متن رایگان

اندازه متن پیشنهادی: ۵۰ کاراکتر

توضیحات اختیاری

یک پاراگراف متن برای توصیف موجودیت.

توجه: یا توضیحات یا فهرست زیرنویس‌ها به کاربر نمایش داده می‌شود، نه هر دو.

متن رایگان

اندازه متن پیشنهادی: ۱۸۰ کاراکتر

فهرست زیرنویس‌ها اختیاری

حداکثر ۳ زیرنویس، که هر زیرنویس شامل یک خط متن است.

توجه: یا توضیحات یا فهرست زیرنویس‌ها به کاربر نمایش داده می‌شود، نه هر دو.

متن رایگان

اندازه متن پیشنهادی برای هر زیرنویس: حداکثر ۵۰ کاراکتر

نشان‌ها اختیاری

هر نشان یا متن آزاد (حداکثر ۱۵ کاراکتر) یا تصویر کوچک است.

جلوه‌های ویژه UX روی تصویر/ویدئو، مثلاً به عنوان پوشش نشان روی تصویر

  • «به‌روزرسانی زنده»
  • مدت زمان مطالعه مقاله
نشان - متن اختیاری

عنوان برای نشان

توجه: برای نشان، متن یا تصویر الزامی است.

متن رایگان

اندازه متن پیشنهادی: حداکثر ۱۵ کاراکتر

نشان - تصویر اختیاری

تصویر کوچک

جلوه‌های ویژه تجربه کاربری، برای مثال به صورت پوشش نشان روی تصویر کوچک تصویر/ویدئو.

توجه: برای نشان، متن یا تصویر الزامی است.

برای راهنمایی به مشخصات تصویر مراجعه کنید.
دسته بندی محتوا اختیاری دسته بندی محتوای موجود در موجودیت را شرح دهید.

فهرست Enumها

برای راهنمایی به بخش دسته‌بندی محتوا مراجعه کنید.

DisplayTimeWindow (اختیاری) - یک پنجره زمانی برای نمایش محتوا روی سطح تنظیم کنید
شروع مهر زمانی اختیاری

مهر زمانیِ دوره‌ای که پس از آن محتوا باید روی سطح نمایش داده شود.

اگر تنظیم نشده باشد، محتوا واجد شرایط نمایش روی سطح است.

مهر زمانی عصر بر حسب میلی ثانیه
مهر زمان پایان اختیاری

مهر زمانیِ دوره‌ای که پس از آن محتوا دیگر روی سطح نمایش داده نمی‌شود.

اگر تنظیم نشده باشد، محتوا واجد شرایط نمایش روی سطح است.

مهر زمانی عصر بر حسب میلی ثانیه

ArticleEntity

ویژگی مورد نیاز توضیحات قالب
اکشن اوری مورد نیاز

پیوند عمیق به موجودیت در برنامه ارائه دهنده.

توجه: می‌توانید از لینک‌های عمیق برای ارجاع استفاده کنید. به این سوالات متداول مراجعه کنید.

اوری
عنوان مورد نیاز عنوان نهاد.

متن رایگان

اندازه متن پیشنهادی: حداکثر ۵۰ کاراکتر

تصاویر پوستر اختیاری

در صورت ارائه چندین تصویر، فقط ۱ تصویر نمایش داده می‌شود. نسبت تصویر توصیه شده ۱۶:۹ است.

توجه: تصویر اکیداً توصیه می‌شود. در صورت ارائه نشان، فضای امن ۲۴ dps را در بالا و پایین تصویر تضمین کنید.

برای راهنمایی به مشخصات تصویر مراجعه کنید.
منبع - عنوان اختیاری نام نویسنده، سازمان یا گزارشگر

متن رایگان

اندازه متن پیشنهادی: کمتر از ۲۵ کاراکتر

منبع - تصویر اختیاری تصویری از منبع مانند نویسنده، سازمان، خبرنگار برای راهنمایی به مشخصات تصویر مراجعه کنید.
توضیحات اختیاری

یک پاراگراف متن برای توصیف موجودیت.

توجه: یا توضیحات یا فهرست زیرنویس‌ها به کاربر نمایش داده می‌شود، نه هر دو.

متن رایگان

اندازه متن پیشنهادی: ۱۸۰ کاراکتر

فهرست زیرنویس‌ها اختیاری

حداکثر ۳ زیرنویس، که هر زیرنویس شامل یک خط متن است.

توجه: یا توضیحات یا فهرست زیرنویس‌ها به کاربر نمایش داده می‌شود، نه هر دو.

متن رایگان

اندازه متن پیشنهادی برای هر زیرنویس: حداکثر ۵۰ کاراکتر

نشان‌ها اختیاری

هر نشان یا متن آزاد (حداکثر ۱۵ کاراکتر) یا تصویر کوچک است.

جلوه‌های ویژه UX روی تصویر/ویدئو، مثلاً به عنوان پوشش نشان روی تصویر

  • «به‌روزرسانی زنده»
  • مدت زمان مطالعه مقاله
نشان - متن اختیاری

عنوان برای نشان

توجه: برای نشان، متن یا تصویر الزامی است.

متن رایگان

اندازه متن پیشنهادی: حداکثر ۱۵ کاراکتر

نشان - تصویر اختیاری

تصویر کوچک

جلوه‌های ویژه تجربه کاربری، برای مثال به صورت پوشش نشان روی تصویر کوچک تصویر/ویدئو.

توجه: برای نشان، متن یا تصویر الزامی است.

برای راهنمایی به مشخصات تصویر مراجعه کنید.
زمان انتشار محتوا اختیاری این نشانگر زمانیِ epoch بر حسب میلی‌ثانیه است که نشان می‌دهد محتوا در چه زمانی در برنامه منتشر/به‌روزرسانی شده است. مهر زمانی عصر بر حسب میلی ثانیه
آخرین زمان نامزدی اختیاری

مهر زمانیِ آخرین تعامل کاربر با این موجودیت بر حسب میلی‌ثانیه.

مهر زمانی عصر بر حسب میلی ثانیه
درصد پیشرفت اختیاری

درصد کل محتوای مصرف‌شده توسط کاربر تا به امروز.

یک مقدار صحیح بین ۰ تا ۱۰۰.
دسته بندی محتوا اختیاری دسته بندی محتوای موجود در موجودیت را شرح دهید.

فهرست Enumها

برای راهنمایی به بخش دسته‌بندی محتوا مراجعه کنید.

DisplayTimeWindow (اختیاری) - یک پنجره زمانی برای نمایش محتوا روی سطح تنظیم کنید
شروع مهر زمانی اختیاری

مهر زمانیِ دوره‌ای که پس از آن محتوا باید روی سطح نمایش داده شود.

اگر تنظیم نشده باشد، محتوا واجد شرایط نمایش روی سطح است.

مهر زمانی عصر بر حسب میلی ثانیه
مهر زمان پایان اختیاری

مهر زمانیِ دوره‌ای که پس از آن محتوا دیگر روی سطح نمایش داده نمی‌شود.

اگر تنظیم نشده باشد، محتوا واجد شرایط نمایش روی سطح است.

مهر زمانی عصر بر حسب میلی ثانیه

EventEntity

ویژگی مورد نیاز توضیحات قالب
اکشن اوری مورد نیاز

پیوند عمیق به موجودیت در برنامه ارائه دهنده.

توجه: می‌توانید از لینک‌های عمیق برای ارجاع استفاده کنید. به این سوالات متداول مراجعه کنید.

اوری
عنوان مورد نیاز عنوان نهاد.

رشته

اندازه متن پیشنهادی: حداکثر ۵۰ کاراکتر

زمان شروع محلی - مهر زمان مورد نیاز

مهر زمانیِ دوره‌ای که انتظار می‌رود رویداد در آن شروع شود.

جودا-تایم فوری
زمان شروع محلی - منطقه زمانی مورد نیاز

منطقه زمانی که انتظار می‌رود رویداد در آن شروع شود.

جودا-زمان تاریخ و زمانمنطقه زمانی

برای راهنمایی به مشخصات منطقه زمانی مراجعه کنید.

حالت رویداد مورد نیاز

فیلدی برای مشخص کردن اینکه آیا رویداد مجازی، حضوری یا هر دو خواهد بود.

Enum: مجازی، حضوری یا ترکیبی
تصاویر پوستر مورد نیاز

در صورت ارائه چندین تصویر، فقط ۱ تصویر نمایش داده می‌شود. نسبت تصویر توصیه شده ۱۶:۹ است.

توجه: تصویر اکیداً توصیه می‌شود. در صورت ارائه نشان، فضای امن ۲۴ dps را در بالا و پایین تصویر تضمین کنید.

برای راهنمایی به مشخصات تصویر مراجعه کنید.
مکان - کشور مشروط مورد نیاز

کشوری که رویداد در آن اتفاق می‌افتد.

توجه: این مورد برای رویدادهایی که IN_PERSON یا HYBRID هستند، الزامی است.

متن رایگان

اندازه متن پیشنهادی: حداکثر ~20 کاراکتر

مکان - شهر مشروط مورد نیاز

شهری که رویداد در آن اتفاق می‌افتد.

توجه: این مورد برای رویدادهایی که IN_PERSON یا HYBRID هستند، الزامی است.

متن رایگان

اندازه متن پیشنهادی: حداکثر ~20 کاراکتر

مکان - نمایش آدرس مشروط مورد نیاز

آدرس یا نام مکانی که رویداد در آن برگزار خواهد شد که باید به کاربر نمایش داده شود.

توجه: این مورد برای رویدادهایی که IN_PERSON یا HYBRID هستند، الزامی است.

متن رایگان

اندازه متن پیشنهادی: حداکثر ~20 کاراکتر

مکان - آدرس خیابان اختیاری آدرس خیابان (در صورت وجود) مکانی که رویداد در آن برگزار می‌شود.

متن رایگان

اندازه متن پیشنهادی: حداکثر ~20 کاراکتر

مکان - ایالت اختیاری ایالت یا استانی (در صورت وجود) که رویداد در آن برگزار می‌شود.

متن رایگان

اندازه متن پیشنهادی: حداکثر ~20 کاراکتر

مکان - کد پستی اختیاری کد پستی (در صورت وجود) محل برگزاری رویداد.

متن رایگان

اندازه متن پیشنهادی: حداکثر ~20 کاراکتر

موقعیت مکانی - محله اختیاری محله (در صورت وجود) که رویداد در آن برگزار می‌شود.

متن رایگان

اندازه متن پیشنهادی: حداکثر ~20 کاراکتر

زمان پایان اختیاری

مهر زمانیِ دوره‌ای که انتظار می‌رود رویداد در آن پایان یابد.

نکته: این مقدار بر حسب میلی‌ثانیه نمایش داده می‌شود.

مهر زمانی عصر بر حسب میلی ثانیه
توضیحات اختیاری

یک پاراگراف متن برای توصیف موجودیت.

توجه: یا توضیحات یا فهرست زیرنویس‌ها به کاربر نمایش داده می‌شود، نه هر دو.

متن رایگان

اندازه متن پیشنهادی: ۱۸۰ کاراکتر

فهرست زیرنویس‌ها اختیاری

حداکثر ۳ زیرنویس، که هر زیرنویس شامل یک خط متن است.

توجه: یا توضیحات یا فهرست زیرنویس‌ها به کاربر نمایش داده می‌شود، نه هر دو.

متن رایگان

اندازه متن پیشنهادی برای هر زیرنویس: حداکثر ۵۰ کاراکتر

نشان‌ها اختیاری

هر نشان یا متن آزاد (حداکثر ۱۵ کاراکتر) یا تصویر کوچک است.

نشان - متن اختیاری

عنوان برای نشان

توجه: برای نشان، متن یا تصویر الزامی است.

متن رایگان

اندازه متن پیشنهادی: حداکثر ۱۵ کاراکتر

نشان - تصویر اختیاری

تصویر کوچک

جلوه‌های ویژه تجربه کاربری، برای مثال به صورت پوشش نشان روی تصویر کوچک تصویر/ویدئو.

توجه: برای نشان، متن یا تصویر الزامی است.

برای راهنمایی به مشخصات تصویر مراجعه کنید.
قیمت - قیمت فعلی مشروط مورد نیاز

قیمت فعلی بلیط/کارت ورود به رویداد.

در صورت ارائه قیمت خط خورده، باید ارائه شود.

متن رایگان
قیمت - قیمت ضربدری اختیاری قیمت اصلی بلیط/کارت ورود به رویداد. متن رایگان
اطلاع از قیمت اختیاری اعلام قیمت برای ارائه تخفیف ویژه، رویداد، و تخفیف برای اعضا، در صورت وجود.

متن رایگان

اندازه متن پیشنهادی: کمتر از ۴۵ کاراکتر (متن خیلی طولانی ممکن است بیضی نشان دهد)

دسته بندی محتوا اختیاری دسته بندی محتوای موجود در موجودیت را شرح دهید.

فهرست Enumهای واجد شرایط

  • نوع فیلم و سریال (مثال - سینما)
  • TYPE_DIGITAL_GAMES (مثال - ورزش‌های الکترونیکی)
  • نوع موسیقی (مثال - کنسرت)
  • نوع سفر و محل (مثال - تور، جشنواره)
  • نوع_سلامتی_و_تناسب_اندام (مثال - کلاس یوگا)
  • نوع آموزش (مثال - کلاس)
  • TYPE_SPORTS (مثال - بازی فوتبال)
  • TYPE_DATING (مثال - ملاقات)

برای راهنمایی به بخش دسته‌بندی محتوا مراجعه کنید.

DisplayTimeWindow (اختیاری) - یک پنجره زمانی برای نمایش محتوا روی سطح تنظیم کنید
شروع مهر زمانی اختیاری

مهر زمانیِ دوره‌ای که پس از آن محتوا باید روی سطح نمایش داده شود.

اگر تنظیم نشده باشد، محتوا واجد شرایط نمایش روی سطح است.

مهر زمانی عصر بر حسب میلی ثانیه
مهر زمان پایان اختیاری

مهر زمانیِ دوره‌ای که پس از آن محتوا دیگر روی سطح نمایش داده نمی‌شود.

اگر تنظیم نشده باشد، محتوا واجد شرایط نمایش روی سطح است.

مهر زمانی عصر بر حسب میلی ثانیه

LodgingEntity

ویژگی مورد نیاز توضیحات قالب
اکشن اوری مورد نیاز

پیوند عمیق به موجودیت در برنامه ارائه دهنده.

توجه: می‌توانید از لینک‌های عمیق برای ارجاع استفاده کنید. به این سوالات متداول مراجعه کنید.

اوری
عنوان مورد نیاز عنوان نهاد.

رشته

اندازه متن پیشنهادی: حداکثر ۵۰ کاراکتر

تصاویر پوستر مورد نیاز

در صورت ارائه چندین تصویر، فقط ۱ تصویر نمایش داده می‌شود. نسبت تصویر توصیه شده ۱۶:۹ است.

توجه: اگر نشان ارائه می‌شود، فضای امن ۲۴ dps را در بالا و پایین تصویر تضمین کنید.

برای راهنمایی به مشخصات تصویر مراجعه کنید.
مکان - کشور مورد نیاز کشوری که محل اقامت در آن اتفاق می‌افتد.

متن رایگان

اندازه متن پیشنهادی: حداکثر ~20 کاراکتر

مکان - شهر مورد نیاز شهری که محل اقامت در آن واقع شده است.

متن رایگان

اندازه متن پیشنهادی: حداکثر ~20 کاراکتر

مکان - نمایش آدرس مورد نیاز آدرسی که به کاربر نمایش داده می‌شود. در بیشتر موارد استفاده، توصیه می‌کنیم نام شهر و در صورت امکان استان یا کشور را نیز ذکر کنید. فقط در صورتی آدرس خیابان یا محله را ذکر کنید که کاربر در نزدیکی محل باشد، با آن آشنا باشد یا شهر در عنوان خوشه گنجانده شده باشد. اگر آدرس خیابان را ذکر می‌کنید، آدرس مختصری ارائه دهید و در صورت امکان از اختصارات استفاده کنید (برای مثال، "خیابان" برای "خیابان"، "خیابان" برای "خیابان").

متن رایگان

اندازه متن پیشنهادی: حداکثر ~20 کاراکتر

مکان - آدرس خیابان اختیاری آدرس خیابان (در صورت وجود) محل اقامت.

متن رایگان

اندازه متن پیشنهادی: حداکثر ~20 کاراکتر

مکان - ایالت اختیاری ایالت یا استانی (در صورت وجود) که محل اقامت در آن واقع شده است.

متن رایگان

اندازه متن پیشنهادی: حداکثر ~20 کاراکتر

مکان - کد پستی اختیاری کد پستی (در صورت وجود) محل اقامت.

متن رایگان

اندازه متن پیشنهادی: حداکثر ~20 کاراکتر

موقعیت مکانی - محله اختیاری محله (در صورت وجود) محل اقامت.

متن رایگان

اندازه متن پیشنهادی: حداکثر ~20 کاراکتر

نشان‌ها اختیاری

هر نشان یا متن آزاد (حداکثر ۱۵ کاراکتر) یا تصویر کوچک است.

نشان - متن اختیاری

عنوان برای نشان

توجه: برای نشان، متن یا تصویر الزامی است.

متن رایگان

اندازه متن پیشنهادی: حداکثر ۱۵ کاراکتر

نشان - تصویر اختیاری

تصویر کوچک

جلوه‌های ویژه تجربه کاربری، برای مثال به صورت پوشش نشان روی تصویر کوچک تصویر/ویدئو.

توجه: برای نشان، متن یا تصویر الزامی است.

برای راهنمایی به مشخصات تصویر مراجعه کنید.
توضیحات اختیاری

یک پاراگراف متن برای توصیف موجودیت.

توجه: یا توضیحات یا فهرست زیرنویس‌ها به کاربر نمایش داده می‌شود، نه هر دو.

متن رایگان

اندازه متن پیشنهادی: ۱۸۰ کاراکتر

فهرست زیرنویس‌ها اختیاری

حداکثر ۳ زیرنویس، که هر زیرنویس شامل یک خط متن است.

توجه: یا توضیحات یا فهرست زیرنویس‌ها به کاربر نمایش داده می‌شود، نه هر دو.

متن رایگان

اندازه متن پیشنهادی برای هر زیرنویس: حداکثر ۵۰ کاراکتر

پنجره زمان دسترسی - زمان شروع محلی - مهر زمانی اختیاری مهر زمانیِ دوره‌ای که انتظار می‌رود اقامتگاه باز/در دسترس باشد. جودا-تایم فوری
پنجره زمان دسترسی - زمان شروع محلی - منطقه زمانی اختیاری منطقه زمانی که انتظار می‌رود اقامتگاه در آن باز/در دسترس باشد.

جودا-زمان تاریخ و زمانمنطقه زمانی

برای راهنمایی به مشخصات منطقه زمانی مراجعه کنید.

پنجره زمان دسترسی - زمان پایان محلی - مهر زمان اختیاری مهر زمانی دوره‌ای که انتظار می‌رود اقامتگاه تا آن زمان باز/در دسترس باشد. جودا-تایم فوری
پنجره زمان دسترسی - زمان پایان محلی - منطقه زمانی اختیاری منطقه زمانی که انتظار می‌رود اقامتگاه در آن باز/در دسترس باشد.

جودا-زمان تاریخ و زمانمنطقه زمانی

برای راهنمایی به مشخصات منطقه زمانی مراجعه کنید.

رتبه‌بندی - حداکثر مقدار اختیاری

حداکثر مقدار مقیاس رتبه‌بندی.

اگر مقدار فعلی رتبه‌بندی نیز ارائه شده باشد، باید ارائه شود.

عدد >= 0.0
رتبه‌بندی - ارزش فعلی اختیاری

مقدار فعلی مقیاس رتبه‌بندی.

اگر حداکثر مقدار رتبه‌بندی نیز ارائه شده باشد، باید ارائه شود.

عدد >= 0.0
رتبه‌بندی - تعداد اختیاری

تعداد امتیازهای مربوط به اقامتگاه.

نکته: اگر برنامه شما می‌خواهد نحوه نمایش این عدد به کاربران را کنترل کند، این فیلد را ارائه دهید. رشته مختصری را که می‌تواند به کاربر نمایش داده شود، ارائه دهید. برای مثال، اگر تعداد ۱,۰۰۰,۰۰۰ است، استفاده از اختصاراتی مانند ۱M را در نظر بگیرید تا در اندازه‌های کوچک‌تر صفحه نمایش کوتاه نشود.

رشته
رتبه‌بندی - مقدار شمارش اختیاری

تعداد امتیازهای مربوط به اقامتگاه.

توجه: اگر نمی‌خواهید خودتان منطق نمایش اختصارات را مدیریت کنید، این فیلد را وارد کنید. اگر هم تعداد و هم مقدار تعداد وجود داشته باشد، از تعداد برای نمایش به کاربران استفاده خواهیم کرد.

بلند
قیمت - قیمت فعلی مشروط مورد نیاز

قیمت فعلی اقامتگاه.

در صورت ارائه قیمت خط خورده، باید ارائه شود.

متن رایگان
قیمت - قیمت ضربدری اختیاری قیمت اصلی اقامتگاه، که در فاکتور خط خورده است. متن رایگان
اطلاع از قیمت اختیاری اعلام قیمت برای ارائه تخفیف ویژه، رویداد، و تخفیف برای اعضا، در صورت وجود.

متن رایگان

اندازه متن پیشنهادی: کمتر از ۴۵ کاراکتر (متن خیلی طولانی ممکن است بیضی نشان دهد)

DisplayTimeWindow (اختیاری) - یک پنجره زمانی برای نمایش محتوا روی سطح تنظیم کنید
شروع مهر زمانی اختیاری

مهر زمانیِ دوره‌ای که پس از آن محتوا باید روی سطح نمایش داده شود.

اگر تنظیم نشده باشد، محتوا واجد شرایط نمایش روی سطح است.

مهر زمانی عصر بر حسب میلی ثانیه
مهر زمان پایان اختیاری

مهر زمانیِ دوره‌ای که پس از آن محتوا دیگر روی سطح نمایش داده نمی‌شود.

اگر تنظیم نشده باشد، محتوا واجد شرایط نمایش روی سطح است.

مهر زمانی عصر بر حسب میلی ثانیه

StoreEntity

شیء StoreEntity نشان‌دهنده یک فروشگاه شخصی است که شرکای توسعه‌دهنده می‌خواهند منتشر کنند، مانند یک رستوران یا غذاخوری محبوب که به تجربه سفر فرد مرتبط است.

ویژگی مورد نیاز توضیحات قالب
تصاویر پوستر مورد نیاز حداقل یک تصویر باید ارائه شود. برای راهنمایی به مشخصات تصویر مراجعه کنید.
اکشن اوری مورد نیاز

پیوند عمیق به موجودیت در برنامه ارائه دهنده.

توجه: می‌توانید از لینک‌های عمیق برای ارجاع استفاده کنید. به این سوالات متداول مراجعه کنید.

اوری
عنوان اختیاری نام فروشگاه.

متن رایگان

اندازه متن پیشنهادی: کمتر از ۴۵ کاراکتر (متن خیلی طولانی ممکن است بیضی نشان دهد)

مکان اختیاری موقعیت مکانی فروشگاه.

متن رایگان

اندازه متن پیشنهادی: کمتر از ۴۵ کاراکتر (متن خیلی طولانی ممکن است بیضی نشان دهد)

فراخوان اختیاری در صورت امکان، برای تبلیغ، رویداد یا به‌روزرسانی فروشگاه، فراخوان دهید.

متن رایگان

اندازه متن پیشنهادی: کمتر از ۴۵ کاراکتر (متن خیلی طولانی ممکن است بیضی نشان دهد)

چاپ خوب را بنویسید اختیاری متن چاپی زیبا برای توضیحات.

متن رایگان

اندازه متن پیشنهادی: کمتر از ۴۵ کاراکتر (متن خیلی طولانی ممکن است بیضی نشان دهد)

توضیحات اختیاری توضیحی در مورد فروشگاه.

متن رایگان

اندازه متن پیشنهادی: کمتر از ۹۰ کاراکتر (متن خیلی طولانی ممکن است بیضی نشان دهد)

دسته بندی اختیاری

دسته بندی یک فروشگاه، در زمینه رستوران‌ها، می‌تواند شامل غذاهایی مانند «فرانسوی»، «نیو امریکن»، «رامِن» یا «فوق‌العاده» باشد.

متن رایگان

اندازه متن پیشنهادی: کمتر از ۴۵ کاراکتر (متن خیلی طولانی ممکن است بیضی نشان دهد)

رتبه‌بندی - حداکثر مقدار اختیاری

حداکثر مقدار مقیاس رتبه‌بندی.

اگر مقدار فعلی رتبه‌بندی نیز ارائه شده باشد، باید ارائه شود.

عدد >= 0.0
رتبه‌بندی - ارزش فعلی اختیاری

مقدار فعلی مقیاس رتبه‌بندی.

اگر حداکثر مقدار رتبه‌بندی نیز ارائه شده باشد، باید ارائه شود.

عدد >= 0.0
رتبه‌بندی - تعداد اختیاری

تعداد امتیازهای مربوط به اقامتگاه.

نکته: اگر برنامه شما می‌خواهد نحوه نمایش این عدد به کاربران را کنترل کند، این فیلد را ارائه دهید. رشته مختصری را که می‌تواند به کاربر نمایش داده شود، ارائه دهید. برای مثال، اگر تعداد ۱,۰۰۰,۰۰۰ است، استفاده از اختصاراتی مانند ۱M را در نظر بگیرید تا در اندازه‌های کوچک‌تر صفحه نمایش کوتاه نشود.

رشته
رتبه‌بندی - مقدار شمارش اختیاری

تعداد امتیازهای مربوط به اقامتگاه.

توجه: اگر نمی‌خواهید خودتان منطق نمایش اختصارات را مدیریت کنید، این فیلد را وارد کنید. اگر هم تعداد و هم مقدار تعداد وجود داشته باشد، از تعداد برای نمایش به کاربران استفاده خواهیم کرد.

بلند
DisplayTimeWindow (اختیاری) - یک پنجره زمانی برای نمایش محتوا روی سطح تنظیم کنید
شروع مهر زمانی اختیاری

مهر زمانیِ دوره‌ای که پس از آن محتوا باید روی سطح نمایش داده شود.

اگر تنظیم نشده باشد، محتوا واجد شرایط نمایش روی سطح است.

مهر زمانی عصر بر حسب میلی ثانیه
مهر زمان پایان اختیاری

مهر زمانیِ دوره‌ای که پس از آن محتوا دیگر روی سطح نمایش داده نمی‌شود.

اگر تنظیم نشده باشد، محتوا واجد شرایط نمایش روی سطح است.

مهر زمانی عصر بر حسب میلی ثانیه

PointOfInterestEntity

ویژگی مورد نیاز توضیحات قالب
اکشن اوری مورد نیاز

پیوند عمیق به موجودیت در برنامه ارائه دهنده.

توجه: می‌توانید از لینک‌های عمیق برای ارجاع استفاده کنید. به این سوالات متداول مراجعه کنید.

اوری
عنوان مورد نیاز عنوان نهاد.

رشته

اندازه متن پیشنهادی: حداکثر ۵۰ کاراکتر

تصاویر پوستر مشروط مورد نیاز

در صورت ارائه چندین تصویر، فقط ۱ تصویر نمایش داده می‌شود. نسبت تصویر توصیه شده ۱۶:۹ است.

توجه: اگر نهاد بخشی از خوشه توصیه‌ها باشد، تصویر الزامی است. اگر نشان ارائه می‌شود، فضای امن ۲۴ dps را در بالا و پایین تصویر تضمین کنید.

برای راهنمایی به مشخصات تصویر مراجعه کنید.
آخرین زمان نامزدی مشروط مورد نیاز

مهر زمانیِ آخرین باری که کاربر با این موجودیت تعامل داشته است.

توجه: اگر موجودیت بخشی از خوشه جستجوی ادامه باشد، این فیلد الزامی است.

جودا-تایم فوری
مکان - کشور مشروط مورد نیاز

کشوری که نقطه مورد نظر در آن اتفاق می‌افتد.

توجه: اگر نهاد بخشی از خوشه توصیه باشد، این فیلد الزامی است.

متن رایگان

اندازه متن پیشنهادی: حداکثر ~20 کاراکتر

مکان - شهر مشروط مورد نیاز

شهری که نقطه مورد نظر در آن اتفاق می‌افتد.

توجه: اگر نهاد بخشی از خوشه توصیه باشد، این فیلد الزامی است.

متن رایگان

اندازه متن پیشنهادی: حداکثر ~20 کاراکتر

مکان - نمایش آدرس مشروط مورد نیاز

آدرسی که به کاربر نمایش داده می‌شود. یک آدرس مختصر ارائه دهید و در صورت امکان از اختصارات استفاده کنید (برای مثال، "St" برای "Street"، "Ave" برای "Avenue"). این رشته ممکن است بسته به دستگاه و تنظیمات کاربر کوتاه شود. برای شناسایی بهتر، نام شهر را نیز ذکر کنید.

توجه: اگر نهاد بخشی از خوشه توصیه باشد، این فیلد الزامی است.

متن رایگان

اندازه متن پیشنهادی: حداکثر ~35 کاراکتر

مکان - آدرس خیابان اختیاری آدرس خیابان (در صورت وجود) نقطه مورد نظر.

متن رایگان

اندازه متن پیشنهادی: حداکثر ~20 کاراکتر

مکان - ایالت اختیاری ایالت یا استانی (در صورت وجود) که نقطه مورد نظر در آن واقع شده است.

متن رایگان

اندازه متن پیشنهادی: حداکثر ~20 کاراکتر

مکان - کد پستی اختیاری کد پستی (در صورت وجود) نقطه مورد نظر.

متن رایگان

اندازه متن پیشنهادی: حداکثر ~20 کاراکتر

موقعیت مکانی - محله اختیاری محله (در صورت وجود) نقطه مورد نظر.

متن رایگان

اندازه متن پیشنهادی: حداکثر ~20 کاراکتر

پنجره زمان دسترسی - زمان شروع محلی - مهر زمانی اختیاری مهر زمانیِ دوره‌ای که انتظار می‌رود نقطه مورد نظر باز/در دسترس باشد. جودا-تایم فوری
پنجره زمان دسترسی - زمان شروع محلی - منطقه زمانی اختیاری منطقه زمانی که انتظار می‌رود نقطه مورد نظر در آن باز/در دسترس باشد.

جودا-زمان تاریخ و زمانمنطقه زمانی

برای راهنمایی به مشخصات منطقه زمانی مراجعه کنید.

پنجره زمان دسترسی - زمان پایان محلی - مهر زمان اختیاری مهر زمانی دوره‌ای که انتظار می‌رود نقطه مورد نظر تا آن زمان باز/در دسترس باشد. جودا-تایم فوری
پنجره زمان دسترسی - زمان پایان محلی - منطقه زمانی اختیاری منطقه زمانی که انتظار می‌رود نقطه مورد نظر در آن باز/در دسترس باشد.

جودا-زمان تاریخ و زمانمنطقه زمانی

برای راهنمایی به مشخصات منطقه زمانی مراجعه کنید.

نشان‌ها اختیاری

هر نشان یا متن آزاد (حداکثر ۱۵ کاراکتر) یا تصویر کوچک است.

نشان - متن اختیاری

عنوان برای نشان

توجه: برای نشان، متن یا تصویر الزامی است.

متن رایگان

اندازه متن پیشنهادی: حداکثر ۱۵ کاراکتر

نشان - تصویر اختیاری

تصویر کوچک

جلوه‌های ویژه تجربه کاربری، برای مثال به صورت پوشش نشان روی تصویر کوچک تصویر/ویدئو.

توجه: برای نشان، متن یا تصویر الزامی است.

برای راهنمایی به مشخصات تصویر مراجعه کنید.
توضیحات اختیاری

یک پاراگراف متن برای توصیف موجودیت.

توجه: یا توضیحات یا فهرست زیرنویس‌ها به کاربر نمایش داده می‌شود، نه هر دو.

متن رایگان

اندازه متن پیشنهادی: ۱۸۰ کاراکتر

فهرست زیرنویس‌ها اختیاری

حداکثر ۳ زیرنویس، که هر زیرنویس شامل یک خط متن است.

توجه: یا توضیحات یا فهرست زیرنویس‌ها به کاربر نمایش داده می‌شود، نه هر دو.

متن رایگان

اندازه متن پیشنهادی برای هر زیرنویس: حداکثر ۵۰ کاراکتر

رتبه‌بندی - حداکثر مقدار اختیاری

حداکثر مقدار مقیاس رتبه‌بندی.

اگر مقدار فعلی رتبه‌بندی نیز ارائه شده باشد، باید ارائه شود.

عدد >= 0.0
رتبه‌بندی - ارزش فعلی اختیاری

مقدار فعلی مقیاس رتبه‌بندی.

اگر حداکثر مقدار رتبه‌بندی نیز ارائه شده باشد، باید ارائه شود.

عدد >= 0.0
رتبه‌بندی - تعداد اختیاری

تعداد امتیازهای مربوط به نقطه مورد نظر.

نکته: اگر برنامه شما می‌خواهد نحوه نمایش این عدد به کاربران را کنترل کند، این فیلد را ارائه دهید. رشته مختصری را که می‌تواند به کاربر نمایش داده شود، ارائه دهید. برای مثال، اگر تعداد ۱,۰۰۰,۰۰۰ است، استفاده از اختصاراتی مانند ۱M را در نظر بگیرید تا در اندازه‌های کوچک‌تر صفحه نمایش کوتاه نشود.

رشته
رتبه‌بندی - مقدار شمارش اختیاری

تعداد امتیازهای مربوط به نقطه مورد نظر.

توجه: اگر نمی‌خواهید خودتان منطق نمایش اختصارات را مدیریت کنید، این فیلد را وارد کنید. اگر هم تعداد و هم مقدار تعداد وجود داشته باشد، از تعداد برای نمایش به کاربران استفاده خواهیم کرد.

بلند
قیمت - قیمت فعلی مشروط مورد نیاز

قیمت فعلی بلیط/کارت ورود به نقطه مورد نظر.

در صورت ارائه قیمت خط خورده، باید ارائه شود.

متن رایگان
قیمت - قیمت ضربدری اختیاری قیمت اصلی بلیط/کارت ورود به نقطه مورد نظر. متن رایگان
اطلاع از قیمت اختیاری اعلام قیمت برای ارائه تخفیف ویژه، رویداد، و تخفیف برای اعضا، در صورت وجود.

متن رایگان

اندازه متن پیشنهادی: کمتر از ۴۵ کاراکتر (متن خیلی طولانی ممکن است بیضی نشان دهد)

دسته بندی محتوا اختیاری دسته بندی محتوای موجود در موجودیت را شرح دهید.

فهرست Enumهای واجد شرایط

  • نوع سفر و محل
  • نوع فیلم و سریال (مثال - سینما)
  • نوع پزشکی (مثال - بیمارستان)
  • نوع آموزش (مثال - مدرسه)
  • نوع ورزش (مثال - ورزشگاه)

برای راهنمایی به بخش دسته‌بندی محتوا مراجعه کنید.

DisplayTimeWindow (اختیاری) - یک پنجره زمانی برای نمایش محتوا روی سطح تنظیم کنید
شروع مهر زمانی اختیاری

مهر زمانیِ دوره‌ای که پس از آن محتوا باید روی سطح نمایش داده شود.

اگر تنظیم نشده باشد، محتوا واجد شرایط نمایش روی سطح است.

مهر زمانی عصر بر حسب میلی ثانیه
مهر زمان پایان اختیاری

مهر زمانیِ دوره‌ای که پس از آن محتوا دیگر روی سطح نمایش داده نمی‌شود.

اگر تنظیم نشده باشد، محتوا واجد شرایط نمایش روی سطح است.

مهر زمانی عصر بر حسب میلی ثانیه

RestaurantReservationEntity

ویژگی مورد نیاز توضیحات قالب
اکشن اوری مورد نیاز

پیوند عمیق به موجودیت در برنامه ارائه دهنده.

توجه: می‌توانید از لینک‌های عمیق برای ارجاع استفاده کنید. به این سوالات متداول مراجعه کنید.

اوری
عنوان مورد نیاز عنوان نهاد.

رشته

اندازه متن پیشنهادی: حداکثر ۵۰ کاراکتر

زمان شروع رزرو محلی - مهر زمان مورد نیاز مهر زمانیِ دوره‌ای که انتظار می‌رود رزرو از آن شروع شود. جودا-تایم فوری
زمان شروع رزرو محلی - منطقه زمانی مورد نیاز منطقه زمانی که انتظار می‌رود رزرو از آن شروع شود.

جودا-زمان تاریخ و زمانمنطقه زمانی

برای راهنمایی به مشخصات منطقه زمانی مراجعه کنید.

مکان - کشور مورد نیاز کشوری که رستوران در آن برگزار می‌شود.

متن رایگان

اندازه متن پیشنهادی: حداکثر ~20 کاراکتر

مکان - شهر مورد نیاز شهری که رستوران در آن واقع شده است.

متن رایگان

اندازه متن پیشنهادی: حداکثر ~20 کاراکتر

مکان - نمایش آدرس مورد نیاز آدرس رستوران که به کاربر نمایش داده خواهد شد.

متن رایگان

اندازه متن پیشنهادی: حداکثر ~20 کاراکتر

مکان - آدرس خیابان اختیاری آدرس خیابان (در صورت وجود) رستوران.

متن رایگان

اندازه متن پیشنهادی: حداکثر ~20 کاراکتر

مکان - ایالت اختیاری ایالت یا استانی (در صورت وجود) که رستوران در آن واقع شده است.

متن رایگان

اندازه متن پیشنهادی: حداکثر ~20 کاراکتر

مکان - کد پستی اختیاری کد پستی (در صورت وجود) رستوران.

متن رایگان

اندازه متن پیشنهادی: حداکثر ~20 کاراکتر

موقعیت مکانی - محله اختیاری محله رستوران (در صورت وجود).

متن رایگان

اندازه متن پیشنهادی: حداکثر ~20 کاراکتر

تصاویر پوستر اختیاری در صورت ارائه چندین تصویر، فقط ۱ تصویر نمایش داده می‌شود. نسبت تصویر توصیه شده ۱۶:۹ است. برای راهنمایی به مشخصات تصویر مراجعه کنید.
توضیحات اختیاری

یک پاراگراف متن برای توصیف موجودیت.

توجه: یا توضیحات یا فهرست زیرنویس‌ها به کاربر نمایش داده می‌شود، نه هر دو.

متن رایگان

اندازه متن پیشنهادی: ۱۸۰ کاراکتر

فهرست زیرنویس‌ها اختیاری

حداکثر ۳ زیرنویس، که هر زیرنویس شامل یک خط متن است.

توجه: یا توضیحات یا فهرست زیرنویس‌ها به کاربر نمایش داده می‌شود، نه هر دو.

متن رایگان

اندازه متن پیشنهادی برای هر زیرنویس: حداکثر ۵۰ کاراکتر

اندازه میز اختیاری تعداد افراد در گروه رزرو عدد صحیح > 0
DisplayTimeWindow (اختیاری) - یک پنجره زمانی برای نمایش محتوا روی سطح تنظیم کنید
شروع مهر زمانی اختیاری

مهر زمانیِ دوره‌ای که پس از آن محتوا باید روی سطح نمایش داده شود.

اگر تنظیم نشده باشد، محتوا واجد شرایط نمایش روی سطح است.

مهر زمانی عصر بر حسب میلی ثانیه
مهر زمان پایان اختیاری

مهر زمانیِ دوره‌ای که پس از آن محتوا دیگر روی سطح نمایش داده نمی‌شود.

اگر تنظیم نشده باشد، محتوا واجد شرایط نمایش روی سطح است.

مهر زمانی عصر بر حسب میلی ثانیه

EventReservationEntity

ویژگی مورد نیاز توضیحات قالب
اکشن اوری مورد نیاز

پیوند عمیق به موجودیت در برنامه ارائه دهنده.

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

See Timezone Specifications for guidance.

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

متن رایگان

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

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

See Timezone Specifications for guidance.

Service Provider - Name اختیاری

The name of the service provider.

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

Free text. For example, name of the event organizer/tour
Service Provider - Image اختیاری

The logo/image of the service provider.

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

See Image Specifications for guidance.
توضیحات اختیاری

A single paragraph of text to describe the entity.

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

متن رایگان

Recommended text size: 180 chars

Subtitle list اختیاری

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

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

متن رایگان

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

متن رایگان

Recommended text size: max 15 chars

Badge - Image اختیاری

Small image

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

Note: Either text or image is required for the badge

See Image Specifications for guidance.
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.

متن رایگان
Price - StrikethroughPrice اختیاری The original price of the ticket/pass for the event. متن رایگان
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)

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

بلند
Content Categories اختیاری Describe the category of the content in the entity.

List of Eligible Enums

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

See the Content Category section for guidance.

DisplayTimeWindow (Optional) - Set a time window for a content to be shown on the surface
Start Timestamp Optional

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 Optional

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.

Free text. 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 DateTimeZone

See Timezone Specifications for guidance.

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

See Timezone Specifications for guidance.

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.

متن رایگان

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.

متن رایگان

Recommended text size: max ~35 chars

Location - Street Address Optional The street address (if applicable) of the lodging.

متن رایگان

Recommended text size: max ~20 chars

Location - State Optional The state or province (if applicable) in which the lodging is located.

متن رایگان

Recommended text size: max ~20 chars

Location - Zip code Optional The zip code (if applicable) of the lodging.

متن رایگان

Recommended text size: max ~20 chars

Location - Neighborhood Optional The neighborhood (if applicable) of the lodging.

متن رایگان

Recommended text size: max ~20 chars

Poster images Optional

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.
توضیحات Optional

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

Subtitle list Optional

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 Optional The reservation ID for the lodging reservation. متن رایگان
Rating - Max value Optional

The maximum value of the rating scale.

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

Number >= 0.0
Rating - Current value Optional

The current value of the rating scale.

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

Number >= 0.0
Rating - Count Optional

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.

String
Rating - Count Value Optional

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.

متن رایگان
Price - StrikethroughPrice Optional The original price of the lodging, which is be struck-through in the UI. متن رایگان
Price Callout Optional 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 Optional

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 Optional

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.

Free text. For example, "SFO to SAN"

Recommended text size: Max 50 chars

Transportation Type مورد نیاز The mode/type of transportation for the reservation. Enum: FLIGHT, TRAIN, BUS, or FERRY
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

See Timezone Specifications for guidance.

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

See Timezone Specifications for guidance.

Transportation Number مورد نیاز The flight number, bus number, train number, or ferry/cruise number. متن رایگان
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

See Timezone Specifications for guidance.

Departure Location - Country Optional The country of departure.

متن رایگان

Recommended text size: max ~20 chars

Departure Location - City Optional The city of departure.

متن رایگان

Recommended text size: max ~20 chars

Departure Location - Display Address Optional The location of departure that will be displayed to the user.

متن رایگان

Recommended text size: max ~20 chars

Departure Location - Street Address Optional The street address (if applicable) of the departure location.

متن رایگان

Recommended text size: max ~20 chars

Departure Location - State Optional The state or province (if applicable) of the departure location.

متن رایگان

Recommended text size: max ~20 chars

Departure Location - Zip code Optional The zip code (if applicable) of the departure location.

متن رایگان

Recommended text size: max ~20 chars

Departure Location - Neighborhood Optional The neighborhood (if applicable) of the departure location.

متن رایگان

Recommended text size: max ~20 chars

Arrival Location - Country Optional The country of arrival.

متن رایگان

Recommended text size: max ~20 chars

Arrival Location - City Optional The city of arrival.

متن رایگان

Recommended text size: max ~20 chars

Arrival Location - Display Address Optional The location of arrival that will be displayed to the user.

متن رایگان

Recommended text size: max ~20 chars

Arrival Location - Street Address Optional The street address (if applicable) of the arrival location.

متن رایگان

Recommended text size: max ~20 chars

Arrival Location - State Optional The state or province (if applicable) of the arrival location.

متن رایگان

Recommended text size: max ~20 chars

Arrival Location - Zip code Optional The zip code (if applicable) of the arrival location.

متن رایگان

Recommended text size: max ~20 chars

Arrival Location - Neighborhood Optional The neighborhood (if applicable) of the arrival location.

متن رایگان

Recommended text size: max ~20 chars

Service Provider - Name Optional

The name of the service provider.

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

Free text. For example, Airline name
Service Provider - Image Optional

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 Optional

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

See Image Specifications for guidance.
توضیحات Optional

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

Subtitle list Optional

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 Optional 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.

متن رایگان
Price - StrikethroughPrice Optional The original price of the reservation, which is be struck-through in the UI. متن رایگان
Price Callout Optional 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 Optional

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 Optional

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.

Free text. 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

See Timezone Specifications for guidance.

Localized Return Time - Timestamp Optional The epoch timestamp that represents the check out time for the reservation. Joda-Time Instant
Localized Return Time - Timezone Optional The timezone of the check out time for the reservation.

Joda-Time DateTimeZone

See Timezone Specifications for guidance.

Pickup Address - Country Optional The country of the pickup location.

متن رایگان

Recommended text size: max ~20 chars

Pickup Address - City Optional The city of the pickup location.

متن رایگان

Recommended text size: max ~20 chars

Pickup Address - Display Address Optional The pickup location that will be displayed to the user.

متن رایگان

Recommended text size: max ~20 chars

Pickup Address - Street Address Optional The street address (if applicable) of the pickup location.

متن رایگان

Recommended text size: max ~20 chars

Pickup Address - State Optional The state or province (if applicable) of the pickup location.

متن رایگان

Recommended text size: max ~20 chars

Pickup Address - Zip code Optional The zip code (if applicable) of the pickup location.

متن رایگان

Recommended text size: max ~20 chars

Pickup Address - Neighborhood Optional The neighborhood (if applicable) of the pickup location.

متن رایگان

Recommended text size: max ~20 chars

Return Address - Country Optional The country of return location.

متن رایگان

Recommended text size: max ~20 chars

Return Address - City Optional The city of return location.

متن رایگان

Recommended text size: max ~20 chars

Return Address - Display Address Optional The return location that will be displayed to the user.

متن رایگان

Recommended text size: max ~20 chars

Return Address - Street Address Optional The street address (if applicable) of the return location.

متن رایگان

Recommended text size: max ~20 chars

Return Address - State Optional The state or province (if applicable) of the return location.

متن رایگان

Recommended text size: max ~20 chars

Return Address - Zip code Optional The zip code (if applicable) of the return location.

متن رایگان

Recommended text size: max ~20 chars

Return Address - Neighborhood Optional The neighborhood (if applicable) of the return location.

متن رایگان

Recommended text size: max ~20 chars

Service Provider - Name Optional

The name of the service provider.

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

Free text. For example, "Avis Car Rental"
Service Provider - Image Optional

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 Optional

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

See Image Specifications for guidance.
توضیحات Optional

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

Subtitle list Optional

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

Confirmation ID Optional The confirmation ID for the vehicle rental reservation. متن رایگان
Price - CurrentPrice Conditionally required

The current price of the reservation.

Must be provided if strikethrough price is provided.

متن رایگان
Price - StrikethroughPrice Optional The original price of the reservation, which is be struck-through in the UI. متن رایگان
Price Callout Optional 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 Optional

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 Optional

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

Image specifications

Required specifications for image assets are listed in this table:

نسبت ابعاد Minimum pixels Recommended pixels

Square (1x1)

ترجیحی

۳۰۰x۳۰۰ 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

Maximum file size

5120 KB

توصیه‌های اضافی

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

Timezone specifications

Prefer ID (for example, "America/Los_Angeles") over offset (for example, "-07:00").

Sample usage: DateTimeZone.forID("America/Los_Angeles")

Content Category

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

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

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

Guidelines to use the content categories

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

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

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

Step 2: Provide Cluster data

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

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.

You can check the service availability for every cluster type that you intend to publish. The isServiceAvailable API accepts a request object, ServiceAvailabilityRequest , which contains the cluster types for which service availability needs to be checked. You can find the ClusterType enum values required for ServiceAvailabilityRequest from the following table.

Cluster Type Cluster Type Constant Integer Value
ناشناخته TYPE_UNKNOWN 0
Recommendation Cluster TYPE_RECOMMENDATION ۱
Featured Cluster TYPE_FEATURED ۲
Continuation Cluster TYPE_CONTINUATION ۳
User Management Cluster TYPE_ENGAGEMENT ۸
Subscription Cluster TYPE_SUBSCRIPTION ۱۲
Continue Search Cluster TYPE_CONTINUE_SEARCH ۱۳
Reservation Cluster TYPE_RESERVATION ۱۴

کاتلین

val request = ServiceAvailabilityRequest.Builder()
    .addIntendedClusterType(ClusterType.TYPE_CONTINUATION)
    .addIntendedClusterType(ClusterType.TYPE_RECOMMENDATION)
    .build()

client.isServiceAvailable(request).addOnCompleteListener { task ->
    if (task.isSuccessful) {
        val availabilityMap = task.result
        if (availabilityMap[ClusterType.TYPE_CONTINUATION] == true) {
            // Proceed with publishing continuation content
        }
        if (availabilityMap[ClusterType.TYPE_RECOMMENDATION] == true) {
            // Proceed with publishing recommendation content
        }
    } else {
        // The IPC call itself fails, proceed with error handling logic here,
        // such as retry.
    }
}

جاوا

ServiceAvailabilityRequest request =
    new ServiceAvailabilityRequest.Builder()
        .addIntendedClusterType(ClusterType.TYPE_CONTINUATION)
        .addIntendedClusterType(ClusterType.TYPE_RECOMMENDATION)
        .build();

client.isServiceAvailable(request).addOnCompleteListener(task -> {
    if (task.isSuccessful()) {
        Map<Integer, Boolean> availabilityMap = task.getResult();
        if (Boolean.TRUE.equals(availabilityMap.get(ClusterType.TYPE_CONTINUATION))) {
            // Proceed with publishing continuation content
        }
        if (Boolean.TRUE.equals(availabilityMap.get(ClusterType.TYPE_RECOMMENDATION))) {
            // Proceed with publishing recommendation content
        }
    } else {
        // The IPC call itself fails, proceed with error handling logic here,
        // such as retry.
    }
});
Conditional Service Availability Feature

Some integrated apps request a special configuration that enables and disables the Engage service intermittently in order to reduce their serving cost. This intermittent content ingestion strategy, although possible, negatively affects the user and the product – stale content will not be presented and some surfaces will not be served at all.

Starting with v1.6.0, the Engage SDK allows checking availability for specific cluster types. This provides more flexibility so that if the intermittent content strategy was adopted by a given application, some cluster types can follow that intermittent strategy while other cluster types are always enabled (ie continuation clusters).

If the Engage service should not be 'continuously' enabled on all supported devices for whatever reason, and is configured for intermittent ingestion for any set of devices, all continuation cluster publications (eg Reservation and Continue Search) will be still enabled by default configuration, and the rest of the cluster types will be enabled and disabled intermittently. If intermittent ingestion applies to you but this default configuration is not suitable for your needs, please contact engage-developers@google.com.

For SDK versions prior to v1.6.0 (Deprecated)

کاتلین

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
Action Text Optional Text Shown on the CTA (ie Sign in)
زیرنویس Optional 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.

Error handling

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.

کد خطا Error name توجه داشته باشید
1 SERVICE_NOT_FOUND The service is not available on the given device.
2 SERVICE_NOT_AVAILABLE The service is available on the given device, but it is not available at the time of the call (for example, it is explicitly disabled).
3 SERVICE_CALL_EXECUTION_FAILURE The task execution failed due to threading issues. In this case, it can be retried.
4 SERVICE_CALL_PERMISSION_DENIED The caller is not allowed to make the service call.
5 SERVICE_CALL_INVALID_ARGUMENT The request contains invalid data (for example, more than the allowed number of clusters).
6 SERVICE_CALL_INTERNAL There is an error on the service side.
7 SERVICE_CALL_RESOURCE_EXHAUSTED The service call is made too frequently.

Step 3: Handle broadcast intents

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

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

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

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

کاتلین

class AppEngageBroadcastReceiver : BroadcastReceiver(){
  // Trigger recommendation cluster publish when PUBLISH_RECOMMENDATION broadcast
  // is received
  // Trigger featured cluster publish when PUBLISH_FEATURED broadcast is received
  // Trigger continue search cluster publish when PUBLISH_CONTINUE_SEARCH
  // broadcast is received
  // Trigger reservation cluster publish when PUBLISH_RESERVATION broadcast is
  // received
}

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

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

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

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

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

جاوا

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

// Trigger featured cluster publish when PUBLISH_FEATURED broadcast is received

// Trigger continue search cluster publish when PUBLISH_CONTINUE_SEARCH
// broadcast is received

// Trigger reservation cluster publish when PUBLISH_RESERVATION broadcast is
// received
}

public static void registerBroadcastReceivers(Context context) {

context = context.getApplicationContext();

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

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

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

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

}
  • Statically declare an implementation with the <receiver> tag in your AndroidManifest.xml file. This allows the application to receive broadcast intents when it is not running, and also allows the application to publish the content.

<application>
   <receiver
      android:name=".AppEngageBroadcastReceiver"
      android:permission="com.google.android.engage.REQUEST_ENGAGE_DATA"
      android:exported="true"
      android:enabled="true">
      <intent-filter>
         <action android:name="com.google.android.engage.action.PUBLISH_RECOMMENDATION" />
      </intent-filter>
      <intent-filter>
         <action android:name="com.google.android.engage.action.PUBLISH_FEATURED" />
      </intent-filter>
      <intent-filter>
         <action android:name="com.google.android.engage.action.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 a publishRecommendationClusters call when receiving this intent.
  • com.google.android.engage.action.PUBLISH_FEATURED It is recommended to start a publishFeaturedCluster call when receiving this intent.
  • com.google.android.engage.action.travel.PUBLISH_CONTINUE_SEARCH It is recommended to start a publishContinueSearchCluster call when receiving this intent.
  • com.google.android.engage.action.travel.PUBLISH_RESERVATION It is recommended to start a publishReservationCluster 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.

Next steps

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.