2015-02-15 4 views
-1

я сделал следующее:Что мне нужно добавить обрабатывать AdMob/ОВР посредничество правильно

1) Добавлена ​​iAd.framework в проект IOS. i импортировал iAd/iAd.h и .m в проект.

2) Я открыл учетную запись AdMob. В медиации я сделал iAd cpm выше, чем AdMob cpm.

3) Загрузил SDK SDK iOS 7.0 AdMob в проект и поставляется с адаптером AdMob. Импортированные файлы GoogleMobileAds в файлы .h и .m в проекте

4) Загрузили адаптер iAd в проект.

5) В разделе «Настройки сборки» в других флагах компоновщика я добавил -ObjC, поэтому он находится в отладке и выпуске.

В нем говорится в Admob инструкции Посреднической «Там нет необходимости писать дополнительный код, чтобы создать просмотры объявлений из каждой рекламной сети. Медиация SDK AdMob будет вызывать адаптеры каждой рекламной сети и SDK по мере необходимости создавать объявления»

Не добавляя никакого кода, он не работает.

У меня есть 1 ViewController для размещения рекламы. 3 метода в том, что 1 VC. 1st = метод viewDidLoad, второй = метод StartGame и метод 3rd = GameOver. Затем вернитесь в viewDidLoad после GameOver.

Итак, я добавил код iad в viewDidLoad и сделал iad hide в файле didFailToReceiveAdWithError и AdMob.

Это сделало загрузку iAd и iAd, показывая тестовый баннер, как за 5 минут до сбоя, и AdMob загружается. Тем не менее, AdMob мгновенно переходит обратно в iAd после того, как я покинул страницу GameOver и вернусь к viewDidLoad.

Поэтому я не думаю, что посредничество работает должным образом, потому что рекламные баннеры не должны подвергаться воздействию какого-либо из методов. Что я сделал не так? Как правильно настроить посредничество?

Мой код:

-(void)viewDidLoad{ 
self.iAD = [[ADBannerView alloc] initWithFrame:CGRectMake(0, 60, 375, 50)]; 
[self.iAD setDelegate:self]; 
[self.view addSubview:self.iAD]; 
} 

-(void)bannerViewDidLoadAd:(ADBannerView *)banner{ 
    self.iAD.hidden=NO; 
} 

