Engage SDK স্বাস্থ্য ও ফিটনেস: থার্ড-পার্টি টেকনিক্যাল ইন্টিগ্রেশন সংক্রান্ত নির্দেশাবলী

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

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

বিভাগ সংক্রান্ত সহায়তা ও সারফেস

Engage SDK সারফেসের উপযুক্ততা আপনার অ্যাপের কন্টেন্ট বিভাগের উপর নির্ভর করে। নির্দিষ্ট সারফেসে আপনার যোগ্যতা নির্ধারণ করতে নিম্নলিখিত টেবিল ব্যবহার করুন:

স্ট্যাটাস কন্টেন্ট বিভাগ বা ব্যবহারিক প্রয়োগ যেসব সারফেসে কাজ করে
কাজ করে
(সব সারফেসে উপযুক্ত)
  • শরীর ফিট রাখার প্রশিক্ষণ
  • ফিটনেস রুটিন
  • আরাম ও ধ্যান
  • রুট / ট্রেল খোঁজা
  • মিলের পরিকল্পনা
  • সংগ্রহ
  • Play Store অ্যাপ ট্যাব
  • Play Store-এর অ্যাকাউন্ট ট্যাব
  • Play Store-এর স্টোর লিস্টিং পৃষ্ঠা
কাজ করে না
  • বিএমআই ক্যালকুলেটর
  • শারীরিক অ্যাক্টিভিটি ট্র্যাকার / স্টেপ কাউন্টার
  • ক্যালোরি কাউন্টার
  • স্লিপ ট্র্যাকার
  • টুল / রিমোট
  • মেডিকেল সম্পর্কিত অ্যাপ

ইন্টিগ্রেশনের বিবরণ

এই বিভাগে স্বাস্থ্য ও ফিটনেস কন্টেন্টের জন্য Engage SDK-এর সাথে ইন্টিগ্রেট করার জন্য প্রয়োজনীয় ধাপ, ডেটা মডেল এবং পরিভাষা সম্পর্কে বিস্তারিত আলোচনা করা হয়েছে।

পরিভাষা

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

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

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

    আপনার সাজেশন নিম্নলিখিত স্ট্রাকচার অনুযায়ী তৈরি হয়:

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

    • এন্টিটি: ক্লাস্টারে একটি আইটেমকে উপস্থাপন করে এমন অবজেক্ট। এই ইন্টিগ্রেশন কিছু এন্টিটি অফার করে যা সাজেশন ক্লাস্টার ব্যবহার করে দেখানো হবে:

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

        ছবি ১: UI-তে সাজেশন ক্লাস্টারের মধ্যে একটি ArticleEntity দেখানো হচ্ছে।
      • PersonEntity: PersonEntity কোনও ব্যক্তিকে বোঝায়। সাজেশনে স্বাস্থ্য ও ফিটনেস সম্পর্কিত কোনও কোচ বা ব্যক্তির নাম হাইলাইট করা হতে পারে।

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

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

    আপনার কন্টিনিউয়েশন কন্টেন্টের স্ট্রাকচার নিম্নলিখিত হতে পারে:

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

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

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

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

      ছবি ১২: UI-তে ফিচার করা ক্লাস্টারের মধ্যে একটি GenericFeaturedEntity কার্ড দেখানো হচ্ছে

প্রি-ওয়ার্ক

ন্যূনতম API লেভেল: ১৯

আপনার অ্যাপে com.google.android.engage:engage-core লাইব্রেরি যোগ করুন:

dependencies {
    // Make sure you also include that repository in your project's build.gradle file.
    implementation 'com.google.android.engage:engage-core:1.6.0'
}

সারাংশ

ডিজাইনটি বাউন্ড পরিষেবার ইমপ্লিমেন্টেশনের উপর ভিত্তি করে তৈরি করা হয়েছে।

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

ক্লাস্টারের ধরন ক্লাস্টারের সীমা একটি ক্লাস্টারে এন্টিটির ন্যূনতম সীমা একটি ক্লাস্টারে সর্বাধিক এন্টিটি সীমা
সাজেশন ক্লাস্টার সর্বাধিক ৭টি অন্তত ১টি সর্বাধিক ৫০ (ArticleEntity, PersonEntity, অথবা EventEntity)
কন্টিনিউয়েশন ক্লাস্টার সর্বাধিক ১টি অন্তত ১টি সর্বাধিক ২০ (ArticleEntity, অথবা EventReservationEntity)
ফিচার করা ক্লাস্টার সর্বাধিক ১টি অন্তত ১টি সর্বাধিক ২০ (GenericFeaturedEntity)

ধাপ ১: এন্টিটি ডেটা প্রদান করুন

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

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

নিম্নলিখিত চার্টে প্রতিটি ধরনের জন্য উপলভ্য অ্যাট্রিবিউট ও প্রয়োজনীয়তার আউটলাইন দেওয়া আছে।

GenericFeaturedEntity

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

প্রদানকারীর অ্যাপে এন্টিটির ডিপ লিঙ্ক।

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

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

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

মনে রাখবেন: ব্যাজ দেওয়া হলে, ছবির উপরে ও নিচে ২৪ ডিপি নিরাপদ স্পেস আছে কিনা তা নিশ্চিত করুন

নির্দেশনার জন্য ছবির স্পেসিফিকেশন দেখুন।
শীর্ষক ঐচ্ছিক এন্টিটির শীর্ষক।

ফ্রি টেক্সট

সাজেস্ট করা টেক্সটের সাইজ: ৫০টি অক্ষর

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

এন্টিটির বিবরণ দিতে টেক্সটের একটি অনুচ্ছেদ।

মনে রাখবেন: ব্যবহারকারীকে বিবরণ অথবা সাবটাইটেল তালিকা দেখানো হবে, দুটি একসাথে দেখানো হবে না।

ফ্রি টেক্সট

সাজেস্ট করা টেক্সটের সাইজ: ১৮০টি অক্ষর

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

সর্বাধিক ৩টি সাবটাইটেল, প্রতিটি সাবটাইটেলে এক লাইনের টেক্সট থাকবে।

মনে রাখবেন: ব্যবহারকারীকে বিবরণ অথবা সাবটাইটেল তালিকা দেখানো হবে, দুটি একসাথে দেখানো হবে না।

ফ্রি টেক্সট

প্রতিটি সাবটাইটেলের জন্য সাজেস্ট করা টেক্সটের সাইজ: সর্বাধিক ৫০টি অক্ষর

ব্যাজগুলি ঐচ্ছিক

প্রতিটি ব্যাজ হয় ফ্রি টেক্সট (সর্বাধিক ১৫টি অক্ষর) অথবা ছোট ছবি।

