SDK टूल का रनटाइम, कुछ पाबंदियों के साथ यह तय करता है कि SDK टूल की मदद से, नई गतिविधियां कैसे लॉन्च की जा सकती हैं. इस वजह से, फ़ुल स्क्रीन वाले विज्ञापन फ़ॉर्मैट के लिए चुनौती का सामना करना पड़ सकता है. आम तौर पर, ये फ़ॉर्मैट बेहतर कंट्रोल और उपयोगकर्ता अनुभव के लिए, एक अलग गतिविधि शुरू करते हैं. इस समस्या को हल करने के लिए, SDK टूल के रनटाइम में सैंडबॉक्स की गई गतिविधियों के लिए एक नए तरीके की शुरुआत की गई है.
SDK टूल के रनटाइम एनवायरमेंट में लोड किए गए SDK टूल, सीधे तौर पर अपने मेनिफ़ेस्ट में <activity>
टैग तय नहीं कर सकते या अपनी गतिविधियां शुरू नहीं कर सकते.
इसके बजाय, एक नई इंटेंट कार्रवाई, START_SANDBOXED_ACTIVITY
शुरू की गई है.
SDK टूल पर इस कार्रवाई के साथ इंटेंट लॉन्च करने पर भी पाबंदी है. हालांकि, SDK टूल ये काम कर सकते हैं: इस इंटेंट को शुरू करने के लिए, क्लाइंट ऐप्लिकेशन से अनुरोध करें. इसके बाद, सिस्टम प्लैटफ़ॉर्म के मुताबिक तय की गई एक गतिविधि बनाता है और उसे SDK टूल के पास भेज देता है. यह गतिविधि इतने समय में चलेगी और SDK टूल वाली प्रोसेस ही समझ ली है.
इसके बाद, SDK टूल इस गतिविधि का इस्तेमाल करके फ़ुल स्क्रीन वाले विज्ञापन को लागू और मैनेज कर सकता है अनुभव.
प्लैटफ़ॉर्म से मिलने वाली गतिविधि एक स्टैंडर्ड android.app.Activity
है,
क्लाइंट ऐप्लिकेशन के टास्क के हिस्से के तौर पर लॉन्च किया गया.
SDK टूल के रनटाइम पर गतिविधि बनाने की सुविधा
गतिविधियां बनाने के लिए आपके पास दो मुख्य तरीके हैं: व्यवस्थित Jetpack गतिविधि लाइब्रेरी का इस्तेमाल करना या प्लैटफ़ॉर्म एपीआई से सीधे इंटरैक्ट करना.
हम ऐक्टिविटी लाइब्रेरी का इस्तेमाल करने का सुझाव देते हैं, क्योंकि ये गतिविधियों को आसानी से बनाने में मदद करती हैं, क्योंकि ये बुनियादी चुनौतियों के बारे में बताती हैं.
ऐक्टिविटी लाइब्रेरी
गतिविधि लाइब्रेरी में कई फ़ायदे:
- ऐक्टिविटी हैंडलर को रजिस्टर करने और क्लाइंट ऐप्लिकेशन के साथ उनके आइडेंटिफ़ायर शेयर करने की इंटरनल जानकारी को छोटा करें.
- इस सुविधा की मदद से, ऐप्लिकेशन डेवलपर को यह बेहतर तरीके से कंट्रोल मिलता है कि SDK टूल, ऐप्लिकेशन में गतिविधियां कैसे बनाते हैं. इसके लिए, उन्हें शर्तें तय करने की अनुमति मिलती है, ताकि उन्हें शर्तों को पूरा करने की अनुमति मिल सके.
- गतिविधियां लॉन्च करने वाले एपीआई तय करने के लिए, SDK टूल के लिए एक यूनिफ़ाइड तरीका बनाएं.
गतिविधि से जुड़ी तीन लाइब्रेरी होती हैं: कोर, क्लाइंट, और सेवा देने वाली कंपनी.
- कोर लाइब्रेरी ऐसे इंटरफ़ेस उपलब्ध कराती है जिनका इस्तेमाल क्लाइंट ऐप्लिकेशन और प्रोवाइडर लाइब्रेरी पर जाएं.
- provider लाइब्रेरी, SDK टूल के लिए एपीआई मुहैया कराती है, ताकि गतिविधियां लॉन्च की जा सकें.
- क्लाइंट लाइब्रेरी में क्लाइंट ऐप्लिकेशन के लिए, ऐक्टिविटी लॉन्चर बनाने के लिए एपीआई उपलब्ध होते हैं. SDK टूल इनका इस्तेमाल करके, ऐप्लिकेशन से गतिविधियां लॉन्च करने का अनुरोध कर सकते हैं.
ये लाइब्रेरी, नीचे दिए गए एपीआई की सुविधा देती हैं:
SdkActivityLauncher
: गतिविधि लॉन्चर की मदद से SDK टूल, क्लाइंट ऐप्लिकेशन से लॉन्च होने वाली गतिविधियों को मैनेज कर सकते हैं. क्लाइंट ऐप्लिकेशन को एक लॉन्चर बनाना चाहिए और उसे SDK टूल के एपीआई को पैरामीटर के तौर पर पास करना चाहिए जो गतिविधियां शुरू करते हैं.<T : Activity & LifecycleOwner> T.createSdkActivityLauncher(() -> Boolean )
: एक एक्सटेंशन फ़ंक्शन जिसे क्लाइंट ऐप्लिकेशन अपनी गतिविधियों से लॉन्चर बनाने के लिए कॉल कर सकता है.SdkActivityLauncher.launchSdkActivity(IBinder)
: यह एक ऐसा तरीका है जिसका इस्तेमाल SDK टूल, गतिविधियों को लॉन्च करने के लिए ऐप्लिकेशन का अनुरोध करने के लिए करता है.
ऐक्टिविटी लाइब्रेरी के साथ गतिविधियों को लॉन्च करने की प्रोसेस नीचे दी गई है:
- SDK टूल, किसी टाइप का पैरामीटर जोड़ता है
SdkActivityLauncher
को उन सभी एपीआई के लिए इस्तेमाल किया जाएगा जो गतिविधियां शुरू करेंगे. - क्लाइंट ऐप्लिकेशन के कॉल करने पर
createSdkActivityLauncher
का इस्तेमाल करके, ऐसा लॉन्चर बनाया जा सकता है जिसे एपीआई कॉल करने पर SDK टूल को भेजा जा सके. - SDK टूल से किए गए कॉल
SdkSandboxControllerCompat.registerSdkSandboxActivityHandler(SdkSandboxActivityHandlerCompat)
और आइडेंटिफ़ायर टोकन फिर से हासिल करता है. - SDK टूल से किए गए कॉल
launchSdkActivity
गतिविधि को लॉन्च करने के लिए.
ऐक्टिविटी लाइब्रेरी का इस्तेमाल करने के मामले में, यहां दिया गया डायग्राम फ़्लो दिखाता है.
प्लैटफ़ॉर्म एपीआई
प्लैटफ़ॉर्म पर ये एपीआई उपलब्ध कराए गए हैं, ताकि कॉन्टेंट बनाने और उसे मैनेज करने में आसानी हो SDK टूल के रनटाइम में सैंडबॉक्स की गई गतिविधियों को मैनेज करना:
SdkSandboxActivityHandler
: गतिविधि हैंडलर का इस्तेमाल, गतिविधि बनाए जाने पर SDK टूल को इसकी सूचना देने के लिए किया जाता है. साथ ही, इसे SDK टूल ने रजिस्टर भी किया है.- गतिविधि हैंडलर के रजिस्ट्रेशन में मदद करने के लिए, SDK टूल
SdkSandboxController
में दिए गए इन तरीकों का इस्तेमाल कर सकता है:.registerSdkSandboxActivityHandler(SdkSandboxActivityHandler)
: इस फ़ंक्शन के इंस्टेंस को रजिस्टर करता हैSdkSandboxActivityHandler
, यह एकIBinder
आइडेंटिफ़ायर दिखाता है..unregisterSdkSandboxActivityHandler(SdkSandboxActivityHandler)
: के रजिस्टर किए गए इंस्टेंस का रजिस्ट्रेशन रद्द करता हैSdkSandboxActivityHandler
इसके लिए, आइडेंटिफ़ायर का इस्तेमाल किया जाता है.
SdkSandboxManager.startSdkSandboxActivity(Activity, IBinder)
: क्लाइंट ऐप्लिकेशन से शुरू किया गया यह तरीका, SDK टूल के लिए गतिविधियां बनाने को ट्रिगर करता है. क्लाइंट ऐप्लिकेशन को, गतिविधि शुरू करने के लिए चुने गए पैरामीटर और SDK टूल के गतिविधि हैंडलर आइडेंटिफ़ायर को पास करना होगा.
प्लैटफ़ॉर्म एपीआई का इस्तेमाल करके कोई गतिविधि शुरू करने के लिए, SDK टूल को इस फ़्लो का पालन करना होगा:
- SDK टूल, दिए गए एपीआई का इस्तेमाल करके एक गतिविधि हैंडलर रजिस्टर करता है और एक आइडेंटिफ़ायर हासिल करता है.
- SDK टूल, इस आइडेंटिफ़ायर को अपने क्लाइंट ऐप्लिकेशन के साथ शेयर करता है.
- क्लाइंट ऐप्लिकेशन, प्लैटफ़ॉर्म एपीआई
startSdkSandboxActivity(Activity, IBinder)
की मदद से, SDK टूल के रनटाइम में कोई गतिविधि शुरू करने का तरीका कॉल करता है. यह तरीका, इस नई गतिविधि के लिए चुनी गई शुरुआती गतिविधि और गतिविधि हैंडलर के आइडेंटिफ़ायर के तौर पर पास होता है. - प्लैटफ़ॉर्म, ऐक्टिविटी शुरू करता है और गतिविधि हैंडलर (
SdkSandboxActivityHandler.onActivityCreated(Activity)
) में कॉलबैक की मदद से, SDK टूल को इसकी सूचना देता है. - SDK टूल इस गतिविधि का इस्तेमाल करके, उसमें किसी विज्ञापन का डेटा अपने-आप भरता है.
प्लैटफ़ॉर्म एपीआई का इस्तेमाल करने पर, SDK टूल SdkSandboxActivityHandler की एपीआई के ज़रिए, सही समय पर क्लाइंट ऐप्लिकेशन से आइडेंटिफ़ायर और क्लाइंट ऐप्लिकेशन को गाइड करें और जानें कि इसे कैसे इस्तेमाल करना है.
यहां दिए गए फ़्लो डायग्राम में, SDK टूल के उदाहरण में launchActivity(AppCallback)
तरीका दिया गया है. इसमें
कॉलबैक (SDK टूल के एपीआई के हिस्से के तौर पर बताया गया). इस कॉलबैक का इस्तेमाल
गतिविधि हैंडलर को शेयर करने के लिए SDK टूल (SdkSandboxActivityHandler
)
आइडेंटिफ़ायर के तौर पर जोड़ा जा सकता है.
विज्ञापन दिखने से जुड़े आंकड़े
SDK टूल के रनटाइम में, क्लाइंट ऐप्लिकेशन के व्यू हैरारकी (व्यू और व्यू ग्रुप के लेआउट का क्रम) के इस्तेमाल के साथ इंटिग्रेट किए गए विज्ञापन साइड चैनल का इस्तेमाल करके, SDK टूल व्यू को क्लाइंट ऐप्लिकेशन की प्रोसेस में देखा जा सकता है.
SDK टूल उन व्यू एपीआई का इस्तेमाल नहीं कर सकता जिनका इस्तेमाल, SDK टूल के रनटाइम के बाहर किया जाता है यह तय किया जा सकता है कि उपयोगकर्ता को विज्ञापन दिखेगा या नहीं. इसकी वजह यह है कि विज्ञापन को जो आवेदन की विंडो पर अटैच है (विज्ञापन दिखने से जुड़े आंकड़े).
वहीं दूसरी ओर, प्लैटफ़ॉर्म से मिली गतिविधि, SDK टूल की रनटाइम प्रोसेस के अंदर मूल रूप से चलती है. इससे साइड चैनलों की ज़रूरत नहीं पड़ती. साथ ही, SDK टूल को Android के स्टैंडर्ड Activity
और View
एपीआई का इस्तेमाल करने की अनुमति मिल जाती है.
इन अलग-अलग तरीकों के कारण, अब तक की जा रही कोशिशों का मकसद इंटरफ़ेस, जो विज्ञापन लोड होने के संदर्भ पर ध्यान दिए बिना विज्ञापन दिखने से जुड़े आंकड़ों के सिग्नल को फिर से हासिल करता है.
जीवनचक्र
कॉन्टेंट बनाने
ActivityHolder
SDK टूल को इसके ज़रिए भेजा जाता है
SdkSandboxActivityHandlerCompat.onActivityCreated(ActivityHolder)
लागू करता है
LifecycleOwner
साथ ही, इसका इस्तेमाल करके,
Lifecycle.Event
.
पीछे जाने का नेविगेशन
तरीका
ActivityHolder.getOnBackPressedDispatcher()
वापस करना
OnBackPressedDispatcher
जिसका इस्तेमाल करके रजिस्टर किया जा सकता है
OnBackPressedCallback
पीछे के नेविगेशन को हैंडल करने के इंस्टेंस.