আপনার ব্যবহারকারীদের যেখানেই থাকুন না কেন, তাদের কাছে পৌঁছে দিয়ে অ্যাপের সাথে যুক্ততা বৃদ্ধি করুন। সংগ্রহ , বিনোদন স্থান এবং প্লে স্টোরের মতো একাধিক ডিভাইসের পৃষ্ঠতলের ব্যবহারকারীদের কাছে সরাসরি ব্যক্তিগতকৃত সুপারিশ এবং ধারাবাহিকতা সামগ্রী সরবরাহ করতে Engage SDK একীভূত করুন। এই ইন্টিগ্রেশনটি গড় APK-তে 50 KB-এর কম (সংকুচিত) যোগ করে এবং বেশিরভাগ অ্যাপের ডেভেলপারদের প্রায় এক সপ্তাহ সময় নেয়। আমাদের ব্যবসায়িক সাইটে আরও জানুন।
এই নির্দেশিকাটিতে ডেভেলপার অংশীদারদের জন্য খাদ্য সামগ্রী (খাবার অর্ডার, খাবার বা রেস্তোরাঁর পর্যালোচনা এবং আবিষ্কার, খাবারের সাবস্ক্রিপশন, রেসিপি) Engage কন্টেন্ট সারফেসে সরবরাহ করার নির্দেশাবলী রয়েছে।
ইন্টিগ্রেশনের বিশদ বিবরণ
পরিভাষা
এই ইন্টিগ্রেশনে নিম্নলিখিত পাঁচটি ক্লাস্টার প্রকার অন্তর্ভুক্ত রয়েছে: সুপারিশ , বৈশিষ্ট্যযুক্ত , খাদ্য শপিং কার্ট , খাদ্য শপিং তালিকা এবং পুনর্বিন্যাস ।
সুপারিশ ক্লাস্টারগুলিতে একজন ডেভেলপার অংশীদারের কাছ থেকে ব্যক্তিগতকৃত খাদ্য-সম্পর্কিত পরামর্শ দেখানো হয়। এই সুপারিশগুলি ব্যবহারকারীর জন্য ব্যক্তিগতকৃত বা সাধারণীকরণ করা যেতে পারে (উদাহরণস্বরূপ, বিক্রয়ের জন্য নতুন)। আপনার পছন্দ অনুসারে রেসিপি, দোকান, খাবার, মুদিখানা ইত্যাদির উপর এগুলি ব্যবহার করুন।
- একটি সুপারিশ ক্লাস্টার
ProductEntity,StoreEntity, অথবাRecipeEntityতালিকা দিয়ে তৈরি করা যেতে পারে, কিন্তু বিভিন্ন ধরণের সত্তার মিশ্রণ দিয়ে তৈরি করা যাবে না।

চিত্র: `ProductEntity`, `StoreEntity`, এবং `RecipeEntity`। (*শুধুমাত্র উদাহরণের জন্য UI) - একটি সুপারিশ ক্লাস্টার
ফিচারড ক্লাস্টারটি একটি UI গ্রুপিংয়ে একাধিক ডেভেলপার পার্টনারদের কাছ থেকে নির্বাচিত সত্তা প্রদর্শন করে। একটি একক ফিচারড ক্লাস্টার থাকবে, যা UI এর শীর্ষে প্রদর্শিত হবে এবং সমস্ত সুপারিশ ক্লাস্টারের উপরে অগ্রাধিকার স্থান থাকবে। প্রতিটি ডেভেলপার পার্টনারকে ফিচারড ক্লাস্টারে সর্বাধিক 10টি সত্তা সম্প্রচার করার অনুমতি দেওয়া হবে।

চিত্র: `RecipeEntity` সহ বৈশিষ্ট্যযুক্ত ক্লাস্টার। (*শুধুমাত্র উদাহরণের জন্য UI) ফুড শপিং কার্ট ক্লাস্টারটি একই UI গ্রুপিংয়ে একাধিক ডেভেলপার অংশীদারদের কাছ থেকে মুদিখানার শপিং কার্টের এক ঝলক দেখায়, যা ব্যবহারকারীদের তাদের অসামান্য কার্টগুলি সম্পূর্ণ করতে উৎসাহিত করে। একটি মাত্র ফুড শপিং কার্ট ক্লাস্টার রয়েছে।
খাদ্য শপিং কার্ট ক্লাস্টারে কার্টে থাকা আইটেমের মোট সংখ্যা দেখাতে হবে এবং ব্যবহারকারীর কার্টে থাকা X আইটেমের ছবিও অন্তর্ভুক্ত থাকতে পারে।

চিত্র: একক অংশীদারের কাছ থেকে খাদ্য শপিং কার্ট ক্লাস্টার। (*শুধুমাত্র উদাহরণের জন্য UI)
খাদ্য শপিং তালিকার ক্লাস্টারটি একটি UI গ্রুপিংয়ে একাধিক ডেভেলপার অংশীদারদের কাছ থেকে মুদি শপিং তালিকার এক ঝলক দেখায়, যা ব্যবহারকারীদের তাদের তালিকা আপডেট এবং সম্পূর্ণ করার জন্য সংশ্লিষ্ট অ্যাপে ফিরে যেতে উৎসাহিত করে। একটিমাত্র খাদ্য শপিং তালিকার ক্লাস্টার রয়েছে।

চিত্র: একক অংশীদারের কাছ থেকে খাদ্য কেনাকাটার তালিকার ক্লাস্টার। (*শুধুমাত্র উদাহরণের জন্য UI) রিঅর্ডার ক্লাস্টারটি একটি UI গ্রুপিংয়ে একাধিক ডেভেলপার অংশীদারদের পূর্ববর্তী অর্ডারগুলির এক ঝলক দেখায়, যা ব্যবহারকারীদের পুনরায় অর্ডার করতে উৎসাহিত করে। একটি একক রিঅর্ডার ক্লাস্টার রয়েছে।
পুনঃক্রম ক্লাস্টারে ব্যবহারকারীর পূর্ববর্তী ক্রম অনুসারে আইটেমের মোট সংখ্যা দেখাতে হবে এবং নিম্নলিখিতগুলির মধ্যে একটিও অন্তর্ভুক্ত করতে হবে:
- ব্যবহারকারীর পূর্ববর্তী ক্রমে X আইটেমের ছবি।
- ব্যবহারকারীর পূর্ববর্তী ক্রমে X আইটেমের জন্য লেবেল।

