با دسترسی به کاربران در جایی که هستند، تعامل با برنامه را تقویت کنید. Engage SDK را ادغام کنید تا توصیههای شخصیسازیشده و محتوای ادامهدار را مستقیماً به کاربران در چندین سطح دروندستگاهی، مانند مجموعهها، Entertainment Space، و «فروشگاه Play» ارائه دهید. این ادغام کمتر از ۵۰ کیلوبایت (فشردهشده) به میانگین APK اضافه میکند و برای اکثر برنامهها حدود یک هفته از زمان توسعهدهنده را میگیرد. در سایت کسبوکار ما بیشتر بدانید.
این راهنما حاوی دستورالعملهایی برای شرکای توسعهدهنده است تا محتوای غذایی (سفارش غذا، مرور و کشف غذا یا رستوران، اشتراک غذا، دستورالعملهای آشپزی) را به سطوح محتوای Engage ارائه دهند.
پشتیبانی دستهبندی و سطوح
واجدشرایط بودن سطح Engage SDK براساس دسته محتوای برنامه شما است. از جدول زیر برای تعیین واجدشرایط بودن خود برای سطوح خاص استفاده کنید:
| وضعیت | دستهبندی محتوا یا مورد استفاده | سطوح پشتیبانیشده |
|---|---|---|
|
پشتیبانیشده (واجدشرایط در همه سطوح) |
|
|
| پشتیبانی نمیشود |
|
مهارتهای Android
مشاهده در GitHubادغام Engage SDK
android skills add engage-sdk-integrationجزئیات یکپارچهسازی
این بخش مراحل، مدلهای داده، و اصطلاحات لازم برای ادغام با «کیت توسعه نرمافزار Engage» برای محتوای غذا را بهتفصیل شرح میدهد.
اصطلاحات
این ادغام شامل پنج نوع خوشه زیر است: توصیه، ویژه، سبد خرید غذا، فهرست خرید غذا، و سفارش مجدد.
خوشههای توصیه پیشنهادهای شخصیسازیشده مرتبط با غذا را از یک شریک توسعهدهنده تکی نشان میدهد. این توصیهها میتواند برای کاربر شخصیسازی شود یا بهصورت عمومی باشد (برای مثال، جدید در حراج). از آنها برای نمایش مواردی مثل دستورالعمل، فروشگاه، غذا، یا خواربار استفاده کنید.
- خوشه «توصیه» میتواند از فهرستگان
ProductEntity،StoreEntity، یاRecipeEntityساخته شود، اما نمیتواند ترکیبی از انواع مختلف نهادها باشد.
شکل :`ProductEntity`، `StoreEntity`، و `RecipeEntity`. (*رابط کاربری فقط برای اهداف نمایشی است) - خوشه «توصیه» میتواند از فهرستگان
خوشه ویژه مجموعهای از نهادهای چندین شریک توسعهدهنده را در یک گروه واسط کاربر نمایش میدهد. یک خوشه «ویژه» وجود خواهد داشت که در نزدیکی بالای واسط کاربر با جایگاه اولویتدار بالاتر از همه خوشههای «توصیه» ظاهر میشود. هر شریک توسعهدهنده میتواند حداکثر ۱۰ نهاد را در خوشه «ویژه» همهفرستی کند.
شکل : خوشه ویژه با `RecipeEntity`. (*رابط کاربری فقط برای اهداف نمایشی است) خوشه سبد خرید مواد غذایی پیشنمایشی از سبدهای خرید مواد غذایی از چندین شریک توسعهدهنده را در یک گروه واسط کاربر نشان میدهد و کاربران را ترغیب میکند تا سبدهای خرید معلق خود را تکمیل کنند. یک خوشه «سبد خرید غذا» وجود دارد.
«خوشه سبد خرید غذا» باید تعداد کل موارد موجود در سبد خرید را نشان دهد و همچنین میتواند تصاویر X مورد موجود در سبد خرید کاربر را دربرگیرد.
شکل: خوشه «سبد خرید غذا» از یک شریک. (*میانای کاربر فقط برای اهداف نمایشی است)
خوشه فهرست خرید مواد غذایی پیشنمایشی از فهرستهای خرید خواربار از چندین شریک توسعهدهنده را در یک گروه میانای کاربری نشان میدهد و کاربران را ترغیب میکند تا برای بهروزرسانی و تکمیل فهرستهایشان به برنامه مربوطه برگردند. یک خوشه «فهرست خرید غذا» وجود دارد.
شکل: خوشه «فهرست خرید خواربار» از یک شریک. (*میانای کاربر فقط برای اهداف نمایشی است) خوشه سفارش مجدد پیشنمایشی از سفارشهای قبلی از چند شریک توسعهدهنده را در یک گروه واسط کاربر نشان میدهد و کاربران را به سفارش مجدد ترغیب میکند. یک خوشه «سفارش مجدد» وجود دارد.
خوشه سفارش مجدد باید تعداد کل موارد موجود در سفارش قبلی کاربر را نشان دهد و همچنین باید یکی از موارد زیر را شامل شود:
- تصاویر X مورد در سفارش قبلی کاربر.
- برچسبهای X مورد در سفارش قبلی کاربر.
شکل: خوشه «سفارش مجدد غذا» از یک شریک. (*میانای کاربر فقط برای اهداف نمایشی است)
پیشکار
حداقل سطح میانای برنامهسازی کاربردی: ۱۹
کتابخانه 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'
}
خلاصه
این طراحی براساس پیادهسازی خدمات محدودکننده است.
دادههایی که مشتری میتواند منتشر کند تابع محدودیتهای زیر برای انواع مختلف خوشه است:
| نوع خوشه | محدودیتهای خوشه | حداکثر حد مجاز نهاد در خوشه |
|---|---|---|
| خوشه(های) توصیه | حداکثر ۷ | حداکثر ۵۰ (ProductEntity، RecipeEntity، یا
StoreEntity) |
| خوشه ویژه | حداکثر ۱ | حداکثر ۲۰ (ProductEntity، RecipeEntity، یا
StoreEntity) |
| خوشه سبد خرید غذا | حداکثر ۱ | حداکثر ۳ FoodShoppingCart |
| خوشه فهرست خرید غذا | حداکثر ۱ | حداکثر ۳ FoodShoppingList |
| خوشه سفارش مجدد غذا | حداکثر ۱ | حداکثر ۱ ReorderEntity |
مرحله ۱: ارائه دادههای نهاد
کیت توسعه نرمافزار نهادهای مختلفی را برای نمایش هر نوع مورد تعریف کرده است. از موجودیتهای زیر برای دسته «غذا» پشتیبانی میکنیم:
ProductEntityStoreEntityRecipeEntityFoodShoppingCartFoodShoppingListFoodReorderCluster
جدولهای زیر مشخصههای دردسترس و الزامات هر نوع را نشان میدهد.
ProductEntity
شیء ProductEntity نشاندهنده یک مورد تکی (مانند یک قلم خواربار، غذایی از رستوران، یا یک تبلیغ) است که شرکای توسعهدهنده میخواهند منتشر کنند.
ProductEntity
| مشخصه | الزام | شرح | قالب |
|---|---|---|---|
| تصاویر پوستر | الزامی | حداقل یک تصویر باید ارائه شود. | برای راهنمایی، مشخصات تصویر را ببینید. |
| شناسه منبع یکسان کنش | الزامی |
پیوند عمیق به صفحهای در برنامه که جزئیات مربوط به محصول را نمایش میدهد. توجه: میتوانید از پیوندهای عمیق برای اِسناد استفاده کنید. به این پرسشگان مراجعه کنید |
Uri |
| عنوان | اختیاری | نام محصول. | نوشتار آزاد اندازه نوشتار توصیهشده: کمتر از ۹۰ نویسه (نوشتاری که خیلی طولانی باشد ممکن است با سهنقطه نشان داده شود) |
| قیمت - فعلی | الزامی مشروط | قیمت فعلی محصول. اگر قیمت خطخورده ارائه شده باشد، باید ارائه شود. |
نوشتار آزاد |
| قیمت - خطخورده | اختیاری | قیمت اصلی نهاد که در واسط کاربر خطخورده است. | نوشتار آزاد |
| نوشته راهنما | اختیاری | توضیح برای ویژه کردن تبلیغ، رویداد، یا بهروزرسانی برای محصول، درصورت وجود. | نوشتار آزاد اندازه نوشتار توصیهشده: کمتر از ۴۵ نویسه (نوشتاری که خیلی طولانی باشد ممکن است با سهنقطه نشان داده شود) |
| ریزجزئیات نوشته راهنما | اختیاری | نوشتار ریزنویس برای نوشته راهنما. | نوشتار آزاد اندازه نوشتار توصیهشده: کمتر از ۴۵ نویسه (نوشتاری که خیلی طولانی باشد ممکن است با سهنقطه نشان داده شود) |
| ردهبندی (اختیاری) - توجه: همه ردهبندیها بااستفاده از سیستم ردهبندی ستارهای استاندارد ما نمایش داده میشوند. | |||
| ردهبندی - مقدار حداکثر | اختیاری | حداکثر مقدار مقیاس ردهبندی. اگر مقدار فعلی ردهبندی نیز ارائه شده باشد، باید ارائه شود. |
عدد >= ۰٫۰ |
| ردهبندی - مقدار فعلی | اختیاری | مقدار فعلی مقیاس ردهبندی. اگر حداکثر مقدار ردهبندی نیز ارائه شده باشد، باید ارائه شود. |
عدد >= ۰٫۰ |
| ردهبندی - تعداد | اختیاری | تعداد ردهبندیهای محصول. توجه: اگر برنامهتان نحوه نمایش تعداد به کاربران را کنترل میکند، این فیلد را ارائه دهید. از رشتهای مختصر استفاده کنید. برای مثال، اگر تعداد ۱٬۰۰۰٬۰۰۰ است، از مخففهایی مثل 1M استفاده کنید تا تعداد در اندازههای نمایشگر کوچکتر کوتاه نشود. |
رشته |
| ردهبندی - مقدار شمارش | اختیاری | تعداد ردهبندیهای محصول. توجه: اگر منطق اختصار نمایش را خودتان مدیریت نمیکنید، این فیلد را ارائه دهید. اگر هم «تعداد» و هم «مقدار تعداد» وجود داشته باشد، «تعداد» به کاربران نشان داده میشود. |
بلند |
| DisplayTimeWindow (اختیاری) - پنجره زمانی را برای نمایش محتوا در سطح تنظیم کنید | |||
| مُهر زمان شروع | اختیاری |
مُهر زمان مبدأ که پساز آن محتوا باید در سطح نشان داده شود. اگر تنظیم نشده باشد، محتوا واجدشرایط نمایش در سطح است. |
مُهر زمان تاریخ برحسب میلیثانیه |
| مُهر زمان پایان | اختیاری |
مُهر زمان مبدأ که پساز آن محتوا دیگر در سطح نشان داده نمیشود. اگر تنظیم نشده باشد، محتوا واجدشرایط نمایش در سطح است. |
مُهر زمان تاریخ برحسب میلیثانیه |
StoreEntity
شیء StoreEntity نشاندهنده فروشگاه تکی است که شرکای توسعهدهنده
میخواهند منتشر کنند، مثل رستوران یا خواربارفروشی.
StoreEntity
| مشخصه | الزام | شرح | قالب |
|---|---|---|---|
| تصاویر پوستر | الزامی | حداقل یک تصویر باید ارائه شود. | برای راهنمایی، مشخصات تصویر را ببینید. |
| شناسه منبع یکسان کنش | الزامی | پیوند عمیق به صفحه در برنامه که جزئیات مربوط به فروشگاه را نمایش میدهد. توجه: میتوانید از پیوندهای عمیق برای اِسناد استفاده کنید. به این پرسشگان مراجعه کنید |
Uri |
| عنوان | اختیاری | نام فروشگاه. | نوشتار آزاد اندازه نوشتار توصیهشده: کمتر از ۴۵ نویسه (نوشتاری که خیلی طولانی باشد ممکن است با سهنقطه نشان داده شود) |
| مکان | اختیاری | مکان فروشگاه. | نوشتار آزاد اندازه نوشتار توصیهشده: کمتر از ۴۵ نویسه (نوشتاری که خیلی طولانی باشد ممکن است با سهنقطه نشان داده شود) |
| نوشته راهنما | اختیاری | توضیح برای نمایش تبلیغ، رویداد، یا بهروزرسانی برای فروشگاه، درصورت وجود. | نوشتار آزاد اندازه نوشتار توصیهشده: کمتر از ۴۵ نویسه (نوشتاری که خیلی طولانی باشد ممکن است با سهنقطه نشان داده شود) |
| ریزجزئیات نوشته راهنما | اختیاری | نوشتار ریزنویس برای نوشته راهنما. | نوشتار آزاد اندازه نوشتار توصیهشده: کمتر از ۴۵ نویسه (نوشتاری که خیلی طولانی باشد ممکن است با سهنقطه نشان داده شود) |
| شرح | اختیاری | شرح فروشگاه. | نوشتار آزاد اندازه نوشتار توصیهشده: کمتر از ۹۰ نویسه (نوشتاری که خیلی طولانی باشد ممکن است با سهنقطه نشان داده شود) |
| دسته | اختیاری | دسته فروشگاه، در بافت مکانهای غذاخوری، میتواند آشپزی مانند «فرانسوی»، «آمریکایی جدید»، «رامن»، «غذاخوری عالی» باشد. |
نوشتار آزاد اندازه نوشتار توصیهشده: کمتر از ۴۵ نویسه (نوشتاری که خیلی طولانی باشد ممکن است با سهنقطه نشان داده شود) |
| توجه: همه ردهبندیها بااستفاده از سیستم ردهبندی ستارهای استاندارد ما نمایش داده میشود. | |||
| ردهبندی - مقدار حداکثر | اختیاری | حداکثر مقدار مقیاس ردهبندی. اگر مقدار فعلی ردهبندی نیز ارائه شده باشد، باید ارائه شود. |
عدد >= ۰٫۰ |
| ردهبندی - مقدار فعلی | اختیاری | مقدار فعلی مقیاس ردهبندی. اگر حداکثر مقدار ردهبندی نیز ارائه شده باشد، باید ارائه شود. |
عدد >= ۰٫۰ |
| ردهبندی - تعداد | اختیاری | تعداد ردهبندیهای فروشگاه. توجه: اگر برنامهتان میخواهد نحوه نمایش این مورد به کاربران را کنترل کند، این فیلد را ارائه دهید. رشته مختصری ارائه دهید که بتواند به کاربر نمایش داده شود. برای مثال، اگر تعداد ۱٬۰۰۰٬۰۰۰ است، از کوتهنوشتهایی مثل 1M استفاده کنید تا در اندازههای نمایشگر کوچکتر کوتاه نشود. |
رشته |
| ردهبندی - مقدار شمارش | اختیاری | تعداد ردهبندیهای فروشگاه. توجه: اگر نمیخواهید منطق اختصار نمایش را خودتان مدیریت کنید، این فیلد را ارائه دهید. اگر هم «تعداد» و هم «مقدار تعداد» وجود داشته باشد، از «تعداد» برای نمایش به کاربران استفاده میکنیم |
بلند |
RecipeEntity
شیء RecipeEntity نشاندهنده مورد دستورالعملی است که شرکای توسعهدهنده میخواهند
منتشر کنند.
RecipeEntity
| مشخصه | الزام | شرح | قالب |
|---|---|---|---|
| تصاویر پوستر | الزامی | حداقل یک تصویر باید ارائه شود. | برای راهنمایی، مشخصات تصویر را ببینید. |
| شناسه منبع یکسان کنش | الزامی | پیوند عمیق به صفحه در برنامه که جزئیات مربوط به دستورالعمل را نمایش میدهد. توجه: میتوانید از پیوندهای عمیق برای اِسناد استفاده کنید. به این پرسشگان مراجعه کنید |
Uri |
| عنوان | اختیاری | نام دستور پخت. | نوشتار آزاد اندازه نوشتار توصیهشده: کمتر از ۴۵ نویسه (نوشتاری که خیلی طولانی باشد ممکن است با سهنقطه نشان داده شود) |
| نویسنده | اختیاری | نویسنده دستور پخت. | نوشتار آزاد اندازه نوشتار توصیهشده: کمتر از ۴۵ نویسه (نوشتاری که خیلی طولانی باشد ممکن است با سهنقطه نشان داده شود) |
| زمان پخت/آمادهسازی | اختیاری | زمان پخت دستورالعمل. | نوشتار آزاد اندازه نوشتار توصیهشده: کمتر از ۴۵ نویسه (نوشتاری که خیلی طولانی باشد ممکن است با سهنقطه نشان داده شود) |
| نوشته راهنما | اختیاری | توضیح برای ویژه کردن تبلیغ، رویداد، یا بهروزرسانی برای دستورالعمل، درصورت وجود. | نوشتار آزاد اندازه نوشتار توصیهشده: کمتر از ۴۵ نویسه (نوشتاری که خیلی طولانی باشد ممکن است با سهنقطه نشان داده شود) |
| دسته | اختیاری | دسته دستورالعمل. | نوشتار آزاد اندازه نوشتار توصیهشده: کمتر از ۴۵ نویسه (نوشتاری که خیلی طولانی باشد ممکن است با سهنقطه نشان داده شود) |
| شرح | اختیاری | شرح دستور پخت. | نوشتار آزاد اندازه نوشتار توصیهشده: کمتر از ۹۰ نویسه (نوشتاری که خیلی طولانی باشد ممکن است با سهنقطه نشان داده شود) |
| توجه: همه ردهبندیها بااستفاده از سیستم ردهبندی ستارهای استاندارد ما نمایش داده میشوند. | |||
| ردهبندی - مقدار حداکثر | اختیاری | حداکثر مقدار مقیاس ردهبندی. اگر مقدار فعلی ردهبندی نیز ارائه شده باشد، باید ارائه شود. |
عدد >= ۰٫۰ |
| ردهبندی - مقدار فعلی | اختیاری | مقدار فعلی مقیاس ردهبندی. اگر حداکثر مقدار ردهبندی نیز ارائه شده باشد، باید ارائه شود. |
عدد >= ۰٫۰ |
| ردهبندی - تعداد | اختیاری | تعداد ردهبندیهای دستور پخت. توجه: اگر برنامهتان میخواهد نحوه نمایش این مورد به کاربران را کنترل کند، این فیلد را ارائه دهید. رشته مختصری ارائه دهید که بتواند به کاربر نمایش داده شود. برای مثال، اگر تعداد ۱٬۰۰۰٬۰۰۰ است، از کوتهنوشتهایی مثل 1M استفاده کنید تا در اندازههای نمایشگر کوچکتر کوتاه نشود. |
رشته |
| ردهبندی - مقدار شمارش | اختیاری | تعداد ردهبندیهای دستور پخت. توجه: اگر نمیخواهید منطق اختصار نمایش را خودتان مدیریت کنید، این فیلد را ارائه دهید. اگر هم «تعداد» و هم «مقدار تعداد» وجود داشته باشد، از «تعداد» برای نمایش به کاربران استفاده میکنیم |
بلند |
FoodShoppingCart
| مشخصه | الزام | شرح | قالب |
|---|---|---|---|
| شناسه منبع یکسان کنش | الزامی |
پیوند عمیق به سبد خرید در برنامه شریک. توجه: میتوانید از پیوندهای عمیق برای اِسناد استفاده کنید. به این پرسشگان مراجعه کنید |
Uri |
| تعداد موارد | الزامی | تعداد اقلام (نه فقط تعداد محصولات) در سبد خرید. برای مثال: اگر ۳ پرتقال و ۱ سیب در سبد خرید وجود دارد، این عدد باید ۴ باشد. |
عدد صحیح >= ۱ |
| مُهر زمان آخرین تعامل کاربر | الزامی | تعداد میلیثانیههای سپریشده از مبدأ زمانی، که آخرین باری را که کاربر با سبد خرید تعامل داشته است مشخص میکند. | مُهر زمان تاریخ برحسب میلیثانیه |
| عنوان | اختیاری | عنوان کارت (برای مثال، کارت شما). اگر توسعهدهنده عنوانی ارائه نکرده باشد، سبد خرید شما بهعنوان پیشفرض استفاده میشود. |
نوشتار آزاد اندازه نوشتار توصیهشده: کمتر از ۲۵ نویسه (نوشتاری که خیلی طولانی باشد ممکن است با سهنقطه نشان داده شود) |
| متن کنش | اختیاری |
نوشتار دعوت به اقدام دکمه در «سبد خرید» (برای مثال، ساک خرید شما). اگر نوشتار کنش توسط توسعهدهنده ارائه نشده باشد، مشاهده سبد خرید پیشفرض است. این مشخصه از نسخه ۱.۱.۰ به بعد پشتیبانی میشود. |
رشته |
| تصاویر سبد خرید | اختیاری | تصاویر هر محصول در سبد خرید. حداکثر ۱۰ تصویر را میتوان بهترتیب اولویت ارائه کرد؛ تعداد واقعی تصاویر نمایشدادهشده به ابعاد دستگاه بستگی دارد. |
برای راهنمایی، مشخصات تصویر را ببینید. |
| برچسبهای مورد | اختیاری | فهرست برچسبهای موارد موجود در فهرست خرید. تعداد واقعی برچسبهای نمایشدادهشده به ضریب شکل دستگاه بستگی دارد. |
فهرست برچسبهای نوشتاری آزاد اندازه نوشتار توصیهشده: کمتر از ۲۰ نویسه (نوشتاری که خیلی طولانی باشد ممکن است با سهنقطه نشان داده شود) |
| DisplayTimeWindow (اختیاری) - پنجره زمانی را برای نمایش محتوا در سطح تنظیم کنید | |||
| مُهر زمان شروع | اختیاری |
مُهر زمان مبدأ که پساز آن محتوا باید در سطح نشان داده شود. اگر تنظیم نشده باشد، محتوا واجدشرایط نمایش در سطح است. |
مُهر زمان تاریخ برحسب میلیثانیه |
| مُهر زمان پایان | اختیاری |
مُهر زمان مبدأ که پساز آن محتوا دیگر در سطح نشان داده نمیشود. اگر تنظیم نشده باشد، محتوا واجدشرایط نمایش در سطح است. |
مُهر زمان تاریخ برحسب میلیثانیه |
FoodShoppingList
| مشخصه | الزام | شرح | قالب |
|---|---|---|---|
| شناسه منبع یکسان کنش | الزامی |
پیوند عمیق به فهرست خرید در برنامه شریک. توجه: میتوانید از پیوندهای عمیق برای اِسناد استفاده کنید. به این پرسشگان مراجعه کنید |
Uri |
| تعداد موارد | الزامی | تعداد موارد موجود در فهرست خرید. | عدد صحیح >= ۱ |
| مُهر زمان آخرین تعامل کاربر | الزامی | تعداد میلیثانیههای سپریشده از مبدأ زمانی که آخرین باری را که کاربر با فهرست خرید تعامل داشته است مشخص میکند. | مُهر زمان تاریخ برحسب میلیثانیه |
| عنوان | اختیاری |
عنوان فهرست (برای مثال، فهرست خواربار شما). اگر توسعهدهنده عنوانی ارائه نکرده باشد، فهرست خرید پیشفرض است. |
نوشتار آزاد اندازه نوشتار توصیهشده: کمتر از ۲۵ نویسه (نوشتاری که خیلی طولانی باشد ممکن است با سهنقطه نشان داده شود) |
| برچسبهای مورد | الزامی | فهرست برچسبهای موارد موجود در فهرست خرید. باید حداقل ۱ برچسب ارائه شود و حداکثر ۱۰ برچسب را میتوان بهترتیب اولویت ارائه کرد؛ تعداد واقعی برچسبهای نمایشدادهشده به ابعاد دستگاه بستگی دارد. |
فهرست برچسبهای نوشتاری آزاد اندازه نوشتار توصیهشده: کمتر از ۲۰ نویسه (نوشتاری که خیلی طولانی باشد ممکن است با سهنقطه نشان داده شود) |
FoodReorderCluster
| مشخصه | الزام | شرح | قالب |
|---|---|---|---|
| شناسه منبع یکسان کنش | الزامی |
پیوند عمیق برای سفارش مجدد در برنامه شریک. توجه: میتوانید از پیوندهای عمیق برای اِسناد استفاده کنید. به این پرسشگان مراجعه کنید |
Uri |
| متن کنش | اختیاری |
نوشتار دعوت به اقدام دکمه در «سفارش مجدد» (برای مثال، سفارش مجدد). اگر نوشتار کنش توسط توسعهدهنده ارائه نشده باشد، تغییر ترتیب پیشفرض است. این مشخصه از نسخه ۱.۱.۰ به بعد پشتیبانی میشود. |
رشته |
| تعداد موارد | الزامی |
تعداد اقلام (نه فقط تعداد محصولات) در سفارش قبلی. برای مثال: اگر در سفارش قبلی ۳ قهوه کوچک و ۱ کروسان وجود داشت، این عدد باید ۴ باشد. |
عدد صحیح >= ۱ |
| عنوان | الزامی | عنوان مورد سفارش مجدد. | نوشتار آزاد اندازه نوشتار توصیهشده: کمتر از ۴۰ نویسه (نوشتاری که خیلی طولانی باشد ممکن است با سهنقطه نشان داده شود) |
| برچسبهای مورد | اختیاری (اگر ارائه نشده باشد، باید تصاویر پوستر ارائه شود) |
فهرست برچسبهای محصول برای سفارش قبلی. تا ۱۰ برچسب را میتوان بهترتیب اولویت ارائه کرد؛ تعداد واقعی برچسبهای نمایشدادهشده به ضریب شکل دستگاه بستگی دارد. |
فهرست نوشتار آزاد اندازه نوشتار توصیهشده برای هر برچسب: کمتر از ۲۰ نویسه (نوشتار خیلی طولانی ممکن است با سهنقطه نشان داده شود) |
| تصاویر پوستر | اختیاری (اگر ارائه نشده باشد، برچسبهای مورد باید ارائه شود) |
تصاویر موارد موجود در سفارش قبلی. حداکثر ۱۰ تصویر را میتوان بهترتیب اولویت ارائه کرد؛ تعداد واقعی تصاویر نمایشدادهشده به ابعاد دستگاه بستگی دارد. |
برای راهنمایی، مشخصات تصویر را ببینید. |
مشخصات تصویر
جدول زیر مشخصات لازم برای داراییهای تصویری را فهرست میکند:
| نسبت ابعادی | حداقل پیکسل | پیکسلهای توصیهشده |
|---|---|---|
مربع (۱×۱) ترجیحی |
۳۰۰×۳۰۰ | 1200x1200 |
| افقی (۱٫۹۱x۱) | ۶۰۰×۳۱۴ | 1200x628 |
| عمودی (۴×۵) | ۴۸۰×۶۰۰ | 960x1200 |
قالبهای فایل
PNG، JPG، GIF ایستا، WebP
حداکثر اندازه فایل
۵۱۲۰ کیلوبایت
توصیههای بیشتر
- ناحیه امن تصویر: محتوای مهم خود را در ۸۰٪ مرکزی تصویر قرار دهید.
- از پسزمینه شفاف استفاده کنید تا تصویر بهدرستی در تنظیمات زمینه «تیره» و «روشن» نمایش داده شود.
مرحله ۲: ارائه دادههای «خوشه»
توصیه میشود که کار انتشار محتوا در پسزمینه اجرا شود (برای مثال، بااستفاده از WorkManager) و بهصورت منظم یا براساس رویداد (برای مثال، هربار که کاربر برنامه را باز میکند یا وقتی کاربر چیزی به سبد خریدش اضافه میکند) زمانبندی شود.
AppEngageFoodClient مسئول انتشار خوشههای غذایی است.
میاناهای برنامهسازی کاربردی زیر برای انتشار خوشهها در کارخواه وجود دارد:
isServiceAvailablepublishRecommendationClusterspublishFeaturedClusterpublishFoodShoppingCartspublishFoodShoppingListspublishReorderClusterpublishUserAccountManagementRequestupdatePublishStatusdeleteRecommendationsClustersdeleteFeaturedClusterdeleteFoodShoppingCartClusterdeleteFoodShoppingListClusterdeleteReorderClusterdeleteUserManagementClusterdeleteClusters
isServiceAvailable
از این میانای برنامهسازی کاربردی برای بررسی اینکه آیا سرویس برای ادغام دردسترس است یا نه و اینکه آیا محتوا میتواند در دستگاه ارائه شود یا نه استفاده میشود.
برای Engage SDK نسخه ۱.۶.۰ و بالاتر (توصیهشده)
مهارتهای Android
مشاهده در GitHubادغام Engage SDK
android skills add engage-sdk-integrationUse the engage-sdk-integration skill to use Engage SDK 1.6.0 and refactor isServiceAvailable to pass ServiceAvailabilityRequest for publishing all cluster types.میتوانید دردسترس بودن سرویس را برای هر نوع خوشهای که قصد انتشار آن را دارید بررسی کنید. isServiceAvailable API یک شیء درخواست را میپذیرد،
ServiceAvailabilityRequest، که حاوی انواع خوشهای است که باید
دردسترس بودن سرویس برای آنها بررسی شود. میتوانید مقادیر شمارشی ClusterType
موردنیاز برای ServiceAvailabilityRequest را در جدول زیر پیدا کنید.
| نوع خوشه | ثابت نوع خوشه | مقدار عدد صحیح |
|---|---|---|
| نامعلوم | TYPE_UNKNOWN |
0 |
| خوشه توصیه | TYPE_RECOMMENDATION |
1 |
| خوشه ویژه | TYPE_FEATURED |
2 |
| خوشه ادامه | TYPE_CONTINUATION |
3 |
| خوشه سفارش مجدد غذا | TYPE_FOOD_REORDER |
5 |
| خوشه سبد خرید غذا | TYPE_FOOD_SHOPPING_CART |
6 |
| خوشه فهرست خرید غذا | TYPE_FOOD_SHOPPING_LIST |
7 |
| خوشه مدیریت کاربر | TYPE_ENGAGEMENT |
8 |
| خوشه اشتراک | TYPE_SUBSCRIPTION |
12 |
کاتلین
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.
}
});
ویژگی دردسترس بودن مشروط سرویس
برخیاز برنامههای ادغامشده پیکربندی ویژهای را درخواست میکنند که سرویس Engage را بهطور متناوب فعال و غیرفعال میکند تا هزینههای ارائه کاهش یابد. بااینحال، این استراتژی دریافت محتوای متناوب بر تجربه کاربر تأثیر منفی میگذارد: محتوای قدیمی ارائه نخواهد شد و برخیاز سطوح ارائه نخواهند شد.
از نسخه ۱.۶.۰، کیت توسعه نرمافزار Engage امکان بررسی دردسترس بودن برای انواع خوشههای خاص را فراهم میکند. اگر برنامهتان از انتقال متناوب استفاده میکند:
- خوشههای ادامه (مثل سبد خرید غذا، فهرست خرید غذا، و سفارش مجدد) بهطور پیشفرض در همه دستگاههای پشتیبانیشده فعال میمانند.
- انواع دیگر خوشهها (مانند «توصیهها») بهطور متناوب فعال و غیرفعال میشوند.
اگر این پیکربندی پیشفرض برای نیازهای شما مناسب نیست، با engage-developers@google.com تماس بگیرید.
برای نسخههای کیت توسعه نرمافزار قبلاز نسخه ۱.۶.۰ (منسوخشده)
کاتلین
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
این میانای برنامهسازی کاربردی برای انتشار فهرستی از اشیای RecommendationCluster استفاده میشود.
شیء RecommendationCluster میتواند مشخصههای زیر را داشته باشد:
| مشخصه | الزام | شرح |
|---|---|---|
| فهرست ProductEntity، StoreEntity، یا RecipeEntity | الزامی | فهرستی از نهادهایی که توصیههای این «خوشه توصیهها» را تشکیل میدهند. نهادهای موجود در یک خوشه باید از یک نوع باشند. |
| عنوان | الزامی | عنوان «خوشه توصیهشده» (برای مثال، صرفهجویی بزرگ در منو روز شکرگزاری). اندازه نوشتار توصیهشده: کمتر از ۲۵ نویسه (نوشتاری که خیلی طولانی باشد ممکن است با سهنقطه نشان داده شود) |
| زیرنویس | اختیاری | زیرعنوان «خوشه توصیهها». |
| شناسه منبع یکسان کنش | اختیاری |
پیوند عمیق به صفحهای در برنامه شریک که کاربران میتوانند فهرست کامل توصیهها را در آنجا ببینند. توجه: میتوانید از پیوندهای عمیق برای اِسناد استفاده کنید. به این پرسشگان مراجعه کنید |
کاتلین
client.publishRecommendationClusters(
PublishRecommendationClustersRequest.Builder()
.addRecommendationCluster(
RecommendationCluster.Builder()
.addEntity(entity1)
.addEntity(entity2)
.setTitle("Big savings on Thanksgiving menu")
.build())
.build())
جاوا
client.publishRecommendationClusters(
new PublishRecommendationClustersRequest.Builder()
.addRecommendationCluster(
new RecommendationCluster.Builder()
.addEntity(entity1)
.addEntity(entity2)
.setTitle("Big savings on Thanksgiving menu")
.build())
.build());
وقتی سرویس درخواست را دریافت میکند، کنشهای زیر در یک تراکنش انجام میشود:
- همه دادههای «خوشه توصیهها» برداشته میشود.
- دادههای درخواست تجزیه میشود و در «خوشههای توصیهشده» جدید ذخیره میشود.
درصورت بروز خطا، کل درخواست رد میشود و وضعیت موجود حفظ میشود.
publishFeaturedCluster
این میانای برنامهسازی کاربردی برای انتشار شیء FeaturedCluster استفاده میشود.
کاتلین
client.publishFeaturedCluster(
PublishFeaturedClusterRequest.Builder()
.setFeaturedCluster(
FeaturedCluster.Builder()
...
.build())
.build())
جاوا
client.publishFeaturedCluster(
new PublishFeaturedClusterRequest.Builder()
.setFeaturedCluster(
new FeaturedCluster.Builder()
...
.build())
.build());
وقتی سرویس درخواست را دریافت میکند، کنشهای زیر در یک تراکنش انجام میشود:
- دادههای
FeaturedClusterموجود از شریک توسعهدهنده برداشته میشود. - دادههای درخواست تجزیه میشود و در «خوشه ویژه» بهروزشده ذخیره میشود.
درصورت بروز خطا، کل درخواست رد میشود و وضعیت موجود حفظ میشود.
publishFoodShoppingCarts
این میانای برنامهسازی کاربردی برای انتشار فهرستی از اشیای FoodShoppingCart استفاده میشود.
کاتلین
client.publishFoodShoppingCarts(
PublishFoodShoppingCartsRequest.Builder()
.addFoodShoppingCart(
FoodShoppingCart.Builder()
...
.build())
.build())
جاوا
client.publishFoodShoppingCarts(
new PublishFoodShoppingCartsRequest.Builder()
.addFoodShoppingCart(
new FoodShoppingCart.Builder()
...
.build())
.build());
وقتی سرویس درخواست را دریافت میکند، کنشهای زیر در یک تراکنش انجام میشود:
- دادههای
FoodShoppingCartموجود از شریک توسعهدهنده برداشته میشود. - دادههای درخواست تجزیه میشود و در «خوشه سبد خرید» بهروزشده ذخیره میشود.
درصورت بروز خطا، کل درخواست رد میشود و وضعیت موجود حفظ میشود.
publishFoodShoppingLists
این میانای برنامهسازی کاربردی برای انتشار فهرستی از اشیای FoodShoppingList استفاده میشود.
کاتلین
client.publishFoodShoppingLists(
PublishFoodShoppingListsRequest.Builder()
.addFoodShoppingList(
FoodShoppingList.Builder()
...
.build())
.build())
جاوا
client.publishFoodShoppingLists(
new PublishFoodShoppingListsRequest.Builder()
.addFoodShoppingList(
new FoodShoppingList.Builder()
...
.build())
.build());
وقتی سرویس درخواست را دریافت میکند، کنشهای زیر در یک تراکنش انجام میشود:
- دادههای
FoodShoppingListموجود از شریک توسعهدهنده برداشته میشود. - دادههای درخواست تجزیه میشود و در «خوشه فهرست خرید» بهروزشده ذخیره میشود.
درصورت بروز خطا، کل درخواست رد میشود و وضعیت موجود حفظ میشود.
publishReorderCluster
این میانای برنامهسازی کاربردی برای انتشار شیء FoodReorderCluster استفاده میشود.
کاتلین
client.publishReorderCluster(
PublishReorderClusterRequest.Builder()
.setReorderCluster(
FoodReorderCluster.Builder()
...
.build())
.build())
جاوا
client.publishReorderCluster(
new PublishReorderClusterRequest.Builder()
.setReorderCluster(
new FoodReorderCluster.Builder()
...
.build())
.build());
وقتی سرویس درخواست را دریافت میکند، کنشهای زیر در یک تراکنش انجام میشود:
- دادههای
FoodReorderClusterموجود از شریک توسعهدهنده برداشته میشود. - دادههای درخواست تجزیه میشود و در «خوشه سفارش مجدد» بهروزشده ذخیره میشود.
درصورت بروز خطا، کل درخواست رد میشود و وضعیت موجود حفظ میشود.
publishUserAccountManagementRequest
از این API برای انتشار کارت «ورود به سیستم» استفاده میشود . کنش ورود به سیستم کاربران را به صفحه ورود به سیستم برنامه هدایت میکند تا برنامه بتواند محتوا منتشر کند (یا محتوای شخصیسازیشدهتری ارائه دهد)
فراداده زیر بخشی از کارت ورود به سیستم است -
| مشخصه | الزام | شرح |
|---|---|---|
| شناسه منبع یکسان کنش | الزامی | پیوند عمیق به کنش (یعنی پیمایش به صفحه ورود به سیستم برنامه) |
| تصویر | اختیاری - اگر ارائه نشود، عنوان باید ارائه شود |
تصویر نشاندادهشده در کارت تصاویر با نسبت ابعادی ۱۶×۹ و وضوح ۱۲۶۴×۷۱۲ |
| عنوان | اختیاری - اگر ارائه نشود، تصویر باید ارائه شود | عنوان روی کارت |
| متن کنش | اختیاری | نوشتار نشاندادهشده در «دعوت به اقدام» (یعنی ورود به سیستم) |
| زیرنویس | اختیاری | زیرنویس اختیاری روی کارت |
کاتلین
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
اگر بهدلیل هرگونه مشکل داخلی کسبوکار، هیچکدام از خوشهها منتشر نشد، قویاً توصیه میکنیم وضعیت انتشار را بااستفاده از میانای برنامهسازی کاربردی updatePublishStatus بهروز کنید. این موضوع مهم است زیرا :
- ارائه وضعیت در همه سناریوها، حتی زمانی که محتوا منتشر شده است (STATUS == PUBLISHED)، برای پر کردن داشبوردهایی که از این وضعیت صریح برای انتقال سلامت و سایر معیارهای ادغام شما استفاده میکنند، حیاتی است.
- اگر محتوایی منتشر نشده باشد اما وضعیت ادغام خراب نباشد (STATUS == NOT_PUBLISHED)، Google میتواند از فعال کردن هشدارها در داشبوردهای سلامت برنامه اجتناب کند. این کد تأیید میکند که محتوا بهدلیل شرایطی که از دیدگاه ارائهدهنده انتظار میرفت منتشر نشده است.
- این کار به توسعهدهندگان کمک میکند تا اطلاعات آماری درباره زمان انتشار دادهها درمقابل عدم انتشار آنها ارائه دهند.
- Google ممکن است از کدهای وضعیت برای ترغیب کاربر به انجام کنشهای خاصی در برنامه استفاده کند تا بتواند محتوای برنامه را ببیند یا بر آن غلبه کند.
فهرست کدهای وضعیت انتشار واجدشرایط عبارتاند از :
// Content is published
AppEngagePublishStatusCode.PUBLISHED,
// Content is not published as user is not signed in
AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN,
// Content is not published as user is not subscribed
AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SUBSCRIPTION,
// Content is not published as user location is ineligible
AppEngagePublishStatusCode.NOT_PUBLISHED_INELIGIBLE_LOCATION,
// Content is not published as there is no eligible content
AppEngagePublishStatusCode.NOT_PUBLISHED_NO_ELIGIBLE_CONTENT,
// Content is not published as the feature is disabled by the client
// Available in v1.3.1
AppEngagePublishStatusCode.NOT_PUBLISHED_FEATURE_DISABLED_BY_CLIENT,
// Content is not published as the feature due to a client error
// Available in v1.3.1
AppEngagePublishStatusCode.NOT_PUBLISHED_CLIENT_ERROR,
// Content is not published as the feature due to a service error
// Available in v1.3.1
AppEngagePublishStatusCode.NOT_PUBLISHED_SERVICE_ERROR,
// Content is not published due to some other reason
// Reach out to engage-developers@ before using this enum.
AppEngagePublishStatusCode.NOT_PUBLISHED_OTHER
اگر محتوا بهدلیل وارد نشدن کاربر به سیستم منتشر نشود، Google توصیه میکند «کارت ورود به سیستم» منتشر شود. اگر ارائهدهندگان به هر دلیلی نتوانند «کارت ورود به سیستم» را منتشر کنند، توصیه میکنیم با کد وضعیت NOT_PUBLISHED_REQUIRES_SIGN_IN با میانای برنامهسازی کاربردی updatePublishStatus تماس بگیرید
کاتلین
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());
deleteRecommendationsClusters
این میانای برنامهسازی کاربردی برای حذف محتوای «خوشههای توصیهشده» استفاده میشود.
کاتلین
client.deleteRecommendationsClusters()
جاوا
client.deleteRecommendationsClusters();
وقتی سرویس درخواست را دریافت میکند، دادههای موجود را از «خوشههای توصیهشده» برمیدارد. درصورت بروز خطا، کل درخواست رد میشود و وضعیت موجود حفظ میشود.
deleteFeaturedCluster
این میانای برنامهسازی کاربردی برای حذف محتوای «دسته ویژه» استفاده میشود.
کاتلین
client.deleteFeaturedCluster()
جاوا
client.deleteFeaturedCluster();
وقتی سرویس درخواست را دریافت میکند، دادههای موجود را از «خوشه ویژه» برمیدارد. درصورت بروز خطا، کل درخواست رد میشود و وضعیت موجود حفظ میشود.
deleteFoodShoppingCartCluster
این میانای برنامهسازی کاربردی برای حذف محتوای «خوشه سبد خرید غذا» استفاده میشود.
کاتلین
client.deleteFoodShoppingCartCluster()
جاوا
client.deleteFoodShoppingCartCluster();
وقتی سرویس درخواست را دریافت میکند، دادههای موجود را از «خوشه سبد خرید غذا» برمیدارد. درصورت بروز خطا، کل درخواست رد میشود و وضعیت موجود حفظ میشود.
deleteFoodShoppingListCluster
از این میانای برنامهسازی کاربردی برای حذف محتوای «خوشه فهرست خرید مواد غذایی» استفاده میشود.
کاتلین
client.deleteFoodShoppingListCluster()
جاوا
client.deleteFoodShoppingListCluster();
وقتی سرویس درخواست را دریافت میکند، دادههای موجود را از «خوشه فهرست خرید مواد غذایی» برمیدارد. درصورت بروز خطا، کل درخواست رد میشود و وضعیت موجود حفظ میشود.
deleteReorderCluster
این میانای برنامهسازی کاربردی برای حذف محتوای FoodReorderCluster استفاده میشود.
کاتلین
client.deleteReorderCluster()
جاوا
client.deleteReorderCluster();
وقتی سرویس درخواست را دریافت میکند، دادههای موجود را از «خوشه سفارش مجدد» برمیدارد. درصورت بروز خطا، کل درخواست رد میشود و وضعیت موجود حفظ میشود.
deleteUserManagementCluster
این API برای حذف محتوای خوشه UserAccountManagement استفاده میشود.
کاتلین
client.deleteUserManagementCluster()
جاوا
client.deleteUserManagementCluster();
وقتی سرویس درخواست را دریافت میکند، دادههای موجود را از خوشه UserAccountManagement برمیدارد. درصورت بروز خطا، کل درخواست رد میشود و وضعیت موجود حفظ میشود.
deleteClusters
این میانای برنامهسازی کاربردی برای حذف محتوای نوع خوشه دادهشده استفاده میشود.
کاتلین
client.deleteClusters(
DeleteClustersRequest.Builder()
.addClusterType(ClusterType.TYPE_FEATURED)
.addClusterType(ClusterType.TYPE_RECOMMENDATION)
...
.build())
جاوا
client.deleteClusters(
new DeleteClustersRequest.Builder()
.addClusterType(ClusterType.TYPE_FEATURED)
.addClusterType(ClusterType.TYPE_RECOMMENDATION)
...
.build());
وقتی سرویس درخواست را دریافت میکند، دادههای موجود را از همه خوشههایی که با نوع خوشه مشخصشده مطابقت دارند برمیدارد. مشتریان میتوانند یک یا چند نوع خوشه را برای ارسال انتخاب کنند. درصورت بروز خطا، کل درخواست رد میشود و وضعیت موجود حفظ میشود.
مدیریت کردن خطا
توصیه میشود به نتیجه تکلیف از میاناهای برنامهسازی کاربردی انتشار گوش دهید تا بتوانید کنش پیگیری را برای بازیابی و ارسال مجدد تکلیف موفق انجام دهید.
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 |
فراخوانی سرویس بیشازحد انجام میشود. |
مرحله ۳: مدیریت هدفهای همهفرستی
علاوهبر برقراری تماسهای میانای برنامهسازی کاربردی محتوای انتشار ازطریق کار،
لازم است
BroadcastReceiver راهاندازی شود تا
درخواست انتشار محتوا دریافت شود.
هدف از هدفهای همهفرستی عمدتاً فعالسازی مجدد برنامه و اجبار به همگامسازی دادهها است. هدفهای همهفرستی برای ارسال مکرر طراحی نشدهاند. این رویداد فقط زمانی راهاندازی میشود که «سرویس تعامل» تشخیص دهد محتوا ممکن است قدیمی باشد (برای مثال، یک هفته از آن گذشته باشد). بهاینترتیب، اطمینان بیشتری وجود دارد که کاربر میتواند تجربه محتوای جدیدی داشته باشد، حتی اگر برنامه برای مدت طولانی اجرا نشده باشد.
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 food shopping cart cluster publish when PUBLISH_FOOD_SHOPPING_CART broadcast
// is received
// Trigger food shopping list cluster publish when PUBLISH_FOOD_SHOPPING_LIST broadcast
// is received
// Trigger reorder cluster publish when PUBLISH_REORDER_CLUSTER broadcast is
// received
}
fun registerBroadcastReceivers(context: Context){
var context = context
context = context.applicationContext
// Register Recommendation Cluster Publish Intent
context.registerReceiver(AppEngageBroadcastReceiver(),
IntentFilter(Intents.ACTION_PUBLISH_RECOMMENDATION),
com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
/*scheduler=*/null)
// Register Featured Cluster Publish Intent
context.registerReceiver(AppEngageBroadcastReceiver(),
IntentFilter(Intents.ACTION_PUBLISH_FEATURED),
com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
/*scheduler=*/null)
// Register food Shopping Cart Cluster Publish Intent
context.registerReceiver(AppEngageBroadcastReceiver(),
IntentFilter(Intents.ACTION_PUBLISH_FOOD_SHOPPING_CART),
com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
/*scheduler=*/null)
// Register food Shopping List Cluster Publish Intent
context.registerReceiver(AppEngageBroadcastReceiver(),
IntentFilter(Intents.ACTION_PUBLISH_FOOD_SHOPPING_LIST),
com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
/*scheduler=*/null)
// Register Reorder Cluster Publish Intent
context.registerReceiver(AppEngageBroadcastReceiver(),
IntentFilter(Intents.ACTION_PUBLISH_REORDER_CLUSTER),
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 food shopping cart cluster publish when PUBLISH_FOOD_SHOPPING_CART broadcast is
// received
// Trigger food shopping list cluster publish when PUBLISH_FOOD_SHOPPING_LIST broadcast is
// received
// Trigger reorder cluster publish when PUBLISH_REORDER_CLUSTER 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 food Shopping Cart Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.shopping.service.Intents.ACTION_PUBLISH_FOOD_SHOPPING_CART),
com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
/*scheduler=*/null);
// Register food Shopping List Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.shopping.service.Intents.ACTION_PUBLISH_FOOD_SHOPPING_LIST),
com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
/*scheduler=*/null);
// Register Reorder Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.shopping.service.Intents.ACTION_PUBLISH_REORDER_CLUSTER),
com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
/*scheduler=*/null);
}
پیادهسازی را با برچسب
<receiver>در فایلAndroidManifest.xmlبهصورت ایستا اعلام کنید. این به برنامه اجازه میدهد تا زمانی که درحال اجرا نیست، اهداف پخش را دریافت کند و همچنین به برنامه اجازه میدهد تا محتوا را منتشر کند.
<application>
<receiver
android:name=".AppEngageBroadcastReceiver"
android:permission="com.google.android.engage.REQUEST_ENGAGE_DATA"
android:exported="true"
android:enabled="true">
<intent-filter>
<action android:name="com.google.android.engage.action.PUBLISH_RECOMMENDATION" />
</intent-filter>
<intent-filter>
<action android:name="com.google.android.engage.action.PUBLISH_FEATURED" />
</intent-filter>
<intent-filter>
<action android:name="com.google.android.engage.action.food.PUBLISH_FOOD_SHOPPING_CART" />
</intent-filter>
<intent-filter>
<action android:name="com.google.android.engage.action.food.PUBLISH_FOOD_SHOPPING_LIST" />
</intent-filter>
<intent-filter>
<action android:name="com.google.android.engage.action.food.PUBLISH_REORDER_CLUSTER" />
</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.food.PUBLISH_FOOD_SHOPPING_CARTتوصیه میشود هنگام دریافت این هدف، تماسpublishFoodShoppingCartsشروع شود.com.google.android.engage.action.food.PUBLISH_FOOD_SHOPPING_LISTتوصیه میشود هنگام دریافت این هدف، تماسpublishFoodShoppingListsشروع شود.com.google.android.engage.action.food.PUBLISH_REORDER_CLUSTERتوصیه میشود هنگام دریافت این قصد، تماسpublishReorderClusterرا شروع کنید.
گردش کار یکپارچهسازی
برای راهنمای گامبهگام درباره درستیسنجی یکپارچهسازی پساز تکمیل، به گردش کار یکپارچهسازی توسعهدهنده Engage مراجعه کنید.
پرسشگان
برای پرسشگان، به پرسشگان Engage SDK مراجعه کنید.
تماس
اگر درطول فرایند ادغام سؤالی داشتید، با engage-developers@google.com تماس بگیرید. تیم ما در اسرع وقت پاسخ خواهد داد.
مراحل بعدی
پساز تکمیل این ادغام، مراحل بعدی شما به شرح زیر است:
- ایمیلی به
engage-developers@google.comارسال کنید و فایل APK ادغامشدهتان را که برای آزمایش توسط Google آماده است پیوست کنید. - Google بهطور داخلی درستیسنجی و بازبینی انجام میدهد تا مطمئن شود که ادغام طبق انتظار کار میکند. اگر تغییری لازم باشد، Google با جزئیات لازم با شما تماس خواهد گرفت.
- وقتی آزمایش تکمیل شد و نیازی به تغییر نبود، Google با شما تماس میگیرد تا به شما اطلاع دهد که میتوانید انتشار APK بهروزشده و ادغامشده را در «فروشگاه Play» شروع کنید.
- پساز اینکه Google تأیید کرد APK بهروزشده شما در «فروشگاه Play» منتشر شده است، خوشههای توصیه، ویژه، سبد خرید، فهرست خرید، و سفارش مجدد شما منتشر خواهند شد و برای کاربران قابلمشاهده خواهند بود.