SDK टूल को माइग्रेट करना

इस पेज पर मौजूदा और पिछले वर्शन के लिए माइग्रेशन की जानकारी दी गई है.

वर्शन 22 से v23 पर माइग्रेट करना

Android में एपीआई का कम से कम लेवल 21 होना चाहिए

23.0.0 से शुरू होने वाले सभी ऐप्लिकेशन को चलाने के लिए यह ज़रूरी है कि सभी ऐप्लिकेशन Android API लेवल 21 पर काम करें. एपीआई लेवल में बदलाव करने के लिए, ऐप्लिकेशन-लेवल की build.gradle फ़ाइल में minSdkVersion की वैल्यू को 21 या उससे ज़्यादा पर सेट करें.

काम न करने वाले तरीके हटाए गए/बदले गए

v22.0.0 एपीआई v23.0.0 एपीआई
AdRequest.Builder.addTestDevice() RequestConfiguration.Builder.setTestDeviceIds()
AdRequest.Builder.tagForChildDirectedTreatment() RequestConfiguration.Builder.setTagForChildDirectedTreatment()
AdRequest.Builder.setIsDesignedForFamilies() RequestConfiguration.Builder.setMaxAdContentRating()
AdFormat.UNKNOWN कोई रिप्लेसमेंट नहीं
AdLoader.Builder.forUnifiedNativeAd() AdLoader.Builder.forNativeAd()
AdLoader.Builder.forCustomTemplateAd() AdLoader.Builder.forCustomFormatAd()
AdLoader.Builder.withNativeAdOptions(com.google.android.gms.ads.formats.NativeAdOptions) AdLoader.Builder.withNativeAdOptions(com.google.android.gms.ads.nativead.NativeAdOptions)
अमान्य MobileAds.setSameAppKeyEnabled() boolean MobileAds.putPublisherFirstPartyIdEnabled()

वर्शन 21 से v22 पर माइग्रेट करें

Google Mobile Ads SDK का वर्शन पाने के लिए, MobileAds.getVersion() का इस्तेमाल करें

MobileAds.getVersionString() वाले तरीके को वर्शन 22.0.0 से हटा दिया गया है, ताकि यह MobileAds.getVersion() के लिए काम कर सके.

नया तरीका अनुमानित बाहरी वर्शन संख्या दिखाता है—उदाहरण के लिए, 22.0.0. इस बदलाव के बारे में ज़्यादा जानकारी के लिए, Google मोबाइल विज्ञापन SDK के नए getVersion() तरीके का इस्तेमाल करना देखें.

तरीके हटाए या बदले गए

नीचे दी गई टेबल में, वर्शन 22.0.0 में हुए खास बदलावों की सूची दी गई है.

v21.0.0 v22.0.0
MobileAds.getVersionString() MobileAds.getVersion()
NativeCustomFormatAd.getVideoMediaView() NativeCustomFormatAd.getMediaContent()
NativeCustomFormatAd.getVideoController() NativeCustomFormatAd.getMediaContent().getVideoController()
AdRequest.Builder.setAdInfo() AdRequest.Builder.setAdString()
MediationRewardedVideoAdAdapter अडैप्टर
MediationRewardedVideoAdListener
com.google.android.gms.ads.mediation.VersionInfo com.google.android.gms.ads.VersionInfo
com.google.android.gms.ads.doubleclick.AppEventListener com.google.android.gms.ads.admanager.AppEventListener

वर्शन 20 से v21 पर माइग्रेट करें

minSdkVersion को 19 या उसके बाद के वर्शन पर अपडेट करें

21.0.0 और Google Mobile Ads SDK के 21.0.0 वर्शन से, Google Mobile Ads SDK पर काम करने के लिए यह ज़रूरी है कि सभी ऐप्लिकेशन, Android API लेवल 19 पर काम करें. एपीआई लेवल में बदलाव करने के लिए, अपने ऐप्लिकेशन की बिल्ड फ़ाइल में minSdkVersion की वैल्यू बदलकर 19 या उससे ज़्यादा करें.

सख्त शून्यता लागू करें

शून्यता को सख्ती से लागू करने के लिए, @NonNull एनोटेशन उन सभी एपीआई में जोड़ दिए जाते हैं जिन्होंने पहले साफ़ तौर पर, शून्य होने की जानकारी नहीं दी थी.

