SDK ক্লাস্টার প্রকাশনার নির্দেশিকা নিযুক্ত করুন

এই নির্দেশিকাটিতে ক্লাস্টার প্রকাশনার জন্য নির্দেশিকাগুলির একটি সেট রয়েছে যা বিকাশকারীরা Engage SDK-এর সাথে একীভূত করার সময় ব্যবহার করতে পারে৷

সুপারিশ ক্লাস্টার

ক্লাস্টার শিরোনাম

আমরা একটি অনন্য এবং প্রাসঙ্গিক ক্লাস্টার শিরোনাম প্রদান করার সুপারিশ করি যা ব্যবহারকারীদের ক্লাস্টারের বিষয়বস্তু সম্পর্কে আরও অন্তর্দৃষ্টি দেয়।

এখানে বিষয়বস্তুর উপর ভিত্তি করে ভাল ক্লাস্টার শিরোনামের কিছু উদাহরণ রয়েছে:

  • কেনাকাটা-সম্পর্কিত ক্লাস্টার
    • বাজ ডিল
    • সাপ্তাহিক কিনতে হবে
    • আপনার Pixel Buds কেনার সাথে সম্পর্কিত
    • মহিলাদের বৃষ্টির বুট
  • স্বাস্থ্য বিষয়ক বইয়ের ক্লাস্টার
    • স্বাস্থ্য, মন এবং শরীর
    • স্বাস্থ্য আপনার জন্য প্রস্তাবিত
    • ফিটনেস সেরা বিক্রেতা

ক্লাস্টার সামগ্রী

সুপারিশ ক্লাস্টার প্রকাশ করার সময়, বিকাশকারীদের অবশ্যই বিবেচনা করতে হবে যে ব্যবহারকারী বিকাশকারীর অ্যাপ্লিকেশনে সাইন ইন করেছেন কিনা।

যখন ব্যবহারকারী সাইন ইন করেন

ব্যবহারকারী ডেভেলপার অ্যাপে সাইন ইন করলে, আমরা ব্যক্তিগতকৃত বা ব্যবহারকারী-উত্পাদিত কন্টেন্ট ক্লাস্টার প্রকাশ করার পরামর্শ দিই। যেহেতু ব্যক্তিগতকৃত এবং ব্যবহারকারী-উত্পাদিত বিষয়বস্তু ব্যবহারকারীর জন্য আরও প্রাসঙ্গিক, তারা Google পৃষ্ঠ থেকে বিকাশকারী অ্যাপটি দেখার জন্য আরও অনুপ্রাণিত হয়৷

  • ব্যক্তিগতকৃত সুপারিশ প্রকাশ করা যেতে পারে.
    • এখানে ব্যক্তিগতকৃত সুপারিশের কিছু উদাহরণ রয়েছে:
      • ব্যবহারকারীর দেখার ইতিহাসের উপর ভিত্তি করে সেরা বাছাই।
      • ব্যবহারকারীর পঠিত ইতিহাসে থাকা বইগুলির অনুরূপ বই৷
      • ব্যবহারকারীর প্রিয় শিল্পীদের দ্বারা গান.
  • ব্যবহারকারী-উত্পাদিত বিষয়বস্তু লাইব্রেরি প্রকাশ করা যেতে পারে.
    • এখানে ব্যবহারকারীর তৈরি সামগ্রী লাইব্রেরির কিছু উদাহরণ রয়েছে:
      • ডেভেলপার অ্যাপ থেকে ব্যবহারকারীর ওয়াচলিস্ট।
      • ডেভেলপার অ্যাপ থেকে ব্যবহারকারীর পছন্দের শিল্পীদের একটি স্ব-প্রতিবেদিত তালিকা।
সুপারিশ প্রকার বিষয়বস্তু সতেজতা কৌশল বিষয়বস্তু সতেজতা নির্দেশিকা
ব্যক্তিগতকৃত সুপারিশ

নম্র

আমরা প্রতিদিন একবার সুপারিশগুলি আপডেট করার পরামর্শ দিই যাতে ব্যবহারকারীরা প্রতিদিন নতুন সুপারিশগুলি দেখতে পারেন৷