চিত্র: একক অংশীদারের কাছ থেকে খাদ্য পুনর্বিন্যাস ক্লাস্টার। (*শুধুমাত্র উদাহরণের উদ্দেশ্যে UI)
প্রাক-কাজ
সর্বনিম্ন 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.5.11'
}
সারাংশ
নকশাটি একটি আবদ্ধ পরিষেবা বাস্তবায়নের উপর ভিত্তি করে তৈরি।
একজন ক্লায়েন্ট যে ডেটা প্রকাশ করতে পারেন তা বিভিন্ন ক্লাস্টার ধরণের জন্য নিম্নলিখিত সীমার সাপেক্ষে:
| ক্লাস্টারের ধরণ | ক্লাস্টার সীমা | একটি ক্লাস্টারে সর্বোচ্চ সত্তার সীমা |
|---|---|---|
| সুপারিশ ক্লাস্টার(গুলি) | সর্বাধিক ৭ | সর্বাধিক ৫০ ( ProductEntity , RecipeEntity , অথবা StoreEntity ) |
| বৈশিষ্ট্যযুক্ত ক্লাস্টার | সর্বাধিক ১ | সর্বাধিক ২০টি ( ProductEntity , RecipeEntity , অথবা StoreEntity ) |
| খাদ্য শপিং কার্ট ক্লাস্টার | সর্বাধিক ১ | সর্বাধিক ৩টি FoodShoppingCart |
| খাদ্য কেনাকাটার তালিকা ক্লাস্টার | সর্বাধিক ১ | সর্বাধিক ৩টি FoodShoppingList |
| খাদ্য পুনর্বিন্যাস ক্লাস্টার | সর্বাধিক ১ | সর্বাধিক ১টি ReorderEntity |
ধাপ ১: সত্তার তথ্য প্রদান করুন
SDK প্রতিটি আইটেমের ধরণ উপস্থাপনের জন্য বিভিন্ন সত্তা সংজ্ঞায়িত করেছে। আমরা খাদ্য বিভাগের জন্য নিম্নলিখিত সত্তাগুলিকে সমর্থন করি:
-
ProductEntity -
StoreEntity -
RecipeEntity -
FoodShoppingCart -
FoodShoppingList -
FoodReorderCluster
নীচের চার্টগুলিতে প্রতিটি ধরণের জন্য উপলব্ধ বৈশিষ্ট্য এবং প্রয়োজনীয়তাগুলি রূপরেখা দেওয়া হয়েছে।
ProductEntity
ProductEntity অবজেক্টটি একটি পৃথক আইটেম (যেমন একটি মুদিখানার জিনিস, একটি রেস্তোরাঁর খাবার, অথবা একটি প্রচারণা) প্রতিনিধিত্ব করে যা ডেভেলপার অংশীদাররা প্রকাশ করতে চায়।

ProductEntity বৈশিষ্ট্য
| বৈশিষ্ট্য | প্রয়োজনীয়তা | বিবরণ | বিন্যাস |
|---|---|---|---|
| পোস্টার ছবি | প্রয়োজনীয় | কমপক্ষে একটি ছবি দিতে হবে। | নির্দেশনার জন্য ছবির স্পেসিফিকেশন দেখুন। |
| অ্যাকশন উরি | প্রয়োজনীয় | অ্যাপের পৃষ্ঠার গভীর লিঙ্কটি পণ্য সম্পর্কে বিশদ প্রদর্শন করে। দ্রষ্টব্য: আপনি অ্যাট্রিবিউশনের জন্য ডিপ লিঙ্ক ব্যবহার করতে পারেন। এই FAQ দেখুন। | উরি |
| শিরোনাম | ঐচ্ছিক | পণ্যের নাম। | বিনামূল্যে টেক্সট প্রস্তাবিত টেক্সট সাইজ: ৯০ অক্ষরের কম (খুব লম্বা টেক্সটে উপবৃত্ত দেখাতে পারে) |
| মূল্য - বর্তমান | শর্তসাপেক্ষে আবশ্যক | পণ্যের বর্তমান মূল্য। যদি স্ট্রাইকথ্রু মূল্য প্রদান করা হয় তবে অবশ্যই প্রদান করতে হবে। | বিনামূল্যে টেক্সট |
| মূল্য - স্ট্রাইকথ্রু | ঐচ্ছিক | সত্তার মূল মূল্য, যা UI-তে স্ট্রাইক-থ্রু করা হয়েছে। | বিনামূল্যে টেক্সট |
| কলআউট | ঐচ্ছিক | যদি পণ্যটি উপলব্ধ থাকে, তাহলে তার জন্য একটি প্রোমো, ইভেন্ট বা আপডেট দেখানোর জন্য কলআউট করুন। | বিনামূল্যে টেক্সট প্রস্তাবিত টেক্সট সাইজ: ৪৫ অক্ষরের কম (খুব লম্বা টেক্সটে উপবৃত্ত দেখাতে পারে) |
| কলআউটের সূক্ষ্ম মুদ্রণ | ঐচ্ছিক | কলআউটের জন্য সূক্ষ্ম মুদ্রণ লেখা। | বিনামূল্যে টেক্সট প্রস্তাবিত টেক্সট সাইজ: ৪৫ অক্ষরের কম (খুব লম্বা টেক্সটে উপবৃত্ত দেখাতে পারে) |
| রেটিং (ঐচ্ছিক) - দ্রষ্টব্য: সমস্ত রেটিং আমাদের স্ট্যান্ডার্ড স্টার রেটিং সিস্টেম ব্যবহার করে প্রদর্শিত হয়। | |||
| রেটিং - সর্বোচ্চ মান | ঐচ্ছিক | রেটিং স্কেলের সর্বোচ্চ মান। যদি রেটিং এর বর্তমান মানও প্রদান করা থাকে তবে অবশ্যই প্রদান করতে হবে। | সংখ্যা >= ০.০ |
| রেটিং - বর্তমান মান | ঐচ্ছিক | রেটিং স্কেলের বর্তমান মান। যদি সর্বোচ্চ রেটিং মানও প্রদান করা থাকে তবে অবশ্যই প্রদান করতে হবে। | সংখ্যা >= ০.০ |
| রেটিং - গণনা | ঐচ্ছিক | পণ্যের রেটিং গণনা। দ্রষ্টব্য: যদি আপনার অ্যাপ ব্যবহারকারীদের কাছে গণনা কীভাবে প্রদর্শিত হবে তা নিয়ন্ত্রণ করে, তাহলে এই ক্ষেত্রটি প্রদান করুন। একটি সংক্ষিপ্ত স্ট্রিং ব্যবহার করুন। উদাহরণস্বরূপ, যদি গণনা 1,000,000 হয়, তাহলে 1M এর মতো একটি সংক্ষিপ্ত রূপ ব্যবহার করার কথা বিবেচনা করুন যাতে ছোট ডিসপ্লে আকারে গণনাটি ছোট না হয়। | স্ট্রিং |
| রেটিং - গণনা মূল্য | ঐচ্ছিক | পণ্যের রেটিং গণনা। দ্রষ্টব্য: যদি আপনি নিজে ডিসপ্লে সংক্ষিপ্তসার লজিক পরিচালনা না করেন তবে এই ক্ষেত্রটি প্রদান করুন। যদি Count এবং Count Value উভয়ই উপস্থিত থাকে, তাহলে ব্যবহারকারীদের কাছে Count প্রদর্শিত হবে। | দীর্ঘ |
| DisplayTimeWindow (ঐচ্ছিক) - পৃষ্ঠে কোনও বিষয়বস্তু দেখানোর জন্য একটি সময় উইন্ডো সেট করুন। | |||
| টাইমস্ট্যাম্প শুরু করুন | ঐচ্ছিক | যে যুগের টাইমস্ট্যাম্পের পরে কন্টেন্টটি পৃষ্ঠে দেখানো উচিত। যদি সেট না করা থাকে, তাহলে কন্টেন্টটি পৃষ্ঠে দেখানোর যোগ্য। | মিলিসেকেন্ডে ইপোক টাইমস্ট্যাম্প |
| টাইমস্ট্যাম্প শেষ করুন | ঐচ্ছিক | সেই যুগের টাইমস্ট্যাম্প যার পরে কন্টেন্ট আর পৃষ্ঠে দেখানো হয় না। যদি সেট না করা থাকে, তাহলে কন্টেন্টটি পৃষ্ঠে দেখানোর যোগ্য। | মিলিসেকেন্ডে ইপোক টাইমস্ট্যাম্প |
StoreEntity
StoreEntity অবজেক্টটি এমন একটি পৃথক স্টোরকে প্রতিনিধিত্ব করে যা ডেভেলপার অংশীদাররা প্রকাশ করতে চায়, যেমন একটি রেস্তোরাঁ বা মুদি দোকান।