ছবি/ভিডিওর উপরে বিশেষ UX ট্রিটমেন্ট, যেমন ছবির উপরে ব্যাজ ওভারলে

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

ব্যাজের শীর্ষক

মনে রাখবেন: ব্যাজের জন্য টেক্সট বা ছবি প্রয়োজন

ফ্রি টেক্সট

টেক্সটের সাজেস্ট করা সাইজ: সর্বাধিক ১৫টি অক্ষর

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

ছোট ছবি

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

মনে রাখবেন: ব্যাজের জন্য টেক্সট বা ছবি প্রয়োজন

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

Enum-এর তালিকা

নির্দেশিকার জন্য কন্টেন্ট বিভাগ দেখুন।

ArticleEntity

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

প্রদানকারীর অ্যাপে এন্টিটির ডিপ লিঙ্ক।

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

URI
শীর্ষক প্রয়োজনীয় এন্টিটির শীর্ষক।

ফ্রি টেক্সট

সাজেস্ট করা টেক্সটের সাইজ: সর্বাধিক ৫০টি অক্ষর

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

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

মনে রাখবেন: ছবি যোগ করতে বিশেষভাবে সাজেস্ট করা হয়। ব্যাজ দেওয়া হলে, ছবির উপরে ও নিচে ২৪ ডিপি নিরাপদ জায়গা আছে কিনা তা নিশ্চিত করুন

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

ফ্রি টেক্সট

সাজেস্ট করা টেক্সটের সাইজ: ২৫ অক্ষরের কম

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

এন্টিটির বিবরণ দিতে টেক্সটের একটি অনুচ্ছেদ।

মনে রাখবেন: ব্যবহারকারীকে বিবরণ অথবা সাবটাইটেল তালিকা দেখানো হবে, দুটি একসাথে দেখানো হবে না।

ফ্রি টেক্সট

সাজেস্ট করা টেক্সটের সাইজ: ১৮০টি অক্ষর

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

সর্বাধিক ৩টি সাবটাইটেল, প্রতিটি সাবটাইটেলে এক লাইনের টেক্সট থাকবে।

মনে রাখবেন: ব্যবহারকারীকে বিবরণ অথবা সাবটাইটেল তালিকা দেখানো হবে, দুটি একসাথে দেখানো হবে না।

ফ্রি টেক্সট

প্রতিটি সাবটাইটেলের জন্য সাজেস্ট করা টেক্সটের সাইজ: সর্বাধিক ৫০টি অক্ষর

ব্যাজগুলি ঐচ্ছিক

প্রতিটি ব্যাজ হয় ফ্রি টেক্সট (সর্বাধিক ১৫টি অক্ষর) অথবা ছোট ছবি।

ছবি/ভিডিওর উপরে বিশেষ UX ট্রিটমেন্ট, যেমন ছবির উপরে ব্যাজ ওভারলে

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

ব্যাজের শীর্ষক

মনে রাখবেন: ব্যাজের জন্য টেক্সট বা ছবি প্রয়োজন

ফ্রি টেক্সট

টেক্সটের সাজেস্ট করা সাইজ: সর্বাধিক ১৫টি অক্ষর

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

ছোট ছবি

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

মনে রাখবেন: ব্যাজের জন্য টেক্সট বা ছবি প্রয়োজন

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

ব্যবহারকারী শেষবার এই এন্টিটির সাথে ইন্টার‍্যাক্ট করার সময় মিলিসেকেন্ডে ইপক টাইমস্ট্যাম্প।

মনে রাখবেন: এই এন্টিটি কন্টিনিউয়েশন ক্লাস্টারের অংশ হলে এই ফিল্ডটি পূরণ করতে হবে।

মিলিসেকেন্ডে Epoch টাইমস্ট্যাম্প
অগ্রগতির শতাংশ শর্তসাপেক্ষে প্রয়োজন

আজ পর্যন্ত ব্যবহারকারীর দ্বারা সম্পূর্ণ কন্টেন্ট ব্যবহারের শতাংশ।

মনে রাখবেন: এই এন্টিটি কন্টিনিউয়েশন ক্লাস্টারের অংশ হলে এই ফিল্ডটি পূরণ করতে হবে।

০~১০০-এর মধ্যে একটি int ভ্যালু।
কন্টেন্ট বিভাগ ঐচ্ছিক এন্টিটিতে কন্টেন্টের বিভাগ বর্ণনা করুন।

Enum-এর তালিকা

নির্দেশিকার জন্য কন্টেন্ট বিভাগ দেখুন।

PersonEntity

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

প্রদানকারীর অ্যাপে এন্টিটির ডিপ লিঙ্ক।

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

URI
প্রোফাইল - নাম প্রয়োজনীয় প্রোফাইলের নাম বা আইডি বা হ্যান্ডেল, যেমন "John Doe", "@TeamPixel" ইত্যাদি।

স্ট্রিং

সাজেস্ট করা টেক্সটের সাইজ: সর্বাধিক ৫০টি অক্ষর

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

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

মনে রাখবেন:অবশ্যই বর্গাকার ১:১ ছবি হতে হবে।

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

ফ্রি টেক্সট

টেক্সটের সাজেস্ট করা সাইজ: সর্বাধিক ১৫টি অক্ষর

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

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

মনে রাখবেন: ছবি যোগ করতে বিশেষভাবে সাজেস্ট করা হয়। ব্যাজ দেওয়া হলে, ছবির উপরে ও নিচে ২৪ ডিপি নিরাপদ জায়গা আছে কিনা তা নিশ্চিত করুন

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

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

মনে রাখবেন: সংখ্যা ও সংখ্যার মান, দুটিই দেওয়া থাকলে, সংখ্যা ব্যবহার করা হবে

স্ট্রিং

সাজেস্ট করা টেক্সটের সাইজ: সংখ্যা + লেবেল মিলিয়ে সর্বাধিক ২০টি অক্ষর

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

ফলোয়ারের সংখ্যা বা জনপ্রিয়তার ভ্যালু।

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

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

স্ট্রিং

সাজেস্ট করা টেক্সটের সাইজ: সংখ্যা + লেবেল মিলিয়ে সর্বাধিক ২০টি অক্ষর

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

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

১টির বেশি ছবি দিতে পারেন, তবে সব ছবি সব ফর্ম ফ্যাক্টরে নাও দেখানো হতে পারে।

মনে রাখবেন: ছবি অবশ্যই ১:১ বর্গাকার হতে হবে

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

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

রেটিংয়ের বর্তমান ভ্যালু দেওয়া থাকলে এটিও দিতে হবে।

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

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

রেটিংয়ের সর্বাধিক মান দেওয়া থাকলে এটিও দিতে হবে।

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

