SDK স্বাস্থ্য এবং ফিটনেস যুক্ত করুন: তৃতীয় পক্ষের প্রযুক্তিগত ইন্টিগ্রেশন নির্দেশাবলী

আপনার ব্যবহারকারীরা যেখানেই থাকুক না কেন, তাদের কাছে পৌঁছে অ্যাপের সম্পৃক্ততা বাড়ান। কালেকশন , এন্টারটেইনমেন্ট স্পেস এবং প্লে স্টোরের মতো ডিভাইসের বিভিন্ন প্ল্যাটফর্মে ব্যবহারকারীদের কাছে সরাসরি ব্যক্তিগতকৃত সুপারিশ এবং ধারাবাহিক কন্টেন্ট পৌঁছে দিতে Engage SDK ইন্টিগ্রেট করুন। এই ইন্টিগ্রেশনটি গড় APK-তে ৫০ কেবি-রও কম (কম্প্রেসড) সাইজ যোগ করে এবং বেশিরভাগ অ্যাপের জন্য ডেভেলপারদের প্রায় এক সপ্তাহ সময় লাগে। আমাদের বিজনেস সাইটে আরও জানুন।

এই নির্দেশিকায় ডেভেলপার পার্টনারদের জন্য Engage কন্টেন্ট সারফেসে স্বাস্থ্য ও ফিটনেস কন্টেন্ট সরবরাহ করার নির্দেশনা রয়েছে।

একীকরণের বিবরণ

পরিভাষা

এই ইন্টিগ্রেশনে নিম্নলিখিত তিন ধরনের ক্লাস্টার অন্তর্ভুক্ত রয়েছে: রিকমেন্ডেশন , ফিচার্ড এবং কন্টিনিউয়েশন

  • সুপারিশ ক্লাস্টারগুলো একজন স্বতন্ত্র ডেভেলপার পার্টনারের কাছ থেকে ব্যক্তিগতকৃত স্বাস্থ্য ও ফিটনেস পরামর্শ দেখায়। এই সুপারিশগুলো ব্যবহারকারীর জন্য ব্যক্তিগতকৃত বা সাধারণীকৃত হতে পারে (উদাহরণস্বরূপ, ট্রেন্ডিং ফিটনেস ও স্বাস্থ্য)। স্বাস্থ্য ও ফিটনেস সম্পর্কিত প্রবন্ধ বা ব্যক্তিদের খুঁজে পেতে এগুলো ব্যবহার করুন।

    • একটি সুপারিশ ক্লাস্টার ArticleEntity , PersonEntity , বা EventEntity দিয়ে তৈরি হতে পারে, কিন্তু বিভিন্ন ধরনের এনটিটির মিশ্রণ দিয়ে নয়।

    আপনার সুপারিশগুলোর কাঠামোটি নিম্নরূপ:

    • সুপারিশ ক্লাস্টার: একটি UI ভিউ যেখানে একই ডেভেলপার পার্টনারের দেওয়া একাধিক সুপারিশ থাকে।

    • সত্তা: একটি ক্লাস্টারের মধ্যে থাকা একটি একক আইটেমকে প্রতিনিধিত্বকারী একটি অবজেক্ট। এই ইন্টিগ্রেশনটি এমন কিছু সত্তা প্রদান করে যা রিকমেন্ডেশন ক্লাস্টার ব্যবহার করে প্রদর্শিত হবে:

      • ArticleEntity : ArticleEntity হলো স্বাস্থ্য ও ফিটনেস সম্পর্কিত টেক্সট-ভিত্তিক কন্টেন্টের জন্য একটি সুপারিশ। এটি আর্টিকেল, ব্লগপোস্ট, মার্কেটিং কন্টেন্ট, সংবাদের সংক্ষিপ্ত অংশ ইত্যাদির জন্য ব্যবহার করা যেতে পারে।

        চিত্র ১: রিকমেন্ডেশনস ক্লাস্টারের মধ্যে একটিমাত্র আর্টিকেলএন্টিটি দেখানো ইউআই।
      • PersonEntity : PersonEntity একজন ব্যক্তিকে বোঝায়। এক্ষেত্রে একজন কোচ বা স্বাস্থ্য ও ফিটনেসের সাথে সম্পর্কিত যেকোনো ব্যক্তিকে তুলে ধরার পরামর্শ দেওয়া যেতে পারে।

        চিত্র ২: রিকমেন্ডেশন ক্লাস্টারের মধ্যে একটিমাত্র পার্সনএন্টিটি দেখানো ইউআই।
      • ইভেন্টএন্টিটি (EventEntity) : ইভেন্টএন্টিটি ভবিষ্যতে ঘটতে যাওয়া কোনো ইভেন্টকে উপস্থাপন করে। ইভেন্ট শুরুর সময় একটি অত্যন্ত গুরুত্বপূর্ণ তথ্য যা ব্যবহারকারীদের জানানো প্রয়োজন। স্বাস্থ্য ও ফিটনেস সম্পর্কিত রক্তদান শিবির, প্রশিক্ষণ সেশন, জিম বা যোগ ক্লাস ইত্যাদির মতো ইভেন্টগুলো তুলে ধরার জন্য এই এন্টিটিটি ব্যবহার করা যেতে পারে।

        চিত্র ৩: রিকমেন্ডেশনস ক্লাস্টারের মধ্যে একটিমাত্র ইভেন্টএন্টিটি দেখানো ইউআই।
  • কন্টিনিউয়েশন ক্লাস্টার একাধিক ডেভেলপার পার্টনারের ব্যবহারকারীদের দ্বারা সম্প্রতি ব্যবহৃত কন্টেন্ট একটি একক UI গ্রুপে প্রদর্শন করে। প্রতিটি ডেভেলপার পার্টনারকে কন্টিনিউয়েশন ক্লাস্টারে সর্বোচ্চ ১০টি এনটিটি ব্রডকাস্ট করার অনুমতি দেওয়া হবে।

    আপনার পরবর্তী বিষয়বস্তু নিম্নলিখিত কাঠামো অনুসরণ করতে পারে:

    • ArticleEntity : ArticleEntity স্বাস্থ্য ও ফিটনেস সম্পর্কিত টেক্সট-ভিত্তিক কন্টেন্টের জন্য একটি সুপারিশ উপস্থাপন করে। এই এনটিটিটি অসমাপ্ত সংবাদ নিবন্ধ বা অন্য কোনো কন্টেন্ট উপস্থাপন করতে ব্যবহার করা যেতে পারে, যা ব্যবহারকারী যেখান থেকে পড়া ছেড়েছিলেন সেখান থেকে আবার শুরু করতে চান। উদাহরণস্বরূপ: স্বাস্থ্য বা ফিটনেস সম্পর্কিত বিষয়ের উপর সংবাদের অংশবিশেষ, ব্লগপোস্টের অংশবিশেষ।

      চিত্র ৬. একটি কন্টিনিউয়েশন ক্লাস্টারের মধ্যে একটিমাত্র ArticleEntity প্রদর্শনকারী UI।
    • EventReservationEntity : EventReservationEntity কোনো ইভেন্টের রিজার্ভেশনকে বোঝায় এবং ব্যবহারকারীদের আসন্ন বা চলমান ফিটনেস ও স্বাস্থ্য ইভেন্টের রিজার্ভেশন ট্র্যাক করতে সাহায্য করে। উদাহরণ: ট্রেনিং সেশন

      চিত্র ৮. একটি কন্টিনিউয়েশন ক্লাস্টারের মধ্যে অবস্থিত একটিমাত্র ইভেন্টরিজারভেশনএন্টিটি (EventReservationEntity) প্রদর্শনকারী ইউআই (UI)।
  • ফিচার্ড ক্লাস্টার একাধিক ডেভেলপার পার্টনারের নির্বাচিত কিছু এনটিটি একটি UI গ্রুপে প্রদর্শন করে। একটিমাত্র ফিচার্ড ক্লাস্টার থাকবে, যা UI-এর উপরের দিকে প্রদর্শিত হবে এবং সমস্ত রিকমেন্ডেশন ক্লাস্টারের উপরে অগ্রাধিকার পাবে। প্রতিটি ডেভেলপার পার্টনার ফিচার্ড ক্লাস্টারে সর্বোচ্চ ১০টি এনটিটি ব্রডকাস্ট করতে পারবে।

    • GenericFeaturedEntity : GenericFeaturedEntity, Recommendation আইটেম থেকে এই কারণে ভিন্ন যে, Featured আইটেমটি ডেভেলপারদের তৈরি একটি সেরা কন্টেন্টের জন্য ব্যবহৃত হওয়া উচিত এবং এটি এমন একটি সবচেয়ে গুরুত্বপূর্ণ কন্টেন্টকে উপস্থাপন করবে যা ব্যবহারকারীদের কাছে আকর্ষণীয় এবং প্রাসঙ্গিক হবে।

      চিত্র ১২: একটি ফিচার্ড ক্লাস্টারের মধ্যে একটি একক হিরো GenericFeaturedEntity কার্ড প্রদর্শনকারী UI।