StoreEntity এর বৈশিষ্ট্য
| বৈশিষ্ট্য | প্রয়োজনীয়তা | বিবরণ | বিন্যাস |
|---|---|---|---|
| পোস্টার ছবি | প্রয়োজনীয় | কমপক্ষে একটি ছবি দিতে হবে। | নির্দেশনার জন্য ছবির স্পেসিফিকেশন দেখুন। |
| অ্যাকশন উরি | প্রয়োজনীয় | অ্যাপের পৃষ্ঠার ডিপ লিঙ্কটি দোকান সম্পর্কে বিস্তারিত তথ্য প্রদর্শন করে। দ্রষ্টব্য: আপনি অ্যাট্রিবিউশনের জন্য ডিপ লিঙ্ক ব্যবহার করতে পারেন। এই FAQ দেখুন। | উরি |
| শিরোনাম | ঐচ্ছিক | দোকানের নাম। | বিনামূল্যে টেক্সট প্রস্তাবিত টেক্সট সাইজ: ৪৫ অক্ষরের কম (খুব লম্বা টেক্সটে উপবৃত্ত দেখাতে পারে) |
| স্থান | ঐচ্ছিক | দোকানের অবস্থান। | বিনামূল্যে টেক্সট প্রস্তাবিত টেক্সট সাইজ: ৪৫ অক্ষরের কম (খুব লম্বা টেক্সটে উপবৃত্ত দেখাতে পারে) |
| কলআউট | ঐচ্ছিক | দোকানের জন্য একটি প্রোমো, ইভেন্ট, অথবা আপডেট, যদি পাওয়া যায়, তাহলে কলআউট করুন। | বিনামূল্যে টেক্সট প্রস্তাবিত টেক্সট সাইজ: ৪৫ অক্ষরের কম (খুব লম্বা টেক্সটে উপবৃত্ত দেখাতে পারে) |
| কলআউটের সূক্ষ্ম মুদ্রণ | ঐচ্ছিক | কলআউটের জন্য সূক্ষ্ম মুদ্রণ লেখা। | বিনামূল্যে টেক্সট প্রস্তাবিত টেক্সট সাইজ: ৪৫ অক্ষরের কম (খুব লম্বা টেক্সটে উপবৃত্ত দেখাতে পারে) |
| বিবরণ | ঐচ্ছিক | দোকানের বর্ণনা। | বিনামূল্যে টেক্সট প্রস্তাবিত টেক্সট সাইজ: ৯০ অক্ষরের কম (খুব লম্বা টেক্সটে উপবৃত্ত দেখাতে পারে) |
| বিভাগ | ঐচ্ছিক | খাবারের জায়গার পরিপ্রেক্ষিতে, দোকানের বিভাগ "ফরাসি", "নতুন আমেরিকান", "রামেন", "ফাইন ডাইনিং" এর মতো খাবার হতে পারে। | বিনামূল্যে টেক্সট প্রস্তাবিত টেক্সট সাইজ: ৪৫ অক্ষরের কম (খুব লম্বা টেক্সটে উপবৃত্ত দেখাতে পারে) |
| দ্রষ্টব্য: সমস্ত রেটিং আমাদের স্ট্যান্ডার্ড স্টার রেটিং সিস্টেম ব্যবহার করে প্রদর্শিত হয়। | |||
| রেটিং - সর্বোচ্চ মান | ঐচ্ছিক | রেটিং স্কেলের সর্বোচ্চ মান। যদি রেটিং এর বর্তমান মানও প্রদান করা থাকে তবে অবশ্যই প্রদান করতে হবে। | সংখ্যা >= ০.০ |
| রেটিং - বর্তমান মান | ঐচ্ছিক | রেটিং স্কেলের বর্তমান মান। যদি সর্বোচ্চ রেটিং মানও প্রদান করা থাকে তবে অবশ্যই প্রদান করতে হবে। | সংখ্যা >= ০.০ |
| রেটিং - গণনা | ঐচ্ছিক | দোকানের রেটিং গণনা। দ্রষ্টব্য: আপনার অ্যাপ যদি ব্যবহারকারীদের কাছে এটি কীভাবে প্রদর্শিত হবে তা নিয়ন্ত্রণ করতে চায়, তাহলে এই ক্ষেত্রটি প্রদান করুন। ব্যবহারকারীকে প্রদর্শিত হতে পারে এমন সংক্ষিপ্ত স্ট্রিং প্রদান করুন। উদাহরণস্বরূপ, যদি গণনা 1,000,000 হয়, তাহলে 1M এর মতো সংক্ষিপ্ত রূপ ব্যবহার করার কথা বিবেচনা করুন, যাতে ছোট ডিসপ্লে আকারে এটি ছোট না হয়। | স্ট্রিং |
| রেটিং - গণনা মূল্য | ঐচ্ছিক | দোকানের রেটিং গণনা। দ্রষ্টব্য: যদি আপনি নিজে ডিসপ্লে সংক্ষিপ্তসার লজিক পরিচালনা করতে না চান তবে এই ক্ষেত্রটি প্রদান করুন। যদি Count এবং Count Value উভয়ই উপস্থিত থাকে, তাহলে আমরা ব্যবহারকারীদের কাছে প্রদর্শনের জন্য Count ব্যবহার করব। | দীর্ঘ |
RecipeEntity
RecipeEntity অবজেক্টটি এমন একটি রেসিপি আইটেম উপস্থাপন করে যা ডেভেলপার অংশীদাররা প্রকাশ করতে চায়।