इस बदलाव से, Kotlin के ऐप्लिकेशन और उन ऐप्लिकेशन में रुकावट आ सकती है जो Java शून्य जांच फ़्रेमवर्क का इस्तेमाल करते हैं. ऐसा तब होता है, जब शून्य सुरक्षा उल्लंघन होते हैं और जिन्होंने पहले null वैल्यू को सुरक्षित तरीके से हैंडल नहीं किया था. Null-safety पर Kotlin दस्तावेज़ देखें.

addNetworkExtras() मेथड को हटाने का तरीका

किसी खास विज्ञापन नेटवर्क अडैप्टर के लिए, NetworkExtras इंस्टेंस के तौर पर अतिरिक्त पैरामीटर पास करने वाला addNetworkExtras() तरीका, SDK टूल के वर्शन 20.3.0 में बंद कर दिया गया था. इसे वर्शन 21.0.0 से हटा दिया जाएगा. इसके बजाय, उसी AdRequest.Builder क्लास से addNetworkExtrasBundle() तरीके का इस्तेमाल करें.

जगह की जानकारी के तरीकों को हटाना

वर्शन 21.0.0 में, जगह की जानकारी के ये तरीके हटा दिए जाएंगे:

  • AdRequest.Builder क्लास में setLocation(Location location) का तरीका, जो मीडिएशन टारगेटिंग के लिए, उपयोगकर्ता की जगह की जानकारी सेट करता है.
  • AdRequest क्लास में getLocation() वाला तरीका, जो उपयोगकर्ता की जगह के हिसाब से टारगेटिंग की जानकारी को, पिछली बार setLocation(Location location) तरीके को पास करता है.
  • MediationAdConfiguration क्लास में getLocation() तरीका, जो AdRequest से तय होने पर उपयोगकर्ता की जगह की जानकारी दिखाता है.

Google, विज्ञापन दिखाने के लिए जगह की जानकारी के डेटा का इस्तेमाल नहीं करता. अगर ज़रूरी हो, तो तीसरे पक्ष की विज्ञापन नेटवर्क कंपनी को जानकारी देने के लिए, आपको तीसरे पक्ष के एपीआई का इस्तेमाल करना चाहिए.

कस्टम इवेंट इंटरफ़ेस की सुविधा बंद होना

कस्टम इवेंट की मदद से पब्लिशर, AdMob किसी ऐसी विज्ञापन नेटवर्क कंपनी के लिए वॉटरफ़ॉल मीडिएशन जोड़ सकते हैं जो AdMobकी काम करने वाली विज्ञापन नेटवर्क कंपनियों में से एक नहीं है.

सभी कस्टम इवेंट इंटरफ़ेस अब Adapter क्लास और MediationAdLoadCallback इंटरफ़ेस के लिए काम नहीं करते.

नीचे दी गई टेबल में उस क्लास या इंटरफ़ेस की सूची दी गई है जिसका इस्तेमाल वर्शन 21.0.0 से शुरू होने वाले हर कस्टम इवेंट इंटरफ़ेस के लिए किया जाना चाहिए:

v20.0.0 इंटरफ़ेस v21.0.0 क्लास/ इंटरफ़ेस
CustomEvent अडैप्टर
CustomEventBanner
CustomEventInterstitial
CustomEventNative
CustomEventBannerListener अडैप्टर, MediationAdLoadCallback
CustomEventInterstitialListener
CustomEventListener
CustomEventNativeListener

वर्शन 19 से v20 पर माइग्रेट करें

वर्शन 20.0.0 में कई नुकसान पहुंचा सकने वाले बदलाव हैं. वर्शन 19.7.0 में कई नए एपीआई लॉन्च किए गए हैं या वर्शन 20.0.0 की तैयारी के लिए, कई क्लास के नाम बदले गए हैं या उनका नाम बदला गया है. यह गाइड वर्शन 20.0.0 में हुए बड़े बदलावों को हाइलाइट करती है.

फ़ुल-स्क्रीन फ़ॉर्मैट एपीआई के अपडेट

वर्शन 20.0.0 से, एक जैसे एपीआई डिज़ाइन को फ़ॉलो करने के लिए इंटरस्टीशियल, इनाम वाले, इनाम वाले इंटरस्टीशियल, और ऐप्लिकेशन खोलने पर दिखने वाले विज्ञापन फ़ॉर्मैट तय किए गए हैं.

फ़ुल-स्क्रीन फ़ॉर्मैट वाले सभी एपीआई में इन सिद्धांतों का इस्तेमाल किया जाता है:

  • स्टैटिक लोड का तरीका
  • लोड कॉलबैक या हैंडलर का एक जैसा तरीका
  • प्रज़ेंटेशन कॉलबैक के लिए, FullScreenContentCallback क्लास पर भरोसा करें