প্রাক-কাজ

সর্বনিম্ন এপিআই স্তর: ১৯

আপনার অ্যাপে 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.12'
}

সারসংক্ষেপ

ডিজাইনটি একটি বাউন্ড সার্ভিসের বাস্তবায়নের উপর ভিত্তি করে তৈরি।

বিভিন্ন ক্লাস্টার প্রকারের জন্য একজন ক্লায়েন্ট যে ডেটা প্রকাশ করতে পারে তা নিম্নলিখিত সীমাবদ্ধতার অধীন:

ক্লাস্টার টাইপ ক্লাস্টার সীমা একটি ক্লাস্টারে সর্বনিম্ন সত্তার সীমা একটি ক্লাস্টারে সত্তার সর্বোচ্চ সীমা
সুপারিশ ক্লাস্টার(গুলি) সর্বাধিক ৭ অন্তত ১ সর্বাধিক ৫০ ( ArticleEntity , PersonEntity , বা EventEntity )
ধারাবাহিকতা ক্লাস্টার সর্বাধিক ১ অন্তত ১ সর্বাধিক ২০ ( ArticleEntity , অথবা EventReservationEntity )
বৈশিষ্ট্যযুক্ত ক্লাস্টার সর্বাধিক ১ অন্তত ১ সর্বাধিক ২০ ( GenericFeaturedEntity )

ধাপ ১: সত্তার তথ্য প্রদান করুন

এসডিকে প্রতিটি আইটেমের ধরন বোঝানোর জন্য বিভিন্ন এনটিটি সংজ্ঞায়িত করেছে। আমরা স্বাস্থ্য ও ফিটনেস বিভাগের জন্য নিম্নলিখিত এনটিটিগুলো সমর্থন করি:

  1. GenericFeaturedEntity
  2. ArticleEntity
  3. PersonEntity
  4. EventEntity
  5. EventReservationEntity

নিচের চার্টগুলোতে প্রতিটি প্রকারের জন্য উপলব্ধ বৈশিষ্ট্য এবং প্রয়োজনীয়তাগুলো তুলে ধরা হয়েছে।

GenericFeaturedEntity

বৈশিষ্ট্য প্রয়োজনীয়তা বর্ণনা ফর্ম্যাট
অ্যাকশন উরি প্রয়োজনীয়

প্রোভাইডার অ্যাপে থাকা এনটিটির ডিপ লিঙ্ক।

দ্রষ্টব্য: অ্যাট্রিবিউশনের জন্য আপনি ডিপ লিঙ্ক ব্যবহার করতে পারেন। এই প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী (FAQ) দেখুন।

উরি
পোস্টারের ছবি প্রয়োজনীয়

একাধিক ছবি দেওয়া হলে আমরা কেবল ১টি ছবিই দেখাব। প্রস্তাবিত অ্যাসপেক্ট রেশিও হলো ১৬:৯।

দ্রষ্টব্য: যদি কোনো ব্যাজ প্রদান করা হয়, অনুগ্রহ করে ছবিটির উপরে এবং নীচে উভয় দিকে ২৪ ডিপিএস-এর নিরাপদ স্থান নিশ্চিত করুন।

নির্দেশনার জন্য ছবির বিবরণ দেখুন।
শিরোনাম ঐচ্ছিক সত্তার শিরোনাম।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: ৫০ অক্ষর

বর্ণনা ঐচ্ছিক

সত্তাটির বর্ণনা দেওয়ার জন্য একটিমাত্র অনুচ্ছেদ।

দ্রষ্টব্য: ব্যবহারকারীকে হয় বিবরণ অথবা উপশিরোনাম তালিকা দেখানো হবে, উভয়ই নয়।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: ১৮০ অক্ষর

সাবটাইটেল তালিকা ঐচ্ছিক

সর্বোচ্চ ৩টি সাবটাইটেল, এবং প্রতিটি সাবটাইটেল এক লাইনের লেখা হবে।

দ্রষ্টব্য: ব্যবহারকারীকে হয় বিবরণ অথবা উপশিরোনাম তালিকা দেখানো হবে, উভয়ই নয়।

মুক্ত পাঠ্য

প্রতিটি উপশিরোনামের জন্য প্রস্তাবিত লেখার আকার: সর্বোচ্চ ৫০ অক্ষর

ব্যাজ ঐচ্ছিক

প্রতিটি ব্যাজ হয় মুক্ত লেখা (সর্বোচ্চ ১৫ অক্ষর) অথবা একটি ছোট ছবি।

ছবি/ভিডিওর উপরে বিশেষ ইউএক্স ট্রিটমেন্ট, যেমন ছবির উপর ব্যাজ ওভারলে হিসেবে।

  • সরাসরি আপডেট
  • প্রবন্ধ পড়ার সময়কাল
ব্যাজ - টেক্সট ঐচ্ছিক

ব্যাজের জন্য শিরোনাম

দ্রষ্টব্য: ব্যাজের জন্য লেখা অথবা ছবি যেকোনো একটি আবশ্যক।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ ১৫ অক্ষর

ব্যাজ - ছবি ঐচ্ছিক

ছোট ছবি

বিশেষ ইউএক্স ট্রিটমেন্ট, যেমন ছবি/ভিডিও থাম্বনেইলের উপর ব্যাজ ওভারলে হিসেবে।

দ্রষ্টব্য: ব্যাজের জন্য লেখা অথবা ছবি যেকোনো একটি আবশ্যক।

নির্দেশনার জন্য ছবির বিবরণ দেখুন।
বিষয়বস্তুর বিভাগ ঐচ্ছিক সত্তাটির বিষয়বস্তুর শ্রেণি বর্ণনা করুন।

এনামের তালিকা

নির্দেশনার জন্য বিষয়বস্তুর শ্রেণীবিভাগ দেখুন।

ArticleEntity

বৈশিষ্ট্য প্রয়োজনীয়তা বর্ণনা ফর্ম্যাট
অ্যাকশন উরি প্রয়োজনীয়

প্রোভাইডার অ্যাপে থাকা এনটিটির ডিপ লিঙ্ক।

দ্রষ্টব্য: অ্যাট্রিবিউশনের জন্য আপনি ডিপ লিঙ্ক ব্যবহার করতে পারেন। এই প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী (FAQ) দেখুন।

উরি
শিরোনাম প্রয়োজনীয় সত্তার শিরোনাম।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ ৫০ অক্ষর

পোস্টারের ছবি ঐচ্ছিক

একাধিক ছবি দেওয়া হলে আমরা কেবল ১টি ছবিই দেখাব। প্রস্তাবিত অ্যাসপেক্ট রেশিও হলো ১৬:৯।

দ্রষ্টব্য: ছবি ব্যবহার করা বিশেষভাবে বাঞ্ছনীয়। যদি ব্যাজ প্রদান করা হয়, তবে অনুগ্রহ করে ছবির উপরে এবং নীচে ২৪ ডিপিএস-এর নিরাপদ স্থান নিশ্চিত করুন।

নির্দেশনার জন্য ছবির বিবরণ দেখুন।
উৎস - শিরোনাম ঐচ্ছিক লেখক, সংস্থা বা প্রতিবেদকের নাম

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: ২৫ অক্ষরের কম

উৎস - ছবি ঐচ্ছিক লেখক, সংস্থা, প্রতিবেদকের মতো উৎসের একটি ছবি। নির্দেশনার জন্য ছবির বিবরণ দেখুন।
বর্ণনা ঐচ্ছিক

সত্তাটির বর্ণনা দেওয়ার জন্য একটিমাত্র অনুচ্ছেদ।