RecipeEntity বৈশিষ্ট্য
| বৈশিষ্ট্য | প্রয়োজনীয়তা | বিবরণ | বিন্যাস |
|---|---|---|---|
| পোস্টার ছবি | প্রয়োজনীয় | কমপক্ষে একটি ছবি দিতে হবে। | নির্দেশনার জন্য ছবির স্পেসিফিকেশন দেখুন। |
| অ্যাকশন উরি | প্রয়োজনীয় | অ্যাপের পৃষ্ঠার গভীর লিঙ্কটি রেসিপি সম্পর্কে বিশদ প্রদর্শন করে। দ্রষ্টব্য: আপনি অ্যাট্রিবিউশনের জন্য ডিপ লিঙ্ক ব্যবহার করতে পারেন। এই FAQ দেখুন। | উরি |
| শিরোনাম | ঐচ্ছিক | রেসিপির নাম। | বিনামূল্যে টেক্সট প্রস্তাবিত টেক্সট সাইজ: ৪৫ অক্ষরের কম (খুব লম্বা টেক্সটে উপবৃত্ত দেখাতে পারে) |
| লেখক | ঐচ্ছিক | রেসিপিটির লেখক। | বিনামূল্যে টেক্সট প্রস্তাবিত টেক্সট সাইজ: ৪৫ অক্ষরের কম (খুব লম্বা টেক্সটে উপবৃত্ত দেখাতে পারে) |
| রান্না/প্রস্তুতির সময় | ঐচ্ছিক | রেসিপির রান্নার সময়। | বিনামূল্যে টেক্সট প্রস্তাবিত টেক্সট সাইজ: ৪৫ অক্ষরের কম (খুব লম্বা টেক্সটে উপবৃত্ত দেখাতে পারে) |
| কলআউট | ঐচ্ছিক | রেসিপিটির জন্য একটি প্রোমো, ইভেন্ট, অথবা আপডেট, যদি পাওয়া যায়, তাহলে কলআউট করুন। | বিনামূল্যে টেক্সট প্রস্তাবিত টেক্সট সাইজ: ৪৫ অক্ষরের কম (খুব লম্বা টেক্সটে উপবৃত্ত দেখাতে পারে) |
| বিভাগ | ঐচ্ছিক | রেসিপির বিভাগ। | বিনামূল্যে টেক্সট প্রস্তাবিত টেক্সট সাইজ: ৪৫ অক্ষরের কম (খুব লম্বা টেক্সটে উপবৃত্ত দেখাতে পারে) |
| বিবরণ | ঐচ্ছিক | রেসিপির বর্ণনা। | বিনামূল্যে টেক্সট প্রস্তাবিত টেক্সট সাইজ: ৯০ অক্ষরের কম (খুব লম্বা টেক্সটে উপবৃত্ত দেখাতে পারে) |
| দ্রষ্টব্য: সমস্ত রেটিং আমাদের স্ট্যান্ডার্ড স্টার রেটিং সিস্টেম ব্যবহার করে প্রদর্শিত হয়। | |||
| রেটিং - সর্বোচ্চ মান | ঐচ্ছিক | রেটিং স্কেলের সর্বোচ্চ মান। যদি রেটিং এর বর্তমান মানও প্রদান করা থাকে তবে অবশ্যই প্রদান করতে হবে। | সংখ্যা >= ০.০ |
| রেটিং - বর্তমান মান | ঐচ্ছিক | রেটিং স্কেলের বর্তমান মান। যদি সর্বোচ্চ রেটিং মানও প্রদান করা থাকে তবে অবশ্যই প্রদান করতে হবে। | সংখ্যা >= ০.০ |
| রেটিং - গণনা | ঐচ্ছিক | রেসিপিটির রেটিং গণনা। দ্রষ্টব্য: আপনার অ্যাপ যদি ব্যবহারকারীদের কাছে এটি কীভাবে প্রদর্শিত হবে তা নিয়ন্ত্রণ করতে চায়, তাহলে এই ক্ষেত্রটি প্রদান করুন। ব্যবহারকারীকে প্রদর্শিত হতে পারে এমন সংক্ষিপ্ত স্ট্রিং প্রদান করুন। উদাহরণস্বরূপ, যদি গণনা 1,000,000 হয়, তাহলে 1M এর মতো সংক্ষিপ্ত রূপ ব্যবহার করার কথা বিবেচনা করুন, যাতে ছোট ডিসপ্লে আকারে এটি ছোট না হয়। | স্ট্রিং |
| রেটিং - গণনা মূল্য | ঐচ্ছিক | রেসিপিটির রেটিং গণনা। দ্রষ্টব্য: যদি আপনি নিজে ডিসপ্লে সংক্ষিপ্তসার লজিক পরিচালনা করতে না চান তবে এই ক্ষেত্রটি প্রদান করুন। যদি Count এবং Count Value উভয়ই উপস্থিত থাকে, তাহলে আমরা ব্যবহারকারীদের কাছে প্রদর্শনের জন্য Count ব্যবহার করব। | দীর্ঘ |
FoodShoppingCart

| বৈশিষ্ট্য | প্রয়োজনীয়তা | বিবরণ | বিন্যাস |
|---|---|---|---|
| অ্যাকশন উরি | প্রয়োজনীয় | পার্টনারের অ্যাপে শপিং কার্টের গভীর লিঙ্ক। দ্রষ্টব্য: আপনি অ্যাট্রিবিউশনের জন্য ডিপ লিঙ্ক ব্যবহার করতে পারেন। এই FAQ দেখুন। | উরি |
| আইটেমের সংখ্যা | প্রয়োজনীয় | শপিং কার্টে থাকা আইটেমের সংখ্যা (শুধুমাত্র পণ্যের সংখ্যা নয়)। উদাহরণস্বরূপ: যদি কার্টে 3টি কমলা এবং 1টি আপেল থাকে, তাহলে এই সংখ্যাটি 4 হওয়া উচিত। | পূর্ণসংখ্যা >= ১ |
| শেষ ব্যবহারকারীর ইন্টারঅ্যাকশন টাইমস্ট্যাম্প | প্রয়োজনীয় | ব্যবহারকারী শেষ কবে শপিং কার্টের সাথে ইন্টারঅ্যাক্ট করেছিলেন তা চিহ্নিত করে, যুগের পর কত মিলিসেকেন্ড কেটে গেছে। | মিলিসেকেন্ডে ইপোক টাইমস্ট্যাম্প |
| শিরোনাম | ঐচ্ছিক | কার্টের শিরোনাম (উদাহরণস্বরূপ, আপনার কার্ট )। যদি ডেভেলপার কোনও শিরোনাম প্রদান না করে, তাহলে আপনার কার্টটি ডিফল্ট হিসেবে থাকবে। | বিনামূল্যে টেক্সট প্রস্তাবিত টেক্সট সাইজ: ২৫টি অক্ষরের কম (খুব লম্বা টেক্সটে উপবৃত্ত দেখাতে পারে) |
| অ্যাকশন টেক্সট | ঐচ্ছিক | শপিং কার্টের বোতামের কল টু অ্যাকশন টেক্সট (যেমন, আপনার শপিং ব্যাগ )। যদি ডেভেলপার কোনও অ্যাকশন টেক্সট না দেয়, তাহলে ভিউ কার্ট ডিফল্ট হিসেবে কাজ করবে। এই বৈশিষ্ট্যটি ১.১.০ সংস্করণের পরবর্তী সংস্করণেও সমর্থিত। | স্ট্রিং |
| কার্টের ছবি | ঐচ্ছিক | কার্টে থাকা প্রতিটি পণ্যের ছবি। অগ্রাধিকার অনুসারে সর্বোচ্চ ১০টি ছবি প্রদান করা যেতে পারে; প্রদর্শিত ছবির প্রকৃত সংখ্যা ডিভাইসের ফর্ম ফ্যাক্টরের উপর নির্ভর করে। | নির্দেশনার জন্য ছবির স্পেসিফিকেশন দেখুন। |
| আইটেম লেবেল | ঐচ্ছিক | কেনাকাটার তালিকায় থাকা জিনিসপত্রের লেবেলের তালিকা। প্রদর্শিত লেবেলের প্রকৃত সংখ্যা ডিভাইস ফর্ম ফ্যাক্টরের উপর নির্ভর করে। | বিনামূল্যের টেক্সট লেবেলের তালিকা প্রস্তাবিত টেক্সট সাইজ: ২০টি অক্ষরের কম (খুব লম্বা টেক্সটে উপবৃত্ত দেখাতে পারে) |
| DisplayTimeWindow (ঐচ্ছিক) - পৃষ্ঠে কোনও বিষয়বস্তু দেখানোর জন্য একটি সময় উইন্ডো সেট করুন। | |||
| টাইমস্ট্যাম্প শুরু করুন | ঐচ্ছিক | যে যুগের টাইমস্ট্যাম্পের পরে কন্টেন্টটি পৃষ্ঠে দেখানো উচিত। যদি সেট না করা থাকে, তাহলে কন্টেন্টটি পৃষ্ঠে দেখানোর যোগ্য। | মিলিসেকেন্ডে ইপোক টাইমস্ট্যাম্প |
| টাইমস্ট্যাম্প শেষ করুন | ঐচ্ছিক | সেই যুগের টাইমস্ট্যাম্প যার পরে কন্টেন্ট আর পৃষ্ঠে দেখানো হয় না। যদি সেট না করা থাকে, তাহলে কন্টেন্টটি পৃষ্ঠে দেখানোর যোগ্য। | মিলিসেকেন্ডে ইপোক টাইমস্ট্যাম্প |
FoodShoppingList