সত্ত্বার জন্য রেটিংয়ের সংখ্যা।

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

স্ট্রিং
রেটিং - গণনা ভ্যালু ঐচ্ছিক

সত্ত্বার জন্য রেটিংয়ের সংখ্যা।

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

দীর্ঘ
লোকেশন - দেশ ঐচ্ছিক যে দেশে ব্যক্তিটি অবস্থিত বা পরিষেবা দিচ্ছেন।

ফ্রি টেক্সট

সাজেস্ট করা টেক্সটের সাইজ: সর্বাধিক ~২০টি অক্ষর

লোকেশন - শহর ঐচ্ছিক যে শহরে ব্যক্তিটি থাকেন বা পরিষেবা দেন।

ফ্রি টেক্সট

সাজেস্ট করা টেক্সটের সাইজ: সর্বাধিক ~২০টি অক্ষর

লোকেশন - ঠিকানা দেখান ঐচ্ছিক যে ঠিকানায় ব্যক্তিটি আছেন বা পরিষেবা দিচ্ছেন সেটি ব্যবহারকারীকে দেখানো হবে।

ফ্রি টেক্সট

সাজেস্ট করা টেক্সটের সাইজ: সর্বাধিক ~২০টি অক্ষর

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

ফ্রি টেক্সট

সাজেস্ট করা টেক্সটের সাইজ: সর্বাধিক ~২০টি অক্ষর

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

ফ্রি টেক্সট

সাজেস্ট করা টেক্সটের সাইজ: সর্বাধিক ~২০টি অক্ষর

লোকেশন - পিন কোড ঐচ্ছিক ব্যক্তিটি যেখানে থাকেন বা পরিষেবা দেন সেখানকার পিন কোড (প্রযোজ্য হলে)।

ফ্রি টেক্সট

সাজেস্ট করা টেক্সটের সাইজ: সর্বাধিক ~২০টি অক্ষর

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

ফ্রি টেক্সট

সাজেস্ট করা টেক্সটের সাইজ: সর্বাধিক ~২০টি অক্ষর

ব্যাজগুলি ঐচ্ছিক

প্রতিটি ব্যাজ হয় ফ্রি টেক্সট (সর্বাধিক ১৫টি অক্ষর) অথবা ছোট ছবি।

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

ব্যাজের শীর্ষক

মনে রাখবেন: ব্যাজের জন্য টেক্সট বা ছবি প্রয়োজন

ফ্রি টেক্সট

টেক্সটের সাজেস্ট করা সাইজ: সর্বাধিক ১৫টি অক্ষর

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

ছোট ছবি

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

মনে রাখবেন: ব্যাজের জন্য টেক্সট বা ছবি প্রয়োজন

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

এন্টিটির বিবরণ দিতে টেক্সটের একটি অনুচ্ছেদ।

মনে রাখবেন: ব্যবহারকারীকে বিবরণ অথবা সাবটাইটেল তালিকা দেখানো হবে, দুটি একসাথে দেখানো হবে না।

ফ্রি টেক্সট

সাজেস্ট করা টেক্সটের সাইজ: ১৮০টি অক্ষর

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

সর্বাধিক ৩টি সাবটাইটেল, প্রতিটি সাবটাইটেলে এক লাইনের টেক্সট থাকবে।

মনে রাখবেন: ব্যবহারকারীকে বিবরণ অথবা সাবটাইটেল তালিকা দেখানো হবে, দুটি একসাথে দেখানো হবে না।

ফ্রি টেক্সট

প্রতিটি সাবটাইটেলের জন্য সাজেস্ট করা টেক্সটের সাইজ: সর্বাধিক ৫০টি অক্ষর

কন্টেন্ট বিভাগ ঐচ্ছিক এন্টিটিতে কন্টেন্টের বিভাগ বর্ণনা করুন।

উপযুক্ত Enum-এর তালিকা

  • TYPE_HEALTH_AND_FITENESS (যেমন - যোগব্যায়াম/ফিটনেস ট্রেনার)
  • TYPE_HOME_AND_AUTO (উদাহরণ - প্লাম্বার)
  • TYPE_SPORTS (উদাহরণ - প্লেয়ার)
  • TYPE_DATING

নির্দেশিকার জন্য কন্টেন্ট বিভাগ দেখুন।

EventEntity

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

প্রদানকারীর অ্যাপে এন্টিটির ডিপ লিঙ্ক।

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

URI
শীর্ষক প্রয়োজনীয় এন্টিটির শীর্ষক।

স্ট্রিং

সাজেস্ট করা টেক্সটের সাইজ: সর্বাধিক ৫০টি অক্ষর

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

ইভেন্টটি কখন শুরু হবে বলে আশা করা হচ্ছে তার ইপোক টাইমস্ট্যাম্প।

মনে রাখবেন:এটি মিলিসেকেন্ডে দেখানো হবে।

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

ইভেন্টটি ভার্চুয়াল, ইন-পার্সন নাকি দুটিই হবে তা উল্লেখ করার জন্য একটি ফিল্ড।

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

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

মনে রাখবেন: ছবি যোগ করতে বিশেষভাবে সাজেস্ট করা হয়। ব্যাজ দেওয়া হলে, ছবির উপরে ও নিচে ২৪ ডিপি নিরাপদ জায়গা আছে কিনা তা নিশ্চিত করুন

নির্দেশনার জন্য ছবির স্পেসিফিকেশন দেখুন।
লোকেশন - দেশ শর্তসাপেক্ষে প্রয়োজন

যে দেশে ইভেন্টটি হচ্ছে।

মনে রাখবেন: এটি IN_PERSON বা HYBRID ইভেন্টের জন্য প্রয়োজনীয়

ফ্রি টেক্সট

সাজেস্ট করা টেক্সটের সাইজ: সর্বাধিক ~২০টি অক্ষর

লোকেশন - শহর শর্তসাপেক্ষে প্রয়োজন

যে শহরে ইভেন্টটি হচ্ছে।

মনে রাখবেন: এটি IN_PERSON বা HYBRID ইভেন্টের জন্য প্রয়োজন

ফ্রি টেক্সট

সাজেস্ট করা টেক্সটের সাইজ: সর্বাধিক ~২০টি অক্ষর

লোকেশন - ঠিকানা দেখান শর্তসাপেক্ষে প্রয়োজন

ইভেন্টটি যেখানে হবে সেই ঠিকানা বা জায়গার নাম যা ব্যবহারকারীকে দেখানো উচিত।

মনে রাখবেন: এটি IN_PERSON বা HYBRID ইভেন্টের জন্য প্রয়োজনীয়

ফ্রি টেক্সট