দ্রষ্টব্য: ব্যবহারকারীকে হয় বিবরণ অথবা উপশিরোনাম তালিকা দেখানো হবে, উভয়ই নয়।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: ১৮০ অক্ষর

সাবটাইটেল তালিকা ঐচ্ছিক

সর্বোচ্চ ৩টি সাবটাইটেল, এবং প্রতিটি সাবটাইটেল এক লাইনের লেখা হবে।

দ্রষ্টব্য: ব্যবহারকারীকে হয় বিবরণ অথবা উপশিরোনাম তালিকা দেখানো হবে, উভয়ই নয়।

মুক্ত পাঠ্য

প্রতিটি উপশিরোনামের জন্য প্রস্তাবিত লেখার আকার: সর্বোচ্চ ৫০ অক্ষর

ব্যাজ ঐচ্ছিক

প্রতিটি ব্যাজ হয় মুক্ত লেখা (সর্বোচ্চ ১৫ অক্ষর) অথবা একটি ছোট ছবি।

ছবি/ভিডিওর উপরে বিশেষ ইউএক্স ট্রিটমেন্ট, যেমন ছবির উপর ব্যাজ ওভারলে হিসেবে।

  • সরাসরি আপডেট
  • প্রবন্ধ পড়ার সময়কাল
ব্যাজ - টেক্সট ঐচ্ছিক

ব্যাজের জন্য শিরোনাম

দ্রষ্টব্য: ব্যাজের জন্য লেখা অথবা ছবি যেকোনো একটি আবশ্যক।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ ১৫ অক্ষর

ব্যাজ - ছবি ঐচ্ছিক

ছোট ছবি

বিশেষ ইউএক্স ট্রিটমেন্ট, যেমন ছবি/ভিডিও থাম্বনেইলের উপর ব্যাজ ওভারলে হিসেবে।

দ্রষ্টব্য: ব্যাজের জন্য লেখা অথবা ছবি যেকোনো একটি আবশ্যক।

নির্দেশনার জন্য ছবির বিবরণ দেখুন।
বিষয়বস্তু প্রকাশের সময় ঐচ্ছিক অ্যাপে কন্টেন্টটি কখন প্রকাশিত বা আপডেট করা হয়েছিল, এটি সেই ইপক টাইমস্ট্যাম্প যা মিলিসেকেন্ডে পরিমাপ করা হয়। মিলিসেকেন্ডে ইপক টাইমস্ট্যাম্প
শেষ বাগদানের সময় শর্তসাপেক্ষে আবশ্যক

ব্যবহারকারী শেষবার এই সত্তাটির সাথে যখন ইন্টারঅ্যাক্ট করেছিলেন, সেই ইপক টাইমস্ট্যাম্প (মিলিসেকেন্ডে)।

দ্রষ্টব্য: এই সত্তাটি যদি কন্টিনিউয়েশন ক্লাস্টারের অংশ হয়, তবে এই ফিল্ডটি আবশ্যক।

মিলিসেকেন্ডে ইপক টাইমস্ট্যাম্প
অগ্রগতির শতাংশ শর্তসাপেক্ষে আবশ্যক

ব্যবহারকারী কর্তৃক এ পর্যন্ত সম্পূর্ণ কন্টেন্টের যে শতাংশ গ্রহণ করা হয়েছে।

দ্রষ্টব্য: এই সত্তাটি যদি কন্টিনিউয়েশন ক্লাস্টারের অংশ হয়, তবে এই ফিল্ডটি আবশ্যক।

০ থেকে ১০০ পর্যন্ত একটি পূর্ণসংখ্যা।
বিষয়বস্তুর বিভাগ ঐচ্ছিক সত্তাটির বিষয়বস্তুর শ্রেণি বর্ণনা করুন।

এনামের তালিকা

নির্দেশনার জন্য বিষয়বস্তুর শ্রেণীবিভাগ দেখুন।

PersonEntity

বৈশিষ্ট্য প্রয়োজনীয়তা বর্ণনা ফর্ম্যাট
অ্যাকশন উরি প্রয়োজনীয়

প্রোভাইডার অ্যাপে থাকা এনটিটির ডিপ লিঙ্ক।

দ্রষ্টব্য: অ্যাট্রিবিউশনের জন্য আপনি ডিপ লিঙ্ক ব্যবহার করতে পারেন। এই প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী (FAQ) দেখুন।

উরি
প্রোফাইল - নাম প্রয়োজনীয় প্রোফাইলের নাম বা আইডি বা হ্যান্ডেল, যেমন 'জন ডো', '@টিমপিক্সেল', ইত্যাদি।

স্ট্রিং

প্রস্তাবিত লেখার আকার: সর্বোচ্চ ৫০ অক্ষর

প্রোফাইল - অবতার প্রয়োজনীয়

ব্যবহারকারীর প্রোফাইল ছবি বা অ্যাভাটার ছবি।

দ্রষ্টব্য: ছবিটি অবশ্যই ১:১ বর্গাকার হতে হবে।

নির্দেশনার জন্য ছবির বিবরণ দেখুন।
প্রোফাইল - অতিরিক্ত লেখা ঐচ্ছিক প্রোফাইল হ্যান্ডেলের মতো মুক্ত লেখা।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ ১৫ অক্ষর

প্রোফাইল - অতিরিক্ত ছবি ঐচ্ছিক যাচাইকৃত ব্যাজের মতো ছোট ছবি। নির্দেশনার জন্য ছবির বিবরণ দেখুন।
হেডার ইমেজ ঐচ্ছিক

একাধিক ছবি দেওয়া হলে আমরা কেবল ১টি ছবিই দেখাব। প্রস্তাবিত অ্যাসপেক্ট রেশিও হলো ১৬:৯।

দ্রষ্টব্য: ছবি ব্যবহার করা বিশেষভাবে বাঞ্ছনীয়। যদি ব্যাজ প্রদান করা হয়, তবে অনুগ্রহ করে ছবির উপরে এবং নীচে ২৪ ডিপিএস-এর নিরাপদ স্থান নিশ্চিত করুন।

নির্দেশনার জন্য ছবির বিবরণ দেখুন।
জনপ্রিয়তা - গণনা ঐচ্ছিক

অনুসারীর সংখ্যা বা জনপ্রিয়তার মান উল্লেখ করুন, যেমন - "৩.৭ মিলিয়ন"।

দ্রষ্টব্য: যদি Count এবং Count Value উভয়ই প্রদান করা হয়, তবে Count ব্যবহৃত হবে।

স্ট্রিং

প্রস্তাবিত লেখার আকার: সংখ্যা ও লেবেল মিলিয়ে সর্বোচ্চ ২০ অক্ষর

জনপ্রিয়তা - গণনার মান ঐচ্ছিক

অনুসারীর সংখ্যা বা জনপ্রিয়তার মান।

দ্রষ্টব্য: যদি আপনার অ্যাপ বিভিন্ন ডিসপ্লে আকারের জন্য একটি বড় সংখ্যাকে কীভাবে অপ্টিমাইজ করা হবে সেই লজিকটি পরিচালনা করতে না চায়, তাহলে Count Value প্রদান করুন। যদি Count এবং Count Value উভয়ই প্রদান করা হয়, তবে Count ব্যবহৃত হবে।

দীর্ঘ
জনপ্রিয়তা - লেবেল ঐচ্ছিক জনপ্রিয়তার লেবেলটি কী তা উল্লেখ করুন। উদাহরণস্বরূপ - "লাইক"।

স্ট্রিং

প্রস্তাবিত লেখার আকার: সংখ্যা ও লেবেল মিলিয়ে সর্বোচ্চ ২০টি অক্ষর

জনপ্রিয়তা - চাক্ষুষ ঐচ্ছিক

ইন্টারঅ্যাকশনটি কীসের জন্য তা উল্লেখ করুন। উদাহরণস্বরূপ - লাইক আইকন, ইমোজি দেখানো ছবি।

একাধিক ছবি দেওয়া যেতে পারে, তবে সবগুলো ছবি সব ফর্ম ফ্যাক্টরে দেখানো নাও যেতে পারে।

দ্রষ্টব্য: ছবিটি অবশ্যই ১:১ বর্গাকার হতে হবে।

নির্দেশনার জন্য ছবির বিবরণ দেখুন।
রেটিং - সর্বোচ্চ মান প্রয়োজনীয়

রেটিং স্কেলের সর্বোচ্চ মান।

