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

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

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

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

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

काम न करने वाले तरीके हटाए गए/उनकी जगह नए तरीके इस्तेमाल किए जा रहे हैं

v22.0.0 API 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()

v21 से 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 एनोटेशन जोड़े गए हैं जिनमें पहले एनोटेशन के लिए तय की गई ज़रूरी शर्तों के बारे में साफ़ तौर पर नहीं बताया गया था.

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

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

SDK टूल के 20.3.0 वर्शन में, addNetworkExtras() का वह तरीका बंद कर दिया गया है जो किसी खास विज्ञापन नेटवर्क अडैप्टर को NetworkExtras इंस्टेंस के तौर पर अतिरिक्त पैरामीटर भेजता है. साथ ही, इसे 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 के लेगसी एपीआई को हटाना

नया 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)
    }
}

Leave application callback removal

सभी विज्ञापन फ़ॉर्मैट के लिए 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 rewarded.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
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.TagForUnderAgeOfConsent हटाया गया
इंटरफ़ेस 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 को अपडेट किया गया है, ताकि वे सभी फ़ुल-स्क्रीन फ़ॉर्मैट के साथ काम कर सकें.
  • कोरेलेटर की सुविधाएं हटा दी गई हैं.
कक्षा v19.5.0 API v20.0.0 API नोट
AdSize getPortraitBannerAdSizeWithWidth() getPortraitAnchoredAdaptiveBannerAdSize()
getLandscapeBannerAdSizeWithWidth() getLandscapeAnchoredAdaptiveBannerAdSize()
getCurrentOrientationBannerAdSizeWithWidth() getCurrentOrientationAnchoredAdaptiveBannerAdSize()
MobileAds initialize(Context, String) MobileAds.initialize(Context, OnInitializationCompleteListener) ऐप्लिकेशन आईडी अब AndroidManifest.xml में सेट हो गया है.
initialize(Context, String, MobileAds.Settings) initialize(Context, OnInitializationCompleteListener) 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 अब उसी स्टैटिक लोड अप्रोच का इस्तेमाल करता है जो अन्य फ़ुल-स्क्रीन फ़ॉर्मैट में इस्तेमाल किया जाता है.
loadAd(PublisherAdRequest, RewardedAdLoadCallback) RewardedAd.load(Context, String, AdManagerAdRequest, RewardedAdLoadCallback)
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() हटाया गया