Admob bannerView请求错误:无广告显示

时间:2016-08-23 18:43:04

标签: ios objective-c cocos2d-iphone admob

我在我的某个ios游戏广告中出现此问题

这是我的代码,奇怪的是,如果我在request.testDevices列表中添加设备,它会显示演示横幅,如果我从testDevices中删除,它不显示真正的横幅,但是如果我更改我的bundleIdentifier在XCODE上,它显示了一个真正的横幅,所以我相信它的东西与我的admob帐户,有没有人有类似的东西?

它始终没有出现此错误:

AdView didFailToReceiveAdWithError ---------------------------:Error Domain = com.google.ads Code = 1" Request Error :没有广告要显示。" UserInfo = {NSLocalizedDescription =请求错误:无广告显示。,NSLocalizedFailureReason =请求错误:无广告显示。}

在我的AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    // Use Firebase library to configure APIs
    [FIRApp configure];
    [[FIRAnalyticsConfiguration sharedInstance] setAnalyticsCollectionEnabled:YES];
    // Initialize Google Mobile Ads SDK
    [GADMobileAds configureWithApplicationID:@"ca-app-pub-xx~xx"];
    /* other stuff here... */

}
我的rootViewController.m

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
    [super viewDidLoad];
    bannerViewAdded = NO;
    interstitialViewAdded = NO;

   [self addBanner];
   // ..... more stuff here;
 }

- (void)addBanner{

    NSLog(@"CALL ADD BANNER ROOTVIEWCONTROLLER");

    if(!bannerViewAdded && ![MKStoreManager isFeaturePurchased:kFeatureAId]){

    NSLog(@"ADD BANNER ROOTVIEWCONTROLLER");
    CGSize size = [[CCDirector sharedDirector] winSize];


    // Create adMob ad View (note the use of various macros to detect device)
    if (IS_IPAD || IS_IPADHD) {
        bannerView = [[GADBannerView alloc] initWithAdSize:kGADAdSizeLeaderboard];
        bannerView.center = CGPointMake(size.width/2, (size.height-CGRectGetHeight(bannerView.frame)/2)-2);
    }
    else if (IS_IPHONE6) {
        bannerView = [[GADBannerView alloc] initWithAdSize:kGADAdSizeBanner];
        bannerView.center = CGPointMake(size.width/2, (size.height-CGRectGetHeight(bannerView.frame)/2)-2);
    }
    else if (IS_IPHONE6P) {
        bannerView = [[GADBannerView alloc] initWithAdSize:kGADAdSizeBanner];
        bannerView.center = CGPointMake(size.width/2, (size.height-CGRectGetHeight(bannerView.frame)/2)-2);
    }
    else {
        // boring old iPhones and iPod touches
        bannerView = [[GADBannerView alloc] initWithAdSize:kGADAdSizeBanner];
        bannerView.center = CGPointMake(size.width/2, (size.height-CGRectGetHeight(bannerView.frame)/2)-2);
    }

    //[bannerView setBackgroundColor:[UIColor blueColor]];

    // Need to set this to no since we're creating this custom view.
    //bannerView.translatesAutoresizingMaskIntoConstraints = NO;

    // Note: Edit SampleConstants.h to provide a definition for kSampleAdUnitID
    // before compiling.

    // Replace this ad unit ID with your own ad unit ID.
    bannerView.adUnitID = @"ca-app-pub-xx/xx";
    bannerView.rootViewController = self;
    bannerView.delegate = self;
    [self.view addSubview:bannerView];


    GADRequest *request = [GADRequest request];
    //request.testDevices = @[ kGADSimulatorID ];
    //request.testDevices = @[  @"xx", @"xx"  , kGADSimulatorID ];

    [bannerView loadRequest:request];
    bannerViewAdded = YES;
    }

}

- (void)removeBanner {
  //admob
  if(bannerViewAdded){
      bannerViewAdded = NO;
      [bannerView removeFromSuperview];
      [bannerView release];
      bannerView = nil;
  }
  //No AdMOB
  if(localBannerAdded){
      localBannerAdded = NO;
      [localBannerButton removeFromSuperview];
      [localBannerButton release];
      localBannerButton = nil;
  }
}


- (void)addInterstitial{

    if(!interstitialViewAdded && ![MKStoreManager isFeaturePurchased:kFeatureAId]){
        NSLog(@"INIT INTERSTITIAL ROOTVIEWCONTROLLER");
        interstitialView =  [[GADInterstitial  alloc] initWithAdUnitID:@"ca-app-pub-xx/xx"];

        GADRequest *request = [GADRequest request];
        // Requests test ads on devices you specify. Your test device ID is printed to the console when
        // an ad request is made. GADBannerView automatically returns test ads when running on a
        // simulator.
        //request.testDevices = @[ kGADSimulatorID, @"xxx", @"xxx" ];
        [interstitialView loadRequest:request];
        [interstitialView setDelegate:self];

    }

}

- (void)adView:(GADBannerView *)gadBannerView didFailToReceiveAdWithError:(GADRequestError *)error{
    NSLog(@"AdView didFailToReceiveAdWithError --------------------------- : %@",  error);
    [self removeBanner];
    if(!localBannerAdded){
        CGSize size = [[CCDirector sharedDirector] winSize];
        localBannerButton = [[UIButton buttonWithType:UIButtonTypeRoundedRect] retain];
        localBannerButton.frame = CGRectMake(0.0, 0.0, 320.0, 50.0);
        [localBannerButton setTitle:@"DOWNLOAD MORE FREE GAMES" forState:UIControlStateNormal];
        localBannerButton.backgroundColor = [UIColor whiteColor];//[UIColor clearColor];
        [localBannerButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal ];
        [self.view addSubview:localBannerButton];

        [localBannerButton setCenter:CGPointMake(self.view.center.x,(size.height-CGRectGetHeight(localBannerButton.frame)/2)-2)];

        // Add Target-Action Pair
        [localBannerButton addTarget:self action:@selector(openAppStore:) forControlEvents:UIControlEventTouchUpInside];
        localBannerAdded = YES;
    }
 }