রেটিং-এর বর্তমান মান প্রদান করা হলে এটিও অবশ্যই প্রদান করতে হবে।

সংখ্যা >= ০.০
রেটিং - বর্তমান মান প্রয়োজনীয়

রেটিং স্কেলের বর্তমান মান।

রেটিং-এর সর্বোচ্চ মান প্রদান করা হলে এটিও অবশ্যই প্রদান করতে হবে।

সংখ্যা >= ০.০
রেটিং - গণনা ঐচ্ছিক

সত্তাটির রেটিং সংখ্যা।

দ্রষ্টব্য: আপনার অ্যাপ যদি ব্যবহারকারীদের কাছে সংখ্যাটি কীভাবে প্রদর্শিত হবে তা নিয়ন্ত্রণ করে, তবে এই ফিল্ডটি প্রদান করুন। একটি সংক্ষিপ্ত স্ট্রিং ব্যবহার করুন। উদাহরণস্বরূপ, যদি সংখ্যাটি 1,000,000 হয়, তাহলে 1M-এর মতো একটি সংক্ষিপ্ত রূপ ব্যবহার করার কথা বিবেচনা করুন, যাতে ছোট ডিসপ্লে আকারে সংখ্যাটি কেটে না যায়।

স্ট্রিং
রেটিং - গণনার মান ঐচ্ছিক

সত্তাটির রেটিং সংখ্যা।

দ্রষ্টব্য: আপনি যদি সংক্ষিপ্ত রূপ প্রদর্শনের লজিকটি নিজে পরিচালনা না করেন, তবে এই ফিল্ডটি প্রদান করুন। যদি Count এবং Count Value উভয়ই উপস্থিত থাকে, তবে ব্যবহারকারীদের কাছে Count প্রদর্শিত হবে।

দীর্ঘ
অবস্থান - দেশ ঐচ্ছিক যে দেশে ব্যক্তিটি অবস্থান করছেন বা কর্মরত আছেন।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ প্রায় ২০ অক্ষর

অবস্থান - শহর ঐচ্ছিক যে শহরে ব্যক্তিটি অবস্থান করছেন বা কর্মরত আছেন।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ প্রায় ২০ অক্ষর

অবস্থান - ঠিকানা প্রদর্শন করুন ঐচ্ছিক ব্যক্তিটি যেখানে অবস্থান করছেন বা কর্মরত আছেন, সেই ঠিকানাটি ব্যবহারকারীকে দেখানো হবে।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ প্রায় ২০ অক্ষর

অবস্থান - রাস্তার ঠিকানা ঐচ্ছিক ব্যক্তিটি যেখানে অবস্থান করছেন বা পরিষেবা দিচ্ছেন, সেই রাস্তার ঠিকানা (যদি প্রযোজ্য হয়)।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ প্রায় ২০ অক্ষর

অবস্থান - রাজ্য ঐচ্ছিক যে রাজ্যে (প্রযোজ্য ক্ষেত্রে) ব্যক্তিটি অবস্থান করছেন বা কর্মরত আছেন।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ প্রায় ২০ অক্ষর

অবস্থান - জিপ কোড ঐচ্ছিক ব্যক্তিটি যেখানে অবস্থান করছেন বা কর্মরত আছেন, তার জিপ কোড (যদি প্রযোজ্য হয়)।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ প্রায় ২০ অক্ষর

অবস্থান - এলাকা ঐচ্ছিক যে এলাকায় (প্রযোজ্য ক্ষেত্রে) ব্যক্তিটি অবস্থান করছেন বা সেবা প্রদান করছেন।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ প্রায় ২০ অক্ষর

ব্যাজ ঐচ্ছিক

প্রতিটি ব্যাজ হয় মুক্ত লেখা (সর্বোচ্চ ১৫ অক্ষর) অথবা একটি ছোট ছবি।

ব্যাজ - টেক্সট ঐচ্ছিক

ব্যাজের জন্য শিরোনাম

দ্রষ্টব্য: ব্যাজের জন্য লেখা অথবা ছবি যেকোনো একটি আবশ্যক।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ ১৫ অক্ষর

ব্যাজ - ছবি ঐচ্ছিক

ছোট ছবি

বিশেষ ইউএক্স ট্রিটমেন্ট, যেমন ছবি/ভিডিও থাম্বনেইলের উপর ব্যাজ ওভারলে হিসেবে।

দ্রষ্টব্য: ব্যাজের জন্য লেখা অথবা ছবি যেকোনো একটি আবশ্যক।

নির্দেশনার জন্য ছবির বিবরণ দেখুন।
বর্ণনা ঐচ্ছিক

সত্তাটির বর্ণনা দেওয়ার জন্য একটিমাত্র অনুচ্ছেদ।

দ্রষ্টব্য: ব্যবহারকারীকে হয় বিবরণ অথবা উপশিরোনাম তালিকা দেখানো হবে, উভয়ই নয়।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: ১৮০ অক্ষর

সাবটাইটেল তালিকা ঐচ্ছিক

সর্বোচ্চ ৩টি সাবটাইটেল, এবং প্রতিটি সাবটাইটেল এক লাইনের লেখা হবে।

দ্রষ্টব্য: ব্যবহারকারীকে হয় বিবরণ অথবা উপশিরোনাম তালিকা দেখানো হবে, উভয়ই নয়।

মুক্ত পাঠ্য

প্রতিটি উপশিরোনামের জন্য প্রস্তাবিত লেখার আকার: সর্বোচ্চ ৫০ অক্ষর

বিষয়বস্তুর বিভাগ ঐচ্ছিক সত্তাটির বিষয়বস্তুর শ্রেণি বর্ণনা করুন।

যোগ্য এনামের তালিকা

  • স্বাস্থ্য ও ফিটনেসের ধরণ (উদাহরণ - যোগ/ফিটনেস প্রশিক্ষক)
  • TYPE_HOME_AND_AUTO (উদাহরণ - প্লাম্বার)
  • খেলার ধরণ (উদাহরণ - খেলোয়াড়)
  • ডেটিংয়ের ধরণ

নির্দেশনার জন্য বিষয়বস্তুর শ্রেণীবিভাগ দেখুন।

EventEntity

বৈশিষ্ট্য প্রয়োজনীয়তা বর্ণনা ফর্ম্যাট
অ্যাকশন উরি প্রয়োজনীয়

প্রোভাইডার অ্যাপে থাকা এনটিটির ডিপ লিঙ্ক।

দ্রষ্টব্য: অ্যাট্রিবিউশনের জন্য আপনি ডিপ লিঙ্ক ব্যবহার করতে পারেন। এই প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী (FAQ) দেখুন।

উরি
শিরোনাম প্রয়োজনীয় সত্তার শিরোনাম।

স্ট্রিং

প্রস্তাবিত লেখার আকার: সর্বোচ্চ ৫০ অক্ষর

শুরুর সময় প্রয়োজনীয়

যে ইপক টাইমস্ট্যাম্পে ইভেন্টটি শুরু হওয়ার কথা।

দ্রষ্টব্য: এটি মিলিসেকেন্ডে প্রকাশ করা হবে।

মিলিসেকেন্ডে ইপক টাইমস্ট্যাম্প
ইভেন্ট মোড প্রয়োজনীয়

অনুষ্ঠানটি ভার্চুয়াল, সশরীরে নাকি উভয়ই হবে, তা নির্দেশ করার জন্য একটি ক্ষেত্র।

Enum: ভার্চুয়াল, সশরীরে, অথবা হাইব্রিড
পোস্টারের ছবি প্রয়োজনীয়

একাধিক ছবি দেওয়া হলে আমরা কেবল ১টি ছবিই দেখাব। প্রস্তাবিত অ্যাসপেক্ট রেশিও হলো ১৬:৯।

দ্রষ্টব্য: ছবি ব্যবহার করা বিশেষভাবে বাঞ্ছনীয়। যদি ব্যাজ প্রদান করা হয়, তবে অনুগ্রহ করে ছবির উপরে এবং নীচে ২৪ ডিপিএস-এর নিরাপদ স্থান নিশ্চিত করুন।

নির্দেশনার জন্য ছবির বিবরণ দেখুন।
অবস্থান - দেশ শর্তসাপেক্ষে আবশ্যক

যে দেশে অনুষ্ঠানটি অনুষ্ঠিত হচ্ছে।

