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

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

v22 से v23 पर माइग्रेट करें

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

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

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

v22.0.0 एपीआई v23.0.0 API
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)
void MobileAds.setSameAppKeyEnabled() boolean MobileAds.putPublisherFirstPartyIdEnabled()

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

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

MobileAds.getVersionString() का तरीका, MobileAds.getVersion() के पक्ष में, वर्शन 22.0.0 में हटा दिया गया है.

नया तरीका अनुमानित बाहरी वर्शन नंबर दिखाता है—उदाहरण के लिए, 22.0.0. इस बदलाव के बारे में ज़्यादा जानने के लिए, Google Mobile Ads 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

v20 से v21 पर माइग्रेट करना

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

Google Mobile Ads SDK के 21.0.0 वर्शन से, सभी ऐप्लिकेशन के लिए कम से कम Android एपीआई लेवल 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

v19 से v20 पर माइग्रेट करना

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

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

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

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

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

लेगसी RewardedVideoAd API को हटाना

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

SDK टूल के 20.0.0 वर्शन में, लेगसी RewardedVideoAd एपीआई को हटा दिया गया है.

अडैप्टिव बैनर के लिए स्मार्ट बैनर का बंद होना

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

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 Rewards.RewardsedAdLoadCallback और 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
formats.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.TagForDownAgeOfConsent हटाया गया
इंटरफ़ेस AdRequest.MaxAdContentRating हटाया गया
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 और InterstitialAd API को अपडेट किया गया है, ताकि वे सभी फ़ुल-स्क्रीन फ़ॉर्मैट के साथ काम कर सकें.
  • सहयोगी सुविधाएं हटा दी गई हैं.
कक्षा वर्शन 19.5.0 एपीआई v20.0.0 एपीआई नोट
AdSize getPortraitBannerAdSizeWithWidth() getPortraitAnchoredAdaptiveBannerAdSize()
getLandscapeBannerAdSizeWithWidth() getLandscapeAnchoredAdaptiveBannerAdSize()
getCurrentOrientationBannerAdSizeWithWidth() getCurrentOrientationAnchoredAdaptiveBannerAdSize()
MobileAds initialize(Context, String) MobileAds.initialize(Context, OnInitializationCompleteListener) ऐप्लिकेशन आईडी अब AndroidManifest.xml में सेट हो गया है.
initialize(Context, String, MobileAds.Settings) इनीशियलाइज़(कॉन्टेक्स्ट, ऑन इनिशलाइज़ेशन कम्पलीटलिसनर) सेटिंग क्लास को बंद कर दिया गया है.
getRewardedVideoAdInstance() हटाया गया इसके बजाय, RewardedAd API का इस्तेमाल करें.
AdListener onAdFailedToLoad(int) onAdFailedToLoad(LoadAdError)
onAdLeftApplication() हटाया गया फ़ुल-स्क्रीन विज्ञापन फ़ॉर्मैट, AdListener के बजाय FullscreenContentCallback का इस्तेमाल करते हैं. साथ ही, FullscreenContentCallback के लिए कोई दूसरा तरीका भी उपलब्ध नहीं है. इस तरीके को AdListener से हटा दिया गया है.
VideoController getAspectRatio() MediaContent.getAspectRatio()
AdRequest getGender() हटाया गया
getBirthday() हटाया गया
getNetworkExtras() हटाया गया
setManualImpressionsEnabled() हटाया गया
updateCorrelator() हटाया गया विज्ञापन के लिए कॉन्टेंट को फ़िल्टर करना देखें.
AdRequest.Builder setBirthday() हटाया गया
setGender() हटाया गया
setIsDesignedForFamilies() हटाया गया गाइड देखें.
addTestDevice() RequestConfiguration.Builder.setTestDeviceIds() टेस्ट विज्ञापन चालू करना लेख पढ़ें.
tagForChildDirectedTreatment() RequestConfiguration.Builder.setTagForChildDirectedTreatment() विज्ञापन के कॉन्टेंट को फ़िल्टर करने की सुविधा देखें.
setTagForUnderAgeOfConsent() RequestConfiguration.Builder.setTagForUnderAgeOfConsent()
setMaxAdContentRating() RequestConfiguration.Builder.setMaxAdContentRating()
AdView getMediationAdapterClassName() ResponseInfo.getMediationAdapterClassName() ResponseInfo ऑब्जेक्ट अब AdView के getResponseInfo() तरीके से उपलब्ध है.
NativeAdOptions setImageOrientation() setMediaAspectRatio()
getImageOrientation getMediaAspectRatio()
RewardedAd loadAd(AdRequest, RewardedAdLoadCallback) RewardedAd.load(Context, String, AdRequest, RewardedAdLoadCallback) RewardedAd अब उसी स्टैटिक लोड अप्रोच का इस्तेमाल करता है जो अन्य फ़ुल-स्क्रीन फ़ॉर्मैट में इस्तेमाल किया जाता है.
लोडAd(PublisherAdRequest, RewardedAdLoadCallback) RewardsedAd.load(कॉन्टेक्स्ट, स्ट्रिंग, AdManagerAdRequest, RewardsedAdLoadCallback)
isLoaded() हटाया गया स्टैटिक लोड करने के तरीके से कॉलबैक, पहले से लोड किया गया विज्ञापन उपलब्ध कराता है.
show(Activity, RewardedAdCallback) show(Activity, OnUserEarnedRewardListener) शो दिखाने का यह तरीका, फ़ुल-स्क्रीन फ़ॉर्मैट के ज़्यादातर तरीकों के मुताबिक है.
RewardedAdLoadCallback onRewardedAdFailedToLoad(int) onAdFailedToLoad(LoadAdError)
onRewardedAdFailedToLoad(LoadAdError) onAdFailedToLoad(LoadAdError)
onRewardedAdLoaded() onAdLoaded(RewardedAd)
AppOpenAdLoadCallback onAppOpenAdFailedToLoad(int) onAdFailedToLoad(LoadAdError)
onAppOpenAdFailedToLoad(LoadAdError) onAdFailedToLoad(LoadAdError)
onAppOpenAdLoaded(AppOpenAd) onAdLoaded(AppOpenAd)
RewardedInterstitialAdLoadCallback onRewardedInterstitialAdFailedToLoad(int) onAdFailedToLoad(LoadAdError)
onRewardedInterstitialAdFailedToLoad(LoadAdError) onAdFailedToLoad(LoadAdError)
onRewardedInterstitialAdLoaded(RewardedInterstitialAd) onAdLoaded(RewardedInterstitialAd)
InterstitialAd new InterstitialAd() InterstitialAd.load(Context, String, AdRequest, InterstitialAdLoadCallback) InterstitialAd अब उसी स्टैटिक लोड के तरीके का इस्तेमाल करता है जो अन्य फ़ुल-स्क्रीन फ़ॉर्मैट में इस्तेमाल किया जाता है.
setAdListener()
DynamicHeightSearchAdRequest getNetworkExtras() हटाया गया NetworkExtras क्लास का इस्तेमाल बंद कर दिया गया है.
AdLoader forContentAd() हटाया गया
forAppInstallAd() हटाया गया
withCorrelator() हटाया गया
getMediationAdapterClassName() हटाया गया