लेगसी RewardedVideoAd API (एपीआई) को हटाना

नए RewardedAd एपीआई को पहली बार मार्च 2019 में लॉन्च किया गया था. यह पिछले 18 महीनों से, इनाम वाला पसंदीदा एपीआई है. लेगसी RewardedVideoAd एपीआई की तुलना में, इसमें ज़्यादा सुधार किए गए हैं. इनमें, इनाम वाले एक से ज़्यादा विज्ञापन को एक बार में लोड करना शामिल है.

SDK टूल के वर्शन 20.0.0 से, RewardedVideoAd API के पुराने वर्शन को हटा दिया गया है.

अडैप्टिव बैनर के लिए स्मार्ट बैनर का इस्तेमाल बंद किया गया

स्मार्ट बैनर वाले विज्ञापनों की जगह, अब ज़रूरत के हिसाब से बने बैनर वाले विज्ञापन नहीं दिखाए जाते. अडैप्टिव बैनर की परफ़ॉर्मेंस बेहतर होती है. साथ ही, इनकी मदद से विज्ञापन की चौड़ाई सेट की जा सकती है. अगर आपको पूरी चौड़ाई वाले बैनर का इस्तेमाल करना जारी रखना है, तो अडैप्टिव बैनर का इस्तेमाल करके भी ऐसा किया जा सकता है, जैसा कि इस कोड स्निपेट में दिखाया गया है:

Java

public class MyActivity extends AppCompatActivity {
  ...
  private AdSize getFullWidthAdaptiveSize() {
    Display display = getWindowManager().getDefaultDisplay();
    DisplayMetrics outMetrics = new DisplayMetrics();
    display.getMetrics(outMetrics);

    float widthPixels = outMetrics.widthPixels;
    float density = outMetrics.density;

    int adWidth = (int) (widthPixels / density);
    return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, adWidth);
  }
}

Kotlin

class MyActivity : AppCompatActivity() {
  ...
  private val adaptiveAdSize: AdSize
    get() {
      val display = windowManager.defaultDisplay
      val outMetrics = DisplayMetrics()
      display.getMetrics(outMetrics)

      val density = outMetrics.density

      var adWidthPixels = ad_view_container.width.toFloat()
      if (adWidthPixels == 0f) {
        adWidthPixels = outMetrics.widthPixels.toFloat()
      }

      val adWidth = (adWidthPixels / density).toInt()
      return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, adWidth)
    }
}

ऐप्लिकेशन कॉलबैक को हटाएं

सभी विज्ञापन फ़ॉर्मैट के लिए onAdLeftApplication कॉलबैक को, ProcessLifecycleOwner के पक्ष में हटा दिया गया है. ओएस-लेवल एपीआई का इस्तेमाल करने से, आपको उपयोगकर्ता के ऐप्लिकेशन छोड़ने की सूचना मिलती है. इससे कोई फ़र्क़ नहीं पड़ता कि ऐसा विज्ञापन इंटरैक्शन की वजह से हुआ है या नहीं.

ध्यान दें कि onAdLeftApplication कॉलबैक का मकसद कभी भी विज्ञापन क्लिक हैंडलर नहीं होना था. साथ ही, क्लिक की रिपोर्ट करने के लिए इस कॉलबैक पर भरोसा करने से, सटीक मेट्रिक नहीं मिली. उदाहरण के लिए, बाहरी ब्राउज़र लॉन्च करने वाले AdChoices आइकॉन पर किए गए क्लिक ने कॉलबैक को शुरू किया, लेकिन इसे क्लिक के तौर पर नहीं गिना गया.

क्लास के नाम बदले गए

नीचे दी गई टेबल में क्लास के उन खास नामों की सूची दी गई है जिनमें बदलाव किया गया है या जिन्हें हटा दिया गया है. खास जानकारी में:

  • UnifiedNativeAd से जुड़ी ज़्यादातर क्लास के नाम बदलकर NativeAd कर दिए गए हैं.
  • MobileAds.Settings, NativeExpressAdView, NativeAppInstallAd, NativeContentAd, और InstreamAd क्लास और व्यू हटा दिए गए हैं.
  • Publisher प्रीफ़िक्स वाली सभी क्लास को AdManager प्रीफ़िक्स से बदल दिया गया है.
  • InterstitialAd पैकेज का नाम बदल गया है.
