المتطلبات الأساسية
أكمِل إعداد الأحداث المخصّصة.
طلب "إعلان مقابل مكافأة"
عند الوصول إلى تفاصيل الحدث المخصّص في سلسلة التوسّط للعرض الإعلاني بدون انقطاع، يتم استدعاء الطريقة loadRewarded:adConfiguration:completionHandler: في اسم الفئة الذي قدّمته عند إنشاء حدث مخصّص. في هذه الحالة،
تكون هذه الطريقة في SampleCustomEvent، والتي تستدعي بعد ذلك
طريقة loadRewarded:adConfiguration:completionHandler: في
SampleCustomEventRewarded.
لطلب "إعلان مقابل مكافأة"، أنشئ أو عدِّل فئة تنفّذ
GADMediationAdapter وloadRewarded:adConfiguration:completionHandler:. إذا
كانت هناك فئة حالية تمدّد GADMediationAdapter، يمكنك تنفيذ
loadRewarded:adConfiguration:completionHandler: هناك. بالإضافة إلى ذلك،
أنشئ فئة جديدة لتنفيذ GADMediationRewardedAd.
في مثال الحدث المخصّص،
تنفّذ SampleCustomEvent
واجهة GADMediationAdapter ثم تفوّض
SampleCustomEventRewarded.
Swift
import GoogleMobileAds class SampleCustomEvent: NSObject, MediationAdapter { fileprivate var rewardedAd: SampleCustomEventRewarded? ... func loadRewarded( for adConfiguration: MediationRewardedAdConfiguration, completionHandler: @escaping GADMediationRewardedLoadCompletionHandler ) { self.rewardedAd = SampleCustomEventRewarded() self.rewardedAd?.loadRewarded( for: adConfiguration, completionHandler: completionHandler) } }
Objective-C
#import "SampleCustomEvent.h" @implementation SampleCustomEvent ... SampleCustomEventRewarded *sampleRewarded; - (void)loadRewardedForAdConfiguration: (GADMediationRewardedAdConfiguration *)adConfiguration completionHandler: (GADMediationRewardedLoadCompletionHandler) completionHandler { sampleRewarded = [[SampleCustomEventRewarded alloc] init]; [sampleRewarded loadRewardedForAdConfiguration:adConfiguration completionHandler:completionHandler]; }
يتحمّل "SampleCustomEventRewarded" مسؤولية المهام التالية:
جارٍ تحميل "الإعلان مقابل مكافأة".
تنفيذ بروتوكول
GADMediationRewardedAdتلقّي عمليات ردّ الاتصال لأحداث الإعلانات وإعداد تقارير عنها إلى Google Mobile Ads SDK
يتم تضمين المَعلمة الاختيارية المحدّدة في واجهة مستخدم "مدير الإعلانات" في إعدادات الإعلان.
يمكن الوصول إلى المَعلمة من خلال
adConfiguration.credentials.settings[@"parameter"]. هذه المَعلمة هي عادةً معرّف وحدة إعلانية تتطلّبه حزمة تطوير البرامج (SDK) لشبكة الإعلانات عند إنشاء مثيل لعنصر إعلان.
Swift
class SampleCustomEventRewarded: NSObject, MediationRewardedAd { /// The Sample Ad Network rewarded ad. var nativeAd: SampleRewarded? /// The ad event delegate to forward ad rendering events to Google Mobile Ads SDK. var delegate: MediationRewardedAdEventDelegate? /// Completion handler called after ad load. var completionHandler: GADMediationRewardedLoadCompletionHandler? func loadRewarded( for adConfiguration: MediationRewardedAdConfiguration, completionHandler: @escaping GADMediationRewardedLoadCompletionHandler ) { rewarded = SampleRewarded.init( adUnitID: adConfiguration.credentials.settings["parameter"] as? String) rewarded?.delegate = self let adRequest = SampleAdRequest() adRequest.testMode = adConfiguration.isTestRequest self.completionHandler = completionHandler rewarded?.fetchAd(adRequest) } }
Objective-C
#import "SampleCustomEventRewarded.h" @interface SampleCustomEventRewarded () <SampleRewardedAdDelegate, GADMediationRewardedAd> { /// The sample rewarded ad. SampleRewarded *_rewardedAd; /// The completion handler to call when the ad loading succeeds or fails. GADMediationRewardedLoadCompletionHandler _loadCompletionHandler; /// The ad event delegate to forward ad rendering events to Google Mobile Ads SDK. id <GADMediationRewardedAdEventDelegate> _adEventDelegate; } @end - (void)loadRewardedAdForAdConfiguration:(GADMediationRewardedAdConfiguration *)adConfiguration completionHandler: (GADMediationRewardedLoadCompletionHandler)completionHandler { __block atomic_flag completionHandlerCalled = ATOMIC_FLAG_INIT; __block GADMediationRewardedLoadCompletionHandler originalCompletionHandler = [completionHandler copy]; _loadCompletionHandler = ^id<GADMediationRewardedAdEventDelegate>( _Nullable id<GADMediationRewardedAd> ad, NSError *_Nullable error) { // Only allow completion handler to be called once. if (atomic_flag_test_and_set(&completionHandlerCalled)) { return nil; } id<GADMediationRewardedAdEventDelegate> delegate = nil; if (originalCompletionHandler) { // Call original handler and hold on to its return value. delegate = originalCompletionHandler(ad, error); } // Release reference to handler. Objects retained by the handler will also be released. originalCompletionHandler = nil; return delegate; }; NSString *adUnit = adConfiguration.credentials.settings[@"parameter"]; _rewardedAd = [[SampleRewardedAd alloc] initWithAdUnitID:adUnit]; _rewardedAd.delegate = self; SampleAdRequest *adRequest = [[SampleAdRequest alloc] init]; adRequest.testMode = adConfiguration.isTestRequest; [_rewardedAd fetchAd:adRequest]; }
سواء تم جلب الإعلان بنجاح أو حدث خطأ، عليك استدعاء GADMediationRewardedLoadCompletionHandler. في حال النجاح، يتم تمرير الفئة التي تنفّذ GADMediationRewardedAd مع قيمة nil لمَعلمة الخطأ. في حال الفشل، يتم تمرير الخطأ الذي واجهته.
عادةً ما يتم تنفيذ هذه الطرق داخل عمليات الاستدعاء من حزمة تطوير البرامج (SDK) التابعة لجهة خارجية والتي ينفذها المحوّل. في هذا المثال، تحتوي حزمة SDK النموذجية
على SampleRewardedAdDelegate مع عمليات رد اتصال ذات صلة:
Swift
func rewardedDidLoad(_ interstitial: SampleRewarded) { if let handler = completionHandler { delegate = handler(self, nil) } } func rewarded( rewarded: SampleRewarded, didFailToLoadAdWith errorCode: SampleErrorCode ) { let error = SampleCustomEventUtils.SampleCustomEventErrorWithCodeAndDescription( code: SampleCustomEventErrorCode .SampleCustomEventErrorAdLoadFailureCallback, description: "Sample SDK returned an ad load failure callback with error code: \(errorCode)" ) if let handler = completionHandler { delegate = handler(nil, error) } }
Objective-C
- (void)rewardedDidLoad:(SampleRewarded *)rewarded { _adEventDelegate = _loadCompletionHandler(self, nil); } - (void)rewarded:(SampleInterstitial *)rewarded didFailToLoadAdWithErrorCode:(SampleErrorCode)errorCode { NSError *error = SampleCustomEventErrorWithCodeAndDescription( SampleCustomEventErrorAdLoadFailureCallback, [NSString stringWithFormat:@"Sample SDK returned an ad load failure " @"callback with error code: %@", errorCode]); _adEventDelegate = _loadCompletionHandler(nil, error); }
يتطلّب GADMediationrewardedAd تنفيذ طريقة present(viewController:)
لعرض الإعلان:
Swift
func present(from viewController: UIViewController) { if let rewarded = rewarded, rewarded.isRewardedLoaded { rewarded.show() } }
Objective-C
- (void)presentFromViewController:(UIViewController *)viewController { if ([_rewardedAd isRewardedLoaded]) { [_rewardedAd show]; } else { NSError *error = SampleCustomEventErrorWithCodeAndDescription( SampleCustomEventErrorAdNotLoaded, [NSString stringWithFormat: @"The rewarded ad failed to present because the ad was not loaded."]); [_adEventDelegate didFailToPresentWithError:error] } }
إعادة توجيه أحداث التوسّط إلى Google Mobile Ads SDK
بعد استدعاء GADMediationRewardedLoadCompletionHandler باستخدام إعلان تم تحميله، يمكن للمحوّل استخدام عنصر التفويض GADMediationRewardedAdEventDelegate الذي تم عرضه لإعادة توجيه أحداث العرض من حزمة تطوير البرامج (SDK) التابعة لجهة خارجية إلى Google Mobile Ads SDK. SampleCustomEventRewarded class
implements the SampleRewardedAdDelegate protocol to forward callbacks from
the sample شبكة إعلانات to Google Mobile Ads SDK.
من المهم أن يعيد الحدث المخصّص توجيه أكبر عدد ممكن من عمليات الاستدعاء هذه، حتى يتلقّى تطبيقك هذه الأحداث المكافئة من "Google Mobile Ads SDK". في ما يلي مثال على استخدام عمليات الاستدعاء:
Swift
func rewardedAdDidPresent(_ rewarded: SampleRewardedAd) { delegate?.willPresentFullScreenVideo() delegate?.didStartVideo() } func rewardedAdUserDidEarnReward(_ rewarded: SampleRewardedAd) { AdReward aReward = AdReward("", rewarded) delegate.didRewardUser() }
Objective-C
- (void)rewardedAdDidPresent:(SampleRewardedAd *)rewardedAd { [_adEventDelegate willPresentFullScreenView]; [_adEventDelegate didStartVideo]; } - (void)rewardedAd:(nonnull SampleRewardedAd *)rewardedAd userDidEarnReward:(NSUInteger)reward { GADAdReward *aReward = [[GADAdReward alloc] initWithRewardType:@"" rewardAmount:[NSDecimalNumber numberWithUnsignedInt:reward]]; [_adEventDelegate didRewardUserWithReward]; }
بذلك تكون قد اكتملت عملية تنفيذ الأحداث المخصّصة لـ "الإعلانات مقابل مكافأة". يتوفّر المثال الكامل على GitHub. يمكنك استخدامها مع شبكة إعلانات متوافقة حاليًا أو تعديلها لعرض "إعلانات مقابل مكافأة" مخصّصة.