این صفحه مهاجرت های نسخه فعلی و قبلی را پوشش می دهد.
از 10 به نسخه 11 مهاجرت کنید
حداقل هدف استقرار
حداقل هدف استقرار به iOS 12 افزایش یافته است.
حداقل نسخه Xcode
حداقل نسخه Xcode پشتیبانی شده به 15.1 افزایش یافته است.
تبلیغات در iOS 12 متوقف می شود
Google Mobile Ads SDK نسخه 11.0.0 تبلیغات را فقط در دستگاههای دارای iOS 13 و بالاتر ارائه میکند.
وابستگی GoogleAppMeasurement حذف شد
در نسخه 11.0.0، وابستگی به GoogleAppMeasurement
حذف شده است. این وابستگی که به تغییر معیارهای کاربر در AdMob کمک میکند، در اوایل سال 2024 متوقف میشود. برای ادامه جمعآوری معیارهای کاربر در AdMob، برنامه AdMob خود را به Firebase پیوند دهید و Google Analytics برای Firebase SDK را در برنامه خود ادغام کنید.
تغییرات در ارائه تبلیغات تمام صفحه
تغییرات زیر بر فرمت های تبلیغاتی مختلف تأثیر می گذارد:
- برنامه باز شد
- بینابینی
- پاداش داده شد
- بینابینی با پاداش
پارامتر view controller در -canPresentFromRootViewController:error:
و -presentFromRootViewController:
قابل تهی است. اگر صفر تصویب شود، تبلیغ از بالاترین نمایش کنترلر در سلسله مراتب view controller ارائه می شود.
روش ها حذف شد
روش های زیر حذف می شوند.
v11.0.0 نوع | روش | یادداشت ها |
---|---|---|
GADAppOpenAd | load(withAdUnitID adUnitID: String, request: GADRequest?, orientation: UIInterfaceOrientation) | به جای آن load(withAdUnitID adUnitID: String, request: GADRequest?) استفاده کنید. |
GADMediationBannerAdEvent Delegate | willBackgroundApplication() | بدون جایگزینی |
GADMediationInterstitialAdEvent Delegate | willBackgroundApplication() | بدون جایگزینی |
GADMediationNativeAdEvent Delegate | willBackgroundApplication() | بدون جایگزینی |
GADMediationRewardedAdEvent Delegate | didRewardUser(with reward: GADAdReward) | به جای آن didRewardUser() استفاده کنید. |
GADMediatedUnifiedNativeAdNotificationSource | mediatedNativeAdWillLeaveApplication(_ mediatedNativeAd: GADMediatedUnifiedNativeAd) | بدون جایگزینی |
پیکربندی GADRequest | setSameAppKeyEnabled(_ enabled: Bool) | به جای آن از setPublisherFirstPartyIDEnabled(_ enabled: Bool) استفاده کنید. |
tagForUnderAge(ofConsent underAgeOfConsent: Bool) | به جای آن از ویژگی tagForUnderAgeOfConsent استفاده کنید. | |
tag(forChildDirectedTreatment childDirectedTreatment: Bool) | به جای آن از ویژگی tagForChildDirectedTreatment استفاده کنید. |
خواص حذف شد
ویژگی های زیر حذف می شوند.
کلاس v11.0.0 | اموال | یادداشت ها |
---|---|---|
GADMediationAdConfiguration | hasUserLocation | بدون جایگزینی |
userLatitude | ||
طول کاربر | ||
userLocationAccuracyInMeters | ||
کودک جهت درمان | به جای آن از GADMobileAds.sharedInstance.requestConfiguration.tagForChildDirectedTreatment استفاده کنید. | |
GADResponseInfo | adNetworkClassName | به جای آن از adNetworkClassName از loadedAdNetworkResponseInfo استفاده کنید. |
GADAdFormatUnknown حذف شد
GADAdFormatUnknown
بدون جایگزینی حذف شد.
تغییرات در ورود به سیستم نسخه SDK
نسخه 11.0.0 sdkVersion
را حذف می کند. برای ورود به نسخه Google Mobile Ads SDK، به جای آن از versionNumber
استفاده کنید.
نسخه 10.0.0
GADMobileAds.sharedInstance().sdkVersion
نسخه 11.0.0
GADGetStringFromVersionNumber(GADMobileAds.sharedInstance().versionNumber)
تغییرات در مدیریت خطای GADAdLoader
با شروع نسخه 11.0.0، GADAdLoader
در صورتی که delegate
آن با پروتکل نمایندگی انواع تبلیغات درخواستی مطابقت نداشته باشد، درخواست تبلیغاتی نمی کند. پیش از این، پس از درخواست آگهی انجام نشد.
تغییرات در رفتار تست
جدولی را ببینید که شرایط بهروزرسانی شده را برای زمانی که ویژگیهای زیر true
میشوند نشان میدهد.
کلاس | اموال |
---|---|
GADMediationAdConfiguration | isTestRequest |
GADCustomEventRequest | isTesting |
نسخه 10.0.0 | نسخه 11.0.0 |
|
|
از نسخه 9 به نسخه 10 مهاجرت کنید
تبلیغات در iOS 11 متوقف می شود
Google Mobile Ads SDK نسخه 10.0.0 تبلیغات را فقط در دستگاههای دارای iOS 12 و بالاتر ارائه میکند.
ارتقاء به Google Mobile Ads SDK نسخه 10.0.0 برنامه شما را در دستگاههای iOS 11 و iOS 10 خراب نمیکند، با این حال، هیچ تبلیغی در آن دستگاهها نمایش داده نمیشود.
مورد نیاز Ad Manager App ID
شناسه برنامه Ad Manager اکنون در Info.plist
برای همه برنامههای Ad Manager لازم است و به ca-app-pub-################~##########
نیاز دارد. فرمت ca-app-pub-################~##########
برای جزئیات بیشتر به Update your Info.plist مراجعه کنید.
مورد نیاز GoogleAppMeasurement.xcframework
GoogleAppMeasurement.xcframework اکنون برای همه برنامههای Ad Manager لازم است. اگر Google Mobile Ads SDK را از طریق Cocoapods یا Swift Package Manager نصب کنید، هیچ اقدام دیگری لازم نیست. اگر چارچوب ها را به صورت دستی نصب می کنید، برای جزئیات بیشتر به دانلود دستی مراجعه کنید.
ساخت با بیت کد دیگر پشتیبانی نمی شود
اکنون برای ادغام Google Mobile Ads SDK، غیرفعال کردن بیت کد در برنامه های تلفن همراه شما لازم است.
انواع حذف شده است
تایپ کنید | یادداشت ها |
---|---|
GADGender | بدون جایگزینی |
پروتکل GADMRewardBasedVideoAdNetworkAdapter | همه آداپتورهای واسطهای پاداشدار فهرستشده در Choose Networks استفاده از این پروتکلها را برای بیش از یک سال متوقف کردهاند. از GADMediationAdapter برای میانجیگری و رویدادهای سفارشی استفاده کنید. |
پروتکل GADMRewardBasedVideoAdNetworkConnector |
خواص حذف شد
ویژگی های زیر بدون جایگزینی حذف می شوند.
کلاس v10.0.0 | اموال |
---|---|
GADMediationAdRequest | تولد کاربر |
userGender | |
userHasLocation | |
userLatitude | |
طول کاربر | |
userLocationAccuracyInMeters | |
userLocationDescription | |
GADCustomEvent Request | userHasLocation |
userLatitude | |
طول کاربر | |
userLocationAccuracyInMeters | |
userLocationDescription |
تبلیغات در iOS 11 متوقف می شود
Google Mobile Ads SDK نسخه 10.0.0 تبلیغات را فقط در دستگاههای دارای iOS 12 و بالاتر ارائه میکند.
ارتقاء به Google Mobile Ads SDK نسخه 10.0.0 برنامه شما را در دستگاههای iOS 11 و iOS 10 خراب نمیکند، با این حال، هیچ تبلیغی در آن دستگاهها نمایش داده نمیشود.
مورد نیاز Ad Manager App ID
شناسه برنامه Ad Manager اکنون در Info.plist
برای همه برنامههای Ad Manager لازم است و به ca-app-pub-################~##########
نیاز دارد. فرمت ca-app-pub-################~##########
برای جزئیات بیشتر به Update your Info.plist مراجعه کنید.
مورد نیاز GoogleAppMeasurement.xcframework
GoogleAppMeasurement.xcframework اکنون برای همه برنامههای Ad Manager لازم است. اگر Google Mobile Ads SDK را از طریق Cocoapods یا Swift Package Manager نصب کنید، هیچ اقدام دیگری لازم نیست. اگر چارچوب ها را به صورت دستی نصب می کنید، برای جزئیات بیشتر به دانلود دستی مراجعه کنید.
ساخت با بیت کد دیگر پشتیبانی نمی شود
اکنون برای ادغام Google Mobile Ads SDK، غیرفعال کردن بیت کد در برنامه های تلفن همراه شما لازم است.
انواع حذف شده است
تایپ کنید | یادداشت ها |
---|---|
GADGender | بدون جایگزینی |
پروتکل GADMRewardBasedVideoAdNetworkAdapter | همه آداپتورهای واسطهای پاداشدار فهرستشده در Choose Networks استفاده از این پروتکلها را برای بیش از یک سال متوقف کردهاند. از GADMediationAdapter برای میانجیگری و رویدادهای سفارشی استفاده کنید. |
پروتکل GADMRewardBasedVideoAdNetworkConnector |
خواص حذف شد
ویژگی های زیر بدون جایگزینی حذف می شوند.
کلاس v10.0.0 | اموال |
---|---|
GADMediationAdRequest | تولد کاربر |
userGender | |
userHasLocation | |
userLatitude | |
طول کاربر | |
userLocationAccuracyInMeters | |
userLocationDescription | |
GADCustomEvent Request | userHasLocation |
userLatitude | |
طول کاربر | |
userLocationAccuracyInMeters | |
userLocationDescription |
تبلیغات در iOS 11 متوقف می شود
Google Mobile Ads SDK نسخه 10.0.0 تبلیغات را فقط در دستگاههای دارای iOS 12 و بالاتر ارائه میکند.
ارتقاء به Google Mobile Ads SDK نسخه 10.0.0 برنامه شما را در دستگاههای iOS 11 و iOS 10 خراب نمیکند، با این حال، هیچ تبلیغی در آن دستگاهها نمایش داده نمیشود.
مورد نیاز Ad Manager App ID
شناسه برنامه Ad Manager اکنون در Info.plist
برای همه برنامههای Ad Manager لازم است و به ca-app-pub-################~##########
نیاز دارد. فرمت ca-app-pub-################~##########
برای جزئیات بیشتر به Update your Info.plist مراجعه کنید.
مورد نیاز GoogleAppMeasurement.xcframework
GoogleAppMeasurement.xcframework اکنون برای همه برنامههای Ad Manager لازم است. اگر Google Mobile Ads SDK را از طریق Cocoapods یا Swift Package Manager نصب کنید، هیچ اقدام دیگری لازم نیست. اگر چارچوب ها را به صورت دستی نصب می کنید، برای جزئیات بیشتر به دانلود دستی مراجعه کنید.
ساخت با بیت کد دیگر پشتیبانی نمی شود
اکنون برای ادغام Google Mobile Ads SDK، غیرفعال کردن بیت کد در برنامه های تلفن همراه شما لازم است.
انواع حذف شده است
تایپ کنید | یادداشت ها |
---|---|
GADGender | بدون جایگزینی |
پروتکل GADMRewardBasedVideoAdNetworkAdapter | همه آداپتورهای واسطهای پاداشدار فهرستشده در Choose Networks استفاده از این پروتکلها را برای بیش از یک سال متوقف کردهاند. از GADMediationAdapter برای میانجیگری و رویدادهای سفارشی استفاده کنید. |
پروتکل GADMRewardBasedVideoAdNetworkConnector |
خواص حذف شد
ویژگی های زیر بدون جایگزینی حذف می شوند.
کلاس v10.0.0 | اموال |
---|---|
GADMediationAdRequest | تولد کاربر |
userGender | |
userHasLocation | |
userLatitude | |
طول کاربر | |
userLocationAccuracyInMeters | |
userLocationDescription | |
GADCustomEvent Request | userHasLocation |
userLatitude | |
طول کاربر | |
userLocationAccuracyInMeters | |
userLocationDescription |
تبلیغات در iOS 11 متوقف می شود
Google Mobile Ads SDK نسخه 10.0.0 تبلیغات را فقط در دستگاههای دارای iOS 12 و بالاتر ارائه میکند.
ارتقاء به Google Mobile Ads SDK نسخه 10.0.0 برنامه شما را در دستگاههای iOS 11 و iOS 10 خراب نمیکند، با این حال، هیچ تبلیغی در آن دستگاهها نمایش داده نمیشود.
مورد نیاز Ad Manager App ID
شناسه برنامه Ad Manager اکنون در Info.plist
برای همه برنامههای Ad Manager لازم است و به ca-app-pub-################~##########
نیاز دارد. فرمت ca-app-pub-################~##########
برای جزئیات بیشتر به Update your Info.plist مراجعه کنید.
مورد نیاز GoogleAppMeasurement.xcframework
GoogleAppMeasurement.xcframework اکنون برای همه برنامههای Ad Manager لازم است. اگر Google Mobile Ads SDK را از طریق Cocoapods یا Swift Package Manager نصب کنید، هیچ اقدام دیگری لازم نیست. اگر چارچوب ها را به صورت دستی نصب می کنید، برای جزئیات بیشتر به دانلود دستی مراجعه کنید.
ساخت با بیت کد دیگر پشتیبانی نمی شود
اکنون برای ادغام Google Mobile Ads SDK، غیرفعال کردن بیت کد در برنامه های تلفن همراه شما لازم است.
انواع حذف شده است
تایپ کنید | یادداشت ها |
---|---|
GADGender | بدون جایگزینی |
پروتکل GADMRewardBasedVideoAdNetworkAdapter | همه آداپتورهای واسطهای پاداشدار فهرستشده در Choose Networks استفاده از این پروتکلها را برای بیش از یک سال متوقف کردهاند. از GADMediationAdapter برای میانجیگری و رویدادهای سفارشی استفاده کنید. |
پروتکل GADMRewardBasedVideoAdNetworkConnector |
خواص حذف شد
ویژگی های زیر بدون جایگزینی حذف می شوند.
کلاس v10.0.0 | اموال |
---|---|
GADMediationAdRequest | تولد کاربر |
userGender | |
userHasLocation | |
userLatitude | |
طول کاربر | |
userLocationAccuracyInMeters | |
userLocationDescription | |
GADCustomEvent Request | userHasLocation |
userLatitude | |
طول کاربر | |
userLocationAccuracyInMeters | |
userLocationDescription |
از نسخه 8 به نسخه 9 مهاجرت کنید
تبلیغات در iOS 10 متوقف می شود
حداقل نسخه iOS که Google Mobile Ads SDK نسخه 9.0.0 پشتیبانی می کند iOS 11 است.
ارتقاء به Google Mobile Ads SDK نسخه 9.0.0 برنامه شما را در دستگاههای iOS 10 خراب نمیکند، اما هیچ تبلیغی در آن دستگاهها نمایش داده نمیشود.
اجرای دقیق تر کنترل های نوار وضعیت
با شروع از نسخه 9.0.0، زمانی که تبلیغات با فرمت تمام صفحه را ارائه می کنید، برنامه شما باید اطمینان حاصل کند که تبلیغات قادر به کنترل نمایش نوار وضعیت هستند. اگر این کار را انجام ندهید، یک پیغام خطا در گزارش ها مشاهده خواهید کرد.
بسته به طرحبندی خاص کنترلکنندههای نمایش در برنامهتان، ممکن است نیازی به ایجاد هیچ تغییری برای اطمینان از این نداشته باشید. در نظر بگیرید که آیا باید ویژگی childViewControllerForStatusBarHidden
را در rootViewController
آگهی خود تنظیم کنید.
تغییر نام adDidPresentFullScreenContent: به adWillPresentFullScreenContent:
هیچ تغییر رفتاری وجود ندارد. روش delegate درست قبل از ارائه آگهی فراخوانی می شود، بنابراین نام روش جدید عملکرد آن را بهتر نشان می دهد.
API تنظیم مکان را در GADRequest حذف کنید
- (void)setLocationWithLatitude:longitude:accuracy:
از GADRequest
حذف شده است زیرا اطلاعات مکان توسط Google برای هدفیابی تبلیغات استفاده نمیشود. در صورت لزوم از API های شخص ثالث برای ارائه اطلاعات به شبکه های تبلیغاتی شخص ثالث استفاده کنید.
منسوخ شدن رابط های رویداد سفارشی
رویدادهای سفارشی ناشران را قادر میسازد از آن استفاده کنند Ad Manager میانجی برای افزودن واسطه آبشار برای یک شبکه تبلیغاتی که یکی از شبکههای تبلیغاتی پشتیبانیشده نیست.
همه پروتکل های رویداد سفارشی منسوخ شده اند. در عوض، از پروتکلهای GADMediationAdapter
و GADMediationAdEventDelegate
موجود برای دستیابی به عملکردهای مشابه استفاده کنید. این تغییر وضوح را بهبود میبخشد و شما را قادر میسازد رویدادهای سفارشی را برای آگهیهای دارای پاداش و آگهیهای بین اسکرولری که قبلاً در دسترس نبودند ایجاد کنید.
API ها
جدول زیر APIهای آداپتور میانجی مربوط به APIهای رویدادهای سفارشی را فهرست میکند که باید از نسخه 9.0.0 استفاده شوند.
v8 | v9 | |
---|---|---|
GADCustomEventBanner GADCustomEventInterstitial GADCustomEventNativeAd | GADMediationAdapter | GADMediationBannerAd GADMediationInterstitialAd GADMediationInterscrollerAd GADMediationRewardedAd GADMediationNativeAd |
delegate | Delegate توسط کنترل کننده تکمیل بار هر تابع بار از کلاس GADMediationAdapter برگردانده می شود. | |
-init | -init | |
-requestBannerAd:parameter: label:request: | -loadBannerForAdConfiguration: completionHandler: | |
-requestInterstitialAdWith Parameter:label:request: | -loadInterstitialFor AdConfiguration: completionHandler: | |
-requestNativeAdWithParameter: request:adTypes:options: rootViewController: | -loadNativeAdFor AdConfiguration: completionHandler: | |
N/A | -loadInterscrollerAdFor AdConfiguration: completionHandler: | |
N/A | -loadRewardedAdFor AdConfiguration: completionHandler: | |
-presentFromRootViewController: | -presentFromViewController: | |
-handlesUserClicks | -handlesUserClicks | |
-handlesUserImpressions | -handlesUserImpressions |
روش های تفویض اختیار
جدول زیر روشهای انتقال رویداد آگهی میانجیگری مربوط به روشهای واگذاری رویداد سفارشی را فهرست میکند که باید از نسخه 9.0.0 استفاده شوند.
v8 | v9 | |
---|---|---|
GADCustomEventBannerDelegate GADCustomEventInterstitialDelegate GADCustomEventNativeAdDelegate | GADMediationAdEvent Delegate | GADMediationAd |
-customEventBanner:didReceiveAd: -customEventInterstitialDidReceiveAd: | وضعیت بار آگهی در کنترل کننده تکمیل بار هر تابع بار در کلاس GADMediationAdapter گنجانده شده است. | |
-customEventBanner:didFailAd: -customEventInterstitial:didFailAd: | ||
-customEventBannerWasClicked: -customEventInterstitialWasClicked: | -reportClick | |
-customEventBannerWill PresentModal: -customEventInterstitialWill PresentModal: | -willPresentFullScreenView | |
-customEventBannerWill DismissModal: -customEventInterstitialWill DismissModal: | -willDismissFullScreenView | |
-customEventBannerDid DismissModal: -customEventInterstitialDid DismissModal: | -didDismissFullScreenView | |
-customEventBannerWill LeaveApplication: -customEventInterstitialWill LeaveApplication: | -willBackgroundApplication | |
viewControllerFor PresentingModalView | -[GADMediationBannerAd view] |
سایر روش ها و ثابت های حذف/جایگزین شده
تغییرات در روش، ثابت یا ویژگی | |
---|---|
kGAD- ثابت های پیشوند | حذف شد. از ثابت های پیشوند GAD- استفاده کنید. |
GADAdNetworkResponseInfo | credentials حذف شد به جای آن از adUnitMapping استفاده کنید. |
GAMRequest | kGAMSimulatorID در GAMRequest منسوخ شده است. به جای آن از GADSimulatorID در GADRequestConfiguration استفاده کنید. |
GADCustomNativeAd | mediaView در GADCustomNativeAd منسوخ شده است. به جای آن از mediaContent استفاده کنید. |
APIهای خرید درون برنامه ای در GoogleMobileAds | APIهای inAppPurchase در GoogleMobileAds حذف شدند. |
تبلیغات در iOS 10 متوقف می شود
حداقل نسخه iOS که Google Mobile Ads SDK نسخه 9.0.0 پشتیبانی می کند iOS 11 است.
ارتقاء به Google Mobile Ads SDK نسخه 9.0.0 برنامه شما را در دستگاههای iOS 10 خراب نمیکند، اما هیچ تبلیغی در آن دستگاهها نمایش داده نمیشود.
اجرای دقیق تر کنترل های نوار وضعیت
با شروع از نسخه 9.0.0، زمانی که تبلیغات با فرمت تمام صفحه را ارائه می کنید، برنامه شما باید اطمینان حاصل کند که تبلیغات قادر به کنترل نمایش نوار وضعیت هستند. اگر این کار را انجام ندهید، یک پیغام خطا در گزارش ها مشاهده خواهید کرد.
بسته به طرحبندی خاص کنترلکنندههای نمایش در برنامهتان، ممکن است نیازی به ایجاد هیچ تغییری برای اطمینان از این نداشته باشید. در نظر بگیرید که آیا باید ویژگی childViewControllerForStatusBarHidden
را در rootViewController
آگهی خود تنظیم کنید.
تغییر نام adDidPresentFullScreenContent: به adWillPresentFullScreenContent:
هیچ تغییر رفتاری وجود ندارد. روش delegate درست قبل از ارائه آگهی فراخوانی می شود، بنابراین نام روش جدید عملکرد آن را بهتر نشان می دهد.
API تنظیم مکان را در GADRequest حذف کنید
- (void)setLocationWithLatitude:longitude:accuracy:
از GADRequest
حذف شده است زیرا اطلاعات مکان توسط Google برای هدفیابی تبلیغات استفاده نمیشود. در صورت لزوم از API های شخص ثالث برای ارائه اطلاعات به شبکه های تبلیغاتی شخص ثالث استفاده کنید.
منسوخ شدن رابط های رویداد سفارشی
رویدادهای سفارشی ناشران را قادر میسازد از آن استفاده کنند Ad Manager میانجی برای افزودن واسطه آبشار برای یک شبکه تبلیغاتی که یکی از شبکههای تبلیغاتی پشتیبانیشده نیست.
همه پروتکل های رویداد سفارشی منسوخ شده اند. در عوض، از پروتکلهای GADMediationAdapter
و GADMediationAdEventDelegate
موجود برای دستیابی به عملکردهای مشابه استفاده کنید. این تغییر وضوح را بهبود میبخشد و شما را قادر میسازد رویدادهای سفارشی را برای آگهیهای دارای پاداش و آگهیهای بین اسکرولری که قبلاً در دسترس نبودند ایجاد کنید.
API ها
جدول زیر APIهای آداپتور میانجی مربوط به APIهای رویدادهای سفارشی را فهرست میکند که باید از نسخه 9.0.0 استفاده شوند.
v8 | v9 | |
---|---|---|
GADCustomEventBanner GADCustomEventInterstitial GADCustomEventNativeAd | GADMediationAdapter | GADMediationBannerAd GADMediationInterstitialAd GADMediationInterscrollerAd GADMediationRewardedAd GADMediationNativeAd |
delegate | Delegate توسط کنترل کننده تکمیل بار هر تابع بار از کلاس GADMediationAdapter برگردانده می شود. | |
-init | -init | |
-requestBannerAd:parameter: label:request: | -loadBannerForAdConfiguration: completionHandler: | |
-requestInterstitialAdWith Parameter:label:request: | -loadInterstitialFor AdConfiguration: completionHandler: | |
-requestNativeAdWithParameter: request:adTypes:options: rootViewController: | -loadNativeAdFor AdConfiguration: completionHandler: | |
N/A | -loadInterscrollerAdFor AdConfiguration: completionHandler: | |
N/A | -loadRewardedAdFor AdConfiguration: completionHandler: | |
-presentFromRootViewController: | -presentFromViewController: | |
-handlesUserClicks | -handlesUserClicks | |
-handlesUserImpressions | -handlesUserImpressions |
روش های تفویض اختیار
جدول زیر روشهای انتقال رویداد آگهی میانجیگری مربوط به روشهای واگذاری رویداد سفارشی را فهرست میکند که باید از نسخه 9.0.0 استفاده شوند.
v8 | v9 | |
---|---|---|
GADCustomEventBannerDelegate GADCustomEventInterstitialDelegate GADCustomEventNativeAdDelegate | GADMediationAdEvent Delegate | GADMediationAd |
-customEventBanner:didReceiveAd: -customEventInterstitialDidReceiveAd: | وضعیت بار آگهی در کنترل کننده تکمیل بار هر تابع بار در کلاس GADMediationAdapter گنجانده شده است. | |
-customEventBanner:didFailAd: -customEventInterstitial:didFailAd: | ||
-customEventBannerWasClicked: -customEventInterstitialWasClicked: | -reportClick | |
-customEventBannerWill PresentModal: -customEventInterstitialWill PresentModal: | -willPresentFullScreenView | |
-customEventBannerWill DismissModal: -customEventInterstitialWill DismissModal: | -willDismissFullScreenView | |
-customEventBannerDid DismissModal: -customEventInterstitialDid DismissModal: | -didDismissFullScreenView | |
-customEventBannerWill LeaveApplication: -customEventInterstitialWill LeaveApplication: | -willBackgroundApplication | |
viewControllerFor PresentingModalView | -[GADMediationBannerAd view] |
سایر روش ها و ثابت های حذف/جایگزین شده
تغییرات در روش، ثابت یا ویژگی | |
---|---|
kGAD- ثابت های پیشوند | حذف شد. از ثابت های پیشوند GAD- استفاده کنید. |
GADAdNetworkResponseInfo | credentials حذف شد به جای آن از adUnitMapping استفاده کنید. |
GAMRequest | kGAMSimulatorID در GAMRequest منسوخ شده است. به جای آن از GADSimulatorID در GADRequestConfiguration استفاده کنید. |
GADCustomNativeAd | mediaView در GADCustomNativeAd منسوخ شده است. به جای آن از mediaContent استفاده کنید. |
APIهای خرید درون برنامه ای در GoogleMobileAds | APIهای inAppPurchase در GoogleMobileAds حذف شدند. |
تبلیغات در iOS 10 متوقف می شود
حداقل نسخه iOS که Google Mobile Ads SDK نسخه 9.0.0 پشتیبانی می کند iOS 11 است.
ارتقاء به Google Mobile Ads SDK نسخه 9.0.0 برنامه شما را در دستگاههای iOS 10 خراب نمیکند، اما هیچ تبلیغی در آن دستگاهها نمایش داده نمیشود.
اجرای دقیق تر کنترل های نوار وضعیت
با شروع از نسخه 9.0.0، زمانی که تبلیغات با فرمت تمام صفحه را ارائه می کنید، برنامه شما باید اطمینان حاصل کند که تبلیغات قادر به کنترل نمایش نوار وضعیت هستند. در صورتی که این کار را انجام ندهید، یک پیغام خطا در گزارش ها خواهید دید.
بسته به طرحبندی خاص کنترلکنندههای نمایش در برنامهتان، ممکن است نیازی به ایجاد هیچ تغییری برای اطمینان از این نداشته باشید. در نظر بگیرید که آیا باید ویژگی childViewControllerForStatusBarHidden
را در rootViewController
آگهی خود تنظیم کنید.
تغییر نام adDidPresentFullScreenContent: به adWillPresentFullScreenContent:
هیچ تغییر رفتاری وجود ندارد. روش delegate درست قبل از ارائه آگهی فراخوانی می شود، بنابراین نام روش جدید عملکرد آن را بهتر نشان می دهد.
API تنظیم مکان را در GADRequest حذف کنید
- (void)setLocationWithLatitude:longitude:accuracy:
از GADRequest
حذف شده است زیرا اطلاعات مکان توسط Google برای هدفیابی تبلیغات استفاده نمیشود. در صورت لزوم از API های شخص ثالث برای ارائه اطلاعات به شبکه های تبلیغاتی شخص ثالث استفاده کنید.
منسوخ شدن رابط های رویداد سفارشی
رویدادهای سفارشی ناشران را قادر میسازد از آن استفاده کنند Ad Manager میانجی برای افزودن واسطه آبشار برای یک شبکه تبلیغاتی که یکی از شبکههای تبلیغاتی پشتیبانیشده نیست.
همه پروتکل های رویداد سفارشی منسوخ شده اند. در عوض، از پروتکلهای GADMediationAdapter
و GADMediationAdEventDelegate
موجود برای دستیابی به عملکردهای مشابه استفاده کنید. این تغییر وضوح را بهبود میبخشد و شما را قادر میسازد رویدادهای سفارشی را برای آگهیهای دارای پاداش و آگهیهای بین اسکرولری که قبلاً در دسترس نبودند ایجاد کنید.
API ها
جدول زیر APIهای آداپتور میانجی مربوط به APIهای رویدادهای سفارشی را فهرست میکند که باید از نسخه 9.0.0 استفاده شوند.
v8 | v9 | |
---|---|---|
GADCustomEventBanner GADCustomEventInterstitial GADCustomEventNativeAd | GADMediationAdapter | GADMediationBannerAd GADMediationInterstitialAd GADMediationInterscrollerAd GADMediationRewardedAd GADMediationNativeAd |
delegate | Delegate توسط کنترل کننده تکمیل بار هر تابع بار از کلاس GADMediationAdapter برگردانده می شود. | |
-init | -init | |
-requestBannerAd:parameter: label:request: | -loadBannerForAdConfiguration: completionHandler: | |
-requestInterstitialAdWith Parameter:label:request: | -loadInterstitialFor AdConfiguration: completionHandler: | |
-requestNativeAdWithParameter: request:adTypes:options: rootViewController: | -loadNativeAdFor AdConfiguration: completionHandler: | |
N/A | -loadInterscrollerAdFor AdConfiguration: completionHandler: | |
N/A | -loadRewardedAdFor AdConfiguration: completionHandler: | |
-presentFromRootViewController: | -presentFromViewController: | |
-handlesUserClicks | -handlesUserClicks | |
-handlesUserImpressions | -handlesUserImpressions |
روش های تفویض اختیار
جدول زیر روشهای انتقال رویداد آگهی میانجیگری مربوط به روشهای واگذاری رویداد سفارشی را فهرست میکند که باید از نسخه 9.0.0 استفاده شوند.
v8 | v9 | |
---|---|---|
GADCustomEventBannerDelegate GADCustomEventInterstitialDelegate GADCustomEventNativeAdDelegate | GADMediationAdEvent Delegate | GADMediationAd |
-customEventBanner:didReceiveAd: -customEventInterstitialDidReceiveAd: | وضعیت بار آگهی در کنترل کننده تکمیل بار هر تابع بار در کلاس GADMediationAdapter گنجانده شده است. | |
-customEventBanner:didFailAd: -customEventInterstitial:didFailAd: | ||
-customEventBannerWasClicked: -customEventInterstitialWasClicked: | -reportClick | |
-customEventBannerWill PresentModal: -customEventInterstitialWill PresentModal: | -willPresentFullScreenView | |
-customEventBannerWill DismissModal: -customEventInterstitialWill DismissModal: | -willDismissFullScreenView | |
-customEventBannerDid DismissModal: -customEventInterstitialDid DismissModal: | -didDismissFullScreenView | |
-customEventBannerWill LeaveApplication: -customEventInterstitialWill LeaveApplication: | -willBackgroundApplication | |
viewControllerFor PresentingModalView | -[GADMediationBannerAd view] |
سایر روش ها و ثابت های حذف/جایگزین شده
تغییرات در روش، ثابت یا ویژگی | |
---|---|
kGAD- ثابت های پیشوند | حذف شد. از ثابت های پیشوند GAD- استفاده کنید. |
GADAdNetworkResponseInfo | credentials حذف شد به جای آن از adUnitMapping استفاده کنید. |
GAMRequest | kGAMSimulatorID در GAMRequest منسوخ شده است. به جای آن از GADSimulatorID در GADRequestConfiguration استفاده کنید. |
GADCustomNativeAd | mediaView در GADCustomNativeAd منسوخ شده است. به جای آن از mediaContent استفاده کنید. |
APIهای خرید درون برنامه ای در GoogleMobileAds | APIهای inAppPurchase در GoogleMobileAds حذف شدند. |
تبلیغات در iOS 10 متوقف می شود
حداقل نسخه iOS که Google Mobile Ads SDK نسخه 9.0.0 پشتیبانی می کند iOS 11 است.
ارتقاء به Google Mobile Ads SDK نسخه 9.0.0 برنامه شما را در دستگاههای iOS 10 خراب نمیکند، اما هیچ تبلیغی در آن دستگاهها نمایش داده نمیشود.
اجرای دقیق تر کنترل های نوار وضعیت
با شروع از نسخه 9.0.0، زمانی که تبلیغات با فرمت تمام صفحه را ارائه می کنید، برنامه شما باید اطمینان حاصل کند که تبلیغات قادر به کنترل نمایش نوار وضعیت هستند. اگر این کار را انجام ندهید، یک پیغام خطا در گزارش ها مشاهده خواهید کرد.
بسته به طرحبندی خاص کنترلکنندههای نمایش در برنامهتان، ممکن است نیازی به ایجاد هیچ تغییری برای اطمینان از این نداشته باشید. در نظر بگیرید که آیا باید ویژگی childViewControllerForStatusBarHidden
را در rootViewController
آگهی خود تنظیم کنید.
تغییر نام adDidPresentFullScreenContent: به adWillPresentFullScreenContent:
هیچ تغییر رفتاری وجود ندارد. روش delegate درست قبل از ارائه آگهی فراخوانی می شود، بنابراین نام روش جدید عملکرد آن را بهتر نشان می دهد.
API تنظیم مکان را در GADRequest حذف کنید
- (void)setLocationWithLatitude:longitude:accuracy:
از GADRequest
حذف شده است زیرا اطلاعات مکان توسط Google برای هدفیابی تبلیغات استفاده نمیشود. در صورت لزوم از API های شخص ثالث برای ارائه اطلاعات به شبکه های تبلیغاتی شخص ثالث استفاده کنید.
منسوخ شدن رابط های رویداد سفارشی
رویدادهای سفارشی ناشران را قادر میسازد از آن استفاده کنند Ad Manager میانجی برای افزودن واسطه آبشار برای یک شبکه تبلیغاتی که یکی از شبکههای تبلیغاتی پشتیبانیشده نیست.
همه پروتکل های رویداد سفارشی منسوخ شده اند. در عوض، از پروتکلهای GADMediationAdapter
و GADMediationAdEventDelegate
موجود برای دستیابی به عملکردهای مشابه استفاده کنید. این تغییر وضوح را بهبود میبخشد و شما را قادر میسازد رویدادهای سفارشی را برای آگهیهای دارای پاداش و آگهیهای بین اسکرولری که قبلاً در دسترس نبودند ایجاد کنید.
API ها
جدول زیر APIهای آداپتور میانجی مربوط به APIهای رویدادهای سفارشی را فهرست میکند که باید از نسخه 9.0.0 استفاده شوند.
v8 | v9 | |
---|---|---|
GADCustomEventBanner GADCustomEventInterstitial GADCustomEventNativeAd | GADMediationAdapter | GADMediationBannerAd GADMediationInterstitialAd GADMediationInterscrollerAd GADMediationRewardedAd GADMediationNativeAd |
delegate | Delegate توسط کنترل کننده تکمیل بار هر تابع بار از کلاس GADMediationAdapter برگردانده می شود. | |
-init | -init | |
-requestBannerAd:parameter: label:request: | -loadBannerForAdConfiguration: completionHandler: | |
-requestInterstitialAdWith Parameter:label:request: | -loadInterstitialFor AdConfiguration: completionHandler: | |
-requestNativeAdWithParameter: request:adTypes:options: rootViewController: | -loadNativeAdFor AdConfiguration: completionHandler: | |
N/A | -loadInterscrollerAdFor AdConfiguration: completionHandler: | |
N/A | -loadRewardedAdFor AdConfiguration: completionHandler: | |
-presentFromRootViewController: | -presentFromViewController: | |
-handlesUserClicks | -handlesUserClicks | |
-handlesUserImpressions | -handlesUserImpressions |
روش های تفویض اختیار
جدول زیر روشهای انتقال رویداد آگهی میانجیگری مربوط به روشهای واگذاری رویداد سفارشی را فهرست میکند که باید از نسخه 9.0.0 استفاده شوند.
v8 | v9 | |
---|---|---|
GADCustomEventBannerDelegate GADCustomEventInterstitialDelegate GADCustomEventNativeAdDelegate | GADMediationAdEvent Delegate | GADMediationAd |
-customEventBanner:didReceiveAd: -customEventInterstitialDidReceiveAd: | وضعیت بار آگهی در کنترل کننده تکمیل بار هر تابع بار در کلاس GADMediationAdapter گنجانده شده است. | |
-customEventBanner:didFailAd: -customEventInterstitial:didFailAd: | ||
-customEventBannerWasClicked: -customEventInterstitialWasClicked: | -reportClick | |
-customEventBannerWill PresentModal: -customEventInterstitialWill PresentModal: | -willPresentFullScreenView | |
-customEventBannerWill DismissModal: -customEventInterstitialWill DismissModal: | -willDismissFullScreenView | |
-customEventBannerDid DismissModal: -customEventInterstitialDid DismissModal: | -didDismissFullScreenView | |
-customEventBannerWill LeaveApplication: -customEventInterstitialWill LeaveApplication: | -willBackgroundApplication | |
viewControllerFor PresentingModalView | -[GADMediationBannerAd view] |
سایر روش ها و ثابت های حذف/جایگزین شده
تغییرات در روش، ثابت یا ویژگی | |
---|---|
kGAD- ثابت های پیشوند | حذف شد. از ثابت های پیشوند GAD- استفاده کنید. |
GADAdNetworkResponseInfo | credentials حذف شد به جای آن از adUnitMapping استفاده کنید. |
GAMRequest | kGAMSimulatorID در GAMRequest منسوخ شده است. به جای آن از GADSimulatorID در GADRequestConfiguration استفاده کنید. |
GADCustomNativeAd | mediaView در GADCustomNativeAd منسوخ شده است. به جای آن از mediaContent استفاده کنید. |
APIهای خرید درون برنامه ای در GoogleMobileAds | APIهای inAppPurchase در GoogleMobileAds حذف شدند. |
از نسخه 7 به نسخه 8 مهاجرت کنید
Google Mobile Ads SDK نسخه 8.0.0 چند تغییر عمده و همچنین برخی تغییر نام ها و حذف API ها را معرفی می کند.
به روز رسانی API با فرمت تمام صفحه
با شروع نسخه 8.0.0، تبلیغات بینابینی و دارای پاداش، یک سبک عمومی تبلیغات تمام صفحه را برای ثبات بیشتر به اشتراک می گذارند. این APIهای تبلیغات تمام صفحه جدید دو تفاوت عمده با APIهای تبلیغات تمام صفحه نسخه 7 دارند:
load
روش کلاس استاتیکروش قبلی برای بارگیری/نمایش آگهی تمام صفحه به شرح زیر است:
- یک نمونه شیء تبلیغاتی ایجاد کنید و یک مرجع به آن نگه دارید.
- نماینده ای اختصاص دهید که بارگیری و نمایش تماس های برگشتی را انجام دهد.
- یک تبلیغ را بارگیری کنید.
- بررسی کنید که آیا آگهی با استفاده از
isReady
بارگیری شده است. - آگهی را نمایش دهید.
در نسخه 8، رویکرد کمی تغییر می کند. تماسهای بارگیری دیگر بخشی از یک نماینده نیستند. در عوض، آنها به عنوان یک کنترل کننده تکمیل به روش
load
منتقل می شوند:- یک روش بار استاتیک در کلاس تبلیغات فراخوانی کنید و یک کنترل کننده تکمیل بار ارائه دهید.
- در پاسخ به تماس تکمیل بارگذاری، به آگهی بارگیری شده که برگردانده شده است اشاره کنید.
- نماینده ای اختصاص دهید که پاسخگوی تماس های نمایشی را کنترل کند.
- آگهی را نمایش دهید.
رویکرد جدید این مزایا را فراهم می کند:
- شما هرگز به تبلیغی که بارگذاری نشده است اشاره ای نخواهید داشت.
- در حین بارگذاری یک شیء تبلیغاتی مجبور نیستید آن را نگه دارید.
رویدادهای تبلیغاتی مداوم
نوع رویداد API موجود v8 API بارگذاری رویدادها GADInterstitialDelegate
یاGADRewardedAdDelegate
GAMInterstitialAdLoadCompletionHandler
یاGADRewardedAdLoadCompletionHandler
رویدادهای ارائه GADFullScreenContentDelegate
قبلاً، برای گوش دادن به رویدادهای تبلیغاتی، کلاسی را ثبت میکردید که پروتکل
GADInterstitialDelegate
را در ویژگی نماینده یک بینابینی پیادهسازی میکند، یا کلاسی را ثبت میکنید که پروتکلGADRewardedAdDelegate
را بسته به قالبی که از آن استفاده میکنید، در ویژگی نماینده آگهی پاداشدهی شده پیادهسازی میکند. همین نماینده روشهایی داشت که هم به چرخه عمر بارگذاری و هم ارائه آگهی مربوط میشد.با نسخه 8، رویدادهای بارگذاری و ارائه جداگانه هستند. اکنون میتوانید یک
GADFullScreenContentDelegate
را هر زمان که بخواهید قبل از نمایش آگهی ثبت کنید، بهجای اینکه قبل از بارگیری آگهی، یک نماینده را تعیین کنید. رویدادهای بار آگهی، که مخصوص هر قالب هستند، به یک کنترل کننده تکمیل بار منتقل می شوند که در روش بارگذاری ارسال شده است.
بینابینی
بارگذاری آگهی
قطعه کد زیر به شما نشان می دهد که چگونه یک تبلیغ بینابینی را بارگیری کنید و در صورت موفقیت یا عدم بارگیری آگهی به رویدادها گوش دهید.
v7
سویفت
import GoogleMobileAds import UIKit class ViewController: UIViewController, GADInterstitialDelegate { var interstitial: DFPInterstitial! override func viewDidLoad() { super.viewDidLoad() interstitial = DFPInterstitial(adUnitID: "/21775744923/example/interstitial") interstitial.delegate = self let request = GAMRequest() interstitial.load(request) } /// Tells the delegate an ad request succeeded. func interstitialDidReceiveAd(_ ad: DFPInterstitial) { print("Interstitial ad loaded.") } /// Tells the delegate an ad request failed. func interstitial(_ ad: DFPInterstitial, didFailToReceiveAdWithError error: GADRequestError) { print("Interstitial ad failed to load with error: \(error.localizedDescription)") } }
هدف-C
@import GoogleMobileAds; @import UIKit; @interface ViewController ()@property(nonatomic, strong) DFPInterstitial *interstitial; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; self.interstitial = [[DFPInterstitial alloc] initWithAdUnitID:@"/21775744923/example/interstitial"]; self.interstitial.delegate = self; GAMRequest *request = [GAMRequest request]; [self.interstitial loadRequest:request]; } /// Tells the delegate an ad request succeeded. - (void)interstitialDidReceiveAd:(DFPInterstitial *)ad { NSLog(@"Insterstitial ad loaded."); } /// Tells the delegate an ad request failed. - (void)interstitial:(DFPInterstitial *)ad didFailToReceiveAdWithError:(GADRequestError *)error { NSLog(@"Interstitial ad failed to load with error: %@", [error localizedDescription]); }
v8
سویفت
import GoogleMobileAds import UIKit class ViewController: UIViewController, GADFullScreenContentDelegate { var interstitial: GAMInterstitialAd? override func viewDidLoad() { super.viewDidLoad() let request = GAMRequest() GAMInterstitialAd.load(withAdUnitID:"ca-app-pub-8123415297019784/4985798738", request: request, completionHandler: { (ad, error) in if let error = error { print("Failed to load interstitial ad with error: \(error.localizedDescription)") return } self.interstitial = ad self.interstitial.fullScreenContentDelegate = self } ) } }
هدف-C
@import GoogleMobileAds; @import UIKit; @interface ViewController ()@property(nonatomic, strong) GAMInterstitialAd *interstitial; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; GAMRequest *request = [GAMRequest request]; [GAMInterstitialAd loadWithAdUnitID:@"/21775744923/example/interstitial" request:request completionHandler:^(GAMInterstitialAd *ad, NSError *error) { if (error) { NSLog(@"Failed to load interstitial ad with error: %@", [error localizedDescription]); return; } self.interstitial = ad; self.interstitial.fullScreenContentDelegate = self; }]; }
نمایش تبلیغ
v7
سویفت
func showInterstitial() { ... if interstitial.isReady { interstitial.present(fromRootViewController: self) } else { print("Ad wasn't ready") } }
هدف-C
- (void)showInterstitial: { ... if (self.interstitial.isReady) { [self.interstitial presentFromRootViewController:self]; } else { NSLog(@"Ad wasn't ready"); } }
v8
سویفت
func showInterstitial() { ... if let ad = interstitial { ad.present(fromRootViewController: self) } else { print("Ad wasn't ready") } }
هدف-C
- (void)showInterstitial: { ... if (self.interstitial) { [self.interstitial presentFromRootViewController:self]; } else { NSLog(@"Ad wasn't ready"); } }
رویدادهای تبلیغاتی ارائه
تکههای کد زیر به شما نشان میدهند که چگونه میتوانید با تماسهای زمانی که آگهی ارائه میشود (با موفقیت یا ناموفق) و زمانی که رد میشود، تماس بگیرید.
v7
سویفت
override func viewDidLoad() { super.viewDidLoad() interstitial = DFPInterstitial(adUnitID: "/21775744923/example/interstitial") interstitial.delegate = self ... } /// Tells the delegate that an interstitial will be presented. func interstitialWillPresentScreen(_ ad: DFPInterstitial) { print("Interstitial ad will be presented.") } /// Tells the delegate the interstitial is to be animated off the screen. func interstitialWillDismissScreen(_ ad: DFPInterstitial) { print("Interstitial ad will be dismissed.") } /// Tells the delegate the interstitial had been animated off the screen. func interstitialDidDismissScreen(_ ad: DFPInterstitial) { print("Interstitial ad dismissed.") } /// Tells the delegate that a user click will open another app /// (such as the App Store), backgrounding the current app. /// /// This is not a reliable callback for an ad click event and is removed in /// version 8. If you wish to listen to an ad causing a user to leave the app, /// use applicationWillResignActive: or sceneWillResignActive: instead. func interstitialWillLeaveApplication(_ ad: DFPInterstitial) { print("Interstitial ad will leave application.") }
هدف-C
- (void)viewDidLoad { [super viewDidLoad]; self.interstitial = [[DFPInterstitial alloc] initWithAdUnitID:"/21775744923/example/interstitial"]; self.interstitial.delegate = self; ... } /// Tells the delegate that an interstitial will be presented. - (void)interstitialWillPresentScreen:(DFPInterstitial *)ad { NSLog(@"Interstitial ad will be presented."); } /// Tells the delegate the interstitial is to be animated off the screen. - (void)interstitialWillDismissScreen:(DFPInterstitial *)ad { NSLog(@"Interstitial ad will be dismissed."); } /// Tells the delegate the interstitial had been animated off the screen. - (void)interstitialDidDismissScreen:(DFPInterstitial *)ad { NSLog(@"Interstitial ad dismissed."); } /// Tells the delegate that a user click will open another app /// (such as the App Store), backgrounding the current app. /// /// This is not a reliable callback for an ad click event and is removed in /// version 8. If you wish to listen to an ad causing a user to leave the app, /// use applicationWillResignActive: or sceneWillResignActive: instead. - (void)interstitialWillLeaveApplication:(DFPInterstitial *)ad { NSLog(@"Interstitial ad will leave application."); }
v8
سویفت
override func viewDidLoad() { super.viewDidLoad() let request = GAMRequest() GAMInterstitialAd.load(withAdUnitID:"ca-app-pub-8123415297019784/4985798738", request: request, completionHandler: { (ad, error) in if let error = error { print(error.localizedDescription) return } self.interstitial = ad self.interstitial.fullScreenContentDelegate = self } ) } func adDidPresentFullScreenContent(_ ad: GADFullScreenPresentingAd) { print("Ad did present full screen content.") } func ad(_ ad: GADFullScreenPresentingAd, didFailToPresentFullScreenContentWithError error: Error) { print("Ad failed to present full screen content with error \(error.localizedDescription).") } func adDidDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) { print("Ad did dismiss full screen content.") }
هدف-C
- (void)viewDidLoad { [super viewDidLoad]; GAMRequest *request = [GAMRequest request]; [GAMInterstitialAd loadWithAdUnitID:@"/21775744923/example/interstitial" request:request completionHandler:^(GAMInterstitialAd *ad, NSError *error) { if (error) { NSLog(@"interstitial:didFailToReceiveAdWithError: %@", [error localizedDescription]) return; } self.interstitial = ad; self.interstitial.fullScreenContentDelegate = self; }]; } - (void)adDidPresentFullScreenContent:(id)ad { NSLog(@"Ad did present full screen content."); } - (void)ad:(id )ad didFailToPresentFullScreenContentWithError:(NSError *)error { NSLog(@"Ad failed to present full screen content with error %@.", [error localizedDescription]); } - (void)adDidDismissFullScreenContent:(id )ad { NSLog(@"Ad did dismiss full screen content."); }
پاداش داده شد
بارگذاری آگهی
v7
سویفت
import GoogleMobileAds import UIKit class ViewController: UIViewController, GADRewardedAdDelegate { /// The rewarded ad. var rewardedAd: GADRewardedAd? override func viewDidLoad() { super.viewDidLoad() rewardedAd = GADRewardedAd(adUnitID: "ca-app-pub-3940256099942544/1712485313") rewardedAd.delegate = self rewardedAd?.load(GAMRequest()) { error in if let error = error { print("Rewarded ad failed to load with error: \(error.localizedDescription)") } else { print("Rewarded ad loaded.") } } } }
هدف-C
@import GoogleMobileAds; @import UIKit; @interface ViewController ()@property(nonatomic, strong) GADRewardedAd *rewardedAd; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; self.rewardedAd = [[GADRewardedAd alloc] initWithAdUnitID:@"ca-app-pub-3940256099942544/1712485313"]; self.rewardedAd.delegate = self; GAMRequest *request = [GAMRequest request]; [self.rewardedAd loadRequest:request completionHandler:^(GADRequestError * _Nullable error) { if (error) { NSLog(@"Rewarded ad failed to load with error: %@", [error localizedDescription]); } else { NSLog(@"Rewarded ad loaded."); } }]; }
v8
سویفت
import GoogleMobileAds import UIKit class ViewController: UIViewController, GADFullScreenContentDelegate { /// The rewarded ad. var rewardedAd: GADRewardedAd? override func viewDidLoad() { super.viewDidLoad() let request = GAMRequest() GADRewardedAd.load(withAdUnitID: "ca-app-pub-8123415297019784/9501821136", request: request, completionHandler: { (ad, error) in if let error = error { print("Rewarded ad failed to load with error: \(error.localizedDescription)") return } self.rewardedAd = ad self.rewardedAd?.fullScreenContentDelegate = self } ) } }
هدف-C
@import GoogleMobileAds; @import UIKit; @interface ViewController ()@property(nonatomic, strong) GADRewardedAd *rewardedAd; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; GAMRequest *request = [GAMRequest request]; [GADRewardedAd loadWithAdUnitID:@"ca-app-pub-3940256099942544/1712485313" request:request completionHandler:^(GADRewardedAd *ad, NSError *error) { if (error) { NSLog(@"Rewarded ad failed to load with error: %@", [error localizedDescription]); return; } self.rewardedAd = ad; NSLog(@"Rewarded ad loaded."); self.rewardedAd.fullScreenContentDelegate = self; }
نمایش تبلیغات و مدیریت پاداش
تبلیغات پاداش از شما میخواهد تا زمانی که کاربر پاداشی کسب میکند، رویداد را مدیریت کنید. با نسخه 7 API GADRewardedAd
، rewardedAd:userDidEarnReward:
به عنوان بخشی از پروتکل GADRewardedAdDelegate
پیاده سازی می کنید. برای نسخه 8، شما GADUserDidEarnRewardHandler
را برای ارائه آگهی پیاده سازی می کنید.
v7
سویفت
func showRewardedAd() { ... if rewardedAd.isReady { rewardedAd.present(fromRootViewController: self delegate:self) } else { print("Ad wasn't ready") } } /// Tells the delegate that the user earned a reward. func rewardedAd(_ rewardedAd: GADRewardedAd, userDidEarnReward: GADAdReward) { // TODO: Reward the user. }
هدف-C
- (void)showRewardedAd: { ... if (self.rewardedAd.isReady) { [self.rewardedAd presentFromRootViewController:self delegate:self]; } else { NSLog(@"Ad wasn't ready"); } } /// Tells the delegate that the user earned a reward. - (void)rewardedAd:(GADRewardedAd *)rewardedAd userDidEarnReward:(GADAdReward *)reward { // TODO: Reward the user. }
v8
سویفت
func showRewardedAd() { ... if let ad = rewardedAd { ad.present(fromRootViewController: self, userDidEarnRewardHandler: { let reward = ad.adReward // TODO: Reward the user. } ) } else { print("Ad wasn't ready") } }
هدف-C
- (void)showRewardedAd: { ... if (self.rewardedAd) { [self.rewardedAd presentFromRootViewController:self userDidEarnRewardHandler:^ { GADAdReward *reward = self.rewardedAd.adReward; // TODO: Reward the user. }]; } else { NSLog(@"Ad wasn't ready"); } }
رویدادهای تبلیغاتی ارائه
با GADRewardedAd
API شما یک GADRewardedAdDelegate
را به روشی که تبلیغ را ارائه می دهد، ارسال می کنید. با GADRewardedAd
API، یک GADFullscreenContentDelegate
را به عنوان یک ویژگی روی آگهی قبل از ارائه آگهی تنظیم می کنید.
v7
سویفت
func showRewardedAd() { ... if rewardedAd.isReady { rewardedAd.present(fromRootViewController: self delegate:self) } else { print("Ad wasn't ready") } } /// Tells the delegate that the rewarded ad was presented. func rewardedAdDidPresent(_ rewardedAd: GADRewardedAd) { print("Rewarded ad presented.") } /// Tells the delegate that the rewarded ad was dismissed. func rewardedAdDidDismiss(_ rewardedAd: GADRewardedAd) { print("Rewarded ad dismissed.") } /// Tells the delegate that the rewarded ad failed to present. func rewardedAd(_ rewardedAd: GADRewardedAd, didFailToPresentWithError error: Error) { print("Rewarded ad failed to present with error: \(error.localizedDescription).") }
هدف-C
- (void)showRewardedAd: { ... if (self.rewardedAd.isReady) { [self.rewardedAd presentFromRootViewController:self delegate:self]; } else { NSLog(@"Ad wasn't ready"); } } /// Tells the delegate that the rewarded ad was presented. - (void)rewardedAdDidPresent:(GADRewardedAd *)rewardedAd { NSLog(@"Rewarded ad presented."); } /// Tells the delegate that the rewarded ad failed to present. - (void)rewardedAd:(GADRewardedAd *)rewardedAd didFailToPresentWithError:(NSError *)error { NSLog(@"Rewarded ad failed to present with error: %@", [error localizedDescription]); } /// Tells the delegate that the rewarded ad was dismissed. - (void)rewardedAdDidDismiss:(GADRewardedAd *)rewardedAd { NSLog(@"Rewarded ad dismissed."); }
v8
سویفت
override func viewDidLoad() { super.viewDidLoad() let request = GAMRequest() GADRewardedAd.load(withAdUnitID: "ca-app-pub-8123415297019784/9501821136", request: request, completionHandler: { (ad, error) in if let error = error { print(error.localizedDescription) return } self.rewardedAd = ad self.rewardedAd?.fullScreenContentDelegate = self } ) } /// Tells the delegate that the rewarded ad was presented. func adDidPresentFullScreenContent(_ ad: GADFullScreenPresentingAd) { print("Rewarded ad presented.") } /// Tells the delegate that the rewarded ad was dismissed. func adDidDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) { print("Rewarded ad dismissed.") } /// Tells the delegate that the rewarded ad failed to present. func ad(_ ad: GADFullScreenPresentingAd, didFailToPresentFullScreenContentWithError error: Error) { print("Rewarded ad failed to present with error: \(error.localizedDescription).") }
هدف-C
- (void)viewDidLoad { [super viewDidLoad]; GAMRequest *request = [GAMRequest request]; [GADRewardedAd loadWithAdUnitID:@"ca-app-pub-3940256099942544/1712485313" request:request completionHandler:^(GADRewardedAd *ad, NSError *error) { if (error) { NSLog(@"Rewarded ad failed to load with error: %@", [error localizedDescription]); return; } self.rewardedAd = ad; NSLog(@"Rewarded ad loaded."); self.rewardedAd.fullScreenContentDelegate = self; } /// Tells the delegate that the rewarded ad was presented. - (void)adDidPresentFullScreenContent:(id)ad { NSLog(@"Rewarded ad presented."); } /// Tells the delegate that the rewarded ad failed to present. - (void)ad:(id )ad didFailToPresentFullScreenContentWithError:(NSError *)error { NSLog(@"Rewarded ad failed to present with error: %@", [error localizedDescription]); } /// Tells the delegate that the rewarded ad was dismissed. - (void)adDidDismissFullScreenContent:(id )ad { NSLog(@"Rewarded ad dismissed."); }
حذف API Legacy GADRewardedBasedVideoAd
API جدیدتر GADRewardedAd
برای اولین بار در مارس 2019 معرفی شد و برای بیش از 18 ماه بهترین API پاداش دار بوده است. در مقایسه با API قدیمی GADRewardedBasedVideoAd
، پیشرفتهای بیشتری داشته است، از جمله توانایی بارگیری بیش از یک آگهی با پاداش در یک زمان.
API قدیمی GADRewardedBasedVideoAd
در SDK نسخه 8.0.0 حذف شده است.
منسوخ شدن بنر هوشمند به نفع بنر تطبیقی
تبلیغات بنری هوشمند به نفع تبلیغات بنری تطبیقی منسوخ شده است. بنرهای تطبیقی عملکرد برتر و انعطاف پذیری بیشتری را در تنظیم عرض آگهی ارائه می دهند. اگر ترجیح می دهید به استفاده از بنرهای تمام عرض ادامه دهید، همچنان می توان با استفاده از بنر تطبیقی، همانطور که در قطعه کد زیر نشان داده شده است، این کار را انجام داد:
سویفت
class ViewController: UIViewController { override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) // Note: The safe area is not known until viewWillAppear. let adSize = getFullWidthAdaptiveAdSize() } func getFullWidthAdaptiveAdSize() -> GADAdSize { // Here safe area is taken into account, hence the view frame is used after the // view has been laid out. let frame = { () -> CGRect in if #available(iOS 11.0, *) { return view.frame.inset(by: view.safeAreaInsets) } else { return view.frame } }() return GADCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(frame.size.width) } }
هدف-C
@implementation ViewController - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; // Note: The safe area is not known until viewWillAppear. GADAdSize adSize = [self getFullWidthAdaptiveAdSize]; } - (GADAdSize)getFullWidthAdaptiveAdSize { CGRect frame = self.view.frame; // Here safe area is taken into account, hence the view frame is used after // the view has been laid out. if (@available(iOS 11.0, *)) { frame = UIEdgeInsetsInsetRect(self.view.frame, self.view.safeAreaInsets); } return GADCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(frame.size.width); } @end
حذف پاسخ تماس برنامه را ترک کنید
را willLeaveApplication
فراخوانی برای همه فرمت های تبلیغاتی به نفع روش های applicationDidEnterBackground:
و sceneDidEnterBackground:
حذف شده است. استفاده از API های سطح سیستم عامل هر زمان که کاربران برنامه شما را ترک می کنند، صرف نظر از اینکه به دلیل تعامل تبلیغاتی باشد یا نه، به شما اطلاع می دهد.
توجه داشته باشید که willLeaveApplication
پاسخ به تماس هرگز به عنوان یک کنترل کننده کلیک تبلیغاتی در نظر گرفته نشده است، و تکیه بر این تماس برای گزارش کلیک ها معیار دقیقی ایجاد نمی کند. به عنوان مثال، با کلیک بر روی نماد AdChoices که یک مرورگر خارجی را راهاندازی میکند، پاسخ تماس را فراخوانی میکند اما یک کلیک حساب نمیشود.
تغییر نام کلاس ها
جدول زیر نام کلاسهای خاصی را که در نسخه 8 تغییر کرده یا حذف شدهاند فهرست میکند.
- همه کلاسهای مربوط به
GADUnifiedNativeAd
بهGADNativeAd
تغییر نام دادهاند. -
GADRewardBasedVideoAd
،GADNativeExpressAdView
، وGADInstreamAd
حذف شدهاند. - همه کلاسهای دارای پیشوند
DFP
با پیشوندGAM
جایگزین شدهاند.
کلاس v7.68.0 | کلاس v8.0.0 |
---|---|
DFPBannerView | GAMBannerView |
DFPBannerViewOptions | GAMBannerViewOptions |
DFPIInterstitial | GAInterstitialAd |
DFPRequest | GAMRequest |
خطای GADRequest | خطای NSE |
GADUnifiedNativeAdView | GADNativeAdView |
GADUnifiedNativeAd | GADNativeAd |
GADUnifiedNativeAdAssetIdentifiers | GADNativeAdAssetIdentifiers |
GADUnifiedNativeAdDelegate | GADNativeAdDelegate |
GADUnifiedNativeAdUnconfirmedClickDelegate | GADNativeAdUnconfirmedClickDelegate |
GADNativeCustomTemplateAd | GADCustomNative Ad |
GADNativeCustomTemplateAdLoaderDelegate | GADCustomNativeAdLoaderDelegate |
GADNativeAdDelegate | GADCustomNativeAdDelegate |
GADINAppPurchase | حذف شد |
GADInterstitial | GADInterstitialAd |
GADNativeExpressAdView | حذف شد |
GADRewardBasedVideoAd | حذف شد |
GADInstreamAd | حذف شد |
GADInstreamAdView | حذف شد |
روشها حذف/جایگزین شدند
جدول زیر تغییرات خاص نسخه 8 را فهرست می کند. به طور خلاصه:
- روشها و ویژگیهای منسوخ شده قبلی حذف شدهاند.
-
-willLeaveApplication:
روش های نمایندگی برای همه فرمت ها حذف شده است. - نام کلاس شبکه تبلیغاتی به ویژگی
GADResponseInfo
منتقل شده است. - شناسه دستگاه آزمایشی به ویژگی
GADRequestConfiguration
منتقل شده است.
کلاس v7.68.0 | v7.68.0 API | v8.0.0 API | یادداشت ها |
---|---|---|---|
GADMobileAds | +configureWithApplicationID: | -startWithCompletion Handler: | شناسه برنامه اکنون در Info.plist تنظیم شده است. |
+disableAutomatedInApp PurchaseReporting | -disableAutomatedInApp PurchaseReporting | ||
+disableSDKCrashReporting | غیرفعال کردن SDKCrashReporting | ||
GADRequest | دستگاه های تست | GADRequestConfiguration .testdeviceidentifiers | ویژگی testDeviceIdentifiers برای همه درخواستهای تبلیغاتی اعمال میشود، در حالی که ویژگی قدیمی testDevices برای هر درخواست تنظیم شده بود. |
جنسیت | حذف شد | ||
تولد | حذف شد | ||
+sdkVersion | GADMobileAds.sharedInstance .sdkVersion | ||
-setBirthday WithMonth:day:year: | حذف شد | ||
-setLocationWithDescription: | -setLocationWith Latitude:longitude:accuracy: | ||
-tagForChildDirectedTreatment: | [GADMobileAds.sharedInstance.requestConfiguration tagForChildDirectedTreatment] | ||
GADErrorCode | kGADEخطا* | خطای GADE* | پیشوند k از تمام ثابت های کد خطا حذف می شود. |
GADBannerView | دارای Refreshed خودکار است | autoload فعال شد | |
inAppPurchaseDelegate | حذف شد | ||
mediatedAdView | حذف شد | ||
adNetworkClassName | answerInfo .adNetworkClassName | ||
DFPBannerView | -setValidAdSizesWithSizes: | -setValidAdSizes: | |
DFPBannerViewOptions | -adSizeDelegate | حذف شد | |
GADBannerViewDelegate | -adViewDidReceiveAd: | -bannerViewDidReceiveAd: | |
-adView:didFailToReceive AdWithError: | -bannerView:didFailToReceive AdWithError: | ||
-adViewWillPresentScreen: | -bannerViewWillPresentScreen: | ||
-adViewWillDismissScreen: | -bannerViewWillDismissScreen: | ||
-adViewDidDismissScreen: | -bannerViewDidDisissScreen: | ||
-adViewWillLeaveApplication: | حذف شد | ||
GADNativeCustomTemplateAd | شناسه الگو | GADCustomNativeAd.formatID | |
-performClickOnAssetWithKey: customClickHandler: | -performClickOnAssetWithKey: | ||
GADNativeAdImageAd LoaderOptions | preferredImageOrientation | GADNativeAdMediaAdOptions .mediaAspectRatio | |
GADInterstitial | inAppPurchaseDelegate | حذف شد | |
آماده است | حذف شد | به جای آن از canPresentFrom RootViewController:error: استفاده کنید. | |
استفاده شده است | حذف شد | ||
-init | -initWithAdUnitID: | ||
-setAdUnitID: | -initWithAdUnitID: | ||
adNetworkClassName | answerInfo .adNetworkClassName | ||
-interstitialWill LeaveApplication: | حذف شد | ||
GADUnifiedNativeAd | ویدئو کنترلر | mediaContent.videoController | |
adNetworkClassName | answerInfo .adNetworkClassName |