Как интегрировать GreyStripe в посредничество admob с пользовательскими событиями

Я пытаюсь интегрировать GreyStripe (который не поддерживается) в посредничество admob с пользовательскими событиями, также я прочитал руководство по адресу: https://developers.google.com/mobile-ads-sdk/docs./ios/mediation/#customevents

Но новичку все еще трудно понять, может ли кто-нибудь предоставить пример кода или какое-то руководство. Заранее спасибо.


person Kevin Chen    schedule 30.05.2012    source источник


Ответы (2)


Реализация зависит от сети, но вот полный пример того, как вы могли бы интегрировать сеть AdMob через пользовательское событие, если бы оно еще не поддерживалось.

Создайте собственное событие в своем месте размещения агрегатора:

  • Ярлык - бла-бла-бла (может быть любой строкой)
  • Имя класса — CustomAd (имя вашего класса. В данном примере это CustomAd)
  • Параметр - a1401234567890 (в случае AdMob вам нужен только ваш идентификатор издателя. Здесь вы можете использовать свой собственный идентификатор издателя, это просто пример)

И ваша реализация будет выглядеть примерно так:

CustomAd.h

#import "GADCustomEventBanner.h"
#import "GADCustomEventBannerDelegate.h"
#import "GADBannerView.h"
#import "GADBannerViewDelegate.h"

@interface CustomAd : NSObject <GADCustomEventBanner, GADBannerViewDelegate> {
  GADBannerView *bannerView_;
}

@end

CustomAd.m

#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
person Eric Leichtenschlag    schedule 31.05.2012
comment
Спасибо, Эрик. У меня еще есть вопросы. Если после запроса отправьте на мобильный телефон: admob->GeryStripe->admob Когда я переключаюсь с GeryStripe на admob, как удалить представление GeryStripe. В решении AdWhirl AdWhirl предоставляет протокол: - (void)stopBeingDelegate; Я могу вызвать stopBeingDelegate, чтобы удалить представление GeryStripe. Но в посредническом решении Admob я не могу найти подобную функцию. Итак, как я могу сделать это в посредничестве Admob. - person Kevin Chen; 04.06.2012
comment
Вы не должны ничего звонить. SDK агрегатора AdMob должен сделать это за вас. Посредничество обращается к requestBannerAd:, чтобы вы создали свой баннер GreyStripe и отправили запрос. Когда GreyStripe уведомляет вас об успешном получении объявления, вы должны вызвать [self.delegate customEventBanner:self didReceiveAd:greyStripeView];. В этот момент AdMob удалит предыдущее объявление, которое находилось в представлении контейнера, и вместо него поместит объявление GreyStripe. - person Eric Leichtenschlag; 05.06.2012
comment
Спасибо, Эрик. Ваши комментарии действительно полезны, и моя проблема решена. Большое спасибо :) - person Kevin Chen; 07.06.2012

Я пытаюсь написать пользовательские события для Nexage, и он не удаляет старый вид и не помещает новое объявление на экран.

static BOOL hasInitializedOnce;

@implementation NexageAdMobCustomEventBanner

@synthesize delegate, bannerView_;

- (void)requestBannerAd:(GADAdSize)adSize
          parameter:(NSString *)serverParameter
              label:(NSString *)serverLabel
            request:(GADCustomEventRequest *)request
{
    if (!hasInitializedOnce)
    {
        // Initialize Manager
        [[NexageManager sharedInstance] startUpWithDelegate:self
                                           mediationUrl:@"http://xxxxx.nexage.com"
                                                    dcn:@"xxxxxx"
                                             attributes:nil
                                               features:nil];
    [NexageManager sharedInstance].currentViewController = [self.delegate viewControllerForPresentingModalView];

    // Create banner and immediately get ad
    bannerView_ = [[NexageAdView alloc] initWithPosition:serverParameter frame:CGRectMake(0, 0, 320, 50)];
    [bannerView_ setIntervalTo:10];

    // Set it so that it won't call our Manager again
    hasInitializedOnce = YES;
    NSLog(@"Creating the Banner view for Mediation callback");
}
else
{
//        [bannerView_ rollover];
    NSLog(@"Rolling over the Banner view for Mediation callback");
}


}

- (void)adReceived:(UIView *)ad position:(NSString *)pos
{
    NSLog(@"Nexage Banner received!");
    [self.delegate customEventBanner:self didReceiveAd:ad];
}

- (void)adDidHide:(UIView *)adView
{
    NSLog(@"Called here...");
}

- (void)didFailToReceiveAd:(NSString *)position
{
    [self.delegate customEventBanner:self didFailAd:[NSError errorWithDomain:@"Nexage" code:200 userInfo:[NSDictionary dictionaryWithObjectsAndKeys:@"Not able to get a new Ad", NSLocalizedDescriptionKey, nil]]];
}
person Muthu    schedule 19.03.2013