দ্রষ্টব্য: যেসব অনুষ্ঠান সরাসরি উপস্থিতিতে (IN_PERSON) অথবা হাইব্রিড (HYBRID) পদ্ধতিতে অনুষ্ঠিত হয়, সেগুলোর জন্য এটি আবশ্যক।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ প্রায় ২০ অক্ষর

অবস্থান - শহর শর্তসাপেক্ষে আবশ্যক

যে শহরে অনুষ্ঠানটি অনুষ্ঠিত হচ্ছে।

দ্রষ্টব্য: যেসব অনুষ্ঠান সরাসরি উপস্থিতিতে (IN_PERSON) অথবা হাইব্রিড (HYBRID) পদ্ধতিতে অনুষ্ঠিত হয়, সেগুলোর জন্য এটি আবশ্যক।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ প্রায় ২০ অক্ষর

অবস্থান - ঠিকানা প্রদর্শন করুন শর্তসাপেক্ষে আবশ্যক

অনুষ্ঠানটি যে ঠিকানায় বা স্থানে অনুষ্ঠিত হবে, তা ব্যবহারকারীকে দেখানো উচিত।

দ্রষ্টব্য: যেসব অনুষ্ঠান সরাসরি উপস্থিতিতে (IN_PERSON) অথবা হাইব্রিড (HYBRID) পদ্ধতিতে অনুষ্ঠিত হয়, সেগুলোর জন্য এটি আবশ্যক।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ প্রায় ২০ অক্ষর

অবস্থান - রাস্তার ঠিকানা ঐচ্ছিক যে স্থানে অনুষ্ঠানটি আয়োজন করা হচ্ছে, সেই স্থানের রাস্তার ঠিকানা (যদি প্রযোজ্য হয়)।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ প্রায় ২০ অক্ষর

অবস্থান - রাজ্য ঐচ্ছিক যে রাজ্য বা প্রদেশে (প্রযোজ্য ক্ষেত্রে) অনুষ্ঠানটি আয়োজিত হচ্ছে।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ প্রায় ২০ অক্ষর

অবস্থান - জিপ কোড ঐচ্ছিক যে স্থানে অনুষ্ঠানটি আয়োজন করা হচ্ছে, সেই স্থানের জিপ কোড (যদি প্রযোজ্য হয়)।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ প্রায় ২০ অক্ষর

অবস্থান - এলাকা ঐচ্ছিক যে এলাকায় (প্রযোজ্য ক্ষেত্রে) অনুষ্ঠানটি আয়োজন করা হচ্ছে।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ প্রায় ২০ অক্ষর

শেষ সময় ঐচ্ছিক

যে ইপক টাইমস্ট্যাম্পে ইভেন্টটি শেষ হওয়ার কথা।

দ্রষ্টব্য: এটি মিলিসেকেন্ডে প্রকাশ করা হবে।

মিলিসেকেন্ডে ইপক টাইমস্ট্যাম্প
বর্ণনা ঐচ্ছিক

সত্তাটির বর্ণনা দেওয়ার জন্য একটিমাত্র অনুচ্ছেদ।

দ্রষ্টব্য: ব্যবহারকারীকে হয় বিবরণ অথবা উপশিরোনাম তালিকা দেখানো হবে, উভয়ই নয়।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: ১৮০ অক্ষর

সাবটাইটেল তালিকা ঐচ্ছিক

সর্বোচ্চ ৩টি সাবটাইটেল, এবং প্রতিটি সাবটাইটেল এক লাইনের লেখা হবে।

দ্রষ্টব্য: ব্যবহারকারীকে হয় বিবরণ অথবা উপশিরোনাম তালিকা দেখানো হবে, উভয়ই নয়।

মুক্ত পাঠ্য

প্রতিটি উপশিরোনামের জন্য প্রস্তাবিত লেখার আকার: সর্বোচ্চ ৫০ অক্ষর

ব্যাজ ঐচ্ছিক

প্রতিটি ব্যাজ হয় মুক্ত লেখা (সর্বোচ্চ ১৫ অক্ষর) অথবা একটি ছোট ছবি।

ব্যাজ - টেক্সট ঐচ্ছিক

ব্যাজের জন্য শিরোনাম

দ্রষ্টব্য: ব্যাজের জন্য লেখা অথবা ছবি যেকোনো একটি আবশ্যক।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ ১৫ অক্ষর

ব্যাজ - ছবি ঐচ্ছিক

ছোট ছবি

বিশেষ ইউএক্স ট্রিটমেন্ট, যেমন ছবি/ভিডিও থাম্বনেইলের উপর ব্যাজ ওভারলে হিসেবে।

দ্রষ্টব্য: ব্যাজের জন্য লেখা অথবা ছবি যেকোনো একটি আবশ্যক।

নির্দেশনার জন্য ছবির বিবরণ দেখুন।
মূল্য - বর্তমান মূল্য শর্তসাপেক্ষে আবশ্যক

অনুষ্ঠানটির টিকিট/পাসের বর্তমান মূল্য।

যদি কেটে দেওয়া মূল্য প্রদান করা হয়, তবে এটি অবশ্যই প্রদান করতে হবে।

মুক্ত পাঠ্য
মূল্য - কাটা-চিহ্নিত মূল্য ঐচ্ছিক অনুষ্ঠানটির টিকিট/পাসের মূল মূল্য। মুক্ত পাঠ্য
মূল্য ঘোষণা ঐচ্ছিক কোনো প্রোমো, ইভেন্ট বা সদস্য ছাড় (যদি থাকে) তুলে ধরতে মূল্য উল্লেখ করা হবে।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: ৪৫ অক্ষরের কম (অতিরিক্ত দীর্ঘ লেখার শেষে ডট ডট চিহ্ন দেখা যেতে পারে)

বিষয়বস্তুর বিভাগ ঐচ্ছিক সত্তাটির বিষয়বস্তুর শ্রেণি বর্ণনা করুন।

যোগ্য এনামের তালিকা

  • চলচ্চিত্র ও টিভি অনুষ্ঠানের ধরণ (উদাহরণ - সিনেমা)
  • ডিজিটাল গেমসের ধরণ (উদাহরণ - ই-স্পোর্টস)
  • সঙ্গীতের ধরণ (উদাহরণ - কনসার্ট)
  • ভ্রমণ ও স্থানীয় ধরন (উদাহরণ - ট্যুর, উৎসব)
  • স্বাস্থ্য ও ফিটনেসের ধরণ (উদাহরণ - যোগ ক্লাস)
  • শিক্ষার ধরণ (উদাহরণ - শ্রেণী)
  • খেলাধুলার ধরণ (উদাহরণ - ফুটবল খেলা)
  • ডেটিংয়ের ধরণ (উদাহরণ - মিটআপ)

নির্দেশনার জন্য বিষয়বস্তুর শ্রেণীবিভাগ দেখুন।

EventReservationEntity

বৈশিষ্ট্য প্রয়োজনীয়তা বর্ণনা ফর্ম্যাট
অ্যাকশন উরি প্রয়োজনীয়

প্রোভাইডার অ্যাপে থাকা এনটিটির ডিপ লিঙ্ক।

দ্রষ্টব্য: অ্যাট্রিবিউশনের জন্য আপনি ডিপ লিঙ্ক ব্যবহার করতে পারেন। এই প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী (FAQ) দেখুন।

উরি
শিরোনাম প্রয়োজনীয় সত্তার শিরোনাম।

স্ট্রিং

প্রস্তাবিত লেখার আকার: সর্বোচ্চ ৫০ অক্ষর

শুরুর সময় প্রয়োজনীয়

যে ইপক টাইমস্ট্যাম্পে ইভেন্টটি শুরু হওয়ার কথা।

দ্রষ্টব্য: এটি মিলিসেকেন্ডে প্রকাশ করা হবে।

মিলিসেকেন্ডে ইপক টাইমস্ট্যাম্প
ইভেন্ট মোড প্রয়োজনীয়

অনুষ্ঠানটি ভার্চুয়াল, সশরীরে নাকি উভয়ই হবে, তা নির্দেশ করার জন্য একটি ক্ষেত্র।

Enum: ভার্চুয়াল, সশরীরে, অথবা হাইব্রিড
অবস্থান - দেশ শর্তসাপেক্ষে আবশ্যক