সাজেস্ট করা টেক্সটের সাইজ: সর্বাধিক ~২০টি অক্ষর

লোকেশন - রাস্তার ঠিকানা ঐচ্ছিক যে লোকেশনে ইভেন্ট হোস্ট করা হচ্ছে সেখানকার রাস্তার ঠিকানা (প্রযোজ্য হলে)।

ফ্রি টেক্সট

সাজেস্ট করা টেক্সটের সাইজ: সর্বাধিক ~২০টি অক্ষর

লোকেশন - রাজ্য ঐচ্ছিক যে রাজ্য বা প্রদেশে (প্রযোজ্য হলে) ইভেন্টটি হোস্ট করা হচ্ছে।

ফ্রি টেক্সট

সাজেস্ট করা টেক্সটের সাইজ: সর্বাধিক ~২০টি অক্ষর

লোকেশন - পিন কোড ঐচ্ছিক যে লোকেশনে ইভেন্ট হোস্ট করা হচ্ছে সেখানকার পিন কোড (যদি প্রযোজ্য হয়)।

ফ্রি টেক্সট

সাজেস্ট করা টেক্সটের সাইজ: সর্বাধিক ~২০টি অক্ষর

লোকেশন - আশেপাশের এলাকা ঐচ্ছিক যে এলাকায় (প্রযোজ্য হলে) ইভেন্টটি হোস্ট করা হচ্ছে।

ফ্রি টেক্সট

সাজেস্ট করা টেক্সটের সাইজ: সর্বাধিক ~২০টি অক্ষর

বন্ধ হওয়ার সময় ঐচ্ছিক

ইভেন্টটি কখন শেষ হবে বলে আশা করা হচ্ছে সেই ইপোক টাইমস্ট্যাম্প।

মনে রাখবেন:এটি মিলিসেকেন্ডে দেখানো হবে।

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

এন্টিটির বিবরণ দিতে টেক্সটের একটি অনুচ্ছেদ।

মনে রাখবেন: ব্যবহারকারীকে বিবরণ অথবা সাবটাইটেল তালিকা দেখানো হবে, দুটি একসাথে দেখানো হবে না।

ফ্রি টেক্সট

সাজেস্ট করা টেক্সটের সাইজ: ১৮০টি অক্ষর

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

সর্বাধিক ৩টি সাবটাইটেল, প্রতিটি সাবটাইটেলে এক লাইনের টেক্সট থাকবে।

মনে রাখবেন: ব্যবহারকারীকে বিবরণ অথবা সাবটাইটেল তালিকা দেখানো হবে, দুটি একসাথে দেখানো হবে না।

ফ্রি টেক্সট

প্রতিটি সাবটাইটেলের জন্য সাজেস্ট করা টেক্সটের সাইজ: সর্বাধিক ৫০টি অক্ষর

ব্যাজগুলি ঐচ্ছিক

প্রতিটি ব্যাজ হয় ফ্রি টেক্সট (সর্বাধিক ১৫টি অক্ষর) অথবা ছোট ছবি।

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

ব্যাজের শীর্ষক

মনে রাখবেন: ব্যাজের জন্য টেক্সট বা ছবি প্রয়োজন

ফ্রি টেক্সট

টেক্সটের সাজেস্ট করা সাইজ: সর্বাধিক ১৫টি অক্ষর

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

ছোট ছবি

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

মনে রাখবেন: ব্যাজের জন্য টেক্সট বা ছবি প্রয়োজন

নির্দেশনার জন্য ছবির স্পেসিফিকেশন দেখুন।
Price - CurrentPrice শর্তসাপেক্ষে প্রয়োজন

ইভেন্টের জন্য টিকিট/পাসের বর্তমান দাম।

স্ট্রাইকথ্রু দাম দেওয়া থাকলে এটি দিতেই হবে।

ফ্রি টেক্সট
Price - StrikethroughPrice ঐচ্ছিক ইভেন্টের জন্য টিকিট/পাসের আসল দাম। ফ্রি টেক্সট
দামের কলআউট ঐচ্ছিক প্রোমো, ইভেন্ট, মেম্বার ডিসকাউন্ট উপলভ্য থাকলে, তা ফিচার করার জন্য দামের কলআউট।

ফ্রি টেক্সট

সাজেস্ট করা টেক্সটের সাইজ: ৪৫ অক্ষরের কম (খুব বড় টেক্সট হলে উপবৃত্তাকার চিহ্ন দেখানো হতে পারে)

কন্টেন্ট বিভাগ ঐচ্ছিক এন্টিটিতে কন্টেন্টের বিভাগ বর্ণনা করুন।

উপযুক্ত Enum-এর তালিকা

  • TYPE_MOVIES_AND_TV_SHOWS (উদাহরণ - সিনেমা)
  • TYPE_DIGITAL_GAMES (যেমন - eSports)
  • TYPE_MUSIC (যেমন - কনসার্ট)
  • TYPE_TRAVEL_AND_LOCAL (যেমন - ট্যুর, উৎসব)
  • TYPE_HEALTH_AND_FITENESS (যেমন - যোগ ক্লাস)
  • TYPE_EDUCATION (উদাহরণ - ক্লাস)
  • TYPE_SPORTS (যেমন - ফুটবল খেলা)
  • TYPE_DATING (উদাহরণ - meetup)

নির্দেশিকার জন্য কন্টেন্ট বিভাগ দেখুন।

EventReservationEntity

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

প্রদানকারীর অ্যাপে এন্টিটির ডিপ লিঙ্ক।

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

URI
শীর্ষক প্রয়োজনীয় এন্টিটির শীর্ষক।

স্ট্রিং

সাজেস্ট করা টেক্সটের সাইজ: সর্বাধিক ৫০টি অক্ষর

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

ইভেন্টটি কখন শুরু হবে বলে আশা করা হচ্ছে তার ইপোক টাইমস্ট্যাম্প।

মনে রাখবেন:এটি মিলিসেকেন্ডে দেখানো হবে।

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

ইভেন্টটি ভার্চুয়াল, ইন-পার্সন নাকি দুটিই হবে তা উল্লেখ করার জন্য একটি ফিল্ড।

Enum: ভার্চুয়াল, ব্যক্তিগতভাবে বা হাইব্রিড
লোকেশন - দেশ শর্তসাপেক্ষে প্রয়োজন

যে দেশে ইভেন্টটি হচ্ছে।

মনে রাখবেন: এটি IN_PERSON বা HYBRID ইভেন্টের জন্য প্রয়োজনীয়

ফ্রি টেক্সট

সাজেস্ট করা টেক্সটের সাইজ: সর্বাধিক ~২০টি অক্ষর

লোকেশন - শহর শর্তসাপেক্ষে প্রয়োজন

