یک آداپتور میانجی پیامها و درخواستها را از Google Mobile Ads SDK دریافت میکند و با یک SDK شبکه شخص ثالث ارتباط برقرار میکند تا این درخواستها را برآورده کند.
این راهنما برای شبکههای تبلیغاتی در نظر گرفته شده است که به دنبال ایجاد یک آداپتور میانجی آگهی با پاداش برای میانجیگری تبلیغات موبایلی Google هستند. یک نمونه SDK در قطعه کد زیر برای اهداف نمایشی استفاده می شود. میتوانید اجرای کامل یک آداپتور ساخته شده برای این نمونه SDK را در پروژه iOSMediation ما بیابید. این راهنما نحوه ساخت آداپتور را توضیح می دهد.
نام کلاس آداپتور و پارامترهای سرور را تعریف کنید
شبکههای تبلیغاتی که از طریق پلتفرم میانجیگری AdMob انجام میشوند معمولاً برای شناسایی ناشر به یک یا چند شناسه نیاز دارند. این شناسهها بهعنوان پارامترهای سرور نشان داده میشوند و هنگام پیکربندی یک شبکه تبلیغاتی شخص ثالث برای میانجیگری در رابط کاربری AdMob تعریف میشوند.
قبل از ایجاد یک آداپتور میانجی، باید نام کلاس آداپتور خود و سایر پارامترهای مورد نیاز را برای دسترسی به شبکه تبلیغاتی خود در اختیار Google قرار دهید.
مطابق با پروتکل GADMediationAdapter
اولین قدم این است که کلاس آداپتور خود را وادار کنید پروتکل GADMediationAdapter
را پیاده سازی کند:
#import <Foundation/Foundation.h>
#import <GoogleMobileAds/GoogleMobileAds.h>
#import <SampleAdSDK/SampleAdSDK.h>
@interface GADMediationAdapterSampleAdNetwork : NSObject <GADMediationAdapter>
@end
این تغییر تضمین می کند که کلاس شما چندین متد را که در زیر مورد بحث قرار گرفته است را پیاده سازی می کند.
گزارش کلاس اضافی
اگر شبکه شخص ثالث بخواهد به ناشران اجازه دهد تا پارامترهای اختیاری اضافی را برای یک درخواست آگهی ارسال کنند، کلاس extras
باید از روش networkExtrasClass
برگردانده شود. اگر شخص ثالث از موارد اضافی ارائه شده توسط ناشر پشتیبانی نمی کند، Nil
برگردانید.
#import <GoogleMobileAds/GoogleMobileAds.h>
@interface SampleExtras : NSObject<GADAdNetworkExtras>
/// Use this to indicate if debug mode is on for logging.
@property(nonatomic) BOOL debugLogging;
/// Use this to indicate whether to mute audio for video ads.
@property(nonatomic) BOOL muteAudio;
@end
#import "GADMediationAdapterSampleAdNetwork.h"
@implementation GADMediationAdapterSampleAdNetwork
...
+ (Class<GADAdNetworkExtras>)networkExtrasClass {
return [SampleExtras class];
}
...
@end
گزارش شماره نسخه
آداپتور باید هم نسخه خود آداپتور و هم نسخه SDK شخص ثالث را به Google Mobile Ads SDK گزارش دهد. نسخه ها با استفاده از GADVersionNumber
گزارش شده اند.
آداپتورهای منبع باز و نسخه شده Google از طرح نسخه آداپتور 4 رقمی استفاده می کنند، اما GADVersionNumber
فقط 3 رقم را مجاز می کند. برای حل این مشکل، توصیه می شود که دو رقم آخر را در نسخه پچ ترکیب کنید، همانطور که در زیر نشان داده شده است:
#import "GADMediationAdapterSampleAdNetwork.h"
@implementation GADMediationAdapterSampleAdNetwork
...
+ (GADVersionNumber)adSDKVersion {
NSString *versionString = SampleSDKVersion;
NSArray *versionComponents = [versionString componentsSeparatedByString:@"."];
GADVersionNumber version = {0};
if (versionComponents.count >= 3) {
version.majorVersion = [versionComponents[0] integerValue];
version.minorVersion = [versionComponents[1] integerValue];
version.patchVersion = [versionComponents[2] integerValue];
}
return version;
}
+ (GADVersionNumber)version {
NSString *versionString = SampleAdapterVersion;
NSArray *versionComponents = [versionString componentsSeparatedByString:@"."];
GADVersionNumber version = {0};
if (versionComponents.count >= 4) {
version.majorVersion = [versionComponents[0] integerValue];
version.minorVersion = [versionComponents[1] integerValue];
// Adapter versions have 2 patch versions. Multiply the first patch by 100.
version.patchVersion =
[versionComponents[2] integerValue] * 100 + [versionComponents[3] integerValue];
}
return version;
}
...
@end
آداپتور را راه اندازی کنید
هنگامی که یک برنامه SDK تبلیغات تلفن همراه Google را راهاندازی میکند، setUpWithConfiguration:completionHandler:
روی همه آداپتورهای پیکربندیشده برای برنامه در رابط کاربری AdMob فراخوانی میشود.
آرگومان GADMediationServerConfiguration
اطلاعاتی را در مورد همه مکانهای پیکربندی شده برای برنامه در رابط کاربری AdMob ارائه میکند. از این اطلاعات برای راه اندازی SDK شبکه تبلیغاتی خود استفاده کنید. هنگامی که SDK شبکه تبلیغاتی شما راه اندازی شد، آرگومان GADMediationAdapterSetUpCompletionBlock
را فراخوانی کنید. این بلوک به شما امکان میدهد با فراخوانی کنترلکننده تکمیل با nil
یا یک شی NSError
، یک اولیهسازی موفق یا ناموفق را به Google Mobile Ads SDK گزارش دهید.
#import "SampleAdapter.h"
@implementation SampleAdapter
...
+ (void)setUpWithConfiguration:(GADMediationServerConfiguration *)configuration
completionHandler:(GADMediationAdapterSetUpCompletionBlock)completionHandler {
// Since the Sample SDK doesn't need to be initialized, the completion
//handler is called directly here.
completionHandler(nil);
}
...
@end
درخواست آگهی با پاداش
هنگامی که یک برنامه یک تبلیغ پاداش را با Google Mobile Ads SDK بارگیری میکند، اگر شبکه تبلیغاتی شما در آبشار میانجی دسترسی داشته باشد loadRewardedAdForAdConfiguration:completionHandler:
روی آداپتور فراخوانی میشود.
GADRewardedLoadCompletionHandler
به شما امکان میدهد با ارائه ارجاع به یک شی منطبق با پروتکل GADMediationRewardedAd
یا یک بار آگهی ناموفق با ارائه مرجع nil
و یک شی NSError
، بار آگهی موفق را به Google Mobile Ads SDK گزارش دهید. فراخوانی کنترلکننده تکمیل بار، یک GADMediationRewardedAdEventDelegate
را برمیگرداند که آداپتور شما باید آن را برای چرخه عمر تبلیغ نگه دارد تا هر رویداد بعدی را به Google Mobile Ads SDK اطلاع دهد.
#import "SampleAdapter.h"
@interface SampleAdapter () <GADMediationRewardedAd> {
/// Rewarded ads from Sample SDK.
SampleRewardedAd *_rewardedAd;
/// Handles any callback when the sample rewarded ad finishes loading.
GADMediationRewardedLoadCompletionHandler _loadCompletionHandler;
/// Delegate for receiving rewarded ad notifications.
__weak id<GADMediationRewardedAdEventDelegate> _rewardedAdDelegate;
}
@end
@implementation SampleAdapter
...
- (void)loadRewardedAdForAdConfiguration:(GADMediationRewardedAdConfiguration *)adConfiguration
completionHandler:
(GADMediationRewardedLoadCompletionHandler)completionHandler {
_loadCompletionHandler = completionHandler;
NSString *adUnit = adConfiguration.credentials.settings[SampleSDKAdUnitIDKey];
SampleExtras *extras = adConfiguration.extras;
_rewardedAd = [[SampleRewardedAd alloc] initWithAdUnitID:adUnit];
_rewardedAd.enableDebugLogging = extras.enableDebugLogging;
/// Check the extras to see if the request should be customized.
SampleAdRequest *request = [[SampleAdRequest alloc] init];
request.mute = extras.muteAudio;
/// Set the delegate on the rewarded ad to listen for callbacks from the Sample SDK.
_rewardedAd.delegate = self;
[_rewardedAd fetchAd:request];
}
...
@end
رویدادهای بارگذاری آگهی را پخش کنید
این مسئولیت آداپتور است که به تماسهای SDK شخص ثالث گوش دهد و آنها را به پاسخ تماس SDK تبلیغات موبایل Google مربوطه نشان دهد.
با فراخوانی loadCompletionHandler
با یک آگهی یا یک خطا، موفقیت یا شکست رویدادهای بارگذاری آگهی شخص ثالث را گزارش دهید. اگر کنترل کننده تکمیل با یک تبلیغ و بدون خطا فراخوانی شود، یک شی نمایندگی رویداد آگهی برگردانده می شود. به این نماینده اشاره کنید تا آداپتور شما بتواند بعداً رویدادهای ارائه را انتقال دهد.
- (void)rewardedAdDidReceiveAd:(nonnull SampleRewardedAd *)rewardedAd {
_rewardedAdDelegate = _loadCompletionHandler(self, nil);
}
- (void)rewardedAdDidFailToLoadWithError:(SampleErrorCode)errorCode {
_loadCompletionHandler(nil, [NSError errorWithDomain:kAdapterErrorDomain
code:GADErrorNoFill
userInfo:nil]);
}
آگهی را نمایش دهید
وقتی برنامه از Google Mobile Ads SDK میخواهد تبلیغ پاداش را ارائه کند، SDK روش presentFromViewController:
را در نمونه GADMediationRewardedAd
ارائه شده در تماس با کنترلکننده تکمیل بار فراخوانی میکند. در اینجا باید تبلیغ پاداش را ارائه دهید:
- (void)presentFromViewController:(nonnull UIViewController *)viewController {
if (!_rewardedAd.isReady) {
NSError *error =
[NSError errorWithDomain:kAdapterErrorDomain
code:0
userInfo:@{NSLocalizedDescriptionKey : @"Unable to display ad."}];
[_rewardedAdDelegate didFailToPresentWithError:error];
return;
}
[_rewardedAd presentFromRootViewController:viewController];
}
رویدادهای تبلیغاتی را به SDK تبلیغات موبایل گزارش دهید
پس از نمایش آگهی، آداپتور باید رویدادهای چرخه عمر ارائه آگهی را با استفاده از همان نماینده رویداد تبلیغاتی که در زمان بارگذاری موفقیت آمیز آگهی بازگردانده شده است، گزارش کند.
- (void)rewardedAdDidPresent:(nonnull SampleRewardedAd *)rewardedAd {
[_rewardedAdDelegate willPresentFullScreenView];
[_rewardedAdDelegate didStartVideo];
[_rewardedAdDelegate reportImpression];
}
- (void)rewardedAdDidDismiss:(nonnull SampleRewardedAd *)rewardedAd {
[_rewardedAdDelegate willDismissFullScreenView];
[_rewardedAdDelegate didEndVideo];
[_rewardedAdDelegate didDismissFullScreenView];
}
- (void)rewardedAd:(nonnull SampleRewardedAd *)rewardedAd userDidEarnReward:(NSUInteger)reward {
GADAdReward *aReward =
[[GADAdReward alloc] initWithRewardType:@"GADMediationAdapterSampleAdNetwork"
rewardAmount:[NSDecimalNumber numberWithUnsignedInt:reward]];
[_rewardedAdDelegate didRewardUserWithReward:aReward];
}
رویدادهای تبلیغاتی که باید به Google Mobile Ads SDK گزارش شوند به تفصیل در زیر آمده است:
رویداد تبلیغاتی | شرح |
---|---|
willPresentFullScreenView | به Google Mobile Ads SDK اطلاع می دهد که تبلیغ نمایش داده می شود. |
didStartVideo | به Google Mobile Ads SDK اطلاع می دهد که یک تبلیغ پاداش شروع به پخش کرد. |
ReportImpression | به Google Mobile Ads SDK اطلاع میدهد که نمایشی در آگهی رخ داده است. |
didEndVideo | به Google Mobile Ads SDK اطلاع می دهد که پخش آگهی پاداش داده شده به پایان رسیده است. |
didRewardUserWithReward | به Google Mobile Ads SDK اطلاع می دهد که کاربر پاداشی را به دست آورده است. |
گزارش کلیک کنید | به Google Mobile Ads SDK اطلاع می دهد که روی تبلیغ کلیک شده است. |
willDismissFullScreenView | به Google Mobile Ads SDK اطلاع می دهد که آگهی رد می شود. |
didDismissFullScreenView | به Google Mobile Ads SDK اطلاع می دهد که تبلیغ رد شده است. |