যে দেশে অনুষ্ঠানটি অনুষ্ঠিত হচ্ছে।

দ্রষ্টব্য: যেসব অনুষ্ঠান সরাসরি উপস্থিতিতে (IN_PERSON) অথবা হাইব্রিড (HYBRID) পদ্ধতিতে অনুষ্ঠিত হয়, সেগুলোর জন্য এটি আবশ্যক।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ প্রায় ২০ অক্ষর

অবস্থান - শহর শর্তসাপেক্ষে আবশ্যক

যে শহরে অনুষ্ঠানটি অনুষ্ঠিত হচ্ছে।

দ্রষ্টব্য: যেসব অনুষ্ঠান সরাসরি উপস্থিতিতে (IN_PERSON) অথবা হাইব্রিড (HYBRID) পদ্ধতিতে অনুষ্ঠিত হয়, সেগুলোর জন্য এটি আবশ্যক।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ প্রায় ২০ অক্ষর

অবস্থান - ঠিকানা প্রদর্শন করুন শর্তসাপেক্ষে আবশ্যক

অনুষ্ঠানটি যে ঠিকানায় বা স্থানে অনুষ্ঠিত হবে, তা ব্যবহারকারীকে দেখানো উচিত।

দ্রষ্টব্য: যেসব অনুষ্ঠান সরাসরি উপস্থিতিতে (IN_PERSON) অথবা হাইব্রিড (HYBRID) পদ্ধতিতে অনুষ্ঠিত হয়, সেগুলোর জন্য এটি আবশ্যক।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ প্রায় ২০ অক্ষর

অবস্থান - রাস্তার ঠিকানা ঐচ্ছিক যে স্থানে অনুষ্ঠানটি আয়োজন করা হচ্ছে, সেই স্থানের রাস্তার ঠিকানা (যদি প্রযোজ্য হয়)।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ প্রায় ২০ অক্ষর

অবস্থান - রাজ্য ঐচ্ছিক যে রাজ্য বা প্রদেশে (প্রযোজ্য ক্ষেত্রে) অনুষ্ঠানটি আয়োজিত হচ্ছে।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ প্রায় ২০ অক্ষর

অবস্থান - জিপ কোড ঐচ্ছিক যে স্থানে অনুষ্ঠানটি আয়োজন করা হচ্ছে, সেই স্থানের জিপ কোড (যদি প্রযোজ্য হয়)।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ প্রায় ২০ অক্ষর

অবস্থান - এলাকা ঐচ্ছিক যে এলাকায় (প্রযোজ্য ক্ষেত্রে) অনুষ্ঠানটি আয়োজন করা হচ্ছে।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ প্রায় ২০ অক্ষর

পোস্টারের ছবি ঐচ্ছিক

একাধিক ছবি দেওয়া হলে আমরা কেবল ১টি ছবিই দেখাব। প্রস্তাবিত অ্যাসপেক্ট রেশিও হলো ১৬:৯।

দ্রষ্টব্য: ছবি ব্যবহার করা বিশেষভাবে বাঞ্ছনীয়। যদি ব্যাজ প্রদান করা হয়, তবে অনুগ্রহ করে ছবির উপরে এবং নীচে ২৪ ডিপিএস-এর নিরাপদ স্থান নিশ্চিত করুন।

নির্দেশনার জন্য ছবির বিবরণ দেখুন।
শেষ সময় ঐচ্ছিক

যে ইপক টাইমস্ট্যাম্পে ইভেন্টটি শেষ হওয়ার কথা।

দ্রষ্টব্য: এটি মিলিসেকেন্ডে প্রকাশ করা হবে।

মিলিসেকেন্ডে ইপক টাইমস্ট্যাম্প
পরিষেবা প্রদানকারী - নাম ঐচ্ছিক

সেবা প্রদানকারীর নাম।

দ্রষ্টব্য: পরিষেবা প্রদানকারীর জন্য হয় লেখা অথবা ছবি প্রয়োজন।

মুক্ত লেখা। যেমন, অনুষ্ঠান আয়োজক/ট্যুরের নাম।
পরিষেবা প্রদানকারী - ছবি ঐচ্ছিক

সেবা প্রদানকারীর লোগো/ছবি।

দ্রষ্টব্য: পরিষেবা প্রদানকারীর জন্য হয় লেখা অথবা ছবি প্রয়োজন।

নির্দেশনার জন্য ছবির বিবরণ দেখুন।
বর্ণনা ঐচ্ছিক

সত্তাটির বর্ণনা দেওয়ার জন্য একটিমাত্র অনুচ্ছেদ।

দ্রষ্টব্য: ব্যবহারকারীকে হয় বিবরণ অথবা উপশিরোনাম তালিকা দেখানো হবে, উভয়ই নয়।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: ১৮০ অক্ষর

সাবটাইটেল তালিকা ঐচ্ছিক

সর্বোচ্চ ৩টি সাবটাইটেল, এবং প্রতিটি সাবটাইটেল এক লাইনের লেখা হবে।

দ্রষ্টব্য: ব্যবহারকারীকে হয় বিবরণ অথবা উপশিরোনাম তালিকা দেখানো হবে, উভয়ই নয়।

মুক্ত পাঠ্য

প্রতিটি উপশিরোনামের জন্য প্রস্তাবিত লেখার আকার: সর্বোচ্চ ৫০ অক্ষর

ব্যাজ ঐচ্ছিক

প্রতিটি ব্যাজ হয় মুক্ত লেখা (সর্বোচ্চ ১৫ অক্ষর) অথবা একটি ছোট ছবি।

ব্যাজ - টেক্সট ঐচ্ছিক

ব্যাজের জন্য শিরোনাম

দ্রষ্টব্য: ব্যাজের জন্য লেখা অথবা ছবি যেকোনো একটি আবশ্যক।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: সর্বোচ্চ ১৫ অক্ষর

ব্যাজ - ছবি ঐচ্ছিক

ছোট ছবি

বিশেষ ইউএক্স ট্রিটমেন্ট, যেমন ছবি/ভিডিও থাম্বনেইলের উপর ব্যাজ ওভারলে হিসেবে।

দ্রষ্টব্য: ব্যাজের জন্য লেখা অথবা ছবি যেকোনো একটি আবশ্যক।

নির্দেশনার জন্য ছবির বিবরণ দেখুন।
রিজার্ভেশন আইডি ঐচ্ছিক ইভেন্ট রিজার্ভেশনের রিজার্ভেশন আইডি। মুক্ত পাঠ্য
মূল্য - বর্তমান মূল্য শর্তসাপেক্ষে আবশ্যক

অনুষ্ঠানটির টিকিট/পাসের বর্তমান মূল্য।

যদি কেটে দেওয়া মূল্য প্রদান করা হয়, তবে এটি অবশ্যই প্রদান করতে হবে।

মুক্ত পাঠ্য
মূল্য - কাটা-চিহ্নিত মূল্য ঐচ্ছিক অনুষ্ঠানটির টিকিট/পাসের মূল মূল্য। মুক্ত পাঠ্য
মূল্য ঘোষণা ঐচ্ছিক কোনো প্রোমো, ইভেন্ট বা সদস্য ছাড় (যদি থাকে) তুলে ধরতে মূল্য উল্লেখ করা হবে।

মুক্ত পাঠ্য

প্রস্তাবিত লেখার আকার: ৪৫ অক্ষরের কম (অতিরিক্ত দীর্ঘ লেখার শেষে ডট ডট চিহ্ন দেখা যেতে পারে)

রেটিং - সর্বোচ্চ মান ঐচ্ছিক

রেটিং স্কেলের সর্বোচ্চ মান।

রেটিং-এর বর্তমান মান প্রদান করা হলে এটিও অবশ্যই প্রদান করতে হবে।

সংখ্যা >= ০.০
রেটিং - বর্তমান মান ঐচ্ছিক

রেটিং স্কেলের বর্তমান মান।

রেটিং-এর সর্বোচ্চ মান প্রদান করা হলে এটিও অবশ্যই প্রদান করতে হবে।

সংখ্যা >= ০.০
রেটিং - গণনা ঐচ্ছিক

ইভেন্টটির রেটিং সংখ্যা।