যে শহরে ইভেন্টটি হচ্ছে।

মনে রাখবেন: এটি IN_PERSON বা HYBRID ইভেন্টের জন্য প্রয়োজন

ফ্রি টেক্সট

সাজেস্ট করা টেক্সটের সাইজ: সর্বাধিক ~২০টি অক্ষর

লোকেশন - ঠিকানা দেখান শর্তসাপেক্ষে প্রয়োজন

ইভেন্টটি যেখানে হবে সেই ঠিকানা বা জায়গার নাম যা ব্যবহারকারীকে দেখানো উচিত।

মনে রাখবেন: এটি IN_PERSON বা HYBRID ইভেন্টের জন্য প্রয়োজনীয়

ফ্রি টেক্সট

সাজেস্ট করা টেক্সটের সাইজ: সর্বাধিক ~২০টি অক্ষর

লোকেশন - রাস্তার ঠিকানা ঐচ্ছিক যে লোকেশনে ইভেন্ট হোস্ট করা হচ্ছে সেখানকার রাস্তার ঠিকানা (প্রযোজ্য হলে)।

ফ্রি টেক্সট

সাজেস্ট করা টেক্সটের সাইজ: সর্বাধিক ~২০টি অক্ষর

লোকেশন - রাজ্য ঐচ্ছিক যে রাজ্য বা প্রদেশে (প্রযোজ্য হলে) ইভেন্টটি হোস্ট করা হচ্ছে।

ফ্রি টেক্সট

সাজেস্ট করা টেক্সটের সাইজ: সর্বাধিক ~২০টি অক্ষর

লোকেশন - পিন কোড ঐচ্ছিক যে লোকেশনে ইভেন্ট হোস্ট করা হচ্ছে সেখানকার পিন কোড (যদি প্রযোজ্য হয়)।

ফ্রি টেক্সট

সাজেস্ট করা টেক্সটের সাইজ: সর্বাধিক ~২০টি অক্ষর

লোকেশন - আশেপাশের এলাকা ঐচ্ছিক যে এলাকায় (প্রযোজ্য হলে) ইভেন্টটি হোস্ট করা হচ্ছে।

ফ্রি টেক্সট

সাজেস্ট করা টেক্সটের সাইজ: সর্বাধিক ~২০টি অক্ষর

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

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

মনে রাখবেন: ছবি যোগ করতে বিশেষভাবে সাজেস্ট করা হয়। ব্যাজ দেওয়া হলে, ছবির উপরে ও নিচে ২৪ ডিপি নিরাপদ জায়গা আছে কিনা তা নিশ্চিত করুন

নির্দেশনার জন্য ছবির স্পেসিফিকেশন দেখুন।
বন্ধ হওয়ার সময় ঐচ্ছিক

ইভেন্টটি কখন শেষ হবে বলে আশা করা হচ্ছে সেই ইপোক টাইমস্ট্যাম্প।

মনে রাখবেন:এটি মিলিসেকেন্ডে দেখানো হবে।

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

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

মনে রাখবেন:পরিষেবা প্রদানকারীর জন্য টেক্সট বা ছবি প্রয়োজন।

ফ্রি টেক্সট। যেমন, ইভেন্ট আয়োজক/ট্যুরের নাম
পরিষেবা প্রদানকারী - ছবি ঐচ্ছিক

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

মনে রাখবেন:পরিষেবা প্রদানকারীর জন্য টেক্সট বা ছবি প্রয়োজন।

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

এন্টিটির বিবরণ দিতে টেক্সটের একটি অনুচ্ছেদ।

মনে রাখবেন: ব্যবহারকারীকে বিবরণ অথবা সাবটাইটেল তালিকা দেখানো হবে, দুটি একসাথে দেখানো হবে না।

ফ্রি টেক্সট

সাজেস্ট করা টেক্সটের সাইজ: ১৮০টি অক্ষর

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

সর্বাধিক ৩টি সাবটাইটেল, প্রতিটি সাবটাইটেলে এক লাইনের টেক্সট থাকবে।

মনে রাখবেন: ব্যবহারকারীকে বিবরণ অথবা সাবটাইটেল তালিকা দেখানো হবে, দুটি একসাথে দেখানো হবে না।

ফ্রি টেক্সট

প্রতিটি সাবটাইটেলের জন্য সাজেস্ট করা টেক্সটের সাইজ: সর্বাধিক ৫০টি অক্ষর

ব্যাজগুলি ঐচ্ছিক

প্রতিটি ব্যাজ হয় ফ্রি টেক্সট (সর্বাধিক ১৫টি অক্ষর) অথবা ছোট ছবি।

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

ব্যাজের শীর্ষক

মনে রাখবেন: ব্যাজের জন্য টেক্সট বা ছবি প্রয়োজন

ফ্রি টেক্সট

টেক্সটের সাজেস্ট করা সাইজ: সর্বাধিক ১৫টি অক্ষর

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

ছোট ছবি

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

মনে রাখবেন: ব্যাজের জন্য টেক্সট বা ছবি প্রয়োজন

নির্দেশনার জন্য ছবির স্পেসিফিকেশন দেখুন।
রিজার্ভেশন আইডি ঐচ্ছিক ইভেন্ট রিজার্ভেশনের জন্য রিজার্ভেশন আইডি। ফ্রি টেক্সট
Price - CurrentPrice শর্তসাপেক্ষে প্রয়োজন

ইভেন্টের জন্য টিকিট/পাসের বর্তমান দাম।

স্ট্রাইকথ্রু দাম দেওয়া থাকলে এটি দিতেই হবে।

ফ্রি টেক্সট
Price - StrikethroughPrice ঐচ্ছিক ইভেন্টের জন্য টিকিট/পাসের আসল দাম। ফ্রি টেক্সট
দামের কলআউট ঐচ্ছিক প্রোমো, ইভেন্ট, মেম্বার ডিসকাউন্ট উপলভ্য থাকলে, তা ফিচার করার জন্য দামের কলআউট।

ফ্রি টেক্সট

সাজেস্ট করা টেক্সটের সাইজ: ৪৫ অক্ষরের কম (খুব বড় টেক্সট হলে উপবৃত্তাকার চিহ্ন দেখানো হতে পারে)

রেটিং - সর্বোচ্চ ভ্যালু ঐচ্ছিক

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

রেটিংয়ের বর্তমান ভ্যালু দেওয়া থাকলে এটিও দিতে হবে।

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

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

রেটিংয়ের সর্বাধিক মান দেওয়া থাকলে এটিও দিতে হবে।

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

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

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

স্ট্রিং
রেটিং - গণনা ভ্যালু ঐচ্ছিক

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

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