| বৈশিষ্ট্য | প্রয়োজনীয়তা | বিবরণ | বিন্যাস |
|---|---|---|---|
| অ্যাকশন উরি | প্রয়োজনীয় | পার্টনারের অ্যাপে কেনাকাটার তালিকার গভীর লিঙ্ক। দ্রষ্টব্য: আপনি অ্যাট্রিবিউশনের জন্য ডিপ লিঙ্ক ব্যবহার করতে পারেন। এই FAQ দেখুন। | উরি |
| আইটেমের সংখ্যা | প্রয়োজনীয় | কেনাকাটার তালিকায় থাকা আইটেমের সংখ্যা। | পূর্ণসংখ্যা >= ১ |
| শেষ ব্যবহারকারীর ইন্টারঅ্যাকশন টাইমস্ট্যাম্প | প্রয়োজনীয় | ব্যবহারকারী শেষ কবে কেনাকাটার তালিকার সাথে ইন্টারঅ্যাক্ট করেছিলেন তা চিহ্নিত করে, যুগের পর কত মিলিসেকেন্ড কেটে গেছে। | মিলিসেকেন্ডে ইপোক টাইমস্ট্যাম্প |
| শিরোনাম | ঐচ্ছিক | তালিকার শিরোনাম (উদাহরণস্বরূপ, আপনার মুদিখানার তালিকা )। যদি ডেভেলপার কোনও শিরোনাম প্রদান না করে, তাহলে কেনাকাটার তালিকা ডিফল্ট হিসেবে থাকবে। | বিনামূল্যে টেক্সট প্রস্তাবিত টেক্সট সাইজ: ২৫টি অক্ষরের কম (খুব লম্বা টেক্সটে উপবৃত্ত দেখাতে পারে) |
| আইটেম লেবেল | প্রয়োজনীয় | কেনাকাটার তালিকায় থাকা জিনিসপত্রের লেবেলের তালিকা। কমপক্ষে ১টি লেবেল প্রদান করতে হবে এবং অগ্রাধিকারের ক্রমানুসারে সর্বোচ্চ ১০টি লেবেল প্রদান করা যেতে পারে; প্রদর্শিত লেবেলের প্রকৃত সংখ্যা ডিভাইস ফর্ম ফ্যাক্টরের উপর নির্ভর করে। | বিনামূল্যের টেক্সট লেবেলের তালিকা প্রস্তাবিত টেক্সট সাইজ: ২০টি অক্ষরের কম (খুব লম্বা টেক্সটে উপবৃত্ত দেখাতে পারে) |
FoodReorderCluster