-(void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error{ 
    [self.iAD setAlpha:0]; 
    self.iAD.hidden=YES; 

    self.bannerView = [[GADBannerView alloc] initWithAdSize:kGADAdSizeSmartBannerPortrait]; 
    self.AdMob.adUnitID = @"my-unit-id"; 
    self.AdMob.rootViewController = self; 
    self.AdMob.delegate = self; 
    [self.view addSubview:self.AdMob]; 
    GADRequest *request =[GADRequest request]; 
    request.testDevices = @[ @"278b11d6d1cb3f7d10414d6b2686d0e5 ]; 
    [self.bannerView loadRequest:request]; 
    } 
+0

У вас есть код, который вы могли бы предоставить, чтобы сузить свой вопрос? Он очень широк по состоянию на данный момент, и нет четкой проблемы, просто большой в настоящий момент. Кроме того, начиная с AdMob 7.0 вам не нужно добавлять -ObjC в другие флаги компоновщика. –

+0

Я добавил свой код. – Jet

ответ

0

Я не знаком с адаптером ОВР AdMob, но это звучит как то, что она предназначена для показывает один вид AdMob и с AdMob посредником на их конце, показывать ли объявление ОВР или объявление AdMob на основе цены за тысячу показов, которую они могут приобрести в этот момент. Ваш код показывает, что вы хотите реализовать iAd и AdMob отдельно и показывать одно или другое на основе того, получают ли они объявление или нет. Кроме того, вы не должны создавать новые виды баннеров iAd и AdMob каждый раз, когда хотите показывать объявление. Сначала вы должны создать один из них и показать их в соответствующее время в своем приложении. Причина, по которой ваше объявление iAd показывает сразу после выхода из режима gameOver, вызвано тем, что viewDidLoad вызывается, когда вы снова создаете новый вид iAd. Чтобы выполнить то, что вы пытаетесь сделать в коде, вы должны создать функцию для первоначального создания объявлений или использовать условный оператор в свой viewDidLoad, чтобы убедиться, что показы объявлений создаются только один раз. Мой пример делает это с условным заявлением, а затем перемещает представление объявления iAd/AdMob на экране или вне его, если iAd получил объявление или нет.

//ViewController.h 
#import <iAd/iAd.h> 
#import <GoogleMobileAds/GoogleMobileAds.h> 

@interface ViewController : UIViewController <ADBannerViewDelegate> 

@end 


//ViewController.m 
#define BANNER_UNIT_ID @"your admob banner id" 

@implementation ViewController { 
     //Ads 
     GADBannerView *adMobView; 
     ADBannerView *iAdView; 
     CGRect screenBounds; 
     BOOL bannerIsVisible; 
     BOOL haveCreatedAdViews; 
    } 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    if (!haveCreatedAdViews) { 
     // Get device screen size 
     screenBounds = [[UIScreen mainScreen] bounds]; 

     // Setup iAd view 
     iAdView = [[ADBannerView alloc] initWithFrame:CGRectZero]; 
     [self.view addSubview:iAdView]; 
     iAdView.delegate=self; 
     [iAdView setFrame:CGRectMake(0, 
             0, 
             iAdView.bounds.size.width, 
             iAdView.bounds.size.height)]; 
     iAdView.center = CGPointMake(screenBounds.size.width/2, screenBounds.size.height + (iAdView.bounds.size.height/2)); 

     // Setup AdMob view 
     adMobView = [[GADBannerView alloc] initWithAdSize:kGADAdSizeBanner]; 
     adMobView.adUnitID = BANNER_UNIT_ID; 
     adMobView.rootViewController = self; 
     [self.view addSubview:adMobView]; 
     [adMobView loadRequest:[GADRequest request]]; 
     [adMobView setFrame:CGRectMake(0, 
             0, 
             adMobView.bounds.size.width, 
             adMobView.bounds.size.height)]; 
     adMobView.center = CGPointMake(screenBounds.size.width/2, screenBounds.size.height + (adMobView.bounds.size.height/2)); 
     // Start AdMobView on screen 
     adMobView.frame = CGRectOffset(adMobView.frame, 0, -50); 
     //iAd banner is not visible 
     bannerIsVisible = NO; 
     haveCreatedAdViews = YES; 
    } 
} 

//iAd 
-(void)bannerViewDidLoadAd:(ADBannerView *)banner { 
    NSLog(@"iAd received ad"); 
    if (!bannerIsVisible) { 
     // Move iAd on screen 
     [UIView beginAnimations:nil context:NULL]; 
     iAdView.frame = CGRectOffset(iAdView.frame, 0, -50); 
     [UIView commitAnimations]; 
     bannerIsVisible = YES; 

     // Move AdMob off screen 
     [UIView beginAnimations:nil context:NULL]; 
     adMobView.frame = CGRectOffset(adMobView.frame, 0, 50); 
     [UIView commitAnimations]; 
    } 
} 

-(void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error { 
    NSLog(@"iAd failed"); 
    if (bannerIsVisible) { 
     // Move iAd off screen 
     [UIView beginAnimations:nil context:NULL]; 
     iAdView.frame = CGRectOffset(iAdView.frame, 0, 50); 
     [UIView commitAnimations]; 
     bannerIsVisible = NO; 

     // Move AdMob on screen 
     [UIView beginAnimations:nil context:NULL]; 
     adMobView.frame = CGRectOffset(adMobView.frame, 0, -50); 
     [UIView commitAnimations]; 
    } 
} 
+0

Я пытаюсь сделать свой код сверху. Я помещаю рекламу сверху, а не внизу, но есть странная анимация, когда появляются представления и появляется баннер iAd, анимация похожа на iAd-баннер, быстро прокручивается от нижней части экрана до вершины экран. Как я могу прекратить это? – Jet

+0

Я только что практиковал с кодом в течение нескольких дней, и я заметил, что он неверен. Он одновременно загружает обе рекламы. Какой смысл скрывать объявление, которое показывается? Показывается iAd и отображается AdMob. BannerViewDidLoadAd у вас есть iAd, показывающий Ad и Admob показ Ad, но AdMob показывает объявление с экрана. Затем из ниоткуда в didFailToReceiveAdWithError они опосредуются, и в AdMob теперь отображается надпись на экране, а iAd - вне экрана, показывающая объявление. В чем смысл? – Jet

+0

Я думаю, вы в замешательстве. Если вызывается 'didFailToReceiveAdWithError', то для iAdView не отображается объявление. Цель этого кода - сначала попытаться получить объявление iAd. Если объявление недоступно, отображается объявление AdMob. Если вы хотите показывать рекламу в верхней части экрана, вам нужно изменить CGPoints в объявлениях. Я полностью прокомментировал все возможные подробности этого здесь (http://stackoverflow.com/a/28708377/2108547). Если вы сталкиваетесь с тем, что не понимаете, обратитесь к Документам Apple (https://developer.apple.com/library/ios/navigation/) –

-1

У меня была аналогичная проблема. Я использую это в моем didFailToReceiveAdWithError:

[self.bannerView removeFromSuperview]; 

и после этого я инициализируется мой adMobView ...