这似乎是最愚蠢的问题,但在浏览了Apple的所有文档和无用的在线教程之后,我仍然无法弄清楚如何在我的应用程序中正确实现iAds
。所以,我的应用程序从表视图控制器开始,我在导航栏下方和表格上方有一个iAd
对象。
现在,在我的代码中:(我还添加了iAd框架)
#import <UIKit/UIKit.h>
#import <iAd/iAd.h>
@interface MasterTableViewController : UITableViewController <ADBannerViewDelegate>
{
IBOutlet ADBannerView *iAd;
}
@property(nonatomic, readonly, getter=isBannerLoaded) BOOL bannerLoaded;
@end
然后在.m文件中
#import "MasterTableViewController.h"
@interface MasterTableViewController ()
@end
@implementation MasterTableViewController
@synthesize bannerLoaded;
- (BOOL)bannerViewActionShouldBegin:(ADBannerView *)banner willLeaveApplication:(BOOL)willLeave
{
if (!willLeave)
{
// nothing in this case thanks to ARC
}
return YES;
}
- (void)bannerViewDidLoadAd:(ADBannerView *)banner
{
iAd.hidden = NO;
}
- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error
{
iAd.hidden = YES;
}
- (void)viewDidLoad
{
[super viewDidLoad];
for (int i = 0; i > 0; i++)
{
if (bannerLoaded)
{
iAd.hidden = NO;
}
else
{
iAd.hidden = YES;
}
}
}
现在,问题是,当我在没有互联网连接的情况下测试应用程序时iAd
没有加载(显然),但它也没有隐藏。所以,在屏幕的顶部,我留下了一个大的白色矩形。否则,广告在连接可用时正常工作。有没有人有任何想法?另外 - 我只是添加无限循环,看看他们是否有所作为,那些完全是故意的哈哈。
答案 0 :(得分:1)
我假设你已经通过故事板添加了你的ADBannerView,因为我看不到你在哪里初始化横幅位置。
希望这会有所帮助。我刚刚实现了这个,但目前无法访问我的代码。
它确实在模拟器中出现了一些错误,但在设备上工作正常。
我已经在iOS6上测试了这个并且即使显示iAd然后用户也失去了连接(因此看起来像“bannerView:didFailToReceiveAdWithError:”正在为我调用),也可以正常工作。
答案 1 :(得分:0)
您有一个属性bannerLoaded
用于保存广告的状态,这很好。
首先,在您的viewDidLoad
方法中,无法加载iAd,因此您必须相应地设置属性:self.bannerLoaded = NO;
然后,当您收到/未能收到广告时,您需要更新此媒体资源。
- (void)bannerViewDidLoadAd:(ADBannerView *)banner
{
if (!self.bannerLoaded) {
iAd.hidden = NO;
self.bannerLoaded = YES;
}
}
- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error
{
if (self.bannerLoaded) {
iAd.hidden = YES;
self.bannerLoaded = NO;
}
}