【问题标题】:iAd banner shows test ad on simulator but not on deviceiAd 横幅在模拟器上显示测试广告,但在设备上不显示
【发布时间】:2014-03-22 14:50:49
【问题描述】:

我正在尝试在我的 iPhone 应用上放置 iAd 横幅。这是我声明横幅广告的地方:

- (void)bannerViewDidLoadAd:(ADBannerView *)banner
{
    [UIView beginAnimations:nil context:nil];

    [UIView setAnimationDuration:1];

    [banner setAlpha:1];

    [UIView commitAnimations];
}

- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error
{
    [UIView beginAnimations:nil context:nil];

    [UIView setAnimationDuration:1];

    [banner setAlpha:0];

    [UIView commitAnimations];
}

当我在模拟器上进行测试时,测试广告会立即显示。当我在我的设备上测试时,什么都没有显示。

我最近注册了 Apple 的 iAd 系统,但是当我尝试查看 iTunes Connect 的 iAd 部分时,它告诉我 iAd 网络当前不可用。这就是测试广告不会出现在我的设备上的原因吗?如果是这样,为什么它仍然显示在模拟器上?

【问题讨论】:

    标签: ios iphone objective-c iad


    【解决方案1】:

    这是因为在展示广告之前,您的设备必须联系iAD 服务器,搜索投放了数以万计(如果不是数百)的广告,确定哪一个最适合您的应用,然后发送将广告信息发送到您的 ios 设备,然后将确认发送回iAD 服务器,如果没有良好的互联网连接,这一切都无法完成。

    然而,在ios simulator 上,以上都不需要发生,模拟器无论如何都会显示测试广告。

    我在应用商店中有两个应用程序使用与您完全相同的代码,并且显示广告,但延迟时间与您描述的一样。因此,您的代码没有错误,广告延迟显示是完全正常的。

    因此,如您所见,在 iAD 可以在实际的 ios 设备上显示之前,必须发生很多事情,即使这样,您也必须有强大的互联网连接

    【讨论】:

    • 哦,所以模拟器会一直显示测试广告?如果您是开发人员,您能否查看此链接是否适合您:iad.apple.com/itcportal/#app_homepage
    • 它告诉我它不可用,所以我认为这就是我的广告无法加载的原因?
    • @user2397282 是的,该链接有效。它很可能不可用,因为您刚刚续订了开发人员订阅,或者 iAD 网络出现错误,应该很快就会修复。如果您没有强大的互联网连接,那么 iads 将无法加载,但也可能是您所在地区的 iAD 网络出现错误,Apple 应该会尽快修复此问题。
    【解决方案2】:

    我希望这对新用户有所帮助,这对我有用:

    在 ViewController.h 中

      @interface ViewController : UIViewController <ADBannerViewDelegate> {    
      }
      @property (nonatomic, strong) ADBannerView *banner;
      @end
    

    在 ViewController 中

    - (void)viewDidLoad{
      [super viewDidLoad];
      //self.canDisplayBannerAds = YES; This give me a error    
      self.banner = [[ADBannerView alloc] initWithFrame:CGRectZero];
      self.banner.delegate = self;
      [self.banner sizeToFit];
      self.banner.hidden = true;
    }
    

    最后一件事:

    实现两种方法:

    - (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error{
    if (banner.isBannerLoaded) {
        [UIView beginAnimations:@"animateAdBannerOff" context:NULL];
        // Assumes the banner view is placed at the bottom of the screen.
        banner.frame = CGRectOffset(banner.frame, 0, banner.frame.size.height);
        [UIView commitAnimations];
     }
    }
    
    - (void)bannerViewDidLoadAd:(ADBannerView *)banner{
     NSLog(@"Showing iAd");
     self.banner.hidden = false;
     ADBannerView *adView = [[ADBannerView alloc] initWithFrame:CGRectMake(0,    self.view.frame.size.height - 50, 320, 50)];
      //adView.delegate = self;
     [self.view addSubview:adView];
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多