फ़ुल-स्क्रीन विज्ञापनों के लिए गतिविधि से जुड़ी सहायता

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 टूल, गतिविधियों को लॉन्च करने के लिए ऐप्लिकेशन का अनुरोध करने के लिए करता है.

ऐक्टिविटी लाइब्रेरी के साथ गतिविधियों को लॉन्च करने की प्रोसेस नीचे दी गई है:

  1. SDK टूल, ऐसे सभी एपीआई में SdkActivityLauncher टाइप का पैरामीटर जोड़ता है जो गतिविधियों को शुरू करेंगे.
  2. क्लाइंट ऐप्लिकेशन, एक लॉन्चर बनाने के लिए अपनी किसी एक गतिविधि के आधार पर createSdkActivityLauncher को कॉल करता है, जिसे एपीआई कॉल करने पर SDK टूल को भेजा जा सकता है.
  3. SDK टूल SdkSandboxControllerCompat.registerSdkSandboxActivityHandler(SdkSandboxActivityHandlerCompat) को कॉल करता है और आइडेंटिफ़ायर टोकन को हासिल करता है.
  4. SDK टूल, गतिविधि को लॉन्च करने के लिए launchSdkActivity को कॉल करता है.

ऐक्टिविटी लाइब्रेरी का इस्तेमाल करने के मामले में, यहां दिया गया डायग्राम फ़्लो दिखाता है.

ऐक्टिविटी लाइब्रेरी के क्रम का डायग्राम
गतिविधियों का इस्तेमाल करके, गतिविधि शुरू करने का फ़्लो दिखाने वाला सिलसिलेवार डायग्राम.

प्लैटफ़ॉर्म एपीआई

SDK टूल के रनटाइम में सैंडबॉक्स की गई गतिविधियों को बनाने और मैनेज करने की सुविधा देने के लिए, इस प्लैटफ़ॉर्म में ये एपीआई उपलब्ध कराए गए हैं:

  • SdkSandboxActivityHandler: गतिविधि हैंडलर का इस्तेमाल, गतिविधि बनाए जाने पर SDK टूल को इसकी सूचना देने के लिए किया जाता है. साथ ही, इसे SDK टूल ने रजिस्टर भी किया है.
  • गतिविधि हैंडलर के रजिस्ट्रेशन में मदद करने के लिए, SDK टूल SdkSandboxController में दिए गए इन तरीकों का इस्तेमाल कर सकता है:
  • SdkSandboxManager.startSdkSandboxActivity(Activity, IBinder): क्लाइंट ऐप्लिकेशन से शुरू किया गया यह तरीका, SDK टूल के लिए गतिविधियां बनाने को ट्रिगर करता है. क्लाइंट ऐप्लिकेशन को, गतिविधि शुरू करने के लिए चुने गए पैरामीटर और SDK टूल के गतिविधि हैंडलर आइडेंटिफ़ायर को पास करना होगा.

प्लैटफ़ॉर्म एपीआई का इस्तेमाल करके कोई गतिविधि शुरू करने के लिए, SDK टूल को इस फ़्लो का पालन करना होगा:

  1. SDK टूल, दिए गए एपीआई का इस्तेमाल करके एक गतिविधि हैंडलर रजिस्टर करता है और एक आइडेंटिफ़ायर हासिल करता है.
  2. SDK टूल, इस आइडेंटिफ़ायर को अपने क्लाइंट ऐप्लिकेशन के साथ शेयर करता है.
  3. क्लाइंट ऐप्लिकेशन, प्लैटफ़ॉर्म एपीआई startSdkSandboxActivity(Activity, IBinder) की मदद से, SDK टूल के रनटाइम में कोई गतिविधि शुरू करने का तरीका कॉल करता है. यह तरीका, इस नई गतिविधि के लिए चुनी गई शुरुआती गतिविधि और गतिविधि हैंडलर के आइडेंटिफ़ायर के तौर पर पास होता है.
  4. प्लैटफ़ॉर्म, ऐक्टिविटी शुरू करता है और गतिविधि हैंडलर (SdkSandboxActivityHandler.onActivityCreated(Activity)) में कॉलबैक की मदद से, SDK टूल को इसकी सूचना देता है.
  5. SDK टूल इस गतिविधि का इस्तेमाल करके, उसमें किसी विज्ञापन का डेटा अपने-आप भरता है.

