SDK রানটাইম কিভাবে SDK নতুন কার্যক্রম চালু করতে পারে তার উপর বিধিনিষেধ আরোপ করে। এটি পূর্ণ স্ক্রীন বিজ্ঞাপন ফর্ম্যাটের জন্য একটি চ্যালেঞ্জ তৈরি করে যা সাধারণত উন্নত নিয়ন্ত্রণ এবং ব্যবহারকারীর অভিজ্ঞতার জন্য একটি পৃথক কার্যকলাপ শুরু করার উপর নির্ভর করে। এটি মোকাবেলা করার জন্য, SDK রানটাইম স্যান্ডবক্সড কার্যকলাপের জন্য একটি অভিনব প্রক্রিয়া প্রবর্তন করে।
SDK রানটাইম পরিবেশের মধ্যে লোড করা SDKগুলি তাদের ম্যানিফেস্টে <activity>
ট্যাগগুলিকে সরাসরি সংজ্ঞায়িত করতে পারে না বা তাদের নিজস্ব কার্যকলাপ শুরু করতে পারে না। পরিবর্তে, একটি নতুন অভিপ্রায় ক্রিয়া, START_SANDBOXED_ACTIVITY
, চালু করা হয়েছে৷
যদিও SDK গুলি এই অ্যাকশনের সাথে ইন্টেন্ট চালু করা থেকেও সীমাবদ্ধ, SDKগুলি ক্লায়েন্ট অ্যাপকে এই অভিপ্রায় শুরু করার জন্য অনুরোধ করতে পারে৷ সিস্টেমটি তারপর একটি প্ল্যাটফর্ম-সংজ্ঞায়িত কার্যকলাপ তৈরি করে এবং এটি SDK-তে প্রেরণ করে। এই ক্রিয়াকলাপটি SDK-এর মতো একই প্রক্রিয়ায় চলবে৷
SDK তারপরে পূর্ণ স্ক্রীন বিজ্ঞাপন অভিজ্ঞতা বাস্তবায়ন এবং পরিচালনা করতে এই কার্যকলাপটি ব্যবহার করতে পারে।
প্ল্যাটফর্মের দ্বারা প্রদত্ত কার্যকলাপটি হল একটি আদর্শ android.app.Activity
, যা ক্লায়েন্ট অ্যাপের টাস্কের অংশ হিসেবে চালু করা হয়েছে।
SDK রানটাইমে কার্যকলাপ সৃষ্টি
ক্রিয়াকলাপ তৈরি করার জন্য আপনার কাছে দুটি প্রাথমিক পদ্ধতি রয়েছে: সুবিন্যস্ত জেটপ্যাক অ্যাক্টিভিটি লাইব্রেরি ব্যবহার করা বা প্ল্যাটফর্ম API-এর সাথে সরাসরি ইন্টারঅ্যাক্ট করা।
আমরা অ্যাক্টিভিটি লাইব্রেরি ব্যবহার করার পরামর্শ দিই কারণ তারা অন্তর্নিহিত জটিলতাকে বিমূর্ত করে কার্যকলাপ তৈরিকে সহজ করে।
কার্যকলাপ লাইব্রেরি
কার্যকলাপ লাইব্রেরি বিভিন্ন সুবিধা প্রদান করে:
- অ্যাক্টিভিটি হ্যান্ডলারদের নিবন্ধন করার অভ্যন্তরীণ বিশদ বিবরণ এবং ক্লায়েন্ট অ্যাপের সাথে তাদের শনাক্তকারী ভাগ করে নিন।
- অ্যাপ ডেভেলপারদের SDK কীভাবে তাদের অ্যাপের মধ্যে ক্রিয়াকলাপ তৈরি করে তার উপর আরও নিয়ন্ত্রণ দেয় তাদের শর্তাদি (পূর্বাভাস) পূরণ করতে দিয়ে।
- SDK-এর জন্য APIs সংজ্ঞায়িত করার জন্য একটি ঐক্যবদ্ধ উপায় তৈরি করুন যা কার্যক্রম চালু করে।
তিনটি কার্যকলাপ লাইব্রেরি আছে: কোর, ক্লায়েন্ট, এবং প্রদানকারী।
- মূল লাইব্রেরি ক্লায়েন্ট অ্যাপ্লিকেশন এবং প্রদানকারী লাইব্রেরি দ্বারা ব্যবহৃত ইন্টারফেস প্রদান করে।
- প্রোভাইডার লাইব্রেরি SDK-এর কার্যক্রম চালু করার জন্য API প্রদান করে।
- ক্লায়েন্ট লাইব্রেরি একটি অ্যাক্টিভিটি লঞ্চার তৈরি করার জন্য ক্লায়েন্ট অ্যাপ্লিকেশানগুলির জন্য API প্রদান করে, যা SDKগুলি অ্যাপ্লিকেশানগুলিকে অ্যাক্টিভিটি চালু করার জন্য অনুরোধ করতে ব্যবহার করতে পারে।
এই লাইব্রেরিগুলি নিম্নলিখিত API গুলি প্রবর্তন করে:
-
SdkActivityLauncher
: অ্যাক্টিভিটি লঞ্চার SDK-কে ক্লায়েন্ট অ্যাপ থেকে লঞ্চিং কার্যক্রম পরিচালনা করতে দেয়। ক্লায়েন্ট অ্যাপ্লিকেশানগুলির একটি লঞ্চার তৈরি করা উচিত এবং এটিকে একটি প্যারামিটার হিসাবে SDK এর APIগুলিতে প্রেরণ করা উচিত যা কার্যক্রম শুরু করে৷ -
<T : Activity & LifecycleOwner> T.createSdkActivityLauncher(() -> Boolean )
: একটি এক্সটেনশন ফাংশন যা ক্লায়েন্ট অ্যাপ লঞ্চার তৈরি করতে তাদের কার্যকলাপ থেকে কল করতে পারে। -
SdkActivityLauncher.launchSdkActivity(IBinder)
: অ্যাপ্লিকেশানকে কার্যক্রম চালু করার অনুরোধ করার জন্য SDK দ্বারা ব্যবহৃত একটি পদ্ধতি৷
অ্যাক্টিভিটি লাইব্রেরি সহ কার্যক্রম চালু করার প্রবাহ নিম্নরূপ:
- SDK যেকোন এপিআইতে
SdkActivityLauncher
ধরনের একটি প্যারামিটার যোগ করে যা কার্যক্রম শুরু করবে। - ক্লায়েন্ট অ্যাপ
createSdkActivityLauncher
তার ক্রিয়াকলাপগুলির একটিতে একটি লঞ্চার তৈরি করতে কল করে যা API কলগুলিতে SDK-এ পাস করা যেতে পারে। - SDK
SdkSandboxControllerCompat.registerSdkSandboxActivityHandler(SdkSandboxActivityHandlerCompat)
কল করে এবং শনাক্তকারী টোকেন পুনরুদ্ধার করে। - SDK ক্রিয়াকলাপটি চালু করার জন্য
launchSdkActivity
কল করে৷
নিম্নলিখিত চিত্রটি কার্যকলাপ লাইব্রেরি ব্যবহার করার ক্ষেত্রে প্রবাহ দেখায়।
প্ল্যাটফর্ম API
SDK রানটাইমের মধ্যে স্যান্ডবক্সড ক্রিয়াকলাপ তৈরি এবং পরিচালনার সুবিধার্থে প্ল্যাটফর্মটি নিম্নলিখিত APIগুলি প্রবর্তন করে:
-
SdkSandboxActivityHandler
: অ্যাক্টিভিটি হ্যান্ডলার ব্যবহার করা হয় SDK-কে জানানোর জন্য যখন কোনও অ্যাক্টিভিটি তৈরি করা হয় এবং এটি SDK দ্বারা নিবন্ধিত হয়। - অ্যাক্টিভিটি হ্যান্ডলারদের রেজিস্ট্রেশনে সহায়তা করার জন্য, SDK
SdkSandboxController
অধীনে নিম্নলিখিত পদ্ধতিগুলি ব্যবহার করতে পারে:-
.registerSdkSandboxActivityHandler(SdkSandboxActivityHandler)
:SdkSandboxActivityHandler
এর একটি উদাহরণ নিবন্ধন করে, যা একটিIBinder
শনাক্তকারী প্রদান করে। -
.unregisterSdkSandboxActivityHandler(SdkSandboxActivityHandler)
: এটির শনাক্তকারী ব্যবহার করেSdkSandboxActivityHandler
এর একটি নিবন্ধিত উদাহরণ আনরেজিস্টার করে।
-
-
SdkSandboxManager.startSdkSandboxActivity(Activity, IBinder)
: ক্লায়েন্ট অ্যাপ থেকে আহ্বান করা, এই পদ্ধতিটি SDK-এর জন্য ক্রিয়াকলাপ তৈরি করতে ট্রিগার করে। ক্লায়েন্ট অ্যাপটিকে তার নির্বাচিত প্রারম্ভিক ক্রিয়াকলাপ এবং SDK-এর কার্যকলাপ হ্যান্ডলার শনাক্তকারী প্যারামিটার হিসাবে পাস করতে হবে।
প্ল্যাটফর্ম API ব্যবহার করে একটি কার্যকলাপ শুরু করতে, SDK-কে এই প্রবাহ অনুসরণ করতে হবে:
- SDK প্রদত্ত API ব্যবহার করে একটি কার্যকলাপ হ্যান্ডলার নিবন্ধন করে এবং একটি শনাক্তকারী পায়।
- SDK এই শনাক্তকারীকে তার ক্লায়েন্ট অ্যাপের সাথে শেয়ার করে।
- ক্লায়েন্ট অ্যাপটি প্ল্যাটফর্ম API
startSdkSandboxActivity(Activity, IBinder)
এর সাথে SDK রানটাইমে একটি কার্যকলাপ শুরু করার পদ্ধতিটিকে কল করে, এই নতুন অ্যাক্টিভিটির জন্য নির্বাচিত প্রারম্ভিক অ্যাক্টিভিটি এবং অ্যাক্টিভিটি হ্যান্ডলারের শনাক্তকারীর প্যারামিটার হিসাবে পাস করে। - প্ল্যাটফর্মটি একটি অ্যাক্টিভিটি শুরু করে এবং অ্যাক্টিভিটি হ্যান্ডলার (
SdkSandboxActivityHandler.onActivityCreated(Activity)
) এ একটি কলব্যাকের মাধ্যমে SDK-কে অবহিত করে। - SDK ক্রিয়াকলাপটি একটি বিজ্ঞাপনের মাধ্যমে তৈরি করতে ব্যবহার করে৷
প্ল্যাটফর্ম এপিআই ব্যবহার করা SDK কে উপযুক্ত সময়ে তার API-এর মাধ্যমে ক্লায়েন্ট অ্যাপের সাথে SdkSandboxActivityHandler- এর শনাক্তকারী শেয়ার করার জন্য দায়ী করে, এবং ক্লায়েন্ট অ্যাপগুলিকে কীভাবে এটি ব্যবহার করতে হয় সে সম্পর্কে গাইড করে।
নিম্নলিখিত ফ্লো ডায়াগ্রামে, উদাহরণ SDK-এ একটি মেথড launchActivity(AppCallback)
রয়েছে যা একটি কলব্যাক আশা করে (SDK-এর API-এর অংশ হিসাবে সংজ্ঞায়িত)৷ এই কলব্যাকটি SDK দ্বারা অ্যাক্টিভিটি হ্যান্ডলার ( SdkSandboxActivityHandler
) এর শনাক্তকারীকে ক্লায়েন্ট অ্যাপের সাথে শেয়ার করতে ব্যবহার করা হয়।
দর্শনযোগ্যতা
SDK রানটাইমের মধ্যে, ক্লায়েন্ট অ্যাপের ভিউ হায়ারার্কিতে সংহত বিজ্ঞাপনগুলি SDK প্রক্রিয়া থেকে ক্লায়েন্ট অ্যাপের প্রক্রিয়ায় SDK ভিউ রেন্ডার করতে পার্শ্ব চ্যানেল ব্যবহার করে।
বিজ্ঞাপনটি ব্যবহারকারীর কাছে দৃশ্যমান কিনা তা নির্ধারণ করতে SDK একই ভিউ API ব্যবহার করতে পারে না যেভাবে তারা SDK রানটাইমের বাইরে ব্যবহার করে, কারণ বিজ্ঞাপনের দৃশ্যটি অ্যাপ্লিকেশনের উইন্ডোতে সংযুক্ত নয় ( দর্শনযোগ্যতা )।
বিপরীতে, প্ল্যাটফর্ম-প্রদত্ত কার্যকলাপটি SDK রানটাইম প্রক্রিয়ার মধ্যে নেটিভভাবে চলে, সাইড চ্যানেলের প্রয়োজনীয়তা দূর করে এবং SDK-কে স্ট্যান্ডার্ড অ্যান্ড্রয়েড Activity
এবং View
API ব্যবহার করার অনুমতি দেয়।
এই বিভিন্ন বাস্তবায়নের কারণে, বিজ্ঞাপন লোডিং প্রসঙ্গ নির্বিশেষে দর্শনযোগ্যতার সংকেতগুলি পুনরুদ্ধার করতে ইন্টারফেসগুলিকে একত্রিত করার জন্য চলমান প্রচেষ্টার লক্ষ্য।
জীবনচক্র
ActivityHolder
SdkSandboxActivityHandlerCompat.onActivityCreated(ActivityHolder)
LifecycleOwner
প্রয়োগ করে এবং Lifecycle.Event
সম্পর্কে জানতে ব্যবহার করা যেতে পারে।
পিছনে নেভিগেশন
ActivityHolder.getOnBackPressedDispatcher()
পদ্ধতিটি OnBackPressedDispatcher
রিটার্ন করে যা ব্যাক নেভিগেশন পরিচালনা করতে OnBackPressedCallback
ইনস্ট্যান্স রেজিস্টার করতে ব্যবহার করা যেতে পারে।