যেহেতু ব্যবহারকারীদের সুপারিশের বিষয়বস্তু কী হবে তার সঠিক প্রত্যাশা নেই, তাই বিষয়বস্তুর সতেজতা কৌশলটি নম্র হতে পারে।
ব্যবহারকারী-উত্পন্ন সামগ্রী লাইব্রেরি

কড়া

ব্যবহারকারীরা ডেভেলপার অ্যাপ থেকে বেরিয়ে যাওয়ার সাথে সাথে আমরা কন্টেন্ট লাইব্রেরি আপডেট করার পরামর্শ দিই।

এই বিষয়বস্তুর জন্য Google পৃষ্ঠে প্রদর্শিত ডেটার সাথে সিঙ্ক হওয়া গুরুত্বপূর্ণ৷ এর কারণ ব্যক্তিগতকৃত সুপারিশের বিপরীতে, ব্যবহারকারী একটি সঠিক বিষয়বস্তুর সেট আশা করেন। প্রকাশনার ক্ষেত্রে কোনো উল্লেখযোগ্য বিলম্ব ব্যবহারকারীদের বিভ্রান্ত করবে। অতএব, বিষয়বস্তু সতেজতা কৌশল কঠোর হতে হবে.

যখন ব্যবহারকারী সাইন ইন করেন না

যদি একজন ব্যবহারকারী ডেভেলপার অ্যাপে সাইন ইন না করে থাকেন, আমরা এখনও ক্লাস্টার প্রকাশ করার পরামর্শ দিই যাতে ব্যবহারকারীরা Google সারফেস থেকে ডেভেলপার অ্যাপে যেতে উৎসাহিত হয়।

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

নম্র

আমরা প্রতিদিন একবার সুপারিশ আপডেট করার পরামর্শ দিই।

যেহেতু ব্যবহারকারীদের সুপারিশের বিষয়বস্তু কী হবে তার সঠিক প্রত্যাশা নেই, তাই বিষয়বস্তুর সতেজতা কৌশলটি নম্র হতে পারে।
সুপারিশে সাইন-ইন কার্ড

কড়া

ব্যবহারকারীরা বিকাশকারী অ্যাপ থেকে প্রস্থান করার সাথে সাথে আমরা সাইন-ইন কার্ডের অবস্থা আপডেট করার পরামর্শ দিই।

ব্যবহারকারীরা সাইন ইন করার পরে, ডেভেলপারদের অবশ্যই deleteUserManagementCluster() API কল করে কার্ড মুছতে হবে।

সাইন-ইন অবস্থার জন্য Google পৃষ্ঠের সাথে সিঙ্ক হওয়া গুরুত্বপূর্ণ৷ ব্যবহারকারীরা ইতিমধ্যেই সাইন ইন করার সময় Google-এর পৃষ্ঠে একটি সাইন-ইন কার্ড দেখতে বিভ্রান্তিকর৷ তাই, বিষয়বস্তু সতেজতা কৌশল অবশ্যই কঠোর হতে হবে৷

ধারাবাহিকতা ক্লাস্টার

ধারাবাহিকতা ক্লাস্টার প্রকাশ করার সময়, বিকাশকারীদের অবশ্যই বিবেচনা করতে হবে যে ব্যবহারকারী বিকাশকারীর অ্যাপ্লিকেশনে সাইন ইন করেছেন কিনা।

যখন ব্যবহারকারী সাইন ইন করেন

  • ব্যবহারকারী-উত্পাদিত ধারাবাহিকতা ক্লাস্টার প্রকাশ করা উচিত।
    • এখানে ব্যবহারকারী-উত্পাদিত ধারাবাহিকতা ক্লাস্টারগুলির কিছু উদাহরণ রয়েছে:
      • ব্যবহারকারী যেখান থেকে ছেড়ে গেছেন সেখান থেকে দেখা চালিয়ে যান।
      • ব্যবহারকারী যেখান থেকে পড়া বন্ধ করেছেন সেখান থেকে পড়া চালিয়ে যান।