Platform API का इस्तेमाल करने पर SDK टूल, एपीआई की मदद से SdkSandboxActivityHandler के आइडेंटिफ़ायर को क्लाइंट ऐप्लिकेशन के साथ सही समय पर शेयर कर सकता है. साथ ही, वह क्लाइंट ऐप्लिकेशन को इस्तेमाल करने का तरीका भी बता सकता है.

यहां दिए गए फ़्लो डायग्राम में, SDK टूल के उदाहरण में launchActivity(AppCallback) तरीके का इस्तेमाल किया गया है. इसमें एक कॉलबैक की ज़रूरत होती है, जिसे SDK टूल के एपीआई के हिस्से के तौर पर बताया जाता है. SDK टूल, इस कॉलबैक का इस्तेमाल गतिविधि हैंडलर (SdkSandboxActivityHandler) के आइडेंटिफ़ायर को क्लाइंट ऐप्लिकेशन के साथ शेयर करने के लिए करता है.

प्लैटफ़ॉर्म एपीआई के क्रम का डायग्राम
प्लैटफ़ॉर्म एपीआई का इस्तेमाल करके, किसी गतिविधि को शुरू करने का फ़्लो दिखाने वाला सिलसिलेवार डायग्राम.

विज्ञापन दिखने से जुड़े आंकड़े

SDK टूल के रनटाइम में, क्लाइंट ऐप्लिकेशन के व्यू हैरारकी (व्यू और व्यू ग्रुप के लेआउट का क्रम) में इंटिग्रेट किए गए विज्ञापन, साइड चैनल का इस्तेमाल करते हैं. इससे, SDK टूल की प्रोसेस से क्लाइंट ऐप्लिकेशन की प्रोसेस के लिए, SDK टूल के व्यू को रेंडर किया जाता है.

SDK टूल उन व्यू एपीआई का इस्तेमाल नहीं कर सकता जिनका इस्तेमाल वे SDK रनटाइम के बाहर करते हैं. इससे यह पता लगाया जा सकता है कि विज्ञापन, उपयोगकर्ता को दिखेगा या नहीं. इसकी वजह यह है कि विज्ञापन व्यू, ऐप्लिकेशन की विंडो (विज्ञापन दिखने से जुड़े आंकड़े) से अटैच नहीं होता.

वहीं दूसरी ओर, प्लैटफ़ॉर्म से मिली गतिविधि, SDK टूल की रनटाइम प्रोसेस के अंदर मूल रूप से चलती है. इससे साइड चैनलों की ज़रूरत नहीं पड़ती. साथ ही, SDK टूल को Android के स्टैंडर्ड Activity और View एपीआई इस्तेमाल करने की अनुमति मिल जाती है.

अलग-अलग तरीकों से किए जा रहे इन तरीकों की वजह से, हमारी लगातार कोशिश रहती है कि इंटरफ़ेस को एक ही जगह पर दिखाया जा सके, ताकि विज्ञापन दिखने से जुड़े आंकड़ों के सिग्नल को फिर से पाया जा सके. भले ही, विज्ञापन लोड करने का संदर्भ कुछ भी हो.

जीवनचक्र

ActivityHolder, SDK टूल को SdkSandboxActivityHandlerCompat.onActivityCreated(ActivityHolder) के ज़रिए पास किया जाता है. यह LifecycleOwner लागू करता है. इसका इस्तेमाल Lifecycle.Event के बारे में जानने के लिए किया जा सकता है.

पीछे जाने का नेविगेशन

यह तरीका ActivityHolder.getOnBackPressedDispatcher() OnBackPressedDispatcher दिखाता है, जिसका इस्तेमाल OnBackPressedCallback इंस्टेंस को वापस नेविगेशन को मैनेज करने के लिए किया जा सकता है.