19.5.0 क्लास 20.0.0 क्लास
com.google.android.gms.ads. com.google.android.gms.ads.
reward.RewardedVideoAd rewarded.RewardedAd
reward.RewardedVideoAdListener इनाम वाले.RewardedAdLoadCallback और FullScreenContentCallback
reward.RewardItem rewarded.RewardItem
rewarded.RewardedAdCallback OnUserEarnedRewardListener
formats.UnifiedNativeAdView nativead.NativeAdView
formats.UnifiedNativeAd nativead.NativeAd
formats.UnifiedNativeAdAssetNames nativead.NativeAdAssetNames
formats.UnifiedNativeAd.OnUnifiedNativeAdLoadedListener nativead.NativeAd.OnNativeAdLoadedListener
formats.AdChoicesView nativead.AdChoicesView
formats.NativeAd.AdChoicesInfo nativead.NativeAd.AdChoicesInfo
formats.MediaView nativead.MediaView
formats.NativeAdViewHolder nativead.NativeAdViewHolder
formats.NativeAdOptions nativead.NativeAdOptions
formats.NativeCustomTemplateAd nativead.NativeCustomFormatAd
format.NativeCustomTemplateAd.OnCustomTemplateAdLoadedListener nativead.NativeCustomFormatAd.OnCustomFormatAdLoadedListener
MobileAds.Settings हटाया गया
doubleclick.PublisherAdRequest admanager.AdManagerAdRequest
doubleclick.PublisherAdView admanager.AdManagerAdView
formats.PublisherAdViewOptions formats.AdManagerAdViewOptions
doubleclick.PublisherInterstitialAd admanager.AdManagerInterstitialAd
InterstitialAd interstitial.InterstitialAd
NativeExpressAdView हटाया गया
instream.InstreamAd हटाया गया
mediation.admob.AdMobExtras हटाया गया
कोरेलेटर हटाया गया
search.SearchAdRequest हटाया गया
इंटरफ़ेस AdRequest.TagForअंडरAgeOfConsent हटाया गया
इंटरफ़ेस AdRequest.MaxAdContentरेटिंग हटाया गया
formats.NativeAppInstallAd native.NativeAd
formats.NativeAppInstallAdView native.NativeAdView
mediation.NativeAppInstallAdMapper mediation.UnifiedNativeAdMapper
formats.NativeContentAd native.NativeAd
formats.NativeContentAdView native.NativeAdView
mediation.NativeContentAdMapper mediation.UnifiedNativeAdMapper

तरीके हटाए गए/बदले गए

नीचे दी गई टेबल में वर्शन 20.0.0 में हुए खास बदलावों की सूची दी गई है. सारांश में:

  • MobileAds क्लास से पुरानी शुरू करने के तरीके हटा दिए गए हैं.
  • AdRequest.Builder() क्लास के कुछ तरीकों को या तो हटा दिया गया है या RequestConfiguration क्लास में ले जाया गया है.
  • RewardedAd और इंटरस्टीशियल विज्ञापन एपीआई को अपडेट किया गया है, ताकि वे सभी फ़ुल-स्क्रीन वाले फ़ॉर्मैट के साथ अलाइन हो सकें.
  • कोरेलेटर की सुविधाएं हटा दी गई हैं.