দ্রষ্টব্য: আপনার অ্যাপ যদি ব্যবহারকারীদের কাছে এটি কীভাবে প্রদর্শিত হবে তা নিয়ন্ত্রণ করতে চায়, তবে এই ফিল্ডটি প্রদান করুন। অনুগ্রহ করে এমন একটি সংক্ষিপ্ত স্ট্রিং প্রদান করুন যা ব্যবহারকারীকে দেখানো যেতে পারে। উদাহরণস্বরূপ, যদি সংখ্যাটি 1,000,000 হয়, তাহলে 1M-এর মতো সংক্ষিপ্ত রূপ ব্যবহার করার কথা বিবেচনা করুন, যাতে এটি ছোট ডিসপ্লে আকারে কেটে না যায়।

স্ট্রিং
রেটিং - গণনার মান ঐচ্ছিক

ইভেন্টটির রেটিং সংখ্যা।

দ্রষ্টব্য: আপনি যদি প্রদর্শনের সংক্ষিপ্ত রূপের লজিক নিজে পরিচালনা করতে না চান, তবে এই ফিল্ডটি প্রদান করুন। যদি Count এবং Count Value উভয়ই উপস্থিত থাকে, তবে আমরা ব্যবহারকারীদের দেখানোর জন্য Count ব্যবহার করব।

দীর্ঘ
বিষয়বস্তুর বিভাগ ঐচ্ছিক সত্তাটির বিষয়বস্তুর শ্রেণি বর্ণনা করুন।

যোগ্য এনামের তালিকা

  • চলচ্চিত্র ও টিভি অনুষ্ঠানের ধরণ (উদাহরণ - সিনেমা)
  • ডিজিটাল গেমসের ধরণ (উদাহরণ - ই-স্পোর্টস)
  • সঙ্গীতের ধরণ (উদাহরণ - কনসার্ট)
  • ভ্রমণ ও স্থানীয় ধরন (উদাহরণ - ট্যুর, উৎসব)
  • স্বাস্থ্য ও ফিটনেসের ধরণ (উদাহরণ - যোগ ক্লাস)
  • শিক্ষার ধরণ (উদাহরণ - শ্রেণী)
  • খেলাধুলার ধরণ (উদাহরণ - ফুটবল খেলা)
  • ডেটিংয়ের ধরণ (উদাহরণ - মিটআপ)

নির্দেশনার জন্য বিষয়বস্তুর শ্রেণীবিভাগ দেখুন।

ছবির স্পেসিফিকেশন

ইমেজ অ্যাসেটগুলির জন্য প্রয়োজনীয় স্পেসিফিকেশনগুলি এই টেবিলে তালিকাভুক্ত করা হয়েছে:

আকৃতির অনুপাত সর্বনিম্ন পিক্সেল প্রস্তাবিত পিক্সেল

বর্গক্ষেত্র (১x১)

পছন্দের

৩০০x৩০০ ১২০০x১২০০
ভূদৃশ্য (১.৯১x১) ৬০০x৩১৪ ১২০০x৬২৮
প্রতিকৃতি (৪x৫) ৪৮০x৬০০ ৯৬০x১২০০

ছবিগুলো পাবলিক সিডিএন-এ হোস্ট করা প্রয়োজন, যাতে গুগল সেগুলোতে অ্যাক্সেস করতে পারে।

ফাইল ফরম্যাট

PNG, JPG, স্ট্যাটিক GIF, WebP

সর্বোচ্চ ফাইলের আকার

৫১২০ কেবি

অতিরিক্ত সুপারিশ

  • ছবির নিরাপদ এলাকা: আপনার গুরুত্বপূর্ণ বিষয়বস্তু ছবির মাঝের ৮০% অংশে রাখুন।
  • একটি স্বচ্ছ ব্যাকগ্রাউন্ড ব্যবহার করুন, যাতে ছবিটি ডার্ক এবং লাইট থিম সেটিংসে সঠিকভাবে প্রদর্শিত হয়।

বিষয়বস্তুর বিভাগ

কন্টেন্ট ক্যাটাগরি অ্যাপগুলোকে একাধিক ক্যাটাগরির অন্তর্ভুক্ত কন্টেন্ট প্রকাশ করার সুযোগ দেয়। এটি কন্টেন্টকে কিছু পূর্বনির্ধারিত ক্যাটাগরির সাথে সংযুক্ত করে, যথা:

  • 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

ছবিগুলো পাবলিক সিডিএন-এ হোস্ট করা প্রয়োজন, যাতে গুগল সেগুলোতে অ্যাক্সেস করতে পারে।

বিষয়বস্তুর বিভাগগুলি ব্যবহারের নির্দেশিকা

  1. ArticleEntity এবং GenericFeaturedEntity- এর মতো কিছু এনটিটি যেকোনো কন্টেন্ট ক্যাটাগরি ব্যবহার করার যোগ্য। EventEntity , EventReservationEntity , PersonEntity- এর মতো অন্যান্য এনটিটিগুলোর জন্য, এই ক্যাটাগরিগুলোর শুধুমাত্র একটি উপসেট যোগ্য। তালিকাটি পূরণ করার আগে কোনো এনটিটি টাইপের জন্য যোগ্য ক্যাটাগরিগুলোর তালিকা দেখে নিন।
  2. কিছু কন্টেন্ট ক্যাটাগরির জন্য জেনেরিক এনটিটি এবং কন্টেন্টক্যাটাগরির সংমিশ্রণের পরিবর্তে নির্দিষ্ট এনটিটি টাইপ ব্যবহার করুন:

    • TYPE_MOVIES_AND_TV_SHOWS - জেনেরিক এনটিটিগুলো ব্যবহার করার আগে ওয়াচ ইন্টিগ্রেশন গাইড থেকে এনটিটিগুলো দেখে নিন।
    • TYPE_BOOKS - জেনেরিক এনটিটিগুলো ব্যবহার করার আগে EbookEntity- টি যাচাই করে নিন।
    • TYPE_AUDIOBOOKS - জেনেরিক এনটিটিগুলো ব্যবহার করার আগে AudiobookEntity দেখে নিন।
    • TYPE_SHOPPING - জেনেরিক এনটিটিগুলো ব্যবহার করার আগে ShoppingEntity দেখে নিন।
    • TYPE_FOOD_AND_DRINK - জেনেরিক এনটিটিগুলো ব্যবহার করার আগে ফুড ইন্টিগ্রেশন গাইড থেকে এনটিটিগুলো দেখে নিন।
  3. ContentCategory ফিল্ডটি ঐচ্ছিক এবং কন্টেন্টটি পূর্বে উল্লিখিত কোনো ক্যাটাগরির অন্তর্ভুক্ত না হলে এটি খালি রাখা উচিত।

  4. একাধিক কন্টেন্ট ক্যাটাগরি দেওয়া থাকলে, কন্টেন্টের প্রাসঙ্গিকতা অনুসারে সেগুলোকে সাজান এবং সবচেয়ে প্রাসঙ্গিক ক্যাটাগরিটি তালিকার প্রথমে রাখুন।

ধাপ ২: ক্লাস্টার ডেটা প্রদান করুন

কন্টেন্ট প্রকাশের কাজটি ব্যাকগ্রাউন্ডে (যেমন, WorkManager ব্যবহার করে) সম্পাদন করার এবং নিয়মিতভাবে বা কোনো নির্দিষ্ট ইভেন্টের ভিত্তিতে (যেমন, প্রতিবার ব্যবহারকারী অ্যাপটি খুললে বা কার্টে কিছু যোগ করলে) শিডিউল করার পরামর্শ দেওয়া হয়।

AppEngagePublishClient ক্লাস্টার প্রকাশ করার জন্য দায়ী।

ক্লায়েন্টে ক্লাস্টার প্রকাশ করার জন্য নিম্নলিখিত API গুলো রয়েছে:

  • isServiceAvailable
  • publishRecommendationClusters
  • publishFeaturedCluster
  • publishContinuationCluster
  • publishUserAccountManagementRequest
  • updatePublishStatus
  • deleteRecommendationsClusters
  • deleteFeaturedCluster
  • deleteContinuationCluster
  • deleteUserManagementCluster
  • deleteClusters

isServiceAvailable

পরিষেবাটি ইন্টিগ্রেশনের জন্য উপলব্ধ কিনা এবং কন্টেন্টটি ডিভাইসে প্রদর্শন করা যাবে কিনা, তা যাচাই করতে এই এপিআইটি ব্যবহৃত হয়।