ধারাবাহিকতা প্রকার বিষয়বস্তু সতেজতা কৌশল বিষয়বস্তু সতেজতা নির্দেশিকা
ব্যবহারকারীর দ্বারা তৈরি ধারাবাহিকতা ক্লাস্টার

কড়া

ব্যবহারকারীরা ডেভেলপার অ্যাপ থেকে বেরিয়ে যাওয়ার সাথে সাথে আমরা কন্টেন্ট লাইব্রেরি আপডেট করার পরামর্শ দিই।

এই বিষয়বস্তুর জন্য Google-এর সারফেসে প্রদর্শিত ডেটার সাথে সিঙ্ক হওয়া গুরুত্বপূর্ণ৷ এর কারণ ব্যক্তিগতকৃত সুপারিশের বিপরীতে, ব্যবহারকারী একটি সঠিক বিষয়বস্তুর সেট আশা করেন। প্রকাশনার ক্ষেত্রে কোনো উল্লেখযোগ্য বিলম্ব ব্যবহারকারীদের বিভ্রান্ত করবে। অতএব, বিষয়বস্তু সতেজতা কৌশল কঠোর হতে হবে.

যখন ব্যবহারকারী সাইন ইন করেন না

ধারাবাহিক যাত্রা প্রাথমিকভাবে সাইন-ইন করা ব্যবহারকারীদের উদ্দেশ্যে করা হয়; যাইহোক, যদি আপনার অ্যাপ অতিথি সেশন সমর্থন করে তাহলে আপনি সাইন-আউট হওয়া ব্যবহারকারীদের জন্য ধারাবাহিকতা ক্লাস্টার প্রকাশ করতে পারেন।

ইউজার ম্যানেজমেন্ট ক্লাস্টার

ইউজার ম্যানেজমেন্ট ক্লাস্টারের মূল লক্ষ্য হল ব্যবহারকারীদের প্রদানকারী অ্যাপে নির্দিষ্ট কিছু ক্রিয়া সম্পাদনের জন্য চাপ দেওয়া। সাইন ইন অ্যাকশন ব্যবহারকারীদের অ্যাপের সাইন ইন পৃষ্ঠায় নির্দেশ করে যাতে অ্যাপটি সামগ্রী প্রকাশ করতে পারে (বা আরও ব্যক্তিগতকৃত সামগ্রী সরবরাহ করতে পারে)

সাইন ইন কার্ড

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

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

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

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

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

ব্যবহারকারীরা সাইন ইন করার পরে, ডেভেলপারদের অবশ্যই deleteUserManagementCluster() API কল করে কার্ড মুছতে হবে।

স্থিতি প্রকাশ করুন আপডেট করুন

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

ক্লাস্টার প্রকাশনার জন্য ওয়ার্ক ম্যানেজার

আমরা ক্লাস্টারগুলি প্রকাশ করতে WorkManager ব্যবহার করার পরামর্শ দিই, কারণ এটি ব্যাকগ্রাউন্ডের কাজের জন্য প্রস্তাবিত সমাধান যেখানে কার্য সম্পাদন অবশ্যই সুবিধাবাদী এবং গ্যারান্টিযুক্ত হতে হবে।

  • WorkManager যত তাড়াতাড়ি সম্ভব আপনার ব্যাকগ্রাউন্ডের কাজ সম্পাদন করে।
  • WorkManager বিভিন্ন শর্তে আপনার কাজ শুরু করার যুক্তি পরিচালনা করে, এমনকি যদি একজন ব্যবহারকারী আপনার অ্যাপ থেকে দূরে যান।

যখন ব্যবহারকারী অ্যাপ থেকে দূরে যান, তখন আমরা সুপারিশ ক্লাস্টার সহ ধারাবাহিক ক্লাস্টার প্রকাশ করে এমন একটি ব্যাকগ্রাউন্ড কাজ শুরু করার পরামর্শ দিই। এই যুক্তিটি পরিচালনা করার জন্য একটি ভাল জায়গা হল Activity.onStop() , যাকে বলা হয় যখন ব্যবহারকারী অ্যাপ থেকে দূরে নেভিগেট করে।