| বৈশিষ্ট্য | প্রয়োজনীয়তা | বিবরণ | বিন্যাস |
|---|---|---|---|
| অ্যাকশন উরি | প্রয়োজনীয় | পার্টনারের অ্যাপে পুনঃক্রম করার জন্য ডিপ লিঙ্ক। দ্রষ্টব্য: আপনি অ্যাট্রিবিউশনের জন্য ডিপ লিঙ্ক ব্যবহার করতে পারেন। এই FAQ দেখুন। | উরি |
| অ্যাকশন টেক্সট | ঐচ্ছিক | পুনঃক্রম বোতামের কল টু অ্যাকশন টেক্সট (উদাহরণস্বরূপ, আবার অর্ডার করুন )। যদি ডেভেলপার কোনও অ্যাকশন টেক্সট না দেয়, তাহলে ডিফল্টভাবে রিঅর্ডার করা হবে। এই বৈশিষ্ট্যটি ১.১.০ সংস্করণের পরবর্তী সংস্করণেও সমর্থিত। | স্ট্রিং |
| আইটেমের সংখ্যা | প্রয়োজনীয় | পূর্ববর্তী ক্রমে আইটেমের সংখ্যা (শুধুমাত্র পণ্যের সংখ্যা নয়)। উদাহরণস্বরূপ: যদি পূর্ববর্তী ক্রমে 3টি ছোট কফি এবং 1টি ক্রোয়েস্যান্ট থাকে, তাহলে এই সংখ্যাটি 4 হওয়া উচিত। | পূর্ণসংখ্যা >= ১ |
| শিরোনাম | প্রয়োজনীয় | পুনঃক্রম আইটেমের শিরোনাম। | বিনামূল্যে টেক্সট প্রস্তাবিত টেক্সট সাইজ: ৪০টি অক্ষরের কম (খুব লম্বা টেক্সটে উপবৃত্ত দেখাতে পারে) |
| আইটেম লেবেল | ঐচ্ছিক (যদি না দেওয়া হয়, তাহলে পোস্টারের ছবি দেওয়া উচিত) | পূর্ববর্তী অর্ডারের জন্য আইটেম লেবেলের তালিকা। অগ্রাধিকার অনুসারে সর্বোচ্চ ১০টি লেবেল প্রদান করা যেতে পারে; প্রদর্শিত লেবেলের প্রকৃত সংখ্যা ডিভাইস ফর্ম ফ্যাক্টরের উপর নির্ভর করে। | বিনামূল্যের লেখার তালিকা প্রতি লেবেলে প্রস্তাবিত টেক্সট সাইজ: ২০টি অক্ষরের কম (খুব লম্বা টেক্সট উপবৃত্ত দেখাতে পারে) |
| পোস্টার ছবি | ঐচ্ছিক (যদি না দেওয়া হয়, তাহলে আইটেম লেবেল দেওয়া উচিত) | পূর্ববর্তী ক্রমের আইটেমগুলির ছবি। অগ্রাধিকার অনুসারে সর্বোচ্চ ১০টি ছবি প্রদান করা যেতে পারে; প্রদর্শিত ছবির প্রকৃত সংখ্যা ডিভাইসের ফর্ম ফ্যাক্টরের উপর নির্ভর করে। | নির্দেশনার জন্য ছবির স্পেসিফিকেশন দেখুন। |
ছবির স্পেসিফিকেশন
ছবির সম্পদের জন্য প্রয়োজনীয় স্পেসিফিকেশন নীচে তালিকাভুক্ত করা হয়েছে:
| আকৃতির অনুপাত | সর্বনিম্ন পিক্সেল | প্রস্তাবিত পিক্সেল |
|---|---|---|
বর্গক্ষেত্র (১x১) পছন্দের | ৩০০x৩০০ | ১২০০x১২০০ |
| ল্যান্ডস্কেপ (১.৯১x১) | ৬০০x৩১৪ | ১২০০x৬২৮ |
| প্রতিকৃতি (৪x৫) | ৪৮০x৬০০ | ৯৬০x১২০০ |
ফাইল ফর্ম্যাট
পিএনজি, জেপিজি, স্ট্যাটিক জিআইএফ, ওয়েবপি
সর্বোচ্চ ফাইলের আকার
৫১২০ কেবি
অতিরিক্ত সুপারিশ
- ছবির নিরাপদ এলাকা: ছবির ৮০% কেন্দ্রে আপনার গুরুত্বপূর্ণ বিষয়বস্তু রাখুন।
- একটি স্বচ্ছ ব্যাকগ্রাউন্ড ব্যবহার করুন যাতে ছবিটি অন্ধকার এবং হালকা থিম সেটিংসে সঠিকভাবে প্রদর্শিত হয়।
ধাপ ২: ক্লাস্টার ডেটা প্রদান করুন
কন্টেন্ট প্রকাশের কাজটি ব্যাকগ্রাউন্ডে (উদাহরণস্বরূপ, WorkManager ব্যবহার করে) সম্পাদন করা এবং নিয়মিতভাবে বা ইভেন্ট ভিত্তিতে (উদাহরণস্বরূপ, প্রতিবার ব্যবহারকারী যখন অ্যাপটি খোলেন বা ব্যবহারকারী যখন তাদের কার্টে কিছু যোগ করেন) সময় নির্ধারণ করা বাঞ্ছনীয়।
AppEngageFoodClient খাদ্য ক্লাস্টার প্রকাশের জন্য দায়ী।
ক্লায়েন্টে ক্লাস্টার প্রকাশ করার জন্য নিম্নলিখিত API গুলি রয়েছে:
-
isServiceAvailable -
publishRecommendationClusters -
publishFeaturedCluster -
publishFoodShoppingCarts -
publishFoodShoppingLists -
publishReorderCluster -
publishUserAccountManagementRequest -
updatePublishStatus -
deleteRecommendationsClusters -
deleteFeaturedCluster -
deleteFoodShoppingCartCluster -
deleteFoodShoppingListCluster -
deleteReorderCluster -
deleteUserManagementCluster -
deleteClusters
isServiceAvailable
এই API ব্যবহার করে পরিষেবাটি ইন্টিগ্রেশনের জন্য উপলব্ধ কিনা এবং ডিভাইসে কন্টেন্ট উপস্থাপন করা যাবে কিনা তা পরীক্ষা করা হয়।
কোটলিন
client.isServiceAvailable.addOnCompleteListener { task ->
if (task.isSuccessful) {
// Handle IPC call success
if(task.result) {
// Service is available on the device, proceed with content publish
// calls.
} else {
// Service is not available, no further action is needed.
}
} else {
// The IPC call itself fails, proceed with error handling logic here,
// such as retry.
}
}
জাভা
client.isServiceAvailable().addOnCompleteListener(task - > {
if (task.isSuccessful()) {
// Handle success
if(task.getResult()) {
// Service is available on the device, proceed with content publish
// calls.
} else {
// Service is not available, no further action is needed.
}
} else {
// The IPC call itself fails, proceed with error handling logic here,
// such as retry.
}
});
publishRecommendationClusters
এই APIটি RecommendationCluster অবজেক্টের একটি তালিকা প্রকাশ করতে ব্যবহৃত হয়।
একটি RecommendationCluster অবজেক্টের নিম্নলিখিত বৈশিষ্ট্য থাকতে পারে:
| বৈশিষ্ট্য | প্রয়োজনীয়তা | বিবরণ |
|---|---|---|
| ProductEntity, StoreEntity, অথবা RecipeEntity-এর তালিকা | প্রয়োজনীয় | এই সুপারিশ ক্লাস্টারের জন্য সুপারিশ তৈরি করে এমন সত্তার একটি তালিকা। একটি একক ক্লাস্টারের সত্তা অবশ্যই একই ধরণের হতে হবে। |
| শিরোনাম | প্রয়োজনীয় | সুপারিশ ক্লাস্টারের শিরোনাম (উদাহরণস্বরূপ, থ্যাঙ্কসগিভিং মেনুতে বড় সঞ্চয় )। প্রস্তাবিত টেক্সট সাইজ: ২৫টি অক্ষরের কম (খুব লম্বা টেক্সটে উপবৃত্ত দেখাতে পারে) |
| সাবটাইটেল | ঐচ্ছিক | সুপারিশ ক্লাস্টারের সাবটাইটেল। |
| অ্যাকশন উরি | ঐচ্ছিক | পার্টনার অ্যাপের পৃষ্ঠার ডিপ লিঙ্ক যেখানে ব্যবহারকারীরা সুপারিশের সম্পূর্ণ তালিকা দেখতে পাবেন। দ্রষ্টব্য: আপনি অ্যাট্রিবিউশনের জন্য ডিপ লিঙ্ক ব্যবহার করতে পারেন। এই FAQ দেখুন। |
কোটলিন
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
এই API একটি FeaturedCluster অবজেক্ট প্রকাশ করতে ব্যবহৃত হয়।
কোটলিন
client.publishFeaturedCluster(
PublishFeaturedClusterRequest.Builder()
.setFeaturedCluster(
FeaturedCluster.Builder()
...
.build())
.build())
জাভা
client.publishFeaturedCluster(
new PublishFeaturedClusterRequest.Builder()
.setFeaturedCluster(
new FeaturedCluster.Builder()
...
.build())
.build());
যখন পরিষেবাটি অনুরোধটি গ্রহণ করে, তখন নিম্নলিখিত ক্রিয়াগুলি একটি লেনদেনের মধ্যে ঘটে:
- ডেভেলপার পার্টনারের কাছ থেকে বিদ্যমান
FeaturedClusterডেটা সরানো হয়েছে। - অনুরোধ থেকে প্রাপ্ত তথ্য বিশ্লেষণ করে আপডেট করা বৈশিষ্ট্যযুক্ত ক্লাস্টারে সংরক্ষণ করা হয়।
কোনও ত্রুটির ক্ষেত্রে, সম্পূর্ণ অনুরোধটি প্রত্যাখ্যান করা হয় এবং বিদ্যমান অবস্থা বজায় রাখা হয়।
publishFoodShoppingCarts
এই APIটি FoodShoppingCart অবজেক্টের একটি তালিকা প্রকাশ করতে ব্যবহৃত হয়।
কোটলিন
client.publishFoodShoppingCarts(
PublishFoodShoppingCartsRequest.Builder()
.addFoodShoppingCart(
FoodShoppingCart.Builder()
...
.build())
.build())
জাভা
client.publishFoodShoppingCarts(
new PublishFoodShoppingCartsRequest.Builder()
.addFoodShoppingCart(
new FoodShoppingCart.Builder()
...
.build())
.build());
যখন পরিষেবাটি অনুরোধটি গ্রহণ করে, তখন নিম্নলিখিত ক্রিয়াগুলি একটি লেনদেনের মধ্যে ঘটে:
- ডেভেলপার পার্টনারের কাছ থেকে বিদ্যমান
FoodShoppingCartডেটা মুছে ফেলা হয়েছে। - অনুরোধ থেকে প্রাপ্ত তথ্য বিশ্লেষণ করে আপডেট করা শপিং কার্ট ক্লাস্টারে সংরক্ষণ করা হয়।
কোনও ত্রুটির ক্ষেত্রে, সম্পূর্ণ অনুরোধটি প্রত্যাখ্যান করা হয় এবং বিদ্যমান অবস্থা বজায় রাখা হয়।
publishFoodShoppingLists
এই APIটি FoodShoppingList অবজেক্টের একটি তালিকা প্রকাশ করতে ব্যবহৃত হয়।
কোটলিন
client.publishFoodShoppingLists(
PublishFoodShoppingListsRequest.Builder()
.addFoodShoppingList(
FoodShoppingListEntity.Builder()
...
.build())
.build())
জাভা
client.publishFoodShoppingLists(
new PublishFoodShoppingListsRequest.Builder()
.addFoodShoppingList(
new FoodShoppingListEntity.Builder()
...
.build())
.build());
যখন পরিষেবাটি অনুরোধটি গ্রহণ করে, তখন নিম্নলিখিত ক্রিয়াগুলি একটি লেনদেনের মধ্যে ঘটে:
- ডেভেলপার পার্টনারের কাছ থেকে বিদ্যমান
FoodShoppingListডেটা সরানো হয়েছে। - অনুরোধ থেকে প্রাপ্ত তথ্য বিশ্লেষণ করে আপডেট করা শপিং লিস্ট ক্লাস্টারে সংরক্ষণ করা হয়।
কোনও ত্রুটির ক্ষেত্রে, সম্পূর্ণ অনুরোধটি প্রত্যাখ্যান করা হয় এবং বিদ্যমান অবস্থা বজায় রাখা হয়।
publishReorderCluster
এই APIটি একটি FoodReorderCluster অবজেক্ট প্রকাশ করতে ব্যবহৃত হয়।
কোটলিন
client.publishReorderCluster(
PublishReorderClusterRequest.Builder()
.setReorderCluster(
FoodReorderCluster.Builder()
...
.build())
.build())
জাভা
client.publishReorderCluster(
new PublishReorderClusterRequest.Builder()
.setReorderCluster(
new FoodReorderCluster.Builder()
...
.build())
.build());
যখন পরিষেবাটি অনুরোধটি গ্রহণ করে, তখন নিম্নলিখিত ক্রিয়াগুলি একটি লেনদেনের মধ্যে ঘটে:
- ডেভেলপার পার্টনারের কাছ থেকে বিদ্যমান
FoodReorderClusterডেটা সরানো হয়েছে। - অনুরোধ থেকে প্রাপ্ত ডেটা পার্স করা হয় এবং আপডেট করা রিঅর্ডার ক্লাস্টারে সংরক্ষণ করা হয়।
কোনও ত্রুটির ক্ষেত্রে, সম্পূর্ণ অনুরোধটি প্রত্যাখ্যান করা হয় এবং বিদ্যমান অবস্থা বজায় রাখা হয়।
publishUserAccountManagementRequest
এই APIটি একটি সাইন ইন কার্ড প্রকাশ করতে ব্যবহৃত হয়। সাইন ইন অ্যাকশন ব্যবহারকারীদের অ্যাপের সাইন ইন পৃষ্ঠায় নির্দেশ করে যাতে অ্যাপটি কন্টেন্ট প্রকাশ করতে পারে (অথবা আরও ব্যক্তিগতকৃত কন্টেন্ট প্রদান করতে পারে)।
নিম্নলিখিত মেটাডেটা সাইন ইন কার্ডের অংশ -
| বৈশিষ্ট্য | প্রয়োজনীয়তা | বিবরণ |
|---|---|---|
| অ্যাকশন উরি | প্রয়োজনীয় | ডিপলিঙ্ক টু অ্যাকশন (অর্থাৎ অ্যাপ সাইন ইন পৃষ্ঠায় নেভিগেট করে) |
| ভাবমূর্তি | ঐচ্ছিক - যদি না দেওয়া হয়, তাহলে শিরোনাম দেওয়া আবশ্যক | কার্ডে দেখানো ছবি ১২৬৪x৭১২ রেজোলিউশন সহ ১৬x৯ আকৃতির অনুপাতের ছবি |
| শিরোনাম | ঐচ্ছিক - যদি না দেওয়া হয়, তাহলে ছবি অবশ্যই দেওয়া উচিত | কার্ডের শিরোনাম |
| অ্যাকশন টেক্সট | ঐচ্ছিক | CTA তে দেখানো টেক্সট (অর্থাৎ সাইন ইন) |
| সাবটাইটেল | ঐচ্ছিক | কার্ডে ঐচ্ছিক সাবটাইটেল |
কোটলিন
var SIGN_IN_CARD_ENTITY =
SignInCardEntity.Builder()
.addPosterImage(
Image.Builder()
.setImageUri(Uri.parse("http://www.x.com/image.png"))
.setImageHeightInPixel(500)
.setImageWidthInPixel(500)
.build())
.setActionText("Sign In")
.setActionUri(Uri.parse("http://xx.com/signin"))
.build()
client.publishUserAccountManagementRequest(
PublishUserAccountManagementRequest.Builder()
.setSignInCardEntity(SIGN_IN_CARD_ENTITY)
.build());
জাভা
SignInCardEntity SIGN_IN_CARD_ENTITY =
new SignInCardEntity.Builder()
.addPosterImage(
new Image.Builder()
.setImageUri(Uri.parse("http://www.x.com/image.png"))
.setImageHeightInPixel(500)
.setImageWidthInPixel(500)
.build())
.setActionText("Sign In")
.setActionUri(Uri.parse("http://xx.com/signin"))
.build();
client.publishUserAccountManagementRequest(
new PublishUserAccountManagementRequest.Builder()
.setSignInCardEntity(SIGN_IN_CARD_ENTITY)
.build());
যখন পরিষেবাটি অনুরোধটি গ্রহণ করে, তখন নিম্নলিখিত ক্রিয়াগুলি একটি লেনদেনের মধ্যে ঘটে:
- ডেভেলপার পার্টনারের থেকে বিদ্যমান
UserAccountManagementClusterডেটা সরানো হয়েছে। - অনুরোধ থেকে প্রাপ্ত ডেটা পার্স করা হয় এবং আপডেট করা UserAccountManagementCluster ক্লাস্টারে সংরক্ষণ করা হয়।
কোনও ত্রুটির ক্ষেত্রে, সম্পূর্ণ অনুরোধটি প্রত্যাখ্যান করা হয় এবং বিদ্যমান অবস্থা বজায় রাখা হয়।
updatePublishStatus
যদি কোনও অভ্যন্তরীণ ব্যবসায়িক কারণে, কোনও ক্লাস্টার প্রকাশিত না হয়, তাহলে আমরা updatePublishStatus API ব্যবহার করে প্রকাশের স্থিতি আপডেট করার জন্য দৃঢ়ভাবে সুপারিশ করছি । এটি গুরুত্বপূর্ণ কারণ:
- সকল পরিস্থিতিতে স্ট্যাটাস প্রদান করা, এমনকি যখন কন্টেন্ট প্রকাশিত হয় (STATUS == PUBLISHED), তখনও ড্যাশবোর্ডগুলি পূরণ করার জন্য গুরুত্বপূর্ণ যা আপনার ইন্টিগ্রেশনের স্বাস্থ্য এবং অন্যান্য মেট্রিক্স জানাতে এই স্পষ্ট স্ট্যাটাস ব্যবহার করে।
- যদি কোনও কন্টেন্ট প্রকাশিত না হয় কিন্তু ইন্টিগ্রেশন স্ট্যাটাস ভাঙা না হয় (STATUS == NOT_PUBLISHED), তাহলে 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 API কল করার পরামর্শ দিচ্ছি।
কোটলিন
client.updatePublishStatus(
PublishStatusRequest.Builder()
.setStatusCode(AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN)
.build())
জাভা
client.updatePublishStatus(
new PublishStatusRequest.Builder()
.setStatusCode(AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN)
.build());
deleteRecommendationClusters
এই APIটি সুপারিশ ক্লাস্টারের বিষয়বস্তু মুছে ফেলার জন্য ব্যবহৃত হয়।
কোটলিন
client.deleteRecommendationClusters()
জাভা
client.deleteRecommendationClusters();
যখন পরিষেবাটি অনুরোধটি গ্রহণ করে, তখন এটি সুপারিশ ক্লাস্টারগুলি থেকে বিদ্যমান ডেটা সরিয়ে দেয়। কোনও ত্রুটির ক্ষেত্রে, সম্পূর্ণ অনুরোধটি প্রত্যাখ্যান করা হয় এবং বিদ্যমান অবস্থা বজায় রাখা হয়।
deleteFeaturedCluster
এই APIটি Featured Cluster-এর কন্টেন্ট মুছে ফেলার জন্য ব্যবহার করা হয়।
কোটলিন
client.deleteFeaturedCluster()
জাভা
client.deleteFeaturedCluster();
যখন পরিষেবাটি অনুরোধটি গ্রহণ করে, তখন এটি বৈশিষ্ট্যযুক্ত ক্লাস্টার থেকে বিদ্যমান ডেটা সরিয়ে দেয়। কোনও ত্রুটির ক্ষেত্রে, সম্পূর্ণ অনুরোধটি প্রত্যাখ্যান করা হয় এবং বিদ্যমান অবস্থা বজায় রাখা হয়।
deleteFoodShoppingCartCluster
এই APIটি ফুড শপিং কার্ট ক্লাস্টারের কন্টেন্ট মুছে ফেলার জন্য ব্যবহার করা হয়।
কোটলিন
client.deleteFoodShoppingCartCluster()
জাভা
client.deleteFoodShoppingCartCluster();
যখন পরিষেবাটি অনুরোধটি গ্রহণ করে, তখন এটি খাদ্য শপিং কার্ট ক্লাস্টার থেকে বিদ্যমান ডেটা সরিয়ে দেয়। কোনও ত্রুটির ক্ষেত্রে, সম্পূর্ণ অনুরোধটি প্রত্যাখ্যান করা হয় এবং বিদ্যমান অবস্থা বজায় রাখা হয়।
deleteFoodShoppingListCluster
এই APIটি খাদ্য শপিং তালিকা ক্লাস্টারের বিষয়বস্তু মুছে ফেলার জন্য ব্যবহৃত হয়।
কোটলিন
client.deleteFoodShoppingListCluster()
জাভা
client.deleteFoodShoppingListCluster();
যখন পরিষেবাটি অনুরোধটি গ্রহণ করে, তখন এটি খাদ্য শপিং তালিকা ক্লাস্টার থেকে বিদ্যমান ডেটা সরিয়ে দেয়। কোনও ত্রুটির ক্ষেত্রে, সম্পূর্ণ অনুরোধটি প্রত্যাখ্যান করা হয় এবং বিদ্যমান অবস্থা বজায় রাখা হয়।
deleteReorderCluster
এই APIটি FoodReorderCluster এর কন্টেন্ট মুছে ফেলার জন্য ব্যবহৃত হয়।
কোটলিন
client.deleteReorderCluster()
জাভা
client.deleteReorderCluster();
যখন পরিষেবাটি অনুরোধটি গ্রহণ করে, তখন এটি পুনঃক্রম ক্লাস্টার থেকে বিদ্যমান ডেটা সরিয়ে দেয়। কোনও ত্রুটির ক্ষেত্রে, সম্পূর্ণ অনুরোধটি প্রত্যাখ্যান করা হয় এবং বিদ্যমান অবস্থা বজায় রাখা হয়।
deleteUserManagementCluster
এই APIটি UserAccountManagement Cluster এর কন্টেন্ট মুছে ফেলার জন্য ব্যবহৃত হয়।
কোটলিন
client.deleteUserManagementCluster()
জাভা
client.deleteUserManagementCluster();
যখন পরিষেবাটি অনুরোধটি গ্রহণ করে, তখন এটি UserAccountManagement ক্লাস্টার থেকে বিদ্যমান ডেটা সরিয়ে দেয়। কোনও ত্রুটির ক্ষেত্রে, সম্পূর্ণ অনুরোধটি প্রত্যাখ্যান করা হয় এবং বিদ্যমান অবস্থা বজায় রাখা হয়।
deleteClusters
এই API একটি প্রদত্ত ক্লাস্টার ধরণের বিষয়বস্তু মুছে ফেলার জন্য ব্যবহৃত হয়।
কোটলিন
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());
যখন পরিষেবাটি অনুরোধটি গ্রহণ করে, তখন এটি নির্দিষ্ট ক্লাস্টার প্রকারের সাথে মিলে যাওয়া সমস্ত ক্লাস্টার থেকে বিদ্যমান ডেটা সরিয়ে দেয়। ক্লায়েন্টরা এক বা একাধিক ক্লাস্টার প্রকার পাস করতে বেছে নিতে পারে। কোনও ত্রুটির ক্ষেত্রে, সম্পূর্ণ অনুরোধটি প্রত্যাখ্যান করা হয় এবং বিদ্যমান অবস্থা বজায় রাখা হয়।
ত্রুটি পরিচালনা
একটি সফল কাজ পুনরুদ্ধার এবং পুনরায় জমা দেওয়ার জন্য একটি ফলো-আপ পদক্ষেপ নেওয়ার জন্য প্রকাশ API গুলি থেকে টাস্কের ফলাফল শোনার জন্য অত্যন্ত পরামর্শ দেওয়া হচ্ছে।
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 | পরিষেবা কলটি খুব ঘন ঘন করা হচ্ছে। |
ধাপ ৩: সম্প্রচারের উদ্দেশ্যগুলি পরিচালনা করুন
কোনও কাজের মাধ্যমে প্রকাশনা সামগ্রী API কল করার পাশাপাশি, কোনও সামগ্রী প্রকাশের অনুরোধ গ্রহণ করার জন্য একটি BroadcastReceiver সেট আপ করাও প্রয়োজন।
ব্রডকাস্ট ইন্টেন্টের লক্ষ্য মূলত অ্যাপ পুনঃসক্রিয়করণ এবং ডেটা সিঙ্ক জোর করে করা। ব্রডকাস্ট ইন্টেন্টগুলি খুব ঘন ঘন পাঠানোর জন্য ডিজাইন করা হয় না। এটি কেবল তখনই ট্রিগার করা হয় যখন এনগেজ পরিষেবা নির্ধারণ করে যে সামগ্রীটি পুরানো হতে পারে (উদাহরণস্বরূপ, এক সপ্তাহ পুরানো)। এইভাবে, ব্যবহারকারীর নতুন সামগ্রীর অভিজ্ঞতা পাওয়ার বিষয়ে আরও আত্মবিশ্বাস থাকে, এমনকি যদি অ্যাপ্লিকেশনটি দীর্ঘ সময় ধরে কার্যকর না করা হয়।
BroadcastReceiver নিম্নলিখিত দুটি উপায়ে সেট আপ করতে হবে:
Context.registerReceiver()ব্যবহার করেBroadcastReceiverক্লাসের একটি ইনস্ট্যান্স গতিশীলভাবে নিবন্ধন করুন। এটি মেমরিতে এখনও লাইভ থাকা অ্যাপ্লিকেশনগুলি থেকে যোগাযোগ সক্ষম করে।
কোটলিন
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);
}
আপনার
AndroidManifest.xmlফাইলে<receiver>ট্যাগ ব্যবহার করে একটি বাস্তবায়ন স্ট্যাটিকালি ঘোষণা করুন। এটি অ্যাপ্লিকেশনটিকে চলমান না থাকাকালীন ব্রডকাস্ট ইন্টেন্ট গ্রহণ করতে দেয় এবং অ্যাপ্লিকেশনটিকে সামগ্রী প্রকাশ করার অনুমতি দেয়।
<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 প্রকাশ করা শুরু করতে পারেন।
- গুগল নিশ্চিত করার পর যে আপনার আপডেট করা APK প্লে স্টোরে প্রকাশিত হয়েছে, আপনার সুপারিশ , বৈশিষ্ট্যযুক্ত , শপিং কার্ট , শপিং তালিকা এবং পুনঃক্রম ক্লাস্টারগুলি প্রকাশিত হবে এবং ব্যবহারকারীরা দেখতে পাবেন।