কোটলিন

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 অবজেক্টগুলোর একটি তালিকা প্রকাশ করতে ব্যবহৃত হয়।

কোটলিন

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

এই এপিআইটি 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

এই এপিআইটি একটি 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

এই এপিআইটি একটি সাইন ইন কার্ড প্রকাশ করতে ব্যবহৃত হয়। সাইন ইন অ্যাকশনটি ব্যবহারকারীদের অ্যাপের সাইন ইন পৃষ্ঠায় নিয়ে যায়, যাতে অ্যাপটি কন্টেন্ট প্রকাশ করতে (বা আরও ব্যক্তিগতকৃত কন্টেন্ট সরবরাহ করতে) পারে।

নিম্নলিখিত মেটাডেটা সাইন ইন কার্ডের একটি অংশ -

বৈশিষ্ট্য প্রয়োজনীয়তা বর্ণনা
অ্যাকশন উরি প্রয়োজনীয় অ্যাকশনের জন্য ডিপলিঙ্ক (অর্থাৎ অ্যাপ সাইন ইন পেজে নিয়ে যায়)
ছবি ঐচ্ছিক - প্রদান করা না হলে, শিরোনাম অবশ্যই প্রদান করতে হবে।

কার্ডে দেখানো ছবি

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

যদি কোনো অভ্যন্তরীণ ব্যবসায়িক কারণে কোনো ক্লাস্টারই প্রকাশিত না হয়, তাহলে আমরা 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

যদি কোনো ব্যবহারকারী লগ ইন না করার কারণে কন্টেন্টটি প্রকাশিত না হয়, তাহলে গুগল সাইন ইন কার্ডটি প্রকাশ করার পরামর্শ দেবে। যদি কোনো কারণে প্রোভাইডাররা সাইন ইন কার্ডটি প্রকাশ করতে না পারেন, তাহলে আমরা 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

এই এপিআইটি রিকমেন্ডেশন ক্লাস্টারগুলোর কন্টেন্ট মুছে ফেলার জন্য ব্যবহৃত হয়।

কোটলিন

client.deleteRecommendationClusters()

জাভা

client.deleteRecommendationClusters();

সার্ভিসটি অনুরোধটি গ্রহণ করলে, এটি রিকমেন্ডেশন ক্লাস্টারগুলো থেকে বিদ্যমান ডেটা মুছে ফেলে। কোনো ত্রুটির ক্ষেত্রে, সম্পূর্ণ অনুরোধটি প্রত্যাখ্যান করা হয় এবং বিদ্যমান অবস্থা বজায় রাখা হয়।

deleteFeaturedCluster

এই এপিআইটি ফিচার্ড ক্লাস্টারের কন্টেন্ট মুছে ফেলার জন্য ব্যবহৃত হয়।

কোটলিন

client.deleteFeaturedCluster()

জাভা

client.deleteFeaturedCluster();

সার্ভিসটি অনুরোধটি গ্রহণ করলে, এটি ফিচার্ড ক্লাস্টার থেকে বিদ্যমান ডেটা মুছে ফেলে। কোনো ত্রুটির ক্ষেত্রে, সম্পূর্ণ অনুরোধটি প্রত্যাখ্যান করা হয় এবং বিদ্যমান অবস্থা বজায় রাখা হয়।

deleteContinuationCluster

এই এপিআইটি কন্টিনিউয়েশন ক্লাস্টারের কন্টেন্ট মুছে ফেলার জন্য ব্যবহৃত হয়।

কোটলিন

client.deleteContinuationCluster()

জাভা

client.deleteContinuationCluster();

সার্ভিসটি অনুরোধটি গ্রহণ করলে, এটি কন্টিনিউয়েশন ক্লাস্টার থেকে বিদ্যমান ডেটা মুছে ফেলে। কোনো ত্রুটির ক্ষেত্রে, সম্পূর্ণ অনুরোধটি প্রত্যাখ্যান করা হয় এবং বিদ্যমান অবস্থা বজায় রাখা হয়।

deleteUserManagementCluster

এই এপিআইটি UserAccountManagement ক্লাস্টারের বিষয়বস্তু মুছে ফেলার জন্য ব্যবহৃত হয়।

কোটলিন

client.deleteUserManagementCluster()

জাভা

client.deleteUserManagementCluster();

সার্ভিসটি অনুরোধটি গ্রহণ করলে, এটি UserAccountManagement ক্লাস্টার থেকে বিদ্যমান ডেটা মুছে ফেলে। কোনো ত্রুটির ক্ষেত্রে, সম্পূর্ণ অনুরোধটি প্রত্যাখ্যান করা হয় এবং বিদ্যমান অবস্থা বজায় রাখা হয়।

deleteClusters

এই এপিআইটি একটি নির্দিষ্ট ক্লাস্টার টাইপের কন্টেন্ট মুছে ফেলার জন্য ব্যবহৃত হয়।

কোটলিন

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());

When the service receives the request, it removes the existing data from all clusters matching the specified cluster types. Clients can choose to pass one or many cluster types. In case of an error, the entire request is rejected and the existing state is maintained.

Error handling

It is highly recommended to listen to the task result from the publish APIs such that a follow-up action can be taken to recover and resubmit an successful task.

কোটলিন

client.publishRecommendationClusters(
        PublishRecommendationClustersRequest.Builder()
          .addRecommendationCluster(..)
          .build())
      .addOnCompleteListener { task ->
        if (task.isSuccessful) {
          // do something
        } else {
          val exception = task.exception
          if (exception is AppEngageException) {
            @AppEngageErrorCode val errorCode = exception.errorCode
            if (errorCode == AppEngageErrorCode.SERVICE_NOT_FOUND) {
              // do something
            }
          }
        }
      }

জাভা

client.publishRecommendationClusters(
              new PublishRecommendationClustersRequest.Builder()
                  .addRecommendationCluster(...)
                  .build())
          .addOnCompleteListener(
              task -> {
                if (task.isSuccessful()) {
                  // do something
                } else {
                  Exception exception = task.getException();
                  if (exception instanceof AppEngageException) {
                    @AppEngageErrorCode
                    int errorCode = ((AppEngageException) exception).getErrorCode();
                    if (errorCode == AppEngageErrorCode.SERVICE_NOT_FOUND) {
                      // do something
                    }
                  }
                }
              });

The error is returned as an AppEngageException with the cause included as an error code.

ত্রুটি কোড Error name দ্রষ্টব্য
1 SERVICE_NOT_FOUND The service is not available on the given device.
2 SERVICE_NOT_AVAILABLE The service is available on the given device, but it is not available at the time of the call (for example, it is explicitly disabled).
3 SERVICE_CALL_EXECUTION_FAILURE The task execution failed due to threading issues. In this case, it can be retried.
4 SERVICE_CALL_PERMISSION_DENIED The caller is not allowed to make the service call.
5 SERVICE_CALL_INVALID_ARGUMENT The request contains invalid data (for example, more than the allowed number of clusters).
6 SERVICE_CALL_INTERNAL There is an error on the service side.
7 SERVICE_CALL_RESOURCE_EXHAUSTED The service call is made too frequently.

Step 3: Handle broadcast intents

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

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

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

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

কোটলিন

class AppEngageBroadcastReceiver : BroadcastReceiver(){
  // Trigger recommendation cluster publish when PUBLISH_RECOMMENDATION broadcast
  // is received
  // Trigger featured cluster publish when PUBLISH_FEATURED broadcast is received
  // Trigger 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 your AndroidManifest.xml file. This allows the application to receive broadcast intents when it is not running, and also allows the application to publish the content.

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

Integration workflow

For a step-by-step guide on verifying your integration after it is complete, see Engage developer integration workflow .

প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী

See Engage SDK Frequently Asked Questions for FAQs.

যোগাযোগ করুন

Contact engage-developers@google.com if there are any questions during the integration process.

পরবর্তী পদক্ষেপ

After completing this integration, your next steps are as follows:

  • Send an email to engage-developers@google.com and attach your integrated APK that is ready for testing by Google.
  • Google performs a verification and reviews internally to make sure the integration works as expected. If changes are needed, Google contacts you with any necessary details.
  • When testing is complete and no changes are needed, Google contacts you to notify you that you can start publishing the updated and integrated APK to the Play Store.
  • After Google has confirmed that your updated APK has been published to the Play Store, your Recommendation , Featured , and Continuation clusters may be published and visible to users.