দীর্ঘ
কন্টেন্ট বিভাগ ঐচ্ছিক এন্টিটিতে কন্টেন্টের বিভাগ বর্ণনা করুন।

উপযুক্ত Enum-এর তালিকা

  • TYPE_MOVIES_AND_TV_SHOWS (উদাহরণ - সিনেমা)
  • TYPE_DIGITAL_GAMES (যেমন - eSports)
  • TYPE_MUSIC (যেমন - কনসার্ট)
  • TYPE_TRAVEL_AND_LOCAL (যেমন - ট্যুর, উৎসব)
  • TYPE_HEALTH_AND_FITENESS (যেমন - যোগ ক্লাস)
  • TYPE_EDUCATION (উদাহরণ - ক্লাস)
  • TYPE_SPORTS (যেমন - ফুটবল খেলা)
  • TYPE_DATING (উদাহরণ - মিটআপ)

নির্দেশিকার জন্য কন্টেন্ট বিভাগ দেখুন।

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

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

অ্যাস্পেক্ট রেশিও ন্যূনতম পিক্সেল সাজেস্ট করা পিক্সেল

বর্গাকার (১x১)

পছন্দসই

৩০০x৩০০ ১২০০x১২০০
ল্যান্ডস্কেপ (১.৯১x১) ৬০০x৩১৪ ১২০০x৬২৮
পোর্ট্রেট (৪x৫) ৪৮০x৬০০ ৯৬০x১২০০

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

ফাইলের ফর্ম্যাট

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

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

কন্টেন্ট বিভাগ ব্যবহার করার নির্দেশিকা

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

    • 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

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

আপনি প্রকাশ করতে চান এমন প্রতিটি ক্লাস্টার প্রকারের জন্য পরিষেবার উপলভ্যতা চেক করতে পারেন। isServiceAvailable API একটি অনুরোধ অবজেক্ট গ্রহণ করে, ServiceAvailabilityRequest, যার মধ্যে ক্লাস্টার প্রকারগুলি রয়েছে যার জন্য পরিষেবা উপলভ্যতা চেক করা প্রয়োজন। ServiceAvailabilityRequest-এর জন্য প্রয়োজনীয় ClusterType এনাম ভ্যালু আপনি নিম্নলিখিত টেবিল থেকে খুঁজে পাবেন।

ক্লাস্টারের ধরন ক্লাস্টারের ধরন কনস্ট্যান্ট পূর্ণসংখ্যার মান
অজানা TYPE_UNKNOWN 0
সাজেশন ক্লাস্টার TYPE_RECOMMENDATION 1
ফিচার করা ক্লাস্টার TYPE_FEATURED 2
কন্টিনিউয়েশন ক্লাস্টার TYPE_CONTINUATION 3
ব্যবহারকারী ম্যানেজমেন্ট ক্লাস্টার TYPE_ENGAGEMENT 8
সাবস্ক্রিপশন ক্লাস্টার TYPE_SUBSCRIPTION 12

Kotlin

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

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

জাভা

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

client.isServiceAvailable(request).addOnCompleteListener(task -> {
    if (task.isSuccessful()) {
        Map<Integer, Boolean> availabilityMap = task.getResult();
        if (Boolean.TRUE.equals(availabilityMap.get(ClusterType.TYPE_CONTINUATION))) {
            // Proceed with publishing continuation content
        }
        if (Boolean.TRUE.equals(availabilityMap.get(ClusterType.TYPE_RECOMMENDATION))) {
            // Proceed with publishing recommendation content
        }
    } else {
        // The IPC call itself fails, proceed with error handling logic here,
        // such as retry.
    }
});
শর্তসাপেক্ষ পরিষেবা উপলভ্যতা ফিচার

কিছু ইন্টিগ্রেটেড অ্যাপ বিশেষ কনফিগারেশনের অনুরোধ করে যা খরচ কমানোর জন্য Engage পরিষেবা মাঝে মাঝে চালু ও বন্ধ করে। তবে, এই মাঝে মাঝে কন্টেন্ট ইনজেশন স্ট্র্যাটেজি ব্যবহারকারীর অভিজ্ঞতায় নেতিবাচক প্রভাব ফেলে: পুরনো কন্টেন্ট দেখানো হবে না এবং কিছু সারফেস পরিবেশন করা হবে না।

v1.6.0 থেকে শুরু করে, Engage SDK নির্দিষ্ট ক্লাস্টার ধরনের জন্য উপলভ্যতা চেক করার অনুমতি দেয়। আপনার অ্যাপ যদি মাঝে মাঝে ইনজেশন ব্যবহার করে:

  • কন্টিনিউয়েশন ক্লাস্টার (যেমন, পড়া চালিয়ে যাওয়া এবং ইভেন্ট রিজার্ভেশন) সব কাজ করে এমন ডিভাইসে ডিফল্ট হিসেবে চালু থাকে।
  • অন্যান্য ক্লাস্টারের ধরন (যেমন সাজেশন) মাঝে মাঝে চালু ও বন্ধ করা হয়।

এই ডিফল্ট কনফিগারেশন আপনার প্রয়োজন অনুযায়ী উপযুক্ত না হলে, engage-developers@google.com-এ যোগাযোগ করুন।

v1.6.0-এর আগের SDK ভার্সনের জন্য (বন্ধ হয়ে গেছে)

Kotlin

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 ব্যবহার করা হয়।

Kotlin

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

Kotlin

client.publishFeaturedCluster(
    PublishFeaturedClusterRequest.Builder()
      .setFeaturedCluster(
        FeaturedCluster.Builder()
          .addEntity(entity1)
          .addEntity(entity2)
          .build())
      .build())

জাভা

client.publishFeaturedCluster(
            new PublishFeaturedClusterRequest.Builder()
                .setFeaturedCluster(
                    new FeaturedCluster.Builder()
                        .addEntity(entity1)
                        .addEntity(entity2)
                        .build())
                .build());

পরিষেবাটি অনুরোধ পেলে, একটি ট্রানজ্যাকশনের মধ্যে নিম্নলিখিত অ্যাকশনগুলি নেওয়া হয়:

  • ডেভেলপার পার্টনারের থেকে পাওয়া আগে থেকে থাকা FeaturedCluster ডেটা সরিয়ে দেওয়া হয়েছে।
  • অনুরোধ থেকে পাওয়া ডেটা পার্স করা হয় এবং আপডেট করা ফিচার ক্লাস্টারে স্টোর করা হয়।

কোনও সমস্যা হলে, সম্পূর্ণ অনুরোধ বাতিল করা হয় এবং বর্তমান স্ট্যাটাস বজায় রাখা হয়।

publishContinuationCluster

