Google Mobile Ads SDK, कस्टम सर्च स्टाइल के साथ भी काम करता है. अगर आपका ऐप्लिकेशन पहले से Google Mobile Ads SDK का इस्तेमाल कर रहा है, तो हमारा सुझाव है कि आप AFSMA SDK टूल का वर्शन आज़माएं.
अगर आपको 18.1.0 या उससे पहले के वर्शन से 19.0.0 या उसके बाद के वर्शन पर अपग्रेड करना है, तो कृपया डेटा को दूसरी जगह भेजने से जुड़ी हमारी गाइड देखें.
ज़रूरी शर्तें
लागू करने से जुड़ी इस गाइड में यह माना गया है कि आपको इन चीज़ों के बारे में पता है:
- AdSense कस्टम सर्च विज्ञापन पसंद के मुताबिक सर्च स्टाइल के साथ
- Android ऐप्लिकेशन डेवलपमेंट
AFS नेटिव SDK टूल इंपोर्ट करना
SDK टूल जोड़ना
अपने ऐप्लिकेशन में AFS नेटिव SDK टूल जोड़ने के लिए, यह तरीका अपनाएं:
अपने ऐप्लिकेशन मॉड्यूल डायरेक्ट्री में build.gradle
फ़ाइल खोलें.
SDK के नए वर्शन के लिए dependencies
में एक नया बिल्ड नियम जोड़ें:
dependencies {
implementation 'com.google.android.gms:play-services-afs-native:19.1.0'
}
पक्का करें कि आपके टॉप-लेवल build.gradle
में google()
रिपॉज़िटरी या maven { url "https://maven.google.com" }
का रेफ़रंस हो.
इन निर्देशों का पालन करें
का इस्तेमाल करें.
इस प्लग इन को लागू करने से ग्रेडल बिल्ड की गड़बड़ी होती है. ऐसा तब होता है, जब AFS का नेटिव SDK टूल
की अनुमति के बजाय Google Play सेवाओं के असंगत वर्शन के साथ उपयोग किया जाता है
जिसकी वजह से रनटाइम बंद हो सकता है. इसके अलावा, अपने प्रोजेक्ट में failOnVersionConflict()
ResolutionStrategy को लागू करें, ताकि आपके प्रोजेक्ट में Google Play Services के काम न करने वाले वर्शन का इस्तेमाल करने पर, बिल्ड में गड़बड़ी हो.
बदलावों को सेव करें और टूलबार में Gradle फ़ाइलों के साथ प्रोजेक्ट सिंक करें पर क्लिक करें.
Android सहायता लाइब्रेरी के बजाय AndroidX का इस्तेमाल करें
SDK टूल के 17.0.0
वर्शन से, आपके ऐप्लिकेशन को Android Support लाइब्रेरी के बजाय, Jetpack (AndroidX) लाइब्रेरी का इस्तेमाल करना होगा. साथ काम करने से जुड़ी ज़रूरी शर्तें:
com.android.tools.build:gradle
को 3.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
से जुड़ जाता है. इसलिए, जबpopulateAdView
को आने वाले समय में कॉल किया जाएगा, तो वही विज्ञापन दिखाया जाएगा. उदाहरण के लिए, अगरpopulateAdView
कोadKey="keyA"
के साथ पहली बार कॉल किया गया और हाइकिंग बूट के लिए विज्ञापन, इसके साथpopulateAdView
को हर एक कॉलadKey="keyA"
, हाइकिंग बूट के लिए यही विज्ञापन दिखाएगा. (loadAds
, कैश मेमोरी में सेव किए गए सभी विज्ञापन और उनसे जुड़ी विज्ञापन कुंजियां हटा देता है.)
- विज्ञापनों के अनुरोध करने और उन्हें दिखाने के तरीके को पसंद के मुताबिक बनाने के लिए, इस ऑब्जेक्ट को
SearchAdController
कन्स्ट्रक्टर को पास करें.SearchAdOptions
ऑब्जेक्ट बनाने के लिए,SearchAdOptions.Builder
परbuild()
को कॉल करें.
View
SearchAdController
परcreateAdView()
को कॉल करके, विज्ञापनों को होल्ड करने के लिएView
ऑब्जेक्ट बनाएं. एक बार में ज़्यादा से ज़्यादा एक विज्ञापन दिखाता है. हालांकि, समय के साथ अलग-अलग विज्ञापन दिखाने के लिए, एक हीView
को रीसाइकल किया जा सकता है.
SearchAdRequest
का इस्तेमाल करके,SearchAdController
परloadAds
तरीके को कॉल करें एसिंक्रोनस विज्ञापन अनुरोध शुरू करने के लिए.build()
को इस नंबर पर कॉल करें:SearchAdRequest
ऑब्जेक्ट बनाने के लिएSearchAdRequest.Builder
.
- इस इंटरफ़ेस को लागू करें और कई स्टेटस के लिए कॉलबैक रजिस्टर करने के लिए, इसे
SearchAdController
कन्स्ट्रक्टर को पास करें. - ध्यान दें: रद्द किए गए अनुरोध (कॉल) पर
AdListener
कॉलबैक को कॉल नहीं किया जाएगाloadAds
को जिसे पहली बार कॉल करने से पहले,loadAds
को किए गए कॉल से रोका गया था कॉल का समाधान हुआ).
लागू करने का उदाहरण
नीचे दिए गए उदाहरण में, सैंपल में SearchAdController
बनाने का तरीका बताया गया है
Activity
.
// 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
बनाएं और loadAds
को कॉल करें
SearchAdController
पर एसिंक्रोनस विज्ञापन अनुरोध शुरू करने के लिए.
// 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 में तय किए जाते हैं.