18 个答案:

答案 0 :(得分:15)

我今天刚遇到这个错误,对我来说问题很简单,那是因为adUnitID基本上还是新的。创建adUnitID后,我必须等待超过2小时才能投放广告。

如果您遇到此错误,并且某些adUnitIDs投放广告,而某些广告则没有。你极有可能遇到同样的问题,解决它的唯一方法就是等待。

答案 1 :(得分:11)

广告服务器将返回此邮件主要是因为您的广告单元ID没有广告。检查您的广告单元ID是否正确。如果您的横幅宽度/高度为0,您将得到相同的错误。确保您的adUnitID是完美的。 要么 检查以下链接,它可能会帮助您 https://groups.google.com/forum/#!topic/google-admob-ads-sdk/ioXU2nX9W28

AdMob Legacy Publisher ID not showing ads

答案 2 :(得分:8)

我刚刚创建了一个新帐户并看到了这个问题。在查看我的帐户时,在admob页面顶部显示了一条消息:"您的广告单元未显示广告,因为您尚未提供您的帐户付款信息。"。点击按钮修复,填写表格,广告将在几小时内显示

答案 3 :(得分:4)

我也遇到了这个错误。我的横幅广告和插页式广告都因此错误而失败。我发现在将UserAgent更改为默认值后,全局更改UserAgent是我的错误。

答案 4 :(得分:2)

这解决了我的问题

  1. 将横幅ID更改为示例ID。
  2. 然后运行应用程序。
  3. 将ID更改回生产ID。

答案 5 :(得分:2)

对我来说,它开始显示这一点的原因是我没有在我的AdMob帐户上设置任何付款方式。

我设置完毕后,错误消失了,广告立即开始显示。

希望这有助于某人!

答案 6 :(得分:2)

一个可能的原因是约束错误。

  

您应确保bannerView对其他视图的约束是   对

答案 7 :(得分:1)

如果您在调试或测试模式下使用您的应用,请确保使用google admob提供的测试AppID和BannerID,如下所示: -

Google Test AdMobID: 为ca-app-PUB-3940256099942544〜1458002511

Google Test BannerID 为ca-app-PUB-2934735716分之3940256099942544

答案 8 :(得分:1)

确保在调试会话中使用测试广告ID。

https://developers.google.com/admob/ios/banner?hl=en-US

  

加载测试广告的最简单方法是使用我们针对iOS横幅的专用测试广告单元ID:ca-app-pub-3940256099942544/2934735716

答案 9 :(得分:1)

如果您未在AdMob帐户中设置付款和结算信息,则可能会发生此错误。 根据Admob设置付款详细信息后,最多可能需要2个小时才能完全正常运行

Billing and Payments

答案 10 :(得分:0)

就我而言,广告工作正常,但突然停止显示广告并出现错误:没有可显示的广告。 我注意到控制台正在抛出有关测试设备标识符的错误。不知何故,测试设备标识符被更改。我不知道它是怎么发生的,可能是由于 Xcode 升级。我不知道。但是一旦我更改了测试设备标识符,它就会重新开始工作。

答案 11 :(得分:0)

我认为最好的方法是使用Google集成指南中的测试广告ID,然后在广告ID生效后进行更改。

答案 12 :(得分:0)

创建adUnitID后,请等待1-2个小时,然后尝试一下。

因为我遇到了同样的问题,并且在1-2小时后就解决了。

享受编码:)

答案 13 :(得分:0)

在手机上测试示例应用程序时,我遇到了同样的问题。我通过以下步骤进行了修复:

在iPhone 6上重置广告标识符,请转到:

  

设置->隐私->广告->重置广告标识符

答案 14 :(得分:0)

我通过在加载请求之前添加request.testDevice = @[@"xxxxxxxxxxxx"]来解决此问题。(我从控制台获得了此提示并测试设备编号)

答案 15 :(得分:0)

我习惯于像这样初始化横幅:

adBannerView = GADBannerView()

它正在发挥作用。

我无法准确地说出AdMob库的版本,但突然之间横幅广告不再显示。

使用size作为参数初始化横幅,修复问题:

adBannerView = GADBannerView(adSize: kGADAdSizeBanner)

答案 16 :(得分:0)

确保不要制作GADBannerView的其他变量。在每个控制器中使用一个变量,使其成为全局变量,只需更改单位ID。

例如,此行应该在任何控制器之外(全局)

var bannerView: GADBannerView!

然后在任何地方使用它,并相应地更改ID

bannerView.adUnitID = "ca-app-exampleid-abcabc938-4e8"

答案 17 :(得分:-1)

在iOS设备的“设置”中:“设置”>“隐私”>“广告”:打开然后关闭“限制广告跟踪”(“重置广告标识符”并不总是有帮助。请先尝试“重置广告标识符”,然后如果此操作对您没有帮助,请发表评论)。 但!它只会帮助您在自己的设备上获取广告,而不能解决广告匹配率低的问题。