এই API-এর মাধ্যমে ContinuationCluster অবজেক্ট প্রকাশ করা হয়।

Kotlin

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 ব্যবহার করে সাইন-ইন কার্ড প্রকাশ করা হয়। সাইন-ইন অ্যাকশন ব্যবহারকারীকে অ্যাপের সাইন-ইন পৃষ্ঠায় নিয়ে যায় যাতে অ্যাপটি কন্টেন্ট প্রকাশ করতে পারে (অথবা আরও পছন্দমতো কন্টেন্ট প্রদান করতে পারে)

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

অ্যাট্রিবিউট প্রয়োজনীয়তা বর্ণনা
অ্যাকশন Uri প্রয়োজনীয় অ্যাকশনের ডিপলিঙ্ক (যেমন, অ্যাপের সাইন-ইন পৃষ্ঠায় নেভিগেট করে)
ছবি ঐচ্ছিক - এটি না দিলে, শীর্ষক দিতেই হবে

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

১২৬৪x৭১২ রেজোলিউশন সহ ১৬x৯ অ্যাস্পেক্ট রেশিওর ছবি

শীর্ষক ঐচ্ছিক - এটি না দিলে, ছবি দিতেই হবে কার্ডে লেখা নাম
অ্যাকশন টেক্সট ঐচ্ছিক CTA-তে দেখানো টেক্সট (যেমন, সাইন-ইন করুন)
সাবটাইটেল ঐচ্ছিক কার্ডে ঐচ্ছিক সাবটাইটেল

Kotlin

var SIGN_IN_CARD_ENTITY =
      SignInCardEntity.Builder()
          .addPosterImage(
              Image.Builder()
                  .setImageUri(Uri.parse("http://www.x.com/image.png"))
                  .setImageHeightInPixel(500)
                  .setImageWidthInPixel(500)
                  .build())
          .setActionText("Sign In")
          .setActionUri(Uri.parse("http://xx.com/signin"))
          .build()

client.publishUserAccountManagementRequest(
            PublishUserAccountManagementRequest.Builder()
                .setSignInCardEntity(SIGN_IN_CARD_ENTITY)
                .build());

জাভা

SignInCardEntity SIGN_IN_CARD_ENTITY =
      new SignInCardEntity.Builder()
          .addPosterImage(
              new Image.Builder()
                  .setImageUri(Uri.parse("http://www.x.com/image.png"))
                  .setImageHeightInPixel(500)
                  .setImageWidthInPixel(500)
                  .build())
          .setActionText("Sign In")
          .setActionUri(Uri.parse("http://xx.com/signin"))
          .build();

client.publishUserAccountManagementRequest(
            new PublishUserAccountManagementRequest.Builder()
                .setSignInCardEntity(SIGN_IN_CARD_ENTITY)
                .build());

পরিষেবাটি অনুরোধ পেলে, একটি ট্রানজ্যাকশনের মধ্যে নিম্নলিখিত অ্যাকশনগুলি নেওয়া হয়:

  • ডেভেলপার পার্টনারের থেকে পাওয়া আগে থেকে থাকা UserAccountManagementCluster ডেটা সরিয়ে দেওয়া হয়েছে।
  • অনুরোধ থেকে পাওয়া ডেটা পার্স করা হয় এবং আপডেট করা UserAccountManagementCluster ক্লাস্টারে স্টোর করা হয়।

কোনও সমস্যা হলে, সম্পূর্ণ অনুরোধ বাতিল করা হয় এবং বর্তমান স্ট্যাটাস বজায় রাখা হয়।

updatePublishStatus

কোনও অভ্যন্তরীণ ব্যবসায়িক কারণে, কোনও ক্লাস্টার প্রকাশ করা না হলে, আমরা আপনাকে সাজেস্ট করছি যে আপনি যেন updatePublishStatus API ব্যবহার করে প্রকাশের স্ট্যাটাস আপডেট করেন। এটি গুরুত্বপূর্ণ কারণ :

  • কন্টেন্ট প্রকাশিত হলেও (STATUS == PUBLISHED), সব পরিস্থিতিতে স্ট্যাটাস প্রদান করা গুরুত্বপূর্ণ, যাতে ড্যাশবোর্ডগুলি আপনার ইন্টিগ্রেশনের স্বাস্থ্য এবং অন্যান্য মেট্রিক্স জানাতে এই স্পষ্ট স্ট্যাটাস ব্যবহার করতে পারে।
  • কোনও কন্টেন্ট প্রকাশ করা না হলেও ইন্টিগ্রেশন স্ট্যাটাস যদি ঠিক থাকে (STATUS == NOT_PUBLISHED), Google অ্যাপের হেলথ ড্যাশবোর্ডে অ্যালার্ট ট্রিগার করা এড়াতে পারে। এটি নিশ্চিত করে যে প্রদানকারীর দৃষ্টিকোণ থেকে একটি প্রত্যাশিত পরিস্থিতির কারণে কন্টেন্ট প্রকাশ করা হয়নি।
  • এটি ডেভেলপারদের ডেটা কখন প্রকাশিত হয় বনাম কখন হয় না সে সম্পর্কে ইনসাইট প্রদান করতে সাহায্য করে।
  • 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 কল করার সাজেশন দিই।

Kotlin

client.updatePublishStatus(
   PublishStatusRequest.Builder()
     .setStatusCode(AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN)
     .build())

জাভা

client.updatePublishStatus(
    new PublishStatusRequest.Builder()
        .setStatusCode(AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN)
        .build());

deleteRecommendationsClusters

এই API-এর মাধ্যমে সাজেশন ক্লাস্টারের কন্টেন্ট মুছে ফেলা হয়।

Kotlin

client.deleteRecommendationsClusters()

জাভা

client.deleteRecommendationsClusters();

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

deleteFeaturedCluster

ফিচার করা ক্লাস্টারের কন্টেন্ট মুছে দিতে এই API ব্যবহার করা হয়।

Kotlin

client.deleteFeaturedCluster()

জাভা

client.deleteFeaturedCluster();

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

deleteContinuationCluster

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

Kotlin

client.deleteContinuationCluster()

জাভা

client.deleteContinuationCluster();

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

deleteUserManagementCluster

UserAccountManagement ক্লাস্টারের কন্টেন্ট মুছে ফেলার জন্য এই API ব্যবহার করা হয়।

Kotlin

client.deleteUserManagementCluster()

জাভা

client.deleteUserManagementCluster();

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

deleteClusters

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

Kotlin

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

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

সমস্যা ম্যানেজ করা

