المتطلبات الأساسية
أكمِل إعداد الأحداث المخصَّصة.
طلب إعلان يضم مكافأة
عند الوصول إلى عنصر الحدث المخصّص في سلسلة توسّط العرض الإعلاني بدون انقطاع،
load Rewards:adConfiguration:completeHandler: يتم استدعاء الطريقة على
اسم الفئة الذي قدمته عند إنشاء صف
فعالية. وفي هذه الحالة،
تلك الطريقة هي في SampleCustomEvent
، والتي تستدعي بعد ذلك
طريقة loadRewarded:adConfiguration:completionHandler:
في
SampleCustomEventRewarded
لطلب إعلان يضم مكافأة، يجب إنشاء أو تعديل فئة لتنفيذ الإعلانات.
"GADMediationAdapter
" وloadRewarded:adConfiguration:completionHandler:
" في حال حذف
توجد فئة تمتد على GADMediationAdapter
، يُرجى تنفيذ
loadRewarded:adConfiguration:completionHandler:
هناك. بالإضافة إلى ذلك،
أنشِئ فئة جديدة لتنفيذ GADMediationRewardedAd
.
في مثال الحدث المخصّص
ينفذ SampleCustomEvent
واجهة GADMediationAdapter
ثم يفوض
SampleCustomEventRewarded
Swift
import GoogleMobileAds class SampleCustomEvent: NSObject, GADMediationAdapter { fileprivate var rewardedAd: SampleCustomEventRewarded? ... func loadRewarded( for adConfiguration: GADMediationRewardedAdConfiguration, 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
.تلقّي استدعاءات أحداث الإعلانات وإعداد تقارير عنها إلى حزمة "SDK لإعلانات Google على الأجهزة الجوّالة".
المعلمة الاختيارية المحددة في واجهة مستخدم "مدير الإعلانات" هي
مضمّنة في إعدادات الإعلان.
يمكن الوصول إلى المعلمة من خلال
adConfiguration.credentials.settings[@"parameter"]
هذه المعلمة
تمثّل عادةً معرّف وحدة إعلانية تطلبه حزمة تطوير البرامج (SDK) لشبكة الإعلانات عندما
إنشاء مثيل لعنصر إعلان
Swift
class SampleCustomEventRewarded: NSObject, GADMediationRewardedAd { /// The Sample Ad Network rewarded ad. var nativeAd: SampleRewarded? /// The ad event delegate to forward ad rendering events to the Google Mobile Ads SDK. var delegate: GADMediationRewardedAdEventDelegate? /// Completion handler called after ad load. var completionHandler: GADMediationRewardedLoadCompletionHandler? func loadRewarded( for adConfiguration: GADMediationRewardedAdConfiguration, 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 the 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] } }
إعادة توجيه أحداث التوسّط إلى "SDK لإعلانات Google على الأجهزة الجوّالة"
بعد الاتصال بـ GADMediationRewardedLoadCompletionHandler
باستخدام
المستخدم، يمكن لكائن التفويض GADMediationRewardedAdEventDelegate
المعروض
ثم يستخدمه المحوّل لإعادة توجيه أحداث العرض التقديمي من الجهة الخارجية
SDK لإعلانات Google على الأجهزة الجوّالة. فئة SampleCustomEventRewarded
لتنفيذ بروتوكول SampleRewardedAdDelegate
لإعادة توجيه طلبات معاودة الاتصال من
نموذج شبكة الإعلانات إلى SDK لإعلانات Google على الأجهزة الجوّالة.
من المهمّ أن يُعيد الحدث المخصّص توجيه أكبر عدد ممكن من طلبات معاودة الاتصال هذه. حتى يتلقّى تطبيقك هذه الأحداث المماثلة من نظام التشغيل SDK لإعلانات الأجهزة الجوّالة. إليك مثال على استخدام عمليات معاودة الاتصال:
Swift
func rewardedAdDidPresent(_ rewarded: SampleRewardedAd) { delegate?.willPresentFullScreenVideo() delegate?.didStartVideo() } func rewardedAdUserDidEarnReward(_ rewarded: SampleRewardedAd) { GADAdReward aReward = GADAdReward("", 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. يمكنك استخدامه مع شبكة إعلانات متوافقة أو تعديلها إلى لعرض إعلانات تضم مكافأة للأحداث المخصّصة