在iOS7中正确实现iAds

时间:2014-02-09 22:41:56

标签: ios objective-c iad

我已经在我的应用程序中实现了iAd,但是当我在模拟器上运行应用程序时,我会遇到非常奇怪的错误。它们往往会有所不同,但最常见的错误是Error in Loading Banner! Error Domain=ADErrorDomain Code=4 "The operation couldn’t be completed. Application has iAd Network configuration error" UserInfo=0xa368250 {ADInternalErrorCode=4, ADInternalErrorDomain=ADErrorDomain, NSLocalizedFailureReason=Application has iAd Network configuration error}

最近: Error Domain=ADErrorDomain Code=5 "The operation couldn’t be completed. Banner view is visible but does not have content" UserInfo=0xa3a0c40 {ADInternalErrorCode=5, ADInternalErrorDomain=ADErrorDomain, NSLocalizedFailureReason=Banner view is visible but does not have content}

我无法弄清楚为什么会这样。我仔细检查以确保模拟器连接到wifi,并且时钟也正确设置。这就是我实施iAds的方式:

.h中的相关代码:

    #import "iAd/ADBannerView.h"
    @interface myViewController : UIViewController <ADBannerViewDelegate> {
    ADBannerView *adView;
}
    @property (nonatomic, retain) IBOutlet ADBannerView *adView;

我的.m中的所有相关代码:

@synthesize adView;
...
- (void)viewDidLoad {

    adView.delegate = self;
    adView.hidden = YES;

    [super viewDidLoad];
}
...
-(void)bannerView:(ADBannerView *)banner
didFailToReceiveAdWithError:(NSError *)error{
    NSLog(@"Error in Loading Banner!  %@", error);
}

-(void)bannerViewDidLoadAd:(ADBannerView *)banner{
    NSLog(@"iAd banner Loaded Successfully!");
}
-(void)bannerViewWillLoadAd:(ADBannerView *)banner{
    NSLog(@"iAd Banner will load!");
}
-(void)bannerViewActionDidFinish:(ADBannerView *)banner{
    NSLog(@"iAd Banner did finish");

}

然后我将AdBannerView拖到视图上并连接视图控制器中的插座。 这是正确的方法吗?如果是这样,可能导致此错误的原因是什么?该应用程序不会崩溃...广告根本不会出现。据说这是一个常见的问题,但我永远无法追查修复。

我已为我的配置文件启用了推送通知,并尝试查找iAds的部分但不能。这可能是问题吗?

我还确保我使用的AdBannerView正好是320x50。今天早上我用相同的代码再次尝试,这是同样的问题。我是否应该继续并假设它是Apple / iAd问题,并假设上述内容正确实施后提交我的应用程序?

2 个答案:

答案 0 :(得分:2)

.h文件

#import <iAd/iAd.h>

@interface MainViewController : CDVViewController <ADBannerViewDelegate>

@end

的.m

#pragma mark iAd Delegate Methods 
- (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];
}

确保它位于你的mainviewcontroller中的@end之前

最后只需将adbanner拖放到故事板上,然后按住Ctrl键并从横幅拖动到占位符下的文件所有者,这是金框图标,然后点击代理。

答案 1 :(得分:1)

iAd网络一定存在问题。一天后测试完全相同的代码,它现在在设备上神奇地工作。