আমরা প্রতি 24 ঘন্টায় ক্লাস্টার প্রকাশ করে এমন একটি পুনরাবৃত্ত কাজের সময় নির্ধারণের জন্য PeriodicWorkRequest ব্যবহার করার পরামর্শ দিই। কাজের ট্রিগার করার জন্য একটি CANCEL_AND_REENQUEUE নীতি ব্যবহার করে, বিকাশকারীরা নিশ্চিত করতে পারেন যে ওয়ার্ক ম্যানেজার যখনই কোনও ব্যবহারকারী অ্যাপ থেকে দূরে নেভিগেট করে তখন আপডেট করা ডেটা পাঠায়৷ এটি ব্যবহারকারীদের পুরানো ডেটা দেখতে বাধা দিতে সহায়তা করে।

নিম্নলিখিত উদাহরণ এটি প্রদর্শন করে:

// Define the PublishClusters Worker requiring input
public class PublishClusters extends Worker {

   public PublishClusters(Context appContext, WorkerParameters workerParams) {
       super(appContext, workerParams);
   }

   @NonNull
   @Override
   public Result doWork() {
       // publish clusters
   }
   ...
}

public static void schedulePublishClusters(Context appContext) {
// Create a PeriodicWorkRequest to schedule a recurring job to update
// clusters at a regular interval
PeriodicWorkRequest publishClustersEntertainmentSpace =
// Define the time for the periodic job
       new PeriodicWorkRequest.Builder(PublishClusters.class, 24, TimeUnit.HOURS)
// Set up a tag for the worker.
// Tags are Unique identifier, which can be used to identify that work
// later in order to cancel the work or observe its progress.
          .addTag("Publish Clusters to Entertainment Space")
          .build();

// Trigger Periodic Job, this will ensure that the periodic job is triggered
// only once since we have defined a uniqueWorkName
WorkManager.getInstance(appContext).enqueueUniquePeriodicWork(
// uniqueWorkName
     "publishClustersEntertainmentSpace",
// If a work with the uniqueWorkName is already running, it will cancel the
// existing running jobs and replace it with the new instance.
// ExistingPeriodicWorkPolicy#CANCEL_AND_REENQUEUE
     ExistingPeriodicWorkPolicy.CANCEL_AND_REENQUEUE,
// Recurring Work Request
publishClustersEntertainmentSpace);

}

সম্প্রচার অভিপ্রায় হ্যান্ডেল

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

যাইহোক, ডেভেলপারদের অবশ্যই সতর্কতা অবলম্বন করতে হবে যে শুধুমাত্র সম্প্রচারের উপর নির্ভর করবেন না , কারণ সেগুলি শুধুমাত্র নির্দিষ্ট পরিস্থিতিতেই ট্রিগার হয়—প্রধানত, অ্যাপ পুনরায় সক্রিয়করণ এবং ডেটা সিঙ্ক করার জন্য। এগুলি শুধুমাত্র তখনই ট্রিগার হয় যখন Engage পরিষেবা নির্ধারণ করে যে সামগ্রীটি বাসি হতে পারে৷ এইভাবে, অনেক বেশি আত্মবিশ্বাস রয়েছে যে ব্যবহারকারীর একটি নতুন বিষয়বস্তুর অভিজ্ঞতা থাকবে, এমনকি অ্যাপ্লিকেশনটি দীর্ঘ সময়ের জন্য খোলা না থাকলেও৷

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

  • Context.registerReceiver() ব্যবহার করে BroadcastReceiver ক্লাসের একটি উদাহরণ ডায়নামিকভাবে নিবন্ধন করুন। এটি এখনও মেমরিতে লাইভ থাকা অ্যাপ্লিকেশনগুলি থেকে যোগাযোগ সক্ষম করে৷
  • আপনার AndroidManifest.xml ফাইলে <receiver> ট্যাগ দিয়ে স্থিরভাবে একটি বাস্তবায়ন ঘোষণা করুন। এটি অ্যাপ্লিকেশনটিকে সম্প্রচারের অভিপ্রায় প্রাপ্ত করার অনুমতি দেয় যখন এটি চলছে না, এবং অ্যাপ্লিকেশনটিকে সামগ্রী প্রকাশ করার অনুমতি দেয়৷