প্রকাশিত API থেকে টাস্কের ফলাফল শোনার জন্য অত্যন্ত সাজেস্ট করা হয় যাতে একটি সফল টাস্ক রিকভার ও আবার জমা দেওয়ার জন্য ফলো-আপ অ্যাকশন নেওয়া যেতে পারে।

Kotlin

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

সমস্যাটি AppEngageException হিসেবে দেখানো হয় এবং এর কারণ হিসেবে সমস্যার কোড উল্লেখ করা থাকে।

সমস্যার কোড সমস্যার নাম মনে রাখবেন
1 SERVICE_NOT_FOUND প্রদত্ত ডিভাইসে পরিষেবাটি উপলভ্য নয়।
2 SERVICE_NOT_AVAILABLE পরিষেবাটি প্রদত্ত ডিভাইসে উপলভ্য, তবে কল করার সময় এটি উপলভ্য নয় (যেমন, এটি স্পষ্টভাবে বন্ধ করা আছে)।
3 SERVICE_CALL_EXECUTION_FAILURE থ্রেডিং সংক্রান্ত সমস্যার কারণে টাস্ক এক্সিকিউট করা যায়নি। এই ক্ষেত্রে, এটি আবার চেষ্টা করা যেতে পারে।
4 SERVICE_CALL_PERMISSION_DENIED কলারকে পরিষেবা কল করার অনুমতি দেওয়া হয়নি।
5 SERVICE_CALL_INVALID_ARGUMENT অনুরোধে ভুল ডেটা আছে (যেমন, অনুমোদিত ক্লাস্টারের সংখ্যার চেয়ে বেশি)।
6 SERVICE_CALL_INTERNAL পরিষেবার দিকে কোনও সমস্যা হয়েছে।
7 SERVICE_CALL_RESOURCE_EXHAUSTED পরিষেবা কল খুব ঘন ঘন করা হয়।

ধাপ ৩: ব্রডকাস্ট ইনটেন্ট ম্যানেজ করা

জবের মাধ্যমে কন্টেন্ট প্রকাশ করার API কল করার পাশাপাশি, কন্টেন্ট প্রকাশের অনুরোধ পাওয়ার জন্য BroadcastReceiver সেট-আপ করতে হবে।

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

BroadcastReceiver অবশ্যই নিম্নলিখিত দুটি উপায়ে সেট-আপ করতে হবে:

  • Context.registerReceiver() ব্যবহার করে BroadcastReceiver ক্লাসের ইনস্ট্যান্স ডায়নামিক্যালি রেজিস্টার করুন। এটি মেমরিতে এখনও লাইভ আছে এমন অ্যাপ্লিকেশন থেকে কমিউনিকেশন চালু করে।

Kotlin

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

}
  • আপনার AndroidManifest.xml ফাইলে <receiver> ট্যাগ সহ স্ট্যাটিক্যালি একটি ইমপ্লিমেন্টেশন ঘোষণা করুন। এটি অ্যাপ্লিকেশনটিকে ব্রডকাস্ট ইনটেন্ট গ্রহণ করার অনুমতি দেয় যখন এটি চলছে না এবং অ্যাপ্লিকেশনটিকে কন্টেন্ট প্রকাশ করারও অনুমতি দেয়।

<application>
   <receiver
      android:name=".AppEngageBroadcastReceiver"
      android:permission="com.google.android.engage.REQUEST_ENGAGE_DATA"
      android:exported="true"
      android:enabled="true">
      <intent-filter>
         <action android:name="com.google.android.engage.action.PUBLISH_RECOMMENDATION" />
      </intent-filter>
      <intent-filter>
         <action android:name="com.google.android.engage.action.PUBLISH_FEATURED" />
      </intent-filter>
      <intent-filter>
         <action android:name="com.google.android.engage.action.PUBLISH_CONTINUATION" />
      </intent-filter>
   </receiver>
</application>

পরিষেবাটি নিম্নলিখিত ইনটেন্ট পাঠায়:

  • com.google.android.engage.action.PUBLISH_RECOMMENDATION এই ইনটেন্ট পাওয়ার সময় publishRecommendationClusters কল শুরু করার সাজেশন দেওয়া হয়।
  • com.google.android.engage.action.PUBLISH_FEATURED এই ইনটেন্ট পাওয়ার সময় publishFeaturedCluster কল শুরু করার সাজেশন দেওয়া হয়।
  • com.google.android.engage.action.PUBLISH_CONTINUATION এই ইনটেন্ট পাওয়ার সময় publishContinuationCluster কল শুরু করার সাজেশন দেওয়া হয়।

ইন্টিগ্রেশন ওয়ার্কফ্লো

ইন্টিগ্রেশন সম্পূর্ণ হওয়ার পরে সেটি যাচাই করার জন্য ধাপে-ধাপে গাইড পেতে, Engage ডেভেলপার ইন্টিগ্রেশন ওয়ার্কফ্লো দেখুন।

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

প্রায়শই জিজ্ঞাসিত প্রশ্নের জন্য Engage SDK-এর প্রায়শই জিজ্ঞাসিত প্রশ্ন দেখুন।

যোগাযোগ করুন

ইন্টিগ্রেশন প্রসেস চলাকালীন কোনও প্রশ্ন থাকলে engage-developers@google.com-এর সাথে যোগাযোগ করুন।

পরবর্তী ধাপ

এই ইন্টিগ্রেশন সম্পূর্ণ করার পরে, আপনার পরবর্তী ধাপগুলি নিম্নরূপ:

  • engage-developers@google.com-এ ইমেল পাঠান এবং Google-এর মাধ্যমে পরীক্ষা করার জন্য প্রস্তুত আপনার ইন্টিগ্রেটেড APK অ্যাটাচ করুন।
  • ইন্টিগ্রেশন যাতে প্রত্যাশা অনুযায়ী কাজ করে তা নিশ্চিত করতে Google ইন্টার্নালি যাচাই ও পর্যালোচনা করে। কোনও পরিবর্তন করতে হলে, Google প্রয়োজনীয় বিবরণ সহ আপনার সাথে যোগাযোগ করবে।
  • পরীক্ষা করা সম্পূর্ণ হলে এবং কোনও পরিবর্তন করার প্রয়োজন না থাকলে, Google আপনার সাথে যোগাযোগ করে জানাবে যে আপনি Play Store-এ আপডেট করা ও ইন্টিগ্রেট করা APK প্রকাশ করা শুরু করতে পারবেন।
  • Google আপনার আপডেট করা APK Play Store-এ প্রকাশ করা হয়েছে বলে কনফার্ম করার পরে, আপনার সাজেশন, ফিচার করা এবং চালিয়ে যাওয়া ক্লাস্টার প্রকাশ করা হতে পারে এবং ব্যবহারকারীরা তা দেখতে পাবেন।