Google Mobile Ads SDK, पसंद के मुताबिक सर्च स्टाइल के साथ भी काम करता है. अगर आपके ऐप्लिकेशन में पहले से ही 'Google मोबाइल विज्ञापन SDK' का इस्तेमाल किया जा रहा है, तो हमारा सुझाव है कि आप इसके बजाय, AFSMA SDK वर्शन का इस्तेमाल करें.
अगर आपको 19.0.0 या इसके बाद के वर्शन पर 18.1.0 या इससे पहले के वर्शन पर अपग्रेड करना है, तो कृपया डेटा को दूसरी जगह भेजने से जुड़ी गाइड देखें.
ज़रूरी शर्तें
इस गाइड में यह माना जाएगा कि आपको इन चीज़ों के बारे में पता है:
- कस्टम खोज शैलियों के साथ AdSense कस्टम खोज विज्ञापन
- Android ऐप्लिकेशन डेवलपमेंट
AFS नेटिव SDK टूल इंपोर्ट करें
SDK टूल जोड़ें
अपने ऐप्लिकेशन में AFS नेटिव SDK टूल जोड़ने के लिए, यह तरीका अपनाएं:
अपनी ऐप्लिकेशन मॉड्यूल डायरेक्ट्री में build.gradle
फ़ाइल खोलें.
SDK टूल के सबसे नए वर्शन के लिए, dependencies
में जाकर नया बिल्ड नियम जोड़ें:
dependencies {
implementation 'com.google.android.gms:play-services-afs-native:19.0.3'
}
यह पक्का करें कि आपके टॉप-लेवल build.gradle
में google()
रेपो या maven { url "https://maven.google.com" }
का रेफ़रंस शामिल हो.
अपने प्रोजेक्ट में Google Play स्टैंडअलोन वर्शन मैचर प्लगिन शामिल करने के लिए, इन निर्देशों का पालन करें.
इस प्लग इन को लागू करने पर, जब AFS नेटिव SDK टूल का इस्तेमाल Google Play Services के साथ काम न करने वाले वर्शन के साथ किया जाता है, तो
ग्रेडल बिल्ड की गड़बड़ी होती है. इससे, ऐप्लिकेशन को बनाने की अनुमति तो नहीं मिलती, लेकिन रनटाइम में क्रैश हो सकते हैं. इसके अलावा, अपने प्रोजेक्ट में failOnVersionConflict()
ResolutionStrategy लागू करें. इससे, आपके प्रोजेक्ट में Google Play Services के साथ काम न करने वाले वर्शन इस्तेमाल होने पर, बिल्ड से जुड़ी गड़बड़ी पैदा हो सकती है.
बदलावों को सेव करें और टूलबार में Gredle Files के साथ प्रोजेक्ट सिंक करें पर क्लिक करें.
Android सपोर्ट लाइब्रेरी के बजाय AndroidX का इस्तेमाल करना
SDK टूल के 17.0.0
वर्शन की शुरुआत में, आपके ऐप्लिकेशन को Android सपोर्ट लाइब्रेरी के बजाय, Jetpack (AndroidX) लाइब्रेरी का इस्तेमाल करना होगा. काम करने के लिए ज़रूरी शर्तें:
com.android.tools.build:gradle
को v3.2.1 या इसके बाद के वर्शन पर सेट करें.compileSdkVersion
को 28 या इसके बाद के वर्शन पर सेट करें.- Jetpack (AndroidX) का इस्तेमाल करने के लिए अपना ऐप्लिकेशन अपडेट करें; AndroidX पर माइग्रेट करना में दिए गए निर्देशों का पालन करें.
क्लास
अपने ऐप्लिकेशन में AFS नेटिव विज्ञापन दिखाने के लिए, ये क्लास लागू करें:
- यह क्लास एसिंक्रोनस तरीके से विज्ञापनों का अनुरोध करने, विज्ञापनों को कैश मेमोरी में सेव करने और वापस लाने, और विज्ञापनों को रेंडर करने के लिए ज़िम्मेदार है.
- हर विज्ञापन संदर्भ के लिए एक अलग
SearchAdController
की ज़रूरत होती है. उदाहरण के लिए, अगर आपके पास एक ऐसी स्क्रीन है जो खोज नतीजों की सूची के साथ विज्ञापन दिखाती है और दूसरी स्क्रीन है जो किसी खास प्रॉडक्ट के ब्यौरे के साथ विज्ञापन दिखाती है, तो आपको हर मामले के लिएSearchAdController
के दो अलग-अलग इंस्टेंस बनाने चाहिए. - दिखाए गए विज्ञापनों पर लागू करने के लिए, कंस्ट्रक्टर को आपका वेब प्रॉपर्टी कोड (पब्लिशर आईडी), स्टाइल आईडी, और
SearchAdOptions
देना होगा. कंस्ट्रक्टर में दिया गयाContext
,Activity
होना चाहिए, जिसमेंSearchAdController
शामिल है और जहां आपको विज्ञापनView
डालना है. - किसी नए उपयोगकर्ता को खोजने के लिए,
loadAds
को कॉल करें और एसिंक्रोनस विज्ञापन अनुरोध शुरू करें.loadAds
पर किए गए पिछले कॉल से लोड किए गए सभी विज्ञापन, नया कॉल आने पर, संगठन में काम करने वालों के हिसाब से विज्ञापन की कैश मेमोरी से मिटा दिए जाते हैं. - विज्ञापन क्रिएटिव दिखाने के लिए,
createAdView
की मदद सेView
बनाएं. - विज्ञापन लोड होने के बाद, कैश मेमोरी में सेव किए गए विज्ञापन को उस
View
में रेंडर करने के लिए,createAdView
के साथ पहले जनरेट किए गएView
के साथpopulateAdView
को कॉल करें. अपने-आप भरी जाने वालीView
के अलावा, विज्ञापन की पहचान के लिए एक आर्बिट्रेरी स्ट्रिंग,adKey
दें. यह कैश मेमोरी से मिले खास विज्ञापन क्रिएटिव को उसadKey
से जोड़ता है, ताकि जब वहीadKey
आने वाले समय मेंpopulateAdView
को कॉल किया जाए, तो वही विज्ञापन दिखाया जाएगा. उदाहरण के लिए, अगरadKey="keyA"
के साथ पहली बारpopulateAdView
को कॉल किया जाता है और हाइकिंग बूट के लिए किसी विज्ञापन को रेंडर किया जाता है, तोpopulateAdView
को हर बारadKey="keyA"
से किए जाने वाले कॉल, हाइकिंग बूट के लिए उसी विज्ञापन को पॉप्युलेट करेंगे. (loadAds
को नया कॉल करने पर, कैश मेमोरी में सेव किए गए सभी विज्ञापन और उनसे जुड़ी विज्ञापन कुंजियां हट जाती हैं.)
- विज्ञापनों के अनुरोध और उन्हें दिखाने के तरीके को पसंद के मुताबिक बनाने के लिए, इस ऑब्जेक्ट को
SearchAdController
कंस्ट्रक्टर को पास करें.SearchAdOptions
ऑब्जेक्ट बनाने के लिए,SearchAdOptions.Builder
परbuild()
को कॉल करें.
View
- विज्ञापन रोकने के लिए,
SearchAdController
परcreateAdView()
को कॉल करके,View
ऑब्जेक्ट बनाएं. एक बार में सिर्फ़ एक विज्ञापन दिखाया जाता है, लेकिन उसीView
को रीसाइकल करके, समय के साथ अलग-अलग विज्ञापन दिखाए जा सकते हैं.
- एसिंक्रोनस विज्ञापन अनुरोध शुरू करने के लिए,
SearchAdController
परloadAds
तरीके कोSearchAdRequest
के साथ कॉल करें.SearchAdRequest
ऑब्जेक्ट बनाने के लिए,SearchAdRequest.Builder
परbuild()
को कॉल करें.
- इस इंटरफ़ेस को लागू करें और कई राज्यों के लिए कॉलबैक रजिस्टर करने के लिए, इसे
SearchAdController
कंस्ट्रक्टर को पास करें. - ध्यान दें: रद्द किए गए अनुरोध पर
AdListener
कॉलबैक को कॉल नहीं किया जाएगा (loadAds
पर किया गया ऐसा कॉल जिसेloadAds
पर किए गए दूसरे कॉल से, पहले कॉल का समाधान होने से पहले ही हटा दिया गया था).
लागू करने का उदाहरण
नीचे दिए गए उदाहरण में, Activity
सैंपल में SearchAdController
बनाने के बारे में बताया गया है.
// MainActivity.java implementation
// (MainActivity is a subclass of Activity)
SearchAdController adController;
// adContainer where we will place our ads in this example.
ViewGroup adContainer;
protected void onCreate(Bundle bundle){
super.onCreate(bundle);
adContainer = (ViewGroup) findViewById(...);
// Specify ad options (not required).
SearchAdOptions.Builder adOptionsBuilder = new SearchAdOptions.Builder();
adOptionsBuilder.setAdType(SearchAdOptions.AD_TYPE_TEXT);
adOptionsBuilder.setPrefetch(true);
adOptionsBuilder.setNumAdsRequested(3);
// Provide a callback to trigger when ads are loaded.
AdListener adListener = new AdListener() {
public void onAdLoaded() {
createAndShowAd();
}
};
// Instantiate the SearchAdController.
adController = new SearchAdController(this, "your-client-id", "your-style-id",
adOptionsBuilder.build(), adListener);
}
जब उपयोगकर्ता कोई क्वेरी शुरू करता है, तो एसिंक्रोनस विज्ञापन अनुरोध शुरू करने के लिए, SearchAdRequest
बनाएं और SearchAdController
पर loadAds
को कॉल करें.
// Create the request.
SearchAdRequest.Builder requestBuilder = new SearchAdRequest.Builder();
requestBuilder.setQuery("user query here");
// Load the ads.
adController.loadAds(requestBuilder.build());
लोड किए गए विज्ञापन को विज्ञापन व्यू में डालने के लिए, onAdLoaded
कॉलबैक लागू करें.
private void createAndShowAd() {
// Create a new view that will contain the ad.
View adView = adController.createAdView();
// Attach the new view to the view hierarchy.
adContainer.addView(adView);
// Display the ad inside the adView. We need to provide an adKey to
// indicate which ad is to be displayed in the adView. In this example,
// since we only have one ad, we can provide any constant string. However,
// if you intend to display multiple ads, each ad you wish to display
// should be given a unique adKey of your choosing.
adController.populateAdView(adView, "demoAd");
}
दी गई क्वेरी से संबंधित एक विज्ञापन अब adView
में दिखाई देगा.
गड़बड़ियों की जांच करना
आपके ऐप्लिकेशन को यह सूचना देने के लिए कि विज्ञापन दिखाए जाने के लिए तैयार हैं, SearchAdController
को onAdLoaded()
तरीके के साथ AdListener
ऑब्जेक्ट की ज़रूरत होती है. आपको onAdFailedToLoad()
वाला तरीका भी लागू करना चाहिए, ताकि गड़बड़ियों का पता लगाकर उन्हें ठीक किया जा सके.
उदाहरण के लिए, लागू करने की प्रोसेस को डीबग करने के लिए, नीचे दिए गए AdListener
का इस्तेमाल किया जा सकता है:
AdListener adListener = new AdListener() {
public void onAdLoaded() {
// Called when an ad is loaded.
Toast.makeText(MainActivity.this, "Ad Loaded",
Toast.LENGTH_SHORT).show();
Log.d(MainActivity.class.getSimpleName(), "Ad Loaded");
}
public void onAdLeftApplication() {
// Called when an ad leaves the application
// (to go to the browser for example).
Toast.makeText(MainActivity.this, "Ad Left Application",
Toast.LENGTH_SHORT).show();
Log.d(MainActivity.class.getSimpleName(), "Ad Left Application");
}
@Override
public void onAdFailedToLoad(int errorCode) {
// Called when an ad request failed.
Toast.makeText(MainActivity.this, "Ad Failed to Load: " + errorCode,
Toast.LENGTH_SHORT).show();
Log.e(MainActivity.class.getSimpleName(), "Ad Failed to Load: " +
errorCode);
}
};
onAdFailedToLoad()
कॉलबैक तरीके में इस्तेमाल किए गए कॉन्सटेंट को AdListener में तय किया जाता है.