कक्षा v19.5.0 एपीआई v20.0.0 एपीआई ज़रूरी जानकारी
AdSize getपोर्ट्रेटबैनरAdSizeWithwidth() getपोर्ट्रेटanchoredAdaptiveBannerAdSize()
getlandBannerAdSizeWithwidth() getलैंडलैंडस्केप्डAdaptiveBannerAdSize()
getCurrentOrientationBannerAdSizeWithwidth() getCurrentOrientationAnchoredAdaptiveBannerAdSize()
MobileAds शुरू करें(कॉन्टेक्स्ट, स्ट्रिंग) MobileAds.Instantize(कॉन्टेक्स्ट, OnInitializationcompleteलिसनर) ऐप्लिकेशन आईडी अब AndroidManifest.xml में सेट है.
शुरू करें(कॉन्टेक्स्ट, स्ट्रिंग, MobileAds.Settings) शुरू करें(Context, OnInitializationcompleteलिसनर) 'सेटिंग' क्लास को अब बंद कर दिया गया है.
getRewardedVideoAdExample() हटाया गया इसके बजाय, RewardedAd API का इस्तेमाल करें.
AdListener onAdFailedToLoad(int) onAdFaceToLoad(LoadAdError)
onAdLeftApplication() हटाया गया फ़ुल-स्क्रीन विज्ञापन फ़ॉर्मैट में, AdListener के बजाय FullscreenContentCallback का इस्तेमाल किया जाता है. साथ ही, FullscreenContentCallback पर ऐसा कोई तरीका नहीं होता है. इस तरीका को AdListener से हटा दिया गया है.
VideoController getAspectRatio() MediaContent.getAspectRatio()
AdRequest getGender() हटाया गया
getBirthday() हटाया गया
getNetworkExtras() हटाया गया
सेटमैन्युअल इंप्रेशनचालू किया गया() हटाया गया
updateCorrelator() हटाया गया विज्ञापन के कॉन्टेंट को फ़िल्टर करने का तरीका देखें.
AdRequest.बिल्डर setBirthday() हटाया गया
setGender() हटाया गया
setIsDesignedForFamilies() हटाया गया गाइड देखें.
addTestDevice() अनुरोध कॉन्फ़िगरेशन.Builder.setTestDeviceIds() टेस्ट विज्ञापन चालू करना देखें.
tagForChildDirectedTreatment() RequestConfiguration.Builder.setTagForChildDirectedTreatment() विज्ञापन के कॉन्टेंट को फ़िल्टर करने का तरीका देखें.
setTagForअंडरAgeOfConsent() अनुरोध कॉन्फ़िगरेशन.Builder.setTagFor UnderAgeOfConsent()
setMaxAdContentRating() RequestConfiguration.Builder.setMaxAdContentRating()
AdView getMediationAdapterClassName() ResponseInfo.getMediationAdapterClassName() अब ResponseInfo ऑब्जेक्ट, AdView तरीके getResponseInfo() के ज़रिए उपलब्ध है.
NativeAdOptions setImageOrientation() setMediaAspectRatio()
getImageOrientation getMediaAspectRatio()
RewardedAd loadAd(AdRequest, RewardedAdLoadCallback) RewardedAd.load(कॉन्टेक्स्ट, स्ट्रिंग, AdRequest, RewardedAdLoadCallback) RewardedAd अब दूसरे फ़ुल-स्क्रीन फ़ॉर्मैट की तरह ही स्टैटिक लोड (स्टैटिक लोड) के तरीके का इस्तेमाल करता है.
loadAd(PublisherAdRequest, RewardedAdLoadCallback) RewardedAd.load(कॉन्टेक्स्ट, स्ट्रिंग, AdManagerAdRequest, RewardedAdLoadCallback)
isLoaded() हटाया गया स्टैटिक लोड के तरीके से लिया गया कॉलबैक, पहले से लोड किए गए विज्ञापन को दिखाता है.
शो(गतिविधि, RewardedAdCallback) शो(गतिविधि, OnUserRewardedRewardListener) शो का यह तरीका, फ़ुल-स्क्रीन फ़ॉर्मैट वाले फ़ॉर्मैट का पालन करता है.
RewardedAdLoadCallback onRewardedAdFaceToLoad(int) onAdFaceToLoad(LoadAdError)
onRewardedAdFAILEDToLoad(LoadAdError) onAdFaceToLoad(LoadAdError)
onRewardedAdLoaded() onAdLoaded(RewardedAd)
AppOpenAdLoadCallback onAppOpenAdflowToLoad(int) onAdFaceToLoad(LoadAdError)
onAppOpenAd failedToLoad(LoadAdError) onAdFaceToLoad(LoadAdError)
onAppOpenAdLoaded(AppOpenAd) onAdLoaded(AppOpenAd)
इनाम वाले इंटरस्टीशियलAdLoadकॉलबैक onRewardedaryAdFaceToLoad(int) onAdFaceToLoad(LoadAdError)
onRewardedइंटरस्टीशियलAdफ़ेलToLoad(LoadAdError) onAdFaceToLoad(LoadAdError)
onRewardedइंटरस्टीशियल विज्ञापनलोड किया गया(इनाम वाला इंटरस्टीशियल विज्ञापन) onAdLoaded(RewardedInterstitialAd)
InterstitialAd नया InterstitialAd() इंटरस्टीशियलAd.load(कॉन्टेक्स्ट, स्ट्रिंग, AdRequest, इंटरस्टीशियलAdLoadCallback) इंटरस्टीशियल विज्ञापन में अब उसी तरीके से स्टैटिक लोड लोड होने की सुविधा का इस्तेमाल किया जाता है जिसका इस्तेमाल दूसरे फ़ुल-स्क्रीन फ़ॉर्मैट के लिए किया जाता है.
setAdListener()
DynamicHeightSearchAdका अनुरोध getNetworkExtras() हटाया गया NetworkExtras क्लास को बंद कर दिया गया है.
AdLoader forContentAd() हटाया गया
forAppInstallAd() हटाया गया
withCorrelator() हटाया गया
getMediationAdapterClassName() हटाया गया