আপনার ব্যবহারকারীরা যেখানে আছেন তাদের কাছে পৌঁছানোর মাধ্যমে অ্যাপের ব্যস্ততা বাড়ান। একাধিক অন-ডিভাইস সারফেস, যেমন কালেকশন , এন্টারটেইনমেন্ট স্পেস এবং প্লে স্টোর জুড়ে ব্যবহারকারীদের ব্যক্তিগতকৃত সুপারিশ এবং ধারাবাহিকতা বিষয়বস্তু সরাসরি সরবরাহ করতে Engage SDK-কে সংহত করুন। ইন্টিগ্রেশন গড় APK-এ 50 KB এর কম (সংকুচিত) যোগ করে এবং বেশিরভাগ অ্যাপ ডেভেলপারের প্রায় এক সপ্তাহ সময় নেয়। আমাদের ব্যবসা সাইটে আরো জানুন.
এই নির্দেশিকাটিতে ডেভেলপার অংশীদারদের স্বাস্থ্য এবং ফিটনেস বিষয়বস্তু Engage বিষয়বস্তু পৃষ্ঠে সরবরাহ করার জন্য নির্দেশাবলী রয়েছে।
ইন্টিগ্রেশন বিস্তারিত
পরিভাষা
এই ইন্টিগ্রেশনে নিম্নলিখিত তিনটি ক্লাস্টার প্রকার রয়েছে: সুপারিশ , বৈশিষ্ট্যযুক্ত , এবং ধারাবাহিকতা ।
প্রস্তাবনা ক্লাস্টারগুলি একজন স্বতন্ত্র বিকাশকারী অংশীদার থেকে ব্যক্তিগতকৃত স্বাস্থ্য এবং ফিটনেস পরামর্শগুলি দেখায়। এই সুপারিশগুলি ব্যবহারকারীর জন্য ব্যক্তিগতকৃত বা সাধারণীকরণ করা যেতে পারে (উদাহরণস্বরূপ, প্রবণতা ফিটনেস এবং স্বাস্থ্য)। স্বাস্থ্য এবং ফিটনেস সম্পর্কিত নিবন্ধ বা লোকেদের পৃষ্ঠের জন্য এগুলি ব্যবহার করুন।
- একটি সুপারিশ ক্লাস্টার
ArticleEntity
,PersonEntity
, বাEventEntity
দিয়ে তৈরি করা যেতে পারে কিন্তু বিভিন্ন ধরনের সত্তার মিশ্রণ নয়৷
আপনার সুপারিশগুলি নিম্নলিখিত কাঠামো গ্রহণ করে:
সুপারিশ ক্লাস্টার: একটি UI ভিউ যাতে একই বিকাশকারী অংশীদারের কাছ থেকে সুপারিশের একটি গোষ্ঠী রয়েছে৷
সত্তা: একটি বস্তু একটি ক্লাস্টারে একটি একক আইটেম প্রতিনিধিত্ব করে। এই ইন্টিগ্রেশন কিছু সত্তার প্রস্তাব দেয় যেগুলি সুপারিশ ক্লাস্টার ব্যবহার করে দেখা যাবে:
ArticleEntity : ArticleEntity স্বাস্থ্য ও ফিটনেস সম্পর্কিত পাঠ্য-ভিত্তিক সামগ্রীর জন্য একটি সুপারিশ উপস্থাপন করে। এটি নিবন্ধ, ব্লগপোস্ট, বিপণন সামগ্রী, সংবাদ স্নিপেট ইত্যাদির জন্য ব্যবহার করা যেতে পারে।
চিত্র 1: UI সুপারিশ ক্লাস্টারের মধ্যে একটি একক ArticleEntity দেখাচ্ছে। PersonEntity : PersonEntity একজন ব্যক্তির প্রতিনিধিত্ব করে। সুপারিশগুলি হতে পারে একজন প্রশিক্ষক বা স্বাস্থ্য এবং ফিটনেস সম্পর্কিত কোনও ব্যক্তিকে হাইলাইট করা ইত্যাদি।
চিত্র 2: UI সুপারিশ ক্লাস্টারের মধ্যে একটি একক ব্যক্তিত্ব দেখাচ্ছে৷ EventEntity : EventEntity ভবিষ্যতে ঘটতে থাকা একটি ইভেন্টের প্রতিনিধিত্ব করে। ইভেন্ট শুরুর সময় হল তথ্যের একটি গুরুত্বপূর্ণ অংশ যা ব্যবহারকারীদের জানাতে হবে এই সত্তাটি স্বাস্থ্য এবং ফিটনেস সম্পর্কিত রক্তদান শিবির, প্রশিক্ষণ সেশন, জিম বা যোগ ক্লাস ইত্যাদির মতো ইভেন্টগুলির জন্য ব্যবহার করা যেতে পারে।
চিত্র 3: UI সুপারিশ ক্লাস্টারের মধ্যে একটি একক EventEntity দেখাচ্ছে৷
- একটি সুপারিশ ক্লাস্টার
কন্টিনিউয়েশন ক্লাস্টার সম্প্রতি একটি একক UI গ্রুপিংয়ে একাধিক বিকাশকারী অংশীদারদের দ্বারা নিযুক্ত সামগ্রী দেখায়৷ প্রতিটি বিকাশকারী অংশীদারকে কন্টিনিউয়েশন ক্লাস্টারে সর্বাধিক 10টি সত্তা সম্প্রচার করার অনুমতি দেওয়া হবে।
আপনার ধারাবাহিকতা বিষয়বস্তু নিম্নলিখিত কাঠামো নিতে পারে:
ArticleEntity : ArticleEntity স্বাস্থ্য ও ফিটনেস সম্পর্কিত পাঠ্য-ভিত্তিক বিষয়বস্তুর জন্য একটি সুপারিশ উপস্থাপন করে। এই সত্তাটি অসমাপ্ত সংবাদ নিবন্ধ বা অন্যান্য বিষয়বস্তুর প্রতিনিধিত্ব করতে ব্যবহার করা যেতে পারে যা ব্যবহারকারীরা যেখান থেকে এটি রেখেছিলেন সেখান থেকে ব্যবহার চালিয়ে যেতে চান। যেমন: নিউজ স্নিপেট, স্বাস্থ্য বা ফিটনেস সম্পর্কিত বিষয় সম্পর্কে ব্লগপোস্ট স্নিপেট।
চিত্র 6. UI একটি কন্টিনিউয়েশন ক্লাস্টারের মধ্যে একটি একক ArticleEntity দেখাচ্ছে। EventReservationEntity : EventReservationEntity একটি ইভেন্টের জন্য রিজার্ভেশন প্রতিনিধিত্ব করে এবং ব্যবহারকারীদের আসন্ন বা চলমান ফিটনেস এবং স্বাস্থ্য ইভেন্ট সংরক্ষণগুলি ট্র্যাক করতে সহায়তা করে৷ যেমন: প্রশিক্ষণ সেশন
চিত্র 8. UI একটি কন্টিনিউয়েশন ক্লাস্টারের মধ্যে একটি একক EventReservationEntity দেখাচ্ছে।
বৈশিষ্ট্যযুক্ত ক্লাস্টারটি একটি UI গ্রুপিংয়ে একাধিক বিকাশকারী অংশীদারদের থেকে সত্তার একটি নির্বাচন প্রদর্শন করে৷ একটি একক বৈশিষ্ট্যযুক্ত ক্লাস্টার থাকবে, যা সমস্ত সুপারিশ ক্লাস্টারের উপরে একটি অগ্রাধিকার প্লেসমেন্ট সহ UI এর শীর্ষের কাছে প্রদর্শিত হবে৷ প্রতিটি বিকাশকারী অংশীদারকে বৈশিষ্ট্যযুক্ত ক্লাস্টারে 10টি পর্যন্ত সম্প্রচার করার অনুমতি দেওয়া হবে।
GenericFeaturedEntity : GenericFeaturedEntity প্রস্তাবিত আইটেম থেকে আলাদা যে বৈশিষ্ট্যযুক্ত আইটেমটি ডেভেলপারদের থেকে একটি একক শীর্ষ সামগ্রীর জন্য ব্যবহার করা উচিত এবং ব্যবহারকারীদের জন্য আকর্ষণীয় এবং প্রাসঙ্গিক হবে এমন একক সবচেয়ে গুরুত্বপূর্ণ সামগ্রীর প্রতিনিধিত্ব করা উচিত৷
চিত্র 12: UI একটি বৈশিষ্ট্যযুক্ত ক্লাস্টারের মধ্যে একটি একক হিরো GenericFeaturedEntity কার্ড দেখাচ্ছে
প্রাক কাজ
ন্যূনতম API স্তর: 19
আপনার অ্যাপে com.google.android.engage:engage-core
লাইব্রেরি যোগ করুন:
dependencies {
// Make sure you also include that repository in your project's build.gradle file.
implementation 'com.google.android.engage:engage-core:1.5.2'
}
সারাংশ
নকশা একটি আবদ্ধ সেবা বাস্তবায়ন উপর ভিত্তি করে.
একটি ক্লায়েন্ট যে ডেটা প্রকাশ করতে পারে তা বিভিন্ন ক্লাস্টার প্রকারের জন্য নিম্নলিখিত সীমার সাপেক্ষে:
ক্লাস্টার টাইপ | ক্লাস্টার সীমা | একটি ক্লাস্টারে ন্যূনতম সত্তা সীমা | একটি ক্লাস্টারে সত্তার সর্বোচ্চ সীমা |
---|---|---|---|
সুপারিশ ক্লাস্টার(গুলি) | সর্বাধিক 7 | অন্ততঃ ১ | সর্বোচ্চ 50টি ( ArticleEntity , PersonEntity , or EventEntity ) |
ধারাবাহিকতা ক্লাস্টার | সর্বোচ্চ 1 | অন্ততঃ ১ | সর্বাধিক 20 ( ArticleEntity , বা EventReservationEntity ) |
বৈশিষ্ট্যযুক্ত ক্লাস্টার | সর্বোচ্চ 1 | অন্ততঃ ১ | সর্বাধিক 20 ( GenericFeaturedEntity ) |
ধাপ 1: সত্তা তথ্য প্রদান
প্রতিটি আইটেমের প্রকারের প্রতিনিধিত্ব করার জন্য SDK বিভিন্ন সত্তাকে সংজ্ঞায়িত করেছে। আমরা স্বাস্থ্য ও ফিটনেস বিভাগের জন্য নিম্নলিখিত সংস্থাগুলিকে সমর্থন করি:
-
GenericFeaturedEntity
-
ArticleEntity
-
PersonEntity
-
EventEntity
-
EventReservationEntity
নীচের চার্টগুলি প্রতিটি ধরণের জন্য উপলব্ধ বৈশিষ্ট্য এবং প্রয়োজনীয়তার রূপরেখা দেয়।
GenericFeaturedEntity
বৈশিষ্ট্য | প্রয়োজনীয়তা | বর্ণনা | বিন্যাস |
---|---|---|---|
অ্যাকশন উরি | প্রয়োজন | প্রদানকারী অ্যাপে সত্তার সাথে গভীর লিঙ্ক। দ্রষ্টব্য: আপনি অ্যাট্রিবিউশনের জন্য গভীর লিঙ্ক ব্যবহার করতে পারেন। এই FAQ পড়ুন | উরি |
পোস্টার ছবি | প্রয়োজন | একাধিক ছবি দেওয়া হলে আমরা শুধুমাত্র 1টি ছবি দেখাব। প্রস্তাবিত আকৃতির অনুপাত হল 16:9 দ্রষ্টব্য: যদি একটি ব্যাজ প্রদান করা হয়, অনুগ্রহ করে ছবিটির উপরের এবং নীচে উভয় স্থানে 24 ডিপিএস নিরাপদ স্থান নিশ্চিত করুন | নির্দেশিকা জন্য ইমেজ স্পেসিফিকেশন দেখুন. |
শিরোনাম | ঐচ্ছিক | সত্তার শিরোনাম। | বিনামূল্যে পাঠ্য প্রস্তাবিত পাঠ্য আকার: 50 অক্ষর |
বর্ণনা | ঐচ্ছিক | সত্তা বর্ণনা করার জন্য পাঠ্যের একটি একক অনুচ্ছেদ। দ্রষ্টব্য: হয় বর্ণনা বা সাবটাইটেল তালিকা ব্যবহারকারীর কাছে প্রদর্শিত হবে, উভয়ই নয়। | বিনামূল্যে পাঠ্য প্রস্তাবিত পাঠ্য আকার: 180 অক্ষর |
সাবটাইটেল তালিকা | ঐচ্ছিক | 3টি পর্যন্ত সাবটাইটেল, প্রতিটি সাবটাইটেলের সাথে পাঠ্যের একটি লাইন। দ্রষ্টব্য: হয় বর্ণনা বা সাবটাইটেল তালিকা ব্যবহারকারীর কাছে প্রদর্শিত হবে, উভয়ই নয়। | বিনামূল্যে পাঠ্য প্রতিটি সাবটাইটেলের জন্য প্রস্তাবিত পাঠ্য আকার: সর্বাধিক 50 অক্ষর |
ব্যাজ | ঐচ্ছিক | প্রতিটি ব্যাজ হয় বিনামূল্যের পাঠ্য (সর্বোচ্চ 15 অক্ষর) বা ছোট ছবি। ইমেজ/ভিডিওর উপরে বিশেষ UX ট্রিটমেন্ট, যেমন ছবির ব্যাজ ওভারলে
| |
ব্যাজ - পাঠ্য | ঐচ্ছিক | ব্যাজের শিরোনাম দ্রষ্টব্য: ব্যাজের জন্য হয় পাঠ্য বা চিত্র প্রয়োজন | বিনামূল্যে পাঠ্য প্রস্তাবিত পাঠ্য আকার: সর্বোচ্চ 15 অক্ষর |
ব্যাজ - ছবি | ঐচ্ছিক | ছোট ইমেজ বিশেষ UX ট্রিটমেন্ট, যেমন ইমেজ/ভিডিও থাম্বনেইলে ব্যাজ ওভারলে। দ্রষ্টব্য: ব্যাজের জন্য হয় পাঠ্য বা চিত্র প্রয়োজন | নির্দেশিকা জন্য ইমেজ স্পেসিফিকেশন দেখুন. |
বিষয়বস্তু বিভাগ | ঐচ্ছিক | সত্তার বিষয়বস্তুর শ্রেণীবিভাগ বর্ণনা করুন। | Enums তালিকা নির্দেশিকা জন্য বিষয়বস্তু বিভাগ বিভাগ দেখুন. |
ArticleEntity
বৈশিষ্ট্য | প্রয়োজনীয়তা | বর্ণনা | বিন্যাস |
---|---|---|---|
অ্যাকশন উরি | প্রয়োজন | প্রদানকারী অ্যাপে সত্তার সাথে গভীর লিঙ্ক। দ্রষ্টব্য: আপনি অ্যাট্রিবিউশনের জন্য গভীর লিঙ্ক ব্যবহার করতে পারেন। এই FAQ পড়ুন | উরি |
শিরোনাম | প্রয়োজন | সত্তার শিরোনাম। | বিনামূল্যে পাঠ্য প্রস্তাবিত পাঠ্য আকার: সর্বাধিক 50 অক্ষর |
পোস্টার ছবি | ঐচ্ছিক | একাধিক ছবি দেওয়া হলে আমরা শুধুমাত্র 1টি ছবি দেখাব। প্রস্তাবিত আকৃতির অনুপাত হল 16:9 দ্রষ্টব্য: ছবি অত্যন্ত সুপারিশ করা হয়. যদি একটি ব্যাজ প্রদান করা হয়, অনুগ্রহ করে ছবিটির উপরের এবং নীচে উভয় দিকে 24 ডিপিএস নিরাপদ স্থান নিশ্চিত করুন৷ | নির্দেশিকা জন্য ইমেজ স্পেসিফিকেশন দেখুন. |
সূত্র- শিরোনাম | ঐচ্ছিক | লেখক, সংস্থা বা রিপোর্টারের নাম | বিনামূল্যে পাঠ্য প্রস্তাবিত পাঠ্য আকার: 25 অক্ষরের নিচে |
সূত্র- ছবি | ঐচ্ছিক | লেখক, সংস্থা, রিপোর্টার মত উৎসের একটি চিত্র | নির্দেশিকা জন্য ইমেজ স্পেসিফিকেশন দেখুন. |
বর্ণনা | ঐচ্ছিক | সত্তা বর্ণনা করার জন্য পাঠ্যের একটি একক অনুচ্ছেদ। দ্রষ্টব্য: হয় বর্ণনা বা সাবটাইটেল তালিকা ব্যবহারকারীর কাছে প্রদর্শিত হবে, উভয়ই নয়। | বিনামূল্যে পাঠ্য প্রস্তাবিত পাঠ্য আকার: 180 অক্ষর |
সাবটাইটেল তালিকা | ঐচ্ছিক | 3টি পর্যন্ত সাবটাইটেল, প্রতিটি সাবটাইটেলের সাথে পাঠ্যের একটি লাইন। দ্রষ্টব্য: হয় বর্ণনা বা সাবটাইটেল তালিকা ব্যবহারকারীর কাছে প্রদর্শিত হবে, উভয়ই নয়। | বিনামূল্যে পাঠ্য প্রতিটি সাবটাইটেলের জন্য প্রস্তাবিত পাঠ্য আকার: সর্বাধিক 50 অক্ষর |
ব্যাজ | ঐচ্ছিক | প্রতিটি ব্যাজ হয় বিনামূল্যের পাঠ্য (সর্বোচ্চ 15 অক্ষর) বা ছোট ছবি। ইমেজ/ভিডিওর উপরে বিশেষ UX ট্রিটমেন্ট, যেমন ছবির ব্যাজ ওভারলে
| |
ব্যাজ - পাঠ্য | ঐচ্ছিক | ব্যাজের শিরোনাম দ্রষ্টব্য: ব্যাজের জন্য হয় পাঠ্য বা চিত্র প্রয়োজন | বিনামূল্যে পাঠ্য প্রস্তাবিত পাঠ্য আকার: সর্বোচ্চ 15 অক্ষর |
ব্যাজ - ছবি | ঐচ্ছিক | ছোট ইমেজ বিশেষ UX ট্রিটমেন্ট, যেমন ইমেজ/ভিডিও থাম্বনেইলে ব্যাজ ওভারলে। দ্রষ্টব্য: ব্যাজের জন্য হয় পাঠ্য বা চিত্র প্রয়োজন | নির্দেশিকা জন্য ইমেজ স্পেসিফিকেশন দেখুন. |
বিষয়বস্তু প্রকাশের সময় | ঐচ্ছিক | অ্যাপে কন্টেন্ট কখন প্রকাশিত/আপডেট করা হয়েছিল তার মিলিসেকেন্ডে এটি যুগের টাইমস্ট্যাম্প। | মিলিসেকেন্ডে যুগের টাইমস্ট্যাম্প |
শেষ বাগদানের সময় | শর্তসাপেক্ষে প্রয়োজন | মিলিসেকেন্ডে যুগের টাইমস্ট্যাম্প যখন ব্যবহারকারী শেষবার এই সত্তার সাথে ইন্টারঅ্যাক্ট করেছিল। দ্রষ্টব্য: যদি এই সত্তাটি ধারাবাহিকতা ক্লাস্টারের অংশ হয় তবে এই ক্ষেত্রটি প্রয়োজন৷ | মিলিসেকেন্ডে যুগের টাইমস্ট্যাম্প |
অগ্রগতি শতাংশ | শর্তসাপেক্ষে প্রয়োজন | ব্যবহারকারীর দ্বারা আজ পর্যন্ত সম্পূর্ণ সামগ্রীর শতকরা পরিমাণ। দ্রষ্টব্য: যদি এই সত্তাটি ধারাবাহিকতা ক্লাস্টারের অংশ হয় তবে এই ক্ষেত্রটি প্রয়োজন৷ | 0~100 এর মধ্যে একটি int মান। |
বিষয়বস্তু বিভাগ | ঐচ্ছিক | সত্তার বিষয়বস্তুর শ্রেণীবিভাগ বর্ণনা করুন। | Enums তালিকা নির্দেশিকা জন্য বিষয়বস্তু বিভাগ বিভাগ দেখুন. |
PersonEntity
বৈশিষ্ট্য | প্রয়োজনীয়তা | বর্ণনা | বিন্যাস |
---|---|---|---|
অ্যাকশন উরি | প্রয়োজন | প্রদানকারী অ্যাপে সত্তার সাথে গভীর লিঙ্ক। দ্রষ্টব্য: আপনি অ্যাট্রিবিউশনের জন্য গভীর লিঙ্ক ব্যবহার করতে পারেন। এই FAQ পড়ুন | উরি |
প্রোফাইল - নাম | প্রয়োজন | প্রোফাইল নাম বা আইডি বা হ্যান্ডেল, যেমন "John Doe", "@TeamPixel" ইত্যাদি। | স্ট্রিং প্রস্তাবিত পাঠ্য আকার: সর্বাধিক 50 অক্ষর |
প্রোফাইল - অবতার | প্রয়োজন | ব্যবহারকারীর প্রোফাইল ছবি বা অবতার ছবি। দ্রষ্টব্য: স্কোয়ার 1:1 চিত্র হতে হবে। | নির্দেশিকা জন্য ইমেজ স্পেসিফিকেশন দেখুন. |
প্রোফাইল - অতিরিক্ত পাঠ্য | ঐচ্ছিক | প্রোফাইল হ্যান্ডেল মত বিনামূল্যে পাঠ্য. | বিনামূল্যে পাঠ্য প্রস্তাবিত পাঠ্য আকার: সর্বোচ্চ 15 অক্ষর |
প্রোফাইল - অতিরিক্ত ছবি | ঐচ্ছিক | একটি যাচাইকৃত ব্যাজের মতো ছোট ছবি। | নির্দেশিকা জন্য ইমেজ স্পেসিফিকেশন দেখুন. |
হেডার ইমেজ | ঐচ্ছিক | একাধিক ছবি দেওয়া হলে আমরা শুধুমাত্র 1টি ছবি দেখাব। প্রস্তাবিত আকৃতির অনুপাত হল 16:9 দ্রষ্টব্য: ছবি অত্যন্ত সুপারিশ করা হয়. যদি একটি ব্যাজ প্রদান করা হয়, অনুগ্রহ করে ছবিটির উপরের এবং নীচে উভয় দিকে 24 ডিপিএস নিরাপদ স্থান নিশ্চিত করুন৷ | নির্দেশিকা জন্য ইমেজ স্পেসিফিকেশন দেখুন. |
জনপ্রিয়তা - গণনা | ঐচ্ছিক | অনুসরণকারীদের সংখ্যা বা জনপ্রিয়তার মান নির্দেশ করুন, উদাহরণস্বরূপ - "3.7 M"। দ্রষ্টব্য: গণনা এবং গণনা মান উভয় প্রদান করা হলে, গণনা ব্যবহার করা হবে | স্ট্রিং প্রস্তাবিত পাঠ্যের আকার: গণনা + লেবেল একত্রিত করার জন্য সর্বাধিক 20 অক্ষর |
জনপ্রিয়তা - গণনা মান | ঐচ্ছিক | অনুসরণকারীর সংখ্যা বা জনপ্রিয়তার মান। দ্রষ্টব্য: কাউন্ট ভ্যালু প্রদান করুন যদি আপনার অ্যাপ বিভিন্ন ডিসপ্লে আকারের জন্য একটি বড় সংখ্যাকে অপ্টিমাইজ করা উচিত তা নিয়ে যুক্তি পরিচালনা করতে না চায়। গণনা এবং গণনা মান উভয় প্রদান করা হলে, গণনা ব্যবহার করা হবে। | লম্বা |
জনপ্রিয়তা - লেবেল | ঐচ্ছিক | জনপ্রিয়তা লেবেল কি নির্দেশ করুন. যেমন- "লাইক"। | স্ট্রিং প্রস্তাবিত পাঠ্যের আকার: গণনার জন্য সর্বাধিক 20 অক্ষর + লেবেল মিলিত |
জনপ্রিয়তা - চাক্ষুষ | ঐচ্ছিক | মিথস্ক্রিয়া কি জন্য ইঙ্গিত. যেমন- ইমেজ দেখাচ্ছে লাইক আইকন, ইমোজিস। 1টির বেশি চিত্র প্রদান করতে পারে, যদিও সবগুলি সমস্ত ফর্ম কারণগুলিতে দেখানো নাও হতে পারে৷ দ্রষ্টব্য: স্কোয়ার 1:1 চিত্র হতে হবে | নির্দেশিকা জন্য ইমেজ স্পেসিফিকেশন দেখুন. |
রেটিং - সর্বোচ্চ মান | প্রয়োজন | রেটিং স্কেলের সর্বোচ্চ মান। প্রদান করা আবশ্যক যদি রেটিং বর্তমান মান প্রদান করা হয়. | সংখ্যা >= 0.0 |
রেটিং - বর্তমান মান | প্রয়োজন | রেটিং স্কেলের বর্তমান মান। প্রদান করা আবশ্যক যদি রেটিং সর্বোচ্চ মান প্রদান করা হয়. | সংখ্যা >= 0.0 |
রেটিং - গণনা | ঐচ্ছিক | সত্তার জন্য রেটিং গণনা. দ্রষ্টব্য: এই ক্ষেত্রটি প্রদান করুন যদি আপনার অ্যাপ ব্যবহারকারীদের কাছে গণনা কীভাবে প্রদর্শিত হয় তা নিয়ন্ত্রণ করে। একটি সংক্ষিপ্ত স্ট্রিং ব্যবহার করুন. উদাহরণস্বরূপ, যদি গণনা 1,000,000 হয়, তাহলে 1M-এর মতো একটি সংক্ষিপ্ত রূপ ব্যবহার করার কথা বিবেচনা করুন যাতে ছোট ডিসপ্লে আকারে গণনাটি কাটা না যায়। | স্ট্রিং |
রেটিং - গণনা মান | ঐচ্ছিক | সত্তার জন্য রেটিং গণনা. দ্রষ্টব্য: আপনি যদি প্রদর্শনের সংক্ষিপ্তকরণের যুক্তি নিজে না পরিচালনা করেন তবে এই ক্ষেত্রটি প্রদান করুন। গণনা এবং গণনা মান উভয়ই উপস্থিত থাকলে, ব্যবহারকারীদের কাছে গণনা প্রদর্শিত হয়। | লম্বা |
অবস্থান - দেশ | ঐচ্ছিক | যে দেশে ব্যক্তিটি অবস্থিত বা পরিবেশন করছে। | বিনামূল্যে পাঠ্য প্রস্তাবিত পাঠ্যের আকার: সর্বাধিক ~20 অক্ষর |
অবস্থান - শহর | ঐচ্ছিক | যে শহরে ব্যক্তিটি অবস্থিত বা পরিবেশন করছে। | বিনামূল্যে পাঠ্য প্রস্তাবিত পাঠ্যের আকার: সর্বাধিক ~20 অক্ষর |
অবস্থান - প্রদর্শন ঠিকানা | ঐচ্ছিক | ব্যক্তিটি যেখানে অবস্থান করছে বা পরিবেশন করছে সেটি ব্যবহারকারীর কাছে প্রদর্শিত হবে। | বিনামূল্যে পাঠ্য প্রস্তাবিত পাঠ্যের আকার: সর্বাধিক ~20 অক্ষর |
অবস্থান - রাস্তার ঠিকানা | ঐচ্ছিক | রাস্তার ঠিকানা (যদি প্রযোজ্য হয়) যেখানে ব্যক্তিটি অবস্থিত বা পরিবেশন করছে। | বিনামূল্যে পাঠ্য প্রস্তাবিত পাঠ্যের আকার: সর্বাধিক ~20 অক্ষর |
অবস্থান - রাজ্য | ঐচ্ছিক | রাষ্ট্র (যদি প্রযোজ্য হয়) যেখানে ব্যক্তি অবস্থিত বা পরিবেশন করছে। | বিনামূল্যে পাঠ্য প্রস্তাবিত পাঠ্যের আকার: সর্বাধিক ~20 অক্ষর |
অবস্থান - জিপ কোড | ঐচ্ছিক | জিপ কোড (যদি প্রযোজ্য হয়) যেখানে ব্যক্তিটি অবস্থিত বা পরিবেশন করছে। | বিনামূল্যে পাঠ্য প্রস্তাবিত পাঠ্যের আকার: সর্বাধিক ~20 অক্ষর |
অবস্থান - পাড়া | ঐচ্ছিক | আশেপাশের (যদি প্রযোজ্য হয়) যেখানে ব্যক্তিটি অবস্থিত বা পরিবেশন করছে। | বিনামূল্যে পাঠ্য প্রস্তাবিত পাঠ্যের আকার: সর্বাধিক ~20 অক্ষর |
ব্যাজ | ঐচ্ছিক | প্রতিটি ব্যাজ হয় বিনামূল্যের পাঠ্য (সর্বোচ্চ 15 অক্ষর) বা ছোট ছবি। | |
ব্যাজ - পাঠ্য | ঐচ্ছিক | ব্যাজের শিরোনাম দ্রষ্টব্য: ব্যাজের জন্য হয় পাঠ্য বা চিত্র প্রয়োজন | বিনামূল্যে পাঠ্য প্রস্তাবিত পাঠ্য আকার: সর্বোচ্চ 15 অক্ষর |
ব্যাজ - ছবি | ঐচ্ছিক | ছোট ইমেজ বিশেষ UX ট্রিটমেন্ট, যেমন ইমেজ/ভিডিও থাম্বনেইলে ব্যাজ ওভারলে। দ্রষ্টব্য: ব্যাজের জন্য হয় পাঠ্য বা চিত্র প্রয়োজন | নির্দেশিকা জন্য ইমেজ স্পেসিফিকেশন দেখুন. |
বর্ণনা | ঐচ্ছিক | সত্তা বর্ণনা করার জন্য পাঠ্যের একটি একক অনুচ্ছেদ। দ্রষ্টব্য: হয় বর্ণনা বা সাবটাইটেল তালিকা ব্যবহারকারীর কাছে প্রদর্শিত হবে, উভয়ই নয়। | বিনামূল্যে পাঠ্য প্রস্তাবিত পাঠ্য আকার: 180 অক্ষর |
সাবটাইটেল তালিকা | ঐচ্ছিক | 3টি পর্যন্ত সাবটাইটেল, প্রতিটি সাবটাইটেলের সাথে পাঠ্যের একটি লাইন। দ্রষ্টব্য: হয় বর্ণনা বা সাবটাইটেল তালিকা ব্যবহারকারীর কাছে প্রদর্শিত হবে, উভয়ই নয়। | বিনামূল্যে পাঠ্য প্রতিটি সাবটাইটেলের জন্য প্রস্তাবিত পাঠ্য আকার: সর্বাধিক 50 অক্ষর |
বিষয়বস্তু বিভাগ | ঐচ্ছিক | সত্তার বিষয়বস্তুর শ্রেণীবিভাগ বর্ণনা করুন। | যোগ্য Enums তালিকা
নির্দেশিকা জন্য বিষয়বস্তু বিভাগ বিভাগ দেখুন. |
EventEntity
বৈশিষ্ট্য | প্রয়োজনীয়তা | বর্ণনা | বিন্যাস |
---|---|---|---|
অ্যাকশন উরি | প্রয়োজন | প্রদানকারী অ্যাপে সত্তার সাথে গভীর লিঙ্ক। দ্রষ্টব্য: আপনি অ্যাট্রিবিউশনের জন্য গভীর লিঙ্ক ব্যবহার করতে পারেন। এই FAQ পড়ুন | উরি |
শিরোনাম | প্রয়োজন | সত্তার শিরোনাম। | স্ট্রিং প্রস্তাবিত পাঠ্য আকার: সর্বাধিক 50 অক্ষর |
শুরুর সময় | প্রয়োজন | ইভেন্ট শুরু হওয়ার প্রত্যাশিত যুগের টাইমস্ট্যাম্প৷ দ্রষ্টব্য: এটি মিলিসেকেন্ডে উপস্থাপন করা হবে। | মিলিসেকেন্ডে যুগের টাইমস্ট্যাম্প |
ইভেন্ট মোড | প্রয়োজন | ইভেন্টটি ভার্চুয়াল, ব্যক্তিগত বা উভয়ই হবে কিনা তা নির্দেশ করার জন্য একটি ক্ষেত্র৷ | Enum: VIRTUAL, IN_PERSON, বা HYBRID |
পোস্টার ছবি | প্রয়োজন | একাধিক ছবি দেওয়া হলে আমরা শুধুমাত্র 1টি ছবি দেখাব। প্রস্তাবিত আকৃতির অনুপাত হল 16:9 দ্রষ্টব্য: ছবি অত্যন্ত সুপারিশ করা হয়. যদি একটি ব্যাজ প্রদান করা হয়, অনুগ্রহ করে ছবিটির উপরের এবং নীচে উভয় দিকে 24 ডিপিএস নিরাপদ স্থান নিশ্চিত করুন৷ | নির্দেশিকা জন্য ইমেজ স্পেসিফিকেশন দেখুন. |
অবস্থান - দেশ | শর্তসাপেক্ষে প্রয়োজন | যে দেশে ঘটনা ঘটছে। দ্রষ্টব্য: IN_PERSON বা HYBRID ইভেন্টগুলির জন্য এটি প্রয়োজনীয়৷ | বিনামূল্যে পাঠ্য প্রস্তাবিত পাঠ্যের আকার: সর্বাধিক ~20 অক্ষর |
অবস্থান - শহর | শর্তসাপেক্ষে প্রয়োজন | যে শহরে ঘটনাটি ঘটছে। দ্রষ্টব্য: IN_PERSON বা HYBRID ইভেন্টগুলির জন্য এটি প্রয়োজনীয়৷ | বিনামূল্যে পাঠ্য প্রস্তাবিত পাঠ্যের আকার: সর্বাধিক ~20 অক্ষর |
অবস্থান - প্রদর্শন ঠিকানা | শর্তসাপেক্ষে প্রয়োজন | ঠিকানা বা স্থানের নাম যেখানে ইভেন্টটি সংঘটিত হবে যা ব্যবহারকারীকে প্রদর্শন করা উচিত। দ্রষ্টব্য: IN_PERSON বা HYBRID ইভেন্টগুলির জন্য এটি প্রয়োজনীয়৷ | বিনামূল্যে পাঠ্য প্রস্তাবিত পাঠ্যের আকার: সর্বাধিক ~20 অক্ষর |
অবস্থান - রাস্তার ঠিকানা | ঐচ্ছিক | যে স্থানে ইভেন্টটি হোস্ট করা হচ্ছে তার রাস্তার ঠিকানা (যদি প্রযোজ্য হয়)। | বিনামূল্যে পাঠ্য প্রস্তাবিত পাঠ্যের আকার: সর্বাধিক ~20 অক্ষর |
অবস্থান - রাজ্য | ঐচ্ছিক | রাজ্য বা প্রদেশ (যদি প্রযোজ্য হয়) যেখানে ইভেন্টটি হোস্ট করা হচ্ছে। | বিনামূল্যে পাঠ্য প্রস্তাবিত পাঠ্যের আকার: সর্বাধিক ~20 অক্ষর |
অবস্থান - জিপ কোড | ঐচ্ছিক | যে স্থানে ইভেন্টটি হোস্ট করা হচ্ছে তার জিপ কোড (প্রযোজ্য হলে)। | বিনামূল্যে পাঠ্য প্রস্তাবিত পাঠ্যের আকার: সর্বাধিক ~20 অক্ষর |
অবস্থান - পাড়া | ঐচ্ছিক | আশেপাশের (যদি প্রযোজ্য হয়) যেখানে ইভেন্টটি হোস্ট করা হচ্ছে। | বিনামূল্যে পাঠ্য প্রস্তাবিত পাঠ্যের আকার: সর্বাধিক ~20 অক্ষর |
শেষ সময় | ঐচ্ছিক | ইভেন্ট শেষ হওয়ার প্রত্যাশিত যুগের টাইমস্ট্যাম্প৷ দ্রষ্টব্য: এটি মিলিসেকেন্ডে উপস্থাপন করা হবে। | মিলিসেকেন্ডে যুগের টাইমস্ট্যাম্প |
বর্ণনা | ঐচ্ছিক | সত্তা বর্ণনা করার জন্য পাঠ্যের একটি একক অনুচ্ছেদ। দ্রষ্টব্য: হয় বর্ণনা বা সাবটাইটেল তালিকা ব্যবহারকারীর কাছে প্রদর্শিত হবে, উভয়ই নয়। | বিনামূল্যে পাঠ্য প্রস্তাবিত পাঠ্য আকার: 180 অক্ষর |
সাবটাইটেল তালিকা | ঐচ্ছিক | 3টি পর্যন্ত সাবটাইটেল, প্রতিটি সাবটাইটেলের সাথে পাঠ্যের একটি লাইন। দ্রষ্টব্য: হয় বর্ণনা বা সাবটাইটেল তালিকা ব্যবহারকারীর কাছে প্রদর্শিত হবে, উভয়ই নয়। | বিনামূল্যে পাঠ্য প্রতিটি সাবটাইটেলের জন্য প্রস্তাবিত পাঠ্য আকার: সর্বাধিক 50 অক্ষর |
ব্যাজ | ঐচ্ছিক | প্রতিটি ব্যাজ হয় বিনামূল্যের পাঠ্য (সর্বোচ্চ 15 অক্ষর) বা ছোট ছবি। | |
ব্যাজ - পাঠ্য | ঐচ্ছিক | ব্যাজের শিরোনাম দ্রষ্টব্য: ব্যাজের জন্য হয় পাঠ্য বা চিত্র প্রয়োজন | বিনামূল্যে পাঠ্য প্রস্তাবিত পাঠ্য আকার: সর্বোচ্চ 15 অক্ষর |
ব্যাজ - ছবি | ঐচ্ছিক | ছোট ইমেজ বিশেষ UX ট্রিটমেন্ট, যেমন ইমেজ/ভিডিও থাম্বনেইলে ব্যাজ ওভারলে। দ্রষ্টব্য: ব্যাজের জন্য হয় পাঠ্য বা চিত্র প্রয়োজন | নির্দেশিকা জন্য ইমেজ স্পেসিফিকেশন দেখুন. |
মূল্য - বর্তমান মূল্য | শর্তসাপেক্ষে প্রয়োজন | ইভেন্টের জন্য টিকিট/পাসের বর্তমান মূল্য। স্ট্রাইকথ্রু মূল্য প্রদান করা হলে অবশ্যই প্রদান করতে হবে। | বিনামূল্যে পাঠ্য |
মূল্য - StrikethroughPrice | ঐচ্ছিক | ইভেন্টের জন্য টিকিট/পাসের আসল মূল্য। | বিনামূল্যে পাঠ্য |
মূল্য কলআউট | ঐচ্ছিক | একটি প্রোমো, ইভেন্ট, সদস্য ডিসকাউন্ট, যদি উপলব্ধ থাকে তবে মূল্য কলআউট। | বিনামূল্যে পাঠ্য প্রস্তাবিত পাঠ্যের আকার: 45 অক্ষরের নিচে (অত্যধিক দীর্ঘ পাঠ্য উপবৃত্ত দেখাতে পারে) |
বিষয়বস্তু বিভাগ | ঐচ্ছিক | সত্তার বিষয়বস্তুর শ্রেণীবিভাগ বর্ণনা করুন। | যোগ্য Enums তালিকা
নির্দেশিকা জন্য বিষয়বস্তু বিভাগ বিভাগ দেখুন. |
EventReservationEntity
বৈশিষ্ট্য | প্রয়োজনীয়তা | বর্ণনা | বিন্যাস |
---|---|---|---|
অ্যাকশন উরি | প্রয়োজন | প্রদানকারী অ্যাপে সত্তার সাথে গভীর লিঙ্ক। দ্রষ্টব্য: আপনি অ্যাট্রিবিউশনের জন্য গভীর লিঙ্ক ব্যবহার করতে পারেন। এই FAQ পড়ুন | উরি |
শিরোনাম | প্রয়োজন | সত্তার শিরোনাম। | স্ট্রিং প্রস্তাবিত পাঠ্য আকার: সর্বাধিক 50 অক্ষর |
শুরুর সময় | প্রয়োজন | ইভেন্ট শুরু হওয়ার প্রত্যাশিত যুগের টাইমস্ট্যাম্প৷ দ্রষ্টব্য: এটি মিলিসেকেন্ডে উপস্থাপন করা হবে। | মিলিসেকেন্ডে যুগের টাইমস্ট্যাম্প |
ইভেন্ট মোড | প্রয়োজন | ইভেন্টটি ভার্চুয়াল, ব্যক্তিগত বা উভয়ই হবে কিনা তা নির্দেশ করার জন্য একটি ক্ষেত্র৷ | Enum: VIRTUAL, IN_PERSON, বা HYBRID |
অবস্থান - দেশ | শর্তসাপেক্ষে প্রয়োজন | যে দেশে ঘটনা ঘটছে। দ্রষ্টব্য: IN_PERSON বা HYBRID ইভেন্টগুলির জন্য এটি প্রয়োজনীয়৷ | বিনামূল্যে পাঠ্য প্রস্তাবিত পাঠ্যের আকার: সর্বাধিক ~20 অক্ষর |
অবস্থান - শহর | শর্তসাপেক্ষে প্রয়োজন | যে শহরে ঘটনাটি ঘটছে। দ্রষ্টব্য: IN_PERSON বা HYBRID ইভেন্টগুলির জন্য এটি প্রয়োজনীয়৷ | বিনামূল্যে পাঠ্য প্রস্তাবিত পাঠ্যের আকার: সর্বাধিক ~20 অক্ষর |
অবস্থান - প্রদর্শন ঠিকানা | শর্তসাপেক্ষে প্রয়োজন | ঠিকানা বা স্থানের নাম যেখানে ইভেন্টটি সংঘটিত হবে যা ব্যবহারকারীকে প্রদর্শন করা উচিত। দ্রষ্টব্য: IN_PERSON বা HYBRID ইভেন্টগুলির জন্য এটি প্রয়োজনীয়৷ | বিনামূল্যে পাঠ্য প্রস্তাবিত পাঠ্যের আকার: সর্বাধিক ~20 অক্ষর |
অবস্থান - রাস্তার ঠিকানা | ঐচ্ছিক | যে স্থানে ইভেন্টটি হোস্ট করা হচ্ছে তার রাস্তার ঠিকানা (যদি প্রযোজ্য হয়)। | বিনামূল্যে পাঠ্য প্রস্তাবিত পাঠ্যের আকার: সর্বাধিক ~20 অক্ষর |
অবস্থান - রাজ্য | ঐচ্ছিক | রাজ্য বা প্রদেশ (যদি প্রযোজ্য হয়) যেখানে ইভেন্টটি হোস্ট করা হচ্ছে। | বিনামূল্যে পাঠ্য প্রস্তাবিত পাঠ্যের আকার: সর্বাধিক ~20 অক্ষর |
অবস্থান - জিপ কোড | ঐচ্ছিক | যে স্থানে ইভেন্টটি হোস্ট করা হচ্ছে তার জিপ কোড (প্রযোজ্য হলে)। | বিনামূল্যে পাঠ্য প্রস্তাবিত পাঠ্যের আকার: সর্বাধিক ~20 অক্ষর |
অবস্থান - পাড়া | ঐচ্ছিক | আশেপাশের (যদি প্রযোজ্য হয়) যেখানে ইভেন্টটি হোস্ট করা হচ্ছে। | বিনামূল্যে পাঠ্য প্রস্তাবিত পাঠ্যের আকার: সর্বাধিক ~20 অক্ষর |
পোস্টার ছবি | ঐচ্ছিক | একাধিক ছবি দেওয়া হলে আমরা শুধুমাত্র 1টি ছবি দেখাব। প্রস্তাবিত আকৃতির অনুপাত হল 16:9 দ্রষ্টব্য: ছবি অত্যন্ত সুপারিশ করা হয়. যদি একটি ব্যাজ প্রদান করা হয়, অনুগ্রহ করে ছবিটির উপরের এবং নীচে উভয় দিকে 24 ডিপিএস নিরাপদ স্থান নিশ্চিত করুন৷ | নির্দেশিকা জন্য ইমেজ স্পেসিফিকেশন দেখুন. |
শেষ সময় | ঐচ্ছিক | ইভেন্ট শেষ হওয়ার প্রত্যাশিত যুগের টাইমস্ট্যাম্প৷ দ্রষ্টব্য: এটি মিলিসেকেন্ডে উপস্থাপন করা হবে। | মিলিসেকেন্ডে যুগের টাইমস্ট্যাম্প |
পরিষেবা প্রদানকারী - নাম | ঐচ্ছিক | পরিষেবা প্রদানকারীর নাম। দ্রষ্টব্য: পরিষেবা প্রদানকারীর জন্য পাঠ্য বা ছবি প্রয়োজন। | বিনামূল্যে পাঠ্য. উদাহরণস্বরূপ, ইভেন্ট সংগঠক/ট্যুরের নাম |
পরিষেবা প্রদানকারী - চিত্র | ঐচ্ছিক | পরিষেবা প্রদানকারীর লোগো/ছবি। দ্রষ্টব্য: পরিষেবা প্রদানকারীর জন্য পাঠ্য বা ছবি প্রয়োজন। | নির্দেশিকা জন্য ইমেজ স্পেসিফিকেশন দেখুন. |
বর্ণনা | ঐচ্ছিক | সত্তা বর্ণনা করার জন্য পাঠ্যের একটি একক অনুচ্ছেদ। দ্রষ্টব্য: হয় বর্ণনা বা সাবটাইটেল তালিকা ব্যবহারকারীর কাছে প্রদর্শিত হবে, উভয়ই নয়। | বিনামূল্যে পাঠ্য প্রস্তাবিত পাঠ্য আকার: 180 অক্ষর |
সাবটাইটেল তালিকা | ঐচ্ছিক | 3টি পর্যন্ত সাবটাইটেল, প্রতিটি সাবটাইটেলের সাথে পাঠ্যের একটি লাইন। দ্রষ্টব্য: হয় বর্ণনা বা সাবটাইটেল তালিকা ব্যবহারকারীর কাছে প্রদর্শিত হবে, উভয়ই নয়। | বিনামূল্যে পাঠ্য প্রতিটি সাবটাইটেলের জন্য প্রস্তাবিত পাঠ্য আকার: সর্বাধিক 50 অক্ষর |
ব্যাজ | ঐচ্ছিক | প্রতিটি ব্যাজ হয় বিনামূল্যের পাঠ্য (সর্বোচ্চ 15 অক্ষর) বা ছোট ছবি। | |
ব্যাজ - পাঠ্য | ঐচ্ছিক | ব্যাজের শিরোনাম দ্রষ্টব্য: ব্যাজের জন্য হয় পাঠ্য বা চিত্র প্রয়োজন | বিনামূল্যে পাঠ্য প্রস্তাবিত পাঠ্য আকার: সর্বোচ্চ 15 অক্ষর |
ব্যাজ - ছবি | ঐচ্ছিক | ছোট ইমেজ বিশেষ UX ট্রিটমেন্ট, যেমন ইমেজ/ভিডিও থাম্বনেইলে ব্যাজ ওভারলে। দ্রষ্টব্য: ব্যাজের জন্য হয় পাঠ্য বা চিত্র প্রয়োজন | নির্দেশিকা জন্য ইমেজ স্পেসিফিকেশন দেখুন. |
রিজার্ভেশন আইডি | ঐচ্ছিক | ইভেন্ট রিজার্ভেশন জন্য সংরক্ষণ আইডি. | বিনামূল্যে পাঠ্য |
মূল্য - বর্তমান মূল্য | শর্তসাপেক্ষে প্রয়োজন | ইভেন্টের জন্য টিকিট/পাসের বর্তমান মূল্য। স্ট্রাইকথ্রু মূল্য প্রদান করা হলে অবশ্যই প্রদান করতে হবে। | বিনামূল্যে পাঠ্য |
মূল্য - StrikethroughPrice | ঐচ্ছিক | ইভেন্টের জন্য টিকিট/পাসের আসল মূল্য। | বিনামূল্যে পাঠ্য |
মূল্য কলআউট | ঐচ্ছিক | একটি প্রোমো, ইভেন্ট, সদস্য ডিসকাউন্ট, যদি উপলব্ধ থাকে তবে মূল্য কলআউট। | বিনামূল্যে পাঠ্য প্রস্তাবিত পাঠ্যের আকার: 45 অক্ষরের নিচে (অত্যধিক দীর্ঘ পাঠ্য উপবৃত্ত দেখাতে পারে) |
রেটিং - সর্বোচ্চ মান | ঐচ্ছিক | রেটিং স্কেলের সর্বোচ্চ মান। প্রদান করা আবশ্যক যদি রেটিং বর্তমান মান প্রদান করা হয়. | সংখ্যা >= 0.0 |
রেটিং - বর্তমান মান | ঐচ্ছিক | রেটিং স্কেলের বর্তমান মান। প্রদান করা আবশ্যক যদি রেটিং সর্বোচ্চ মান প্রদান করা হয়. | সংখ্যা >= 0.0 |
রেটিং - গণনা | ঐচ্ছিক | ইভেন্টের জন্য রেটিং গণনা. দ্রষ্টব্য: আপনার অ্যাপ ব্যবহারকারীদের কাছে এটি কীভাবে প্রদর্শিত হবে তা নিয়ন্ত্রণ করতে চাইলে এই ক্ষেত্রটি প্রদান করুন। ব্যবহারকারীর কাছে প্রদর্শিত হতে পারে এমন সংক্ষিপ্ত স্ট্রিং প্রদান করুন। উদাহরণস্বরূপ, যদি গণনা 1,000,000 হয়, তাহলে 1M-এর মতো সংক্ষিপ্ত রূপগুলি ব্যবহার করার কথা বিবেচনা করুন, যাতে ছোট ডিসপ্লে আকারে এটি কাটা না যায়৷ | স্ট্রিং |
রেটিং - গণনা মান | ঐচ্ছিক | ইভেন্টের জন্য রেটিং গণনা. দ্রষ্টব্য: আপনি যদি প্রদর্শন সংক্ষিপ্তকরণ যুক্তি নিজে পরিচালনা করতে না চান তবে এই ক্ষেত্রটি প্রদান করুন৷ গণনা এবং গণনা মান উভয়ই উপস্থিত থাকলে, আমরা ব্যবহারকারীদের কাছে প্রদর্শন করতে গণনা ব্যবহার করব | লম্বা |
বিষয়বস্তু বিভাগ | ঐচ্ছিক | সত্তার বিষয়বস্তুর শ্রেণীবিভাগ বর্ণনা করুন। | যোগ্য Enums তালিকা
নির্দেশিকা জন্য বিষয়বস্তু বিভাগ বিভাগ দেখুন. |
ইমেজ স্পেসিফিকেশন
ইমেজ সম্পদের জন্য প্রয়োজনীয় স্পেসিফিকেশন এই টেবিলে তালিকাভুক্ত করা হয়েছে:
আকৃতির অনুপাত | ন্যূনতম পিক্সেল | প্রস্তাবিত পিক্সেল |
---|---|---|
বর্গক্ষেত্র (1x1) পছন্দের | 300x300 | 1200x1200 |
ল্যান্ডস্কেপ (1.91x1) | 600x314 | 1200x628 |
প্রতিকৃতি (4x5) | 480x600 | 960x1200 |
ছবিগুলিকে সর্বজনীন CDN-এ হোস্ট করতে হবে যাতে Google সেগুলি অ্যাক্সেস করতে পারে৷
ফাইল ফরম্যাট
PNG, JPG, স্ট্যাটিক GIF, WebP
সর্বোচ্চ ফাইলের আকার
5120 KB
অতিরিক্ত সুপারিশ
- ছবি নিরাপদ এলাকা: ছবির 80% কেন্দ্রে আপনার গুরুত্বপূর্ণ বিষয়বস্তু রাখুন।
- একটি স্বচ্ছ ব্যাকগ্রাউন্ড ব্যবহার করুন যাতে ছবিটি ডার্ক এবং লাইট থিম সেটিংসে সঠিকভাবে প্রদর্শিত হতে পারে।
বিষয়বস্তু বিভাগ
বিষয়বস্তু বিভাগ অ্যাপগুলিকে একাধিক বিভাগের বিষয়বস্তু প্রকাশ করতে দেয়। এটি কিছু পূর্বনির্ধারিত বিভাগগুলির সাথে বিষয়বস্তুকে ম্যাপ করে যেমন:
-
TYPE_EDUCATION
-
TYPE_SPORTS
-
TYPE_MOVIES_AND_TV_SHOWS
-
TYPE_BOOKS
-
TYPE_AUDIOBOOKS
-
TYPE_MUSIC
-
TYPE_DIGITAL_GAMES
-
TYPE_TRAVEL_AND_LOCAL
-
TYPE_HOME_AND_AUTO
-
TYPE_BUSINESS
-
TYPE_NEWS
-
TYPE_FOOD_AND_DRINK
-
TYPE_SHOPPING
-
TYPE_HEALTH_AND_FITENESS
-
TYPE_MEDICAL
-
TYPE_PARENTING
-
TYPE_DATING
ছবিগুলিকে সর্বজনীন CDN-এ হোস্ট করতে হবে যাতে Google সেগুলি অ্যাক্সেস করতে পারে৷
বিষয়বস্তু বিভাগ ব্যবহার করার জন্য নির্দেশিকা
- ArticleEntity এবং GenericFeaturedEntity-এর মতো কিছু সংস্থা যেকোনও বিষয়বস্তু বিভাগ ব্যবহার করার যোগ্য। EventEntity , EventReservationEntity , PersonEntity এর মতো অন্যান্য সত্ত্বাগুলির জন্য, শুধুমাত্র এই বিভাগগুলির একটি উপসেট যোগ্য৷ তালিকাটি পূরণ করার আগে একটি সত্তা টাইপের জন্য যোগ্য বিভাগগুলির তালিকা পরীক্ষা করুন৷
জেনেরিক এন্টিটি এবং কন্টেন্ট ক্যাটেগরির সংমিশ্রণে কিছু বিষয়বস্তুর বিভাগের জন্য নির্দিষ্ট সত্তার ধরন ব্যবহার করুন:
- TYPE_MOVIES_AND_TV_SHOWS - জেনেরিক এন্টিটি ব্যবহার করার আগে ওয়াচ ইন্টিগ্রেশন গাইড থেকে সত্তাগুলি দেখুন৷
- TYPE_BOOKS - জেনেরিক এন্টিটি ব্যবহার করার আগে EbookEntity দেখুন।
- TYPE_AUDIOBOOKS - জেনেরিক এন্টিটি ব্যবহার করার আগে AudiobookEntity দেখুন।
- TYPE_SHOPPING - জেনেরিক সত্তা ব্যবহার করার আগে ShoppingEntity চেক আউট করুন।
- TYPE_FOOD_AND_DRINK - জেনেরিক এন্টিটি ব্যবহার করার আগে ফুড ইন্টিগ্রেশন গাইড থেকে এন্টিটি চেক আউট করুন।
ContentCategory ক্ষেত্রটি ঐচ্ছিক এবং যদি বিষয়বস্তুটি পূর্বে উল্লিখিত কোনো বিভাগের অন্তর্গত না হয় তাহলে খালি রাখা উচিত।
একাধিক বিষয়বস্তুর বিভাগ প্রদান করা হলে, তালিকায় প্রথমে রাখা সবচেয়ে প্রাসঙ্গিক বিষয়বস্তু বিভাগ সহ বিষয়বস্তুর প্রাসঙ্গিকতার ক্রমে সেগুলি প্রদান করুন।
ধাপ 2: ক্লাস্টার ডেটা প্রদান করুন
বিষয়বস্তু প্রকাশের কাজটি ব্যাকগ্রাউন্ডে কার্যকর করা বাঞ্ছনীয় (উদাহরণস্বরূপ, WorkManager ব্যবহার করে) এবং নিয়মিতভাবে বা একটি ইভেন্ট ভিত্তিতে নির্ধারিত (উদাহরণস্বরূপ, ব্যবহারকারী যখনই অ্যাপটি খোলে বা যখন ব্যবহারকারী তাদের কার্টে কিছু যোগ করেন)।
AppEngagePublishClient
ক্লাস্টার প্রকাশের জন্য দায়ী।
ক্লায়েন্টে ক্লাস্টার প্রকাশ করার জন্য নিম্নলিখিত API আছে:
-
isServiceAvailable
-
publishRecommendationClusters
-
publishFeaturedCluster
-
publishContinuationCluster
-
publishUserAccountManagementRequest
-
updatePublishStatus
-
deleteRecommendationsClusters
-
deleteFeaturedCluster
-
deleteContinuationCluster
-
deleteUserManagementCluster
-
deleteClusters
isServiceAvailable
পরিষেবাটি ইন্টিগ্রেশনের জন্য উপলব্ধ কিনা এবং ডিভাইসে সামগ্রী উপস্থাপন করা যেতে পারে কিনা তা পরীক্ষা করতে এই API ব্যবহার করা হয়।
কোটলিন
client.isServiceAvailable.addOnCompleteListener { task ->
if (task.isSuccessful) {
// Handle IPC call success
if(task.result) {
// Service is available on the device, proceed with content publish
// calls.
} else {
// Service is not available, no further action is needed.
}
} else {
// The IPC call itself fails, proceed with error handling logic here,
// such as retry.
}
}
জাভা
client.isServiceAvailable().addOnCompleteListener(task - > {
if (task.isSuccessful()) {
// Handle success
if(task.getResult()) {
// Service is available on the device, proceed with content publish
// calls.
} else {
// Service is not available, no further action is needed.
}
} else {
// The IPC call itself fails, proceed with error handling logic here,
// such as retry.
}
});
publishRecommendationClusters
RecommendationCluster
অবজেক্টের একটি তালিকা প্রকাশ করতে এই API ব্যবহার করা হয়।
কোটলিন
client.publishRecommendationClusters(
PublishRecommendationClustersRequest.Builder()
.addRecommendationCluster(
RecommendationCluster.Builder()
.addEntity(entity1)
.addEntity(entity2)
.setTitle("Top Picks For You")
.build()
)
.build()
)
জাভা
client.publishRecommendationClusters(
new PublishRecommendationClustersRequest.Builder()
.addRecommendationCluster(
new RecommendationCluster.Builder()
.addEntity(entity1)
.addEntity(entity2)
.setTitle("Top Picks For You")
.build())
.build());
যখন পরিষেবাটি অনুরোধটি গ্রহণ করে, নিম্নলিখিত ক্রিয়াগুলি একটি লেনদেনের মধ্যে সঞ্চালিত হয়:
- বিকাশকারী অংশীদার থেকে বিদ্যমান
RecommendationCluster
ডেটা সরানো হয়েছে। - অনুরোধের ডেটা পার্স করা হয় এবং আপডেট করা সুপারিশ ক্লাস্টারে সংরক্ষণ করা হয়।
একটি ত্রুটির ক্ষেত্রে, সম্পূর্ণ অনুরোধ প্রত্যাখ্যান করা হয় এবং বিদ্যমান অবস্থা বজায় রাখা হয়।
publishFeaturedCluster
এই APIটি FeaturedCluster
অবজেক্টের একটি তালিকা প্রকাশ করতে ব্যবহৃত হয়।
কোটলিন
client.publishFeaturedCluster(
PublishFeaturedClusterRequest.Builder()
.setFeaturedCluster(
FeaturedCluster.Builder()
.addEntity(entity1)
.addEntity(entity2)
.build())
.build())
জাভা
client.publishFeaturedCluster(
new PublishFeaturedClustersRequest.Builder()
.addFeaturedCluster(
new FeaturedCluster.Builder()
.addEntity(entity1)
.addEntity(entity2)
.build())
.build());
যখন পরিষেবাটি অনুরোধটি গ্রহণ করে, নিম্নলিখিত ক্রিয়াগুলি একটি লেনদেনের মধ্যে সঞ্চালিত হয়:
- বিকাশকারী অংশীদার থেকে বিদ্যমান
FeaturedCluster
ডেটা সরানো হয়েছে৷ - অনুরোধের ডেটা পার্স করা হয় এবং আপডেট করা বৈশিষ্ট্যযুক্ত ক্লাস্টারে সংরক্ষণ করা হয়।
একটি ত্রুটির ক্ষেত্রে, সম্পূর্ণ অনুরোধ প্রত্যাখ্যান করা হয় এবং বিদ্যমান অবস্থা বজায় রাখা হয়।
publishContinuationCluster
এই API একটি ContinuationCluster
অবজেক্ট প্রকাশ করতে ব্যবহৃত হয়।
কোটলিন
client.publishContinuationCluster(
PublishContinuationClusterRequest.Builder()
.setContinuationCluster(
ContinuationCluster.Builder()
.addEntity(entity1)
.addEntity(entity2)
.build())
.build())
জাভা
client.publishContinuationCluster(
new PublishContinuationClusterRequest.Builder()
.setContinuationCluster(
new ContinuationCluster.Builder()
.addEntity(entity1)
.addEntity(entity2)
.build())
.build());
যখন পরিষেবাটি অনুরোধটি গ্রহণ করে, নিম্নলিখিত ক্রিয়াগুলি একটি লেনদেনের মধ্যে সঞ্চালিত হয়:
- বিকাশকারী অংশীদার থেকে বিদ্যমান
ContinuationCluster
ডেটা সরানো হয়েছে। - অনুরোধ থেকে ডেটা পার্স করা হয় এবং আপডেট করা কন্টিনিউয়েশন ক্লাস্টারে সংরক্ষণ করা হয়।
একটি ত্রুটির ক্ষেত্রে, সম্পূর্ণ অনুরোধ প্রত্যাখ্যান করা হয় এবং বিদ্যমান অবস্থা বজায় রাখা হয়।
publishUserAccountManagementRequest
এই API একটি সাইন ইন কার্ড প্রকাশ করতে ব্যবহৃত হয়। সাইন ইন অ্যাকশন ব্যবহারকারীদের অ্যাপের সাইন ইন পৃষ্ঠায় নির্দেশ করে যাতে অ্যাপটি সামগ্রী প্রকাশ করতে পারে (বা আরও ব্যক্তিগতকৃত সামগ্রী সরবরাহ করতে পারে)
নিম্নলিখিত মেটাডেটা সাইন ইন কার্ডের অংশ -
বৈশিষ্ট্য | প্রয়োজনীয়তা | বর্ণনা |
---|---|---|
অ্যাকশন উরি | প্রয়োজন | ডিপলিংক টু অ্যাকশন (অর্থাৎ অ্যাপ সাইন ইন পৃষ্ঠায় নেভিগেট করে) |
ছবি | ঐচ্ছিক - প্রদান করা না হলে, শিরোনাম প্রদান করা আবশ্যক | কার্ডে দেখানো ছবি 1264x712 রেজোলিউশন সহ 16x9 আকৃতির অনুপাতের ছবি |
শিরোনাম | ঐচ্ছিক - প্রদান না করা হলে, ছবি প্রদান করতে হবে | কার্ডে শিরোনাম |
অ্যাকশন টেক্সট | ঐচ্ছিক | CTA-তে টেক্সট দেখানো হয়েছে (যেমন সাইন ইন) |
সাবটাইটেল | ঐচ্ছিক | কার্ডে ঐচ্ছিক সাবটাইটেল |
কোটলিন
var SIGN_IN_CARD_ENTITY =
SignInCardEntity.Builder()
.addPosterImage(
Image.Builder()
.setImageUri(Uri.parse("http://www.x.com/image.png"))
.setImageHeightInPixel(500)
.setImageWidthInPixel(500)
.build())
.setActionText("Sign In")
.setActionUri(Uri.parse("http://xx.com/signin"))
.build()
client.publishUserAccountManagementRequest(
PublishUserAccountManagementRequest.Builder()
.setSignInCardEntity(SIGN_IN_CARD_ENTITY)
.build());
জাভা
SignInCardEntity SIGN_IN_CARD_ENTITY =
new SignInCardEntity.Builder()
.addPosterImage(
new Image.Builder()
.setImageUri(Uri.parse("http://www.x.com/image.png"))
.setImageHeightInPixel(500)
.setImageWidthInPixel(500)
.build())
.setActionText("Sign In")
.setActionUri(Uri.parse("http://xx.com/signin"))
.build();
client.publishUserAccountManagementRequest(
new PublishUserAccountManagementRequest.Builder()
.setSignInCardEntity(SIGN_IN_CARD_ENTITY)
.build());
যখন পরিষেবাটি অনুরোধটি গ্রহণ করে, নিম্নলিখিত ক্রিয়াগুলি একটি লেনদেনের মধ্যে সঞ্চালিত হয়:
- বিকাশকারী অংশীদার থেকে বিদ্যমান
UserAccountManagementCluster
ডেটা সরানো হয়েছে। - অনুরোধের ডেটা পার্স করা হয়েছে এবং আপডেট হওয়া UserAccountManagementCluster ক্লাস্টারে সংরক্ষণ করা হয়েছে।
একটি ত্রুটির ক্ষেত্রে, সম্পূর্ণ অনুরোধ প্রত্যাখ্যান করা হয় এবং বিদ্যমান অবস্থা বজায় রাখা হয়।
updatePublishStatus
যদি কোনও অভ্যন্তরীণ ব্যবসায়িক কারণে, ক্লাস্টারগুলির কোনওটিই প্রকাশিত না হয়, আমরা দৃঢ়ভাবে আপডেট পাবলিশ স্ট্যাটাস API ব্যবহার করে প্রকাশের স্থিতি আপডেট করার সুপারিশ করি৷ এটি গুরুত্বপূর্ণ কারণ:
- সমস্ত পরিস্থিতিতে স্ট্যাটাস প্রদান করা, এমনকি যখন বিষয়বস্তু প্রকাশিত হয় (স্ট্যাটাস == প্রকাশিত), ড্যাশবোর্ডগুলিকে পপুলেট করার জন্য গুরুত্বপূর্ণ যেগুলি আপনার ইন্টিগ্রেশনের স্বাস্থ্য এবং অন্যান্য মেট্রিক্স জানাতে এই স্পষ্ট স্ট্যাটাস ব্যবহার করে।
- যদি কোনো বিষয়বস্তু প্রকাশিত না হয় কিন্তু ইন্টিগ্রেশন স্ট্যাটাস ভাঙা না হয় (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টি বৈশিষ্ট্যযুক্ত ক্লাস্টারের বিষয়বস্তু মুছে ফেলার জন্য ব্যবহৃত হয়।
কোটলিন
client.deleteFeaturedCluster()
জাভা
client.deleteFeaturedCluster();
যখন পরিষেবাটি অনুরোধ গ্রহণ করে, এটি বৈশিষ্ট্যযুক্ত ক্লাস্টার থেকে বিদ্যমান ডেটা সরিয়ে দেয়। একটি ত্রুটির ক্ষেত্রে, সম্পূর্ণ অনুরোধ প্রত্যাখ্যান করা হয় এবং বিদ্যমান অবস্থা বজায় রাখা হয়।
deleteContinuationCluster
এই API কন্টিনিউয়েশন ক্লাস্টারের বিষয়বস্তু মুছে ফেলার জন্য ব্যবহার করা হয়।
কোটলিন
client.deleteContinuationCluster()
জাভা
client.deleteContinuationCluster();
যখন পরিষেবাটি অনুরোধটি গ্রহণ করে, তখন এটি কন্টিনিউয়েশন ক্লাস্টার থেকে বিদ্যমান ডেটা সরিয়ে দেয়। একটি ত্রুটির ক্ষেত্রে, সম্পূর্ণ অনুরোধ প্রত্যাখ্যান করা হয় এবং বিদ্যমান অবস্থা বজায় রাখা হয়।
deleteUserManagementCluster
UserAccountManagement Cluster-এর বিষয়বস্তু মুছতে এই API ব্যবহার করা হয়।
কোটলিন
client.deleteUserManagementCluster()
জাভা
client.deleteUserManagementCluster();
যখন পরিষেবাটি অনুরোধটি গ্রহণ করে, তখন এটি UserAccountManagement ক্লাস্টার থেকে বিদ্যমান ডেটা সরিয়ে দেয়। একটি ত্রুটির ক্ষেত্রে, সম্পূর্ণ অনুরোধ প্রত্যাখ্যান করা হয় এবং বিদ্যমান অবস্থা বজায় রাখা হয়।
deleteClusters
এই API একটি প্রদত্ত ক্লাস্টার ধরনের বিষয়বস্তু মুছে ফেলার জন্য ব্যবহার করা হয়.
কোটলিন
client.deleteClusters(
DeleteClustersRequest.Builder()
.addClusterType(ClusterType.TYPE_CONTINUATION)
.addClusterType(ClusterType.TYPE_FEATURED)
.addClusterType(ClusterType.TYPE_RECOMMENDATION)
.build())
জাভা
client.deleteClusters(
new DeleteClustersRequest.Builder()
.addClusterType(ClusterType.TYPE_CONTINUATION)
.addClusterType(ClusterType.TYPE_FEATURED)
.addClusterType(ClusterType.TYPE_RECOMMENDATION)
.build());
যখন পরিষেবাটি অনুরোধটি গ্রহণ করে, তখন এটি নির্দিষ্ট ক্লাস্টার প্রকারের সাথে মিলে যাওয়া সমস্ত ক্লাস্টার থেকে বিদ্যমান ডেটা সরিয়ে দেয়। ক্লায়েন্টরা এক বা একাধিক ক্লাস্টার প্রকার পাস করতে বেছে নিতে পারেন। একটি ত্রুটির ক্ষেত্রে, সম্পূর্ণ অনুরোধ প্রত্যাখ্যান করা হয় এবং বিদ্যমান অবস্থা বজায় রাখা হয়।
ত্রুটি হ্যান্ডলিং
It is highly recommended to listen to the task result from the publish APIs such that a follow-up action can be taken to recover and resubmit an successful task.
কোটলিন
client.publishRecommendationClusters(
PublishRecommendationClustersRequest.Builder()
.addRecommendationCluster(..)
.build())
.addOnCompleteListener { task ->
if (task.isSuccessful) {
// do something
} else {
val exception = task.exception
if (exception is AppEngageException) {
@AppEngageErrorCode val errorCode = exception.errorCode
if (errorCode == AppEngageErrorCode.SERVICE_NOT_FOUND) {
// do something
}
}
}
}
জাভা
client.publishRecommendationClusters(
new PublishRecommendationClustersRequest.Builder()
.addRecommendationCluster(...)
.build())
.addOnCompleteListener(
task -> {
if (task.isSuccessful()) {
// do something
} else {
Exception exception = task.getException();
if (exception instanceof AppEngageException) {
@AppEngageErrorCode
int errorCode = ((AppEngageException) exception).getErrorCode();
if (errorCode == AppEngageErrorCode.SERVICE_NOT_FOUND) {
// do something
}
}
}
});
The error is returned as an AppEngageException
with the cause included as an error code.
ত্রুটি কোড | ত্রুটির নাম | দ্রষ্টব্য |
---|---|---|
1 | SERVICE_NOT_FOUND | The service is not available on the given device. |
2 | SERVICE_NOT_AVAILABLE | The service is available on the given device, but it is not available at the time of the call (for example, it is explicitly disabled). |
3 | SERVICE_CALL_EXECUTION_FAILURE | The task execution failed due to threading issues. In this case, it can be retried. |
4 | SERVICE_CALL_PERMISSION_DENIED | The caller is not allowed to make the service call. |
5 | SERVICE_CALL_INVALID_ARGUMENT | The request contains invalid data (for example, more than the allowed number of clusters). |
6 | SERVICE_CALL_INTERNAL | There is an error on the service side. |
7 | SERVICE_CALL_RESOURCE_EXHAUSTED | The service call is made too frequently. |
Step 3: Handle broadcast intents
In addition to making publish content API calls through a job, it is also required to set up a BroadcastReceiver
to receive the request for a content publish.
The goal of broadcast intents is mainly for app reactivation and forcing data sync. Broadcast intents are not designed to be sent very frequently. It is only triggered when the Engage Service determines the content might be stale (for example, a week old). That way, there is more confidence that the user can have a fresh content experience, even if the application has not been executed for a long period of time.
The BroadcastReceiver
must be set up in the following two ways:
Dynamically register an instance of the
BroadcastReceiver
class usingContext.registerReceiver()
. This enables communication from applications that are still live in memory.
কোটলিন
class AppEngageBroadcastReceiver : BroadcastReceiver(){
// Trigger recommendation cluster publish when PUBLISH_RECOMMENDATION broadcast
// is received
// Trigger featured cluster publish when PUBLISH_FEATURED broadcast is received
// Trigger continuation cluster publish when PUBLISH_CONTINUATION broadcast is
// received
}
fun registerBroadcastReceivers(context: Context){
var context = context
context = context.applicationContext
// Register Recommendation Cluster Publish Intent
context.registerReceiver(AppEngageBroadcastReceiver(),
IntentFilter(Intents.ACTION_PUBLISH_RECOMMENDATION),
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 Continuation Cluster Publish Intent
context.registerReceiver(AppEngageBroadcastReceiver(),
IntentFilter(Intents.ACTION_PUBLISH_CONTINUATION),
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 continuation cluster publish when PUBLISH_CONTINUATION broadcast is
// received
}
public static void registerBroadcastReceivers(Context context) {
context = context.getApplicationContext();
// Register Recommendation Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_RECOMMENDATION),
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 Continuation Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_CONTINUATION),
com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
/*scheduler=*/null);
}
Statically declare an implementation with the
<receiver>
tag in yourAndroidManifest.xml
file. This allows the application to receive broadcast intents when it is not running, and also allows the application to publish the content.
<application>
<receiver
android:name=".AppEngageBroadcastReceiver"
android: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.PUBLISH_CONTINUATION" />
</intent-filter>
</receiver>
</application>
The following intents is sent by the service:
-
com.google.android.engage.action.PUBLISH_RECOMMENDATION
It is recommended to start apublishRecommendationClusters
call when receiving this intent. -
com.google.android.engage.action.PUBLISH_FEATURED
It is recommended to start apublishFeaturedCluster
call when receiving this intent. -
com.google.android.engage.action.PUBLISH_CONTINUATION
It is recommended to start apublishContinuationCluster
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 .
FAQs
See Engage SDK Frequently Asked Questions for FAQs.
যোগাযোগ
Contact engage-developers@google.com
if there are any questions during the integration process.
পরবর্তী পদক্ষেপ
After completing this integration, your next steps are as follows:
- Send an email to
engage-developers@google.com
and attach your integrated APK that is ready for testing by Google. - Google performs a verification and reviews internally to make sure the integration works as expected. If changes are needed, Google contacts you with any necessary details.
- When testing is complete and no changes are needed, Google contacts you to notify you that you can start publishing the updated and integrated APK to the Play Store.
- After Google has confirmed that your updated APK has been published to the Play Store, your Recommendation , Featured , and Continuation clusters may be published and visible to users.