Реализация зависит от сети, но вот полный пример того, как вы могли бы интегрировать сеть AdMob через пользовательское событие, если бы оно еще не поддерживалось.
Создайте собственное событие в своем месте размещения агрегатора:
Ярлык - бла-бла-бла (может быть любой строкой)
Имя класса — CustomAd (имя вашего класса. В данном примере это CustomAd)
Параметр - a1401234567890 (в случае AdMob вам нужен только ваш идентификатор издателя. Здесь вы можете использовать свой собственный идентификатор издателя, это просто пример)
#import CustomAd.h
@implementation CustomAd
// Will be set by the AdMob SDK.
@synthesize delegate;
- (void)dealloc {
bannerView_.delegate = nil;
[bannerView_ release];
[super dealloc];
}
#pragma mark -
#pragma mark GADCustomEventBanner
- (void)requestBannerAd:(GADAdSize)adSize
parameter:(NSString *)serverParameter
label:(NSString *)serverLabel
request:(GADCustomEventRequest *)customEventRequest {
// Create the bannerView with the appropriate size.
bannerView_ = [[GADBannerView alloc] initWithAdSize: adSize];
// Set the delegate to listen for callbacks.
[bannerView_ setDelegate:self];
// Set the publisher ID for the banner. This comes from server parameter
// you provide when creating the custom event in mediation.
bannerView_.adUnitID = serverParameter;
// Let the bannerView know which UIViewController to restore after returning
// from and ad click. The UIViewController is available from
// GADCustomEventBannerDelegate.
bannerView_.rootViewController = [self.delegate viewControllerForPresentingModalView];
// Create an ad request using custom targeting options from the custom event
// request.
GADRequest *request = [GADRequest request];
[request setAdditionalParameters:[customEventRequest additionalParameters]];
[request setBirthday:[customEventRequest userBirthday]];
[request setGender:[customEventRequest userGender]];
[request setTesting:[customEventRequest isTesting]];
if ([customEventRequest userHasLocation]) {
[request setLocationWithLatitude:[customEventRequest userLatitude]
longitude:[customEventRequest userLongitude]
accuracy:[customEventRequest userLocationAccuracyInMeters]];
}
[bannerView_ loadRequest:request];
}
#pragma mark -
#pragma mark GADBannerView Callbacks
- (void)adViewDidReceiveAd:(GADBannerView *)adView {
[self.delegate customEventBanner:self didReceiveAd:adView];
}
- (void)adView:(GADBannerView *)view
didFailToReceiveAdWithError:(NSError *)error {
[self.delegate customEventBanner:self didFailAd:error];
}
- (void)adViewWillPresentScreen:(GADBannerView *)adView {
[self.delegate customEventBanner:self clickDidOccurInAd:adView];
[self.delegate customEventBannerWillPresentModal:self];
}
- (void)adViewWillDismissScreen:(GADBannerView *)adView {
[self.delegate customEventBannerWillDismissModal:self];
}
- (void)adViewDidDismissScreen:(GADBannerView *)adView {
[self.delegate customEventBannerDidDismissModal:self];
}
- (void)adViewWillLeaveApplication:(GADBannerView *)adView {
[self.delegate customEventBannerWillLeaveApplication:self];
}
@end
personEric Leichtenschlagschedule31.05.2012
comment
Спасибо, Эрик. У меня еще есть вопросы. Если после запроса отправьте на мобильный телефон: admob->GeryStripe->admob Когда я переключаюсь с GeryStripe на admob, как удалить представление GeryStripe. В решении AdWhirl AdWhirl предоставляет протокол: - (void)stopBeingDelegate; Я могу вызвать stopBeingDelegate, чтобы удалить представление GeryStripe. Но в посредническом решении Admob я не могу найти подобную функцию. Итак, как я могу сделать это в посредничестве Admob.
- personKevin Chen; 04.06.2012
comment
Вы не должны ничего звонить. SDK агрегатора AdMob должен сделать это за вас. Посредничество обращается к requestBannerAd:, чтобы вы создали свой баннер GreyStripe и отправили запрос. Когда GreyStripe уведомляет вас об успешном получении объявления, вы должны вызвать [self.delegate customEventBanner:self didReceiveAd:greyStripeView];. В этот момент AdMob удалит предыдущее объявление, которое находилось в представлении контейнера, и вместо него поместит объявление GreyStripe.
- personEric Leichtenschlag; 05.06.2012
comment
Спасибо, Эрик. Ваши комментарии действительно полезны, и моя проблема решена. Большое спасибо :)
- personKevin Chen; 07.06.2012