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

চিত্র ১. বিনোদন স্থানের UI, যেখানে একজন অংশীদারের পক্ষ থেকে প্রাপ্ত সুপারিশ গুচ্ছ দেখানো হচ্ছে। এনটিটি: একটি ক্লাস্টারের কোনো একটি আইটেমকে প্রতিনিধিত্বকারী একটি অবজেক্ট। একটি এনটিটি হতে পারে একটি মুভি, একটি টিভি শো, একটি টিভি সিরিজ, লাইভ ভিডিও, এবং আরও অনেক কিছু। সমর্থিত এনটিটি টাইপগুলোর তালিকার জন্য ‘প্রোভাইড এনটিটি ডেটা’ সেকশনটি দেখুন।

চিত্র ২. এন্টারটেইনমেন্ট স্পেস UI, যেখানে একজন পার্টনারের রিকমেন্ডেশন ক্লাস্টারের মধ্যে একটিমাত্র এনটিটি দেখানো হচ্ছে।
The Continuation cluster shows unfinished videos and relevant newly released episodes from multiple developer partners in one UI grouping. Each developer partner will be allowed to broadcast a maximum of 10 entities in the Continuation cluster. Research has shown that personalized recommendations along with personalized Continuation content creates the best user engagement.

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

চিত্র ৪। এন্টারটেইনমেন্ট স্পেস 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'
}
আরও তথ্যের জন্য, Android 11-এ প্যাকেজ দৃশ্যমানতা দেখুন।
সারসংক্ষেপ
ডিজাইনটি একটি বাউন্ড সার্ভিসের বাস্তবায়নের উপর ভিত্তি করে তৈরি।
বিভিন্ন ক্লাস্টার প্রকারের জন্য একজন ক্লায়েন্ট যে ডেটা প্রকাশ করতে পারে তা নিম্নলিখিত সীমাবদ্ধতার অধীন:
| ক্লাস্টার টাইপ | ক্লাস্টার সীমা | একটি ক্লাস্টারে সত্তার সর্বোচ্চ সীমা |
|---|---|---|
| সুপারিশ ক্লাস্টার(গুলি) | সর্বাধিক ৭ | সর্বাধিক ৫০ |
| ধারাবাহিকতা ক্লাস্টার | সর্বাধিক ১ | সর্বাধিক ২০ |
| বৈশিষ্ট্যযুক্ত ক্লাস্টার | সর্বাধিক ১ | সর্বাধিক ২০ |
ধাপ ০: বিদ্যমান মিডিয়া হোম এসডিকে ইন্টিগ্রেশন থেকে মাইগ্রেশন
বিদ্যমান ইন্টিগ্রেশন থেকে ডেটা মডেল ম্যাপ করুন
আপনি যদি বিদ্যমান কোনো মিডিয়া হোম ইন্টিগ্রেশন থেকে মাইগ্রেট করেন, তাহলে বিদ্যমান SDK-গুলোতে থাকা ডেটা মডেলগুলোকে নতুন Engage SDK-তে কীভাবে ম্যাপ করতে হবে, তা নিম্নলিখিত সারণীতে বর্ণনা করা হয়েছে:
| মিডিয়াহোমভিডিওচুক্তি একীকরণ সমতুল্য | Engage SDK ইন্টিগ্রেশন সমতুল্য |
|---|---|
com.google.android.mediahome.video.PreviewChannel | com.google.android.engage.common.datamodel.RecommendationCluster |
com.google.android.mediahome.video.PreviewChannel.Builder | com.google.android.engage.common.datamodel.RecommendationCluster.Builder |
com.google.android.mediahome.video.PreviewChannelHelper | com.google.android.engage.video.service.AppEngageVideoClient |
com.google.android.mediahome.video.PreviewProgram | পৃথক শ্রেণিতে বিভক্ত: EventVideo , LiveStreamingVideo , Movie , TvEpisode , TvSeason , TvShow , VideoClipEntity |
com.google.android.mediahome.video.PreviewProgram.Builder | বিল্ডারগুলোকে আলাদা আলাদা শ্রেণিতে বিভক্ত করা হয়েছে: EventVideo , LiveStreamingVideo , Movie , TvEpisode , TvSeason , TvShow , VideoClipEntity |
com.google.android.mediahome.video.VideoContract | আর প্রয়োজন নেই। |
com.google.android.mediahome.video.WatchNextProgram | আলাদা ক্লাসে অ্যাট্রিবিউট হিসেবে বিভক্ত: EventVideoEntity , LiveStreamingVideoEntity , MovieEntity , TvEpisodeEntity , TvSeasonEntity , TvShowEntity , VideoClipEntity |
com.google.android.mediahome.video.WatchNextProgram.Builder | আলাদা ক্লাসে অ্যাট্রিবিউট হিসেবে বিভক্ত: EventVideoEntity , LiveStreamingVideoEntity , MovieEntity , TvEpisodeEntity , TvSeasonEntity , TvShowEntity , VideoClipEntity |
মিডিয়া হোম এসডিকে বনাম এনগেজ এসডিকে-তে ক্লাস্টার প্রকাশ করা
মিডিয়া হোম এসডিকে-এর মাধ্যমে, ক্লাস্টার এবং এনটিটিগুলো আলাদা এপিআই-এর মাধ্যমে প্রকাশ করা হতো:
// 1. Fetch existing channels
List<PreviewChannel> channels = PreviewChannelHelper.getAllChannels();
// 2. If there are no channels, publish new channels
long channelId = PreviewChannelHelper.publishChannel(builder.build());
// 3. If there are existing channels, decide whether to update channel contents
PreviewChannelHelper.updatePreviewChannel(channelId, builder.build());
// 4. Delete all programs in the channel
PreviewChannelHelper.deleteAllPreviewProgramsByChannelId(channelId);
// 5. publish new programs in the channel
PreviewChannelHelper.publishPreviewProgram(builder.build());
Engage SDK-এর মাধ্যমে, ক্লাস্টার এবং এনটিটি পাবলিশিং একটিমাত্র API কলে একত্রিত করা হয়। একটি ক্লাস্টারের অন্তর্গত সমস্ত এনটিটি সেই ক্লাস্টারের সাথেই পাবলিশ করা হয়:
কোটলিন
RecommendationCluster.Builder()
.addEntity(MOVIE_ENTITY)
.addEntity(MOVIE_ENTITY)
.addEntity(MOVIE_ENTITY)
.setTitle("Top Picks For You")
.build()
জাভা
new RecommendationCluster.Builder()
.addEntity(MOVIE_ENTITY)
.addEntity(MOVIE_ENTITY)
.addEntity(MOVIE_ENTITY)
.setTitle("Top Picks For You")
.build();
ধাপ ১: সত্তার তথ্য প্রদান করুন
এসডিকে প্রতিটি আইটেমের ধরন বোঝানোর জন্য বিভিন্ন এনটিটি সংজ্ঞায়িত করেছে। আমরা ওয়াচ ক্যাটাগরির জন্য নিম্নলিখিত এনটিটিগুলো সমর্থন করি:
নিম্নলিখিত তালিকাটিতে প্রতিটি প্রকারের বৈশিষ্ট্য এবং প্রয়োজনীয়তা তুলে ধরা হয়েছে।
MovieEntity
| বৈশিষ্ট্য | প্রয়োজনীয়তা | নোট |
|---|---|---|
| নাম | প্রয়োজনীয় | |
| পোস্টারের ছবি | প্রয়োজনীয় | কমপক্ষে একটি ছবি প্রয়োজন এবং সেটি অবশ্যই অ্যাস্পেক্ট রেশিও সহ প্রদান করতে হবে। (ল্যান্ডস্কেপ ছবি কাম্য, তবে বিভিন্ন পরিস্থিতির জন্য পোর্ট্রেট এবং ল্যান্ডস্কেপ উভয় ধরনের ছবি জমা দেওয়ার পরামর্শ দেওয়া হয়।) নির্দেশনার জন্য ছবির বিবরণ দেখুন। |
| প্লেব্যাক ইউআরআই | প্রয়োজনীয় | সিনেমাটি চালানো শুরু করার জন্য প্রোভাইডার অ্যাপের ডিপ লিঙ্কটি ব্যবহার করুন। দ্রষ্টব্য: অ্যাট্রিবিউশনের জন্য আপনি ডিপ লিঙ্ক ব্যবহার করতে পারেন। এই প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী (FAQ) দেখুন। |
| তথ্য পৃষ্ঠা ইউআরআই | ঐচ্ছিক | সিনেমাটির বিস্তারিত তথ্য দেখানোর জন্য প্রোভাইডার অ্যাপের ডিপ লিঙ্কটি দেওয়া হয়েছে। দ্রষ্টব্য: অ্যাট্রিবিউশনের জন্য আপনি ডিপ লিঙ্ক ব্যবহার করতে পারেন। এই প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী (FAQ) দেখুন। |
| মুক্তির তারিখ | ঐচ্ছিক | ইপক মিলিসেকেন্ডে। |
| প্রাপ্যতা | প্রয়োজনীয় | উপলব্ধ: বিষয়বস্তুটি ব্যবহারকারীর জন্য আর কোনো পদক্ষেপ ছাড়াই উপলব্ধ। সাবস্ক্রিপশন সহ বিনামূল্যে: ব্যবহারকারী সাবস্ক্রিপশন কেনার পর কন্টেন্টটি পাওয়া যাবে। পেইড_কন্টেন্ট: এই কন্টেন্টটি ব্যবহারকারীকে ক্রয় বা ভাড়া করতে হবে। ক্রয়কৃত: ব্যবহারকারী কর্তৃক বিষয়বস্তুটি ক্রয় বা ভাড়া করা হয়েছে। |
| অফার মূল্য | ঐচ্ছিক | মুক্ত পাঠ্য |
| সময়কাল | প্রয়োজনীয় | মিলিসেকেন্ডে। |
| ধরণ | প্রয়োজনীয় | মুক্ত পাঠ্য |
| বিষয়বস্তু রেটিং | ঐচ্ছিক | মুক্ত লেখা, শিল্পমান অনুসরণ করুন। ( উদাহরণ ) |
| কল টু অ্যাকশন টেক্সট | ঐচ্ছিক | পদক্ষেপ গ্রহণের আহ্বান হিসেবে প্রদর্শিত হওয়ার জন্য মুক্ত লেখা। |
| ট্যাগ | ঐচ্ছিক | সত্তাটির সাথে সংশ্লিষ্ট ট্যাগগুলোর তালিকা। |
| পরবর্তী প্রকার দেখুন | শর্তসাপেক্ষে আবশ্যক | আইটেমটি কন্টিনিউয়েশন ক্লাস্টারে থাকলে এটি অবশ্যই প্রদান করতে হবে এবং এটি নিম্নলিখিত চার প্রকারের মধ্যে একটি হতে হবে: চালিয়ে যান: ব্যবহারকারী ইতিমধ্যেই এই কন্টেন্টটির ১ মিনিটের বেশি দেখেছেন। নতুন: ব্যবহারকারী কোনো পর্বভিত্তিক কন্টেন্টের উপলব্ধ সব পর্ব দেখে ফেলেছেন, কিন্তু একটি নতুন পর্ব উপলব্ধ হওয়ায় ঠিক একটি পর্বই এখনো দেখা হয়নি। এটি টিভি শো, কোনো সিরিজের রেকর্ড করা ফুটবল ম্যাচ ইত্যাদির ক্ষেত্রে প্রযোজ্য। পরবর্তী: ব্যবহারকারী কোনো পর্বভিত্তিক কন্টেন্টের এক বা একাধিক সম্পূর্ণ পর্ব দেখেছেন, কিন্তু এখনও একের বেশি পর্ব অথবা ঠিক একটি পর্ব বাকি আছে, যেখানে শেষ পর্বটি "নতুন" নয় এবং ব্যবহারকারী পর্বভিত্তিক কন্টেন্টটি দেখা শুরু করার আগেই তা প্রকাশিত হয়েছিল। ওয়াচলিস্ট: ব্যবহারকারী পরবর্তীতে কী দেখতে চান তা নিজে বেছে নেওয়ার জন্য স্পষ্টভাবে একটি সিনেমা, ইভেন্ট বা সিরিজকে ওয়াচলিস্টে যুক্ত করার সিদ্ধান্ত নিয়েছেন। |
| শেষ বাগদানের সময় | শর্তসাপেক্ষে আবশ্যক | আইটেমটি কন্টিনিউয়েশন ক্লাস্টারে থাকলে অবশ্যই প্রদান করতে হবে। ইপক মিলিসেকেন্ডে। |
| শেষ প্লেব্যাক পজিশন সময় | শর্তসাপেক্ষে আবশ্যক | যখন আইটেমটি কন্টিনিউয়েশন ক্লাস্টারে থাকে এবং WatchNextType-এর মান CONTINUE হয়, তখন এটি অবশ্যই প্রদান করতে হবে। ইপক মিলিসেকেন্ডে। |
TvShowEntity
| বৈশিষ্ট্য | প্রয়োজনীয়তা | নোট |
|---|---|---|
| নাম | প্রয়োজনীয় | |
| পোস্টারের ছবি | প্রয়োজনীয় | কমপক্ষে একটি ছবি প্রয়োজন এবং সেটি অবশ্যই অ্যাস্পেক্ট রেশিও সহ প্রদান করতে হবে। (ল্যান্ডস্কেপ ছবি কাম্য, তবে বিভিন্ন পরিস্থিতির জন্য পোর্ট্রেট এবং ল্যান্ডস্কেপ উভয় ধরনের ছবি জমা দেওয়ার পরামর্শ দেওয়া হয়।) নির্দেশনার জন্য ছবির বিবরণ দেখুন। |
| তথ্য পৃষ্ঠা ইউআরআই | প্রয়োজনীয় | টিভি শো-টির বিস্তারিত বিবরণ দেখানোর জন্য প্রোভাইডার অ্যাপের ডিপ লিঙ্ক। দ্রষ্টব্য: অ্যাট্রিবিউশনের জন্য আপনি ডিপ লিঙ্ক ব্যবহার করতে পারেন। এই প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী (FAQ) দেখুন। |
| প্লেব্যাক ইউআরআই | ঐচ্ছিক | টিভি শো-টি চালানো শুরু করার জন্য প্রোভাইডার অ্যাপের ডিপ লিঙ্কটি। দ্রষ্টব্য: অ্যাট্রিবিউশনের জন্য আপনি ডিপ লিঙ্ক ব্যবহার করতে পারেন। এই প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী (FAQ) দেখুন। |
| প্রথম পর্ব সম্প্রচারের তারিখ | ঐচ্ছিক | ইপক মিলিসেকেন্ডে। |
| সর্বশেষ পর্বের সম্প্রচারের তারিখ | ঐচ্ছিক | ইপক মিলিসেকেন্ডে। |
| প্রাপ্যতা | প্রয়োজনীয় | উপলব্ধ: বিষয়বস্তুটি ব্যবহারকারীর জন্য আর কোনো পদক্ষেপ ছাড়াই উপলব্ধ। সাবস্ক্রিপশন সহ বিনামূল্যে: ব্যবহারকারী সাবস্ক্রিপশন কেনার পর কন্টেন্টটি পাওয়া যাবে। পেইড_কন্টেন্ট: এই কন্টেন্টটি ব্যবহারকারীকে ক্রয় বা ভাড়া করতে হবে। ক্রয়কৃত: ব্যবহারকারী কর্তৃক বিষয়বস্তুটি ক্রয় বা ভাড়া করা হয়েছে। |
| অফার মূল্য | ঐচ্ছিক | মুক্ত পাঠ্য |
| মৌসুম গণনা | প্রয়োজনীয় | ধনাত্মক পূর্ণসংখ্যা |
| ধরণ | প্রয়োজনীয় | মুক্ত পাঠ্য |
| বিষয়বস্তু রেটিং | ঐচ্ছিক | মুক্ত লেখা, শিল্পমান অনুসরণ করুন। ( উদাহরণ ) |
| কল টু অ্যাকশন টেক্সট | ঐচ্ছিক | পদক্ষেপ গ্রহণের আহ্বান হিসেবে প্রদর্শিত হওয়ার জন্য মুক্ত লেখা। |
| ট্যাগ | ঐচ্ছিক | সত্তাটির সাথে সংশ্লিষ্ট ট্যাগগুলোর তালিকা। |
| পরবর্তী প্রকার দেখুন | শর্তসাপেক্ষে আবশ্যক | আইটেমটি কন্টিনিউয়েশন ক্লাস্টারে থাকলে এটি অবশ্যই প্রদান করতে হবে এবং এটি নিম্নলিখিত চার প্রকারের মধ্যে একটি হতে হবে: চালিয়ে যান: ব্যবহারকারী ইতিমধ্যেই এই কন্টেন্টটির ১ মিনিটের বেশি দেখেছেন। নতুন: ব্যবহারকারী কোনো পর্বভিত্তিক কন্টেন্টের উপলব্ধ সব পর্ব দেখে ফেলেছেন, কিন্তু একটি নতুন পর্ব উপলব্ধ হওয়ায় ঠিক একটি পর্বই এখনো দেখা হয়নি। এটি টিভি শো, কোনো সিরিজের রেকর্ড করা ফুটবল ম্যাচ ইত্যাদির ক্ষেত্রে প্রযোজ্য। পরবর্তী: ব্যবহারকারী কোনো পর্বভিত্তিক কন্টেন্টের এক বা একাধিক সম্পূর্ণ পর্ব দেখেছেন, কিন্তু এখনও একের বেশি পর্ব অথবা ঠিক একটি পর্ব বাকি আছে, যেখানে শেষ পর্বটি "নতুন" নয় এবং ব্যবহারকারী পর্বভিত্তিক কন্টেন্টটি দেখা শুরু করার আগেই তা প্রকাশিত হয়েছিল। ওয়াচলিস্ট: ব্যবহারকারী পরবর্তীতে কী দেখতে চান তা নিজে বেছে নেওয়ার জন্য স্পষ্টভাবে একটি সিনেমা, ইভেন্ট বা সিরিজকে ওয়াচলিস্টে যুক্ত করার সিদ্ধান্ত নিয়েছেন। |
| শেষ বাগদানের সময় | শর্তসাপেক্ষে আবশ্যক | আইটেমটি কন্টিনিউয়েশন ক্লাস্টারে থাকলে অবশ্যই প্রদান করতে হবে। ইপক মিলিসেকেন্ডে। |
| শেষ প্লেব্যাক পজিশন সময় | শর্তসাপেক্ষে আবশ্যক | যখন আইটেমটি কন্টিনিউয়েশন ক্লাস্টারে থাকে এবং WatchNextType-এর মান CONTINUE হয়, তখন এটি অবশ্যই প্রদান করতে হবে। ইপক মিলিসেকেন্ডে। |
TvSeasonEntity
| বৈশিষ্ট্য | প্রয়োজনীয়তা | নোট |
|---|---|---|
| নাম | প্রয়োজনীয় | |
| পোস্টারের ছবি | প্রয়োজনীয় | কমপক্ষে একটি ছবি প্রয়োজন, এবং সেটি অবশ্যই অ্যাস্পেক্ট রেশিও সহ প্রদান করতে হবে। (ল্যান্ডস্কেপ ছবি কাম্য, তবে বিভিন্ন পরিস্থিতির জন্য পোর্ট্রেট এবং ল্যান্ডস্কেপ উভয় ধরনের ছবি জমা দেওয়ার পরামর্শ দেওয়া হয়।) নির্দেশনার জন্য ছবির বিবরণ দেখুন। |
| তথ্য পৃষ্ঠা ইউআরআই | প্রয়োজনীয় | টিভি শো-এর সিজনের বিস্তারিত তথ্য দেখানোর জন্য প্রোভাইডার অ্যাপের ডিপ লিঙ্ক। দ্রষ্টব্য: অ্যাট্রিবিউশনের জন্য আপনি ডিপ লিঙ্ক ব্যবহার করতে পারেন। এই প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী (FAQ) দেখুন। |
| প্লেব্যাক ইউআরআই | ঐচ্ছিক | টিভি শো-এর সিজনটি চালানো শুরু করার জন্য প্রোভাইডার অ্যাপের ডিপ লিঙ্কটি এখানে দেওয়া হলো। দ্রষ্টব্য: অ্যাট্রিবিউশনের জন্য আপনি ডিপ লিঙ্ক ব্যবহার করতে পারেন। এই প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী (FAQ) দেখুন। |
| সিজন নম্বর প্রদর্শন করুন | ঐচ্ছিক v1.3.1-এ উপলব্ধ। | স্ট্রিং |
| প্রথম পর্ব সম্প্রচারের তারিখ | ঐচ্ছিক | ইপক মিলিসেকেন্ডে। |
| সর্বশেষ পর্বের সম্প্রচারের তারিখ | ঐচ্ছিক | ইপক মিলিসেকেন্ডে। |
| প্রাপ্যতা | প্রয়োজনীয় | উপলব্ধ: বিষয়বস্তুটি ব্যবহারকারীর জন্য আর কোনো পদক্ষেপ ছাড়াই উপলব্ধ। সাবস্ক্রিপশন সহ বিনামূল্যে: ব্যবহারকারী সাবস্ক্রিপশন কেনার পর কন্টেন্টটি পাওয়া যাবে। পেইড_কন্টেন্ট: এই কন্টেন্টটি ব্যবহারকারীকে ক্রয় বা ভাড়া করতে হবে। ক্রয়কৃত: ব্যবহারকারী কর্তৃক বিষয়বস্তুটি ক্রয় বা ভাড়া করা হয়েছে। |
| অফার মূল্য | ঐচ্ছিক | মুক্ত পাঠ্য |
| পর্বের সংখ্যা | প্রয়োজনীয় | ধনাত্মক পূর্ণসংখ্যা |
| ধরণ | প্রয়োজনীয় | মুক্ত পাঠ্য |
| বিষয়বস্তু রেটিং | ঐচ্ছিক | মুক্ত লেখা, শিল্পমান অনুসরণ করুন। ( উদাহরণ ) |
| কল টু অ্যাকশন টেক্সট | ঐচ্ছিক | পদক্ষেপ গ্রহণের আহ্বান হিসেবে প্রদর্শিত হওয়ার জন্য মুক্ত লেখা। |
| ট্যাগ | ঐচ্ছিক | সত্তাটির সাথে সংশ্লিষ্ট ট্যাগগুলোর তালিকা। |
| পরবর্তী প্রকার দেখুন | শর্তসাপেক্ষে আবশ্যক | আইটেমটি কন্টিনিউয়েশন ক্লাস্টারে থাকলে এটি অবশ্যই প্রদান করতে হবে এবং এটি নিম্নলিখিত চার প্রকারের মধ্যে একটি হতে হবে: চালিয়ে যান: ব্যবহারকারী ইতিমধ্যেই এই কন্টেন্টটির ১ মিনিটের বেশি দেখেছেন। নতুন: ব্যবহারকারী কোনো পর্বভিত্তিক কন্টেন্টের উপলব্ধ সব পর্ব দেখে ফেলেছেন, কিন্তু একটি নতুন পর্ব উপলব্ধ হওয়ায় ঠিক একটি পর্বই এখনো দেখা হয়নি। এটি টিভি শো, কোনো সিরিজের রেকর্ড করা ফুটবল ম্যাচ ইত্যাদির ক্ষেত্রে প্রযোজ্য। পরবর্তী: ব্যবহারকারী কোনো পর্বভিত্তিক কন্টেন্টের এক বা একাধিক সম্পূর্ণ পর্ব দেখেছেন, কিন্তু এখনও একের বেশি পর্ব অথবা ঠিক একটি পর্ব বাকি আছে, যেখানে শেষ পর্বটি "নতুন" নয় এবং ব্যবহারকারী পর্বভিত্তিক কন্টেন্টটি দেখা শুরু করার আগেই তা প্রকাশিত হয়েছিল। ওয়াচলিস্ট: ব্যবহারকারী পরবর্তীতে কী দেখতে চান তা নিজে বেছে নেওয়ার জন্য স্পষ্টভাবে একটি সিনেমা, ইভেন্ট বা সিরিজকে ওয়াচলিস্টে যুক্ত করার সিদ্ধান্ত নিয়েছেন। |
| শেষ বাগদানের সময় | শর্তসাপেক্ষে আবশ্যক | আইটেমটি কন্টিনিউয়েশন ক্লাস্টারে থাকলে অবশ্যই প্রদান করতে হবে। ইপক মিলিসেকেন্ডে। |
| শেষ প্লেব্যাক পজিশন সময় | শর্তসাপেক্ষে আবশ্যক | যখন আইটেমটি কন্টিনিউয়েশন ক্লাস্টারে থাকে এবং WatchNextType-এর মান CONTINUE হয়, তখন এটি অবশ্যই প্রদান করতে হবে। ইপক মিলিসেকেন্ডে। |
TvEpisodeEntity
| বৈশিষ্ট্য | প্রয়োজনীয়তা | নোট |
|---|---|---|
| নাম | প্রয়োজনীয় | |
| পোস্টারের ছবি | প্রয়োজনীয় | কমপক্ষে একটি ছবি প্রয়োজন, এবং সেটি অবশ্যই অ্যাস্পেক্ট রেশিও সহ প্রদান করতে হবে। (ল্যান্ডস্কেপ ছবি কাম্য, তবে বিভিন্ন পরিস্থিতির জন্য পোর্ট্রেট এবং ল্যান্ডস্কেপ উভয় ধরনের ছবি জমা দেওয়ার পরামর্শ দেওয়া হয়।) নির্দেশনার জন্য ছবির বিবরণ দেখুন। |
| প্লেব্যাক ইউআরআই | প্রয়োজনীয় | পর্বটি চালানো শুরু করতে প্রোভাইডার অ্যাপের ডিপ লিঙ্কটি ব্যবহার করুন। দ্রষ্টব্য: অ্যাট্রিবিউশনের জন্য আপনি ডিপ লিঙ্ক ব্যবহার করতে পারেন। এই প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী (FAQ) দেখুন। |
| তথ্য পৃষ্ঠা ইউআরআই | ঐচ্ছিক | টিভি শো-এর পর্বটির বিস্তারিত তথ্য দেখানোর জন্য প্রোভাইডার অ্যাপের ডিপ লিঙ্কটি। দ্রষ্টব্য: অ্যাট্রিবিউশনের জন্য আপনি ডিপ লিঙ্ক ব্যবহার করতে পারেন। এই প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী (FAQ) দেখুন। |
| পর্ব নম্বর প্রদর্শন করুন | ঐচ্ছিক v1.3.1-এ উপলব্ধ। | স্ট্রিং |
| সম্প্রচারের তারিখ | প্রয়োজনীয় | ইপক মিলিসেকেন্ডে। |
| প্রাপ্যতা | প্রয়োজনীয় | উপলব্ধ: বিষয়বস্তুটি ব্যবহারকারীর জন্য আর কোনো পদক্ষেপ ছাড়াই উপলব্ধ। সাবস্ক্রিপশন সহ বিনামূল্যে: ব্যবহারকারী সাবস্ক্রিপশন কেনার পর কন্টেন্টটি পাওয়া যাবে। পেইড_কন্টেন্ট: এই কন্টেন্টটি ব্যবহারকারীকে ক্রয় বা ভাড়া করতে হবে। ক্রয়কৃত: ব্যবহারকারী কর্তৃক বিষয়বস্তুটি ক্রয় বা ভাড়া করা হয়েছে। |
| অফার মূল্য | ঐচ্ছিক | মুক্ত পাঠ্য |
| সময়কাল | প্রয়োজনীয় | মানটি অবশ্যই মিলিসেকেন্ডে ধনাত্মক হতে হবে। |
| ধরণ | প্রয়োজনীয় | মুক্ত পাঠ্য |
| বিষয়বস্তু রেটিং | ঐচ্ছিক | মুক্ত লেখা, শিল্পমান অনুসরণ করুন। ( উদাহরণ ) |
| কল টু অ্যাকশন টেক্সট | ঐচ্ছিক | পদক্ষেপ গ্রহণের আহ্বান হিসেবে প্রদর্শিত হওয়ার জন্য মুক্ত লেখা। |
| ট্যাগ | ঐচ্ছিক | সত্তাটির সাথে সংশ্লিষ্ট ট্যাগগুলোর তালিকা। |
| পরবর্তী প্রকার দেখুন | শর্তসাপেক্ষে আবশ্যক | আইটেমটি কন্টিনিউয়েশন ক্লাস্টারে থাকলে এটি অবশ্যই প্রদান করতে হবে এবং এটি নিম্নলিখিত চার প্রকারের মধ্যে একটি হতে হবে: চালিয়ে যান: ব্যবহারকারী ইতিমধ্যেই এই কন্টেন্টটির ১ মিনিটের বেশি দেখেছেন। নতুন: ব্যবহারকারী কোনো পর্বভিত্তিক কন্টেন্টের উপলব্ধ সব পর্ব দেখে ফেলেছেন, কিন্তু একটি নতুন পর্ব উপলব্ধ হওয়ায় ঠিক একটি পর্বই এখনো দেখা হয়নি। এটি টিভি শো, কোনো সিরিজের রেকর্ড করা ফুটবল ম্যাচ ইত্যাদির ক্ষেত্রে প্রযোজ্য। পরবর্তী: ব্যবহারকারী কোনো পর্বভিত্তিক কন্টেন্টের এক বা একাধিক সম্পূর্ণ পর্ব দেখেছেন, কিন্তু এখনও একের বেশি পর্ব অথবা ঠিক একটি পর্ব বাকি আছে, যেখানে শেষ পর্বটি "নতুন" নয় এবং ব্যবহারকারী পর্বভিত্তিক কন্টেন্টটি দেখা শুরু করার আগেই তা প্রকাশিত হয়েছিল। ওয়াচলিস্ট: ব্যবহারকারী পরবর্তীতে কী দেখতে চান তা নিজে বেছে নেওয়ার জন্য স্পষ্টভাবে একটি সিনেমা, ইভেন্ট বা সিরিজকে ওয়াচলিস্টে যুক্ত করার সিদ্ধান্ত নিয়েছেন। |
| শেষ বাগদানের সময় | শর্তসাপেক্ষে আবশ্যক | আইটেমটি কন্টিনিউয়েশন ক্লাস্টারে থাকলে অবশ্যই প্রদান করতে হবে। ইপক মিলিসেকেন্ডে। |
| শেষ প্লেব্যাক পজিশন সময় | শর্তসাপেক্ষে আবশ্যক | যখন আইটেমটি কন্টিনিউয়েশন ক্লাস্টারে থাকে এবং WatchNextType-এর মান CONTINUE হয়, তখন এটি অবশ্যই প্রদান করতে হবে। ইপক মিলিসেকেন্ডে। |
LiveStreamingVideoEntity
| বৈশিষ্ট্য | প্রয়োজনীয়তা | নোট |
|---|---|---|
| নাম | প্রয়োজনীয় | |
| পোস্টারের ছবি | প্রয়োজনীয় | কমপক্ষে একটি ছবি প্রয়োজন, এবং সেটি অবশ্যই অ্যাস্পেক্ট রেশিও সহ প্রদান করতে হবে। (ল্যান্ডস্কেপ ছবি কাম্য, তবে বিভিন্ন পরিস্থিতির জন্য পোর্ট্রেট এবং ল্যান্ডস্কেপ উভয় ধরনের ছবি জমা দেওয়ার পরামর্শ দেওয়া হয়।) নির্দেশনার জন্য ছবির বিবরণ দেখুন। |
| প্লেব্যাক ইউআরআই | প্রয়োজনীয় | ভিডিওটি চালানো শুরু করার জন্য প্রোভাইডার অ্যাপের ডিপ লিঙ্কটি ব্যবহার করুন। দ্রষ্টব্য: অ্যাট্রিবিউশনের জন্য আপনি ডিপ লিঙ্ক ব্যবহার করতে পারেন। এই প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী (FAQ) দেখুন। |
| সম্প্রচারক | প্রয়োজনীয় | মুক্ত পাঠ্য |
| শুরুর সময় | ঐচ্ছিক | ইপক মিলিসেকেন্ডে। |
| শেষ সময় | ঐচ্ছিক | ইপক মিলিসেকেন্ডে। |
| দেখার সংখ্যা | ঐচ্ছিক | মুক্ত পাঠ্য, অবশ্যই স্থানীয়করণ করতে হবে। |
| কল টু অ্যাকশন টেক্সট | ঐচ্ছিক | পদক্ষেপ গ্রহণের আহ্বান হিসেবে প্রদর্শিত হওয়ার জন্য মুক্ত লেখা। |
| ট্যাগ | ঐচ্ছিক | সত্তাটির সাথে সংশ্লিষ্ট ট্যাগগুলোর তালিকা। |
| পরবর্তী প্রকার দেখুন | শর্তসাপেক্ষে আবশ্যক | আইটেমটি কন্টিনিউয়েশন ক্লাস্টারে থাকলে এটি অবশ্যই প্রদান করতে হবে এবং এটি নিম্নলিখিত চার প্রকারের মধ্যে একটি হতে হবে: চালিয়ে যান: ব্যবহারকারী ইতিমধ্যেই এই কন্টেন্টটির ১ মিনিটের বেশি দেখেছেন। নতুন: ব্যবহারকারী কোনো পর্বভিত্তিক কন্টেন্টের উপলব্ধ সব পর্ব দেখে ফেলেছেন, কিন্তু একটি নতুন পর্ব উপলব্ধ হওয়ায় ঠিক একটি পর্বই এখনো দেখা হয়নি। এটি টিভি শো, কোনো সিরিজের রেকর্ড করা ফুটবল ম্যাচ ইত্যাদির ক্ষেত্রে প্রযোজ্য। পরবর্তী: ব্যবহারকারী কোনো পর্বভিত্তিক কন্টেন্টের এক বা একাধিক সম্পূর্ণ পর্ব দেখেছেন, কিন্তু এখনও একের বেশি পর্ব অথবা ঠিক একটি পর্ব বাকি আছে, যেখানে শেষ পর্বটি "নতুন" নয় এবং ব্যবহারকারী পর্বভিত্তিক কন্টেন্টটি দেখা শুরু করার আগেই তা প্রকাশিত হয়েছিল। ওয়াচলিস্ট: ব্যবহারকারী পরবর্তীতে কী দেখতে চান তা নিজে বেছে নেওয়ার জন্য স্পষ্টভাবে একটি সিনেমা, ইভেন্ট বা সিরিজকে ওয়াচলিস্টে যুক্ত করার সিদ্ধান্ত নিয়েছেন। |
| শেষ বাগদানের সময় | শর্তসাপেক্ষে আবশ্যক | আইটেমটি কন্টিনিউয়েশন ক্লাস্টারে থাকলে অবশ্যই প্রদান করতে হবে। ইপক মিলিসেকেন্ডে। |
| শেষ প্লেব্যাক পজিশন সময় | শর্তসাপেক্ষে আবশ্যক | যখন আইটেমটি কন্টিনিউয়েশন ক্লাস্টারে থাকে এবং WatchNextType-এর মান CONTINUE হয়, তখন এটি অবশ্যই প্রদান করতে হবে। ইপক মিলিসেকেন্ডে। |
VideoClipEntity
VideoClipEntity অবজেক্টটি TikTok বা YouTube-এর মতো সোশ্যাল মিডিয়া থেকে আসা একটি ভিডিও এনটিটিকে উপস্থাপন করে।
| বৈশিষ্ট্য | প্রয়োজনীয়তা | নোট |
|---|---|---|
| নাম | প্রয়োজনীয় | |
| পোস্টারের ছবি | প্রয়োজনীয় | কমপক্ষে একটি ছবি প্রয়োজন, এবং সেটি অবশ্যই অ্যাস্পেক্ট রেশিও সহ প্রদান করতে হবে। (ল্যান্ডস্কেপ ছবি কাম্য, তবে বিভিন্ন পরিস্থিতির জন্য পোর্ট্রেট এবং ল্যান্ডস্কেপ উভয় ধরনের ছবি জমা দেওয়ার পরামর্শ দেওয়া হয়।) নির্দেশনার জন্য ছবির বিবরণ দেখুন। |
| প্লেব্যাক ইউআরআই | প্রয়োজনীয় | ভিডিওটি চালানো শুরু করার জন্য প্রোভাইডার অ্যাপের ডিপ লিঙ্কটি ব্যবহার করুন। দ্রষ্টব্য: অ্যাট্রিবিউশনের জন্য আপনি ডিপ লিঙ্ক ব্যবহার করতে পারেন। এই প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী (FAQ) দেখুন। |
| তৈরি সময় | প্রয়োজনীয় | ইপক মিলিসেকেন্ডে। |
| সময়কাল | প্রয়োজনীয় | মানটি অবশ্যই মিলিসেকেন্ডে ধনাত্মক হতে হবে। |
| স্রষ্টা | প্রয়োজনীয় | মুক্ত পাঠ্য |
| স্রষ্টার ছবি | ঐচ্ছিক | স্রষ্টার অবতারের ছবি |
| দেখার সংখ্যা | ঐচ্ছিক | মুক্ত পাঠ্য, অবশ্যই স্থানীয়করণ করতে হবে। |
| কল টু অ্যাকশন টেক্সট | ঐচ্ছিক | পদক্ষেপ গ্রহণের আহ্বান হিসেবে প্রদর্শিত হওয়ার জন্য মুক্ত লেখা। |
| ট্যাগ | ঐচ্ছিক | সত্তাটির সাথে সংশ্লিষ্ট ট্যাগগুলোর তালিকা। |
| পরবর্তী প্রকার দেখুন | শর্তসাপেক্ষে আবশ্যক | আইটেমটি কন্টিনিউয়েশন ক্লাস্টারে থাকলে এটি অবশ্যই প্রদান করতে হবে এবং এটি নিম্নলিখিত চার প্রকারের মধ্যে একটি হতে হবে: চালিয়ে যান: ব্যবহারকারী ইতিমধ্যেই এই কন্টেন্টটির ১ মিনিটের বেশি দেখেছেন। নতুন: ব্যবহারকারী কোনো পর্বভিত্তিক কন্টেন্টের উপলব্ধ সব পর্ব দেখে ফেলেছেন, কিন্তু একটি নতুন পর্ব উপলব্ধ হওয়ায় ঠিক একটি পর্বই এখনো দেখা হয়নি। এটি টিভি শো, কোনো সিরিজের রেকর্ড করা ফুটবল ম্যাচ ইত্যাদির ক্ষেত্রে প্রযোজ্য। পরবর্তী: ব্যবহারকারী কোনো পর্বভিত্তিক কন্টেন্টের এক বা একাধিক সম্পূর্ণ পর্ব দেখেছেন, কিন্তু এখনও একের বেশি পর্ব অথবা ঠিক একটি পর্ব বাকি আছে, যেখানে শেষ পর্বটি "নতুন" নয় এবং ব্যবহারকারী পর্বভিত্তিক কন্টেন্টটি দেখা শুরু করার আগেই তা প্রকাশিত হয়েছিল। ওয়াচলিস্ট: ব্যবহারকারী পরবর্তীতে কী দেখতে চান তা নিজে বেছে নেওয়ার জন্য স্পষ্টভাবে একটি সিনেমা, ইভেন্ট বা সিরিজকে ওয়াচলিস্টে যুক্ত করার সিদ্ধান্ত নিয়েছেন। |
| শেষ বাগদানের সময় | শর্তসাপেক্ষে আবশ্যক | আইটেমটি কন্টিনিউয়েশন ক্লাস্টারে থাকলে অবশ্যই প্রদান করতে হবে। ইপক মিলিসেকেন্ডে। |
| শেষ প্লেব্যাক পজিশন সময় | শর্তসাপেক্ষে আবশ্যক | যখন আইটেমটি কন্টিনিউয়েশন ক্লাস্টারে থাকে এবং WatchNextType-এর মান CONTINUE হয়, তখন এটি অবশ্যই প্রদান করতে হবে। ইপক মিলিসেকেন্ডে। |
ছবির স্পেসিফিকেশন
নিম্নলিখিত বিভাগে ইমেজ অ্যাসেটগুলির জন্য প্রয়োজনীয় স্পেসিফিকেশনগুলি তালিকাভুক্ত করা হয়েছে:
ফাইল ফরম্যাট
PNG, JPG, স্ট্যাটিক GIF, WebP
সর্বোচ্চ ফাইলের আকার
৫১২০ কেবি
অতিরিক্ত সুপারিশ
- ছবির নিরাপদ এলাকা: আপনার গুরুত্বপূর্ণ বিষয়বস্তু ছবির মাঝের ৮০% অংশে রাখুন।
উদাহরণ
কোটলিন
var movie = MovieEntity.Builder()
.setName("Avengers")
.addPosterImage(Image.Builder()
.setImageUri(Uri.parse("http://www.x.com/image.png"))
.setImageHeightInPixel(960)
.setImageWidthInPixel(408)
.build())
.setPlayBackUri(Uri.parse("http://tv.com/playback/1"))
.setReleaseDateEpochMillis(1633032895L)
.setAvailability(ContentAvailability.AVAILABILITY_AVAILABLE)
.setDurationMillis(12345678L)
.addGenre("action")
.addContentRating("R")
.setWatchNextType(WatchNextType.TYPE_NEW)
.setLastEngagementTimeMillis(1664568895L)
.setCallToActionText("Watch Now")
.addTag("Action")
.build()
জাভা
MovieEntity movie = new MovieEntity.Builder()
.setName("Avengers")
.addPosterImage(
new Image.Builder()
.setImageUri(Uri.parse("http://www.x.com/image.png"))
.setImageHeightInPixel(960)
.setImageWidthInPixel(408)
.build())
.setPlayBackUri(Uri.parse("http://tv.com/playback/1"))
.setReleaseDateEpochMillis(1633032895L)
.setAvailability(ContentAvailability.AVAILABILITY_AVAILABLE)
.setDurationMillis(12345678L)
.addGenre("action")
.addContentRating("R")
.setWatchNextType(WatchNextType.TYPE_NEW)
.setLastEngagementTimeMillis(1664568895L)
.setCallToActionText("Watch Now")
.addTag("Action")
.build();
ধাপ ২: ক্লাস্টার ডেটা প্রদান করুন
কন্টেন্ট পাবলিশ করার কাজটি ব্যাকগ্রাউন্ডে (যেমন, 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());
সার্ভিসটি অনুরোধটি গ্রহণ করলে, এটি নির্দিষ্ট ক্লাস্টার টাইপের সাথে মিলে যাওয়া সমস্ত ক্লাস্টার থেকে বিদ্যমান ডেটা মুছে ফেলে। ক্লায়েন্টরা একটি বা একাধিক ক্লাস্টার টাইপ বেছে নিতে পারেন। কোনো ত্রুটির ক্ষেত্রে, সম্পূর্ণ অনুরোধটি প্রত্যাখ্যান করা হয় এবং বিদ্যমান অবস্থা বজায় রাখা হয়।
ত্রুটি পরিচালনা
পাবলিশ এপিআই (publish API) থেকে টাস্কের ফলাফল শুনে নেওয়ার জন্য বিশেষভাবে সুপারিশ করা হচ্ছে, যাতে একটি সফল টাস্ক পুনরুদ্ধার করে পুনরায় জমা দেওয়ার জন্য পরবর্তী পদক্ষেপ নেওয়া যায়।
কোটলিন
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 | সার্ভিস কলটি খুব ঘন ঘন করা হয়। |
ধাপ ৩: ব্রডকাস্ট ইন্টেন্ট পরিচালনা করুন
একটি জবের মাধ্যমে কন্টেন্ট পাবলিশ এপিআই কল করার পাশাপাশি, কন্টেন্ট পাবলিশের অনুরোধ গ্রহণ করার জন্য একটি BroadcastReceiver সেট আপ করা প্রয়োজন।
ব্রডকাস্ট ইন্টেন্টের মূল উদ্দেশ্য হলো অ্যাপ পুনরায় সক্রিয় করা এবং ডেটা সিঙ্ক করতে বাধ্য করা। ব্রডকাস্ট ইন্টেন্ট খুব ঘন ঘন পাঠানোর জন্য ডিজাইন করা হয়নি। এটি কেবল তখনই ট্রিগার হয় যখন এনগেজ সার্ভিস মনে করে যে কন্টেন্টটি পুরনো হয়ে যেতে পারে (উদাহরণস্বরূপ, এক সপ্তাহ পুরনো)। এর ফলে, এই বিষয়ে আরও বেশি নিশ্চয়তা থাকে যে ব্যবহারকারী একটি নতুন কন্টেন্টের অভিজ্ঞতা পাবেন, এমনকি যদি অ্যাপ্লিকেশনটি দীর্ঘ সময় ধরে চালানো না হয়।
BroadcastReceiver নিম্নলিখিত দুটি উপায়ে সেট আপ করতে হবে:
Context.registerReceiver()ব্যবহার করেBroadcastReceiverক্লাসের একটি ইনস্ট্যান্স ডায়নামিকভাবে রেজিস্টার করুন। এটি মেমরিতে সক্রিয় থাকা অ্যাপ্লিকেশনগুলো থেকে যোগাযোগ সক্ষম করে।
কোটলিন
class AppEngageBroadcastReceiver : BroadcastReceiver(){
// Trigger recommendation cluster publish when PUBLISH_RECOMMENDATION broadcast
// is received
// Trigger featured cluster publish when PUBLISH_FEATURED broadcast is received
// Trigger 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এ একটি ইমেল পাঠান এবং আপনার ইন্টিগ্রেটেড APK-টি সংযুক্ত করুন, যা গুগলের পরীক্ষার জন্য প্রস্তুত। - ইন্টিগ্রেশনটি প্রত্যাশিতভাবে কাজ করছে কিনা তা নিশ্চিত করার জন্য গুগল অভ্যন্তরীণভাবে যাচাই ও পর্যালোচনা করে। কোনো পরিবর্তনের প্রয়োজন হলে, গুগল প্রয়োজনীয় বিবরণসহ আপনার সাথে যোগাযোগ করে।
- টেস্টিং সম্পন্ন হলে এবং কোনো পরিবর্তনের প্রয়োজন না থাকলে, গুগল আপনার সাথে যোগাযোগ করে জানিয়ে দেয় যে আপনি আপডেট করা ও সমন্বিত APK ফাইলটি প্লে স্টোরে প্রকাশ করা শুরু করতে পারেন।
- আপনার আপডেট করা APK প্লে স্টোরে প্রকাশিত হয়েছে বলে গুগল নিশ্চিত করার পর, আপনার Recommendation , Featured , এবং Continuation ক্লাস্টারগুলো প্রকাশিত হতে পারে এবং ব্যবহারকারীরা তা দেখতে পেতে পারেন।