我已经实施了AdMob&一切似乎都有效,
但我想知道,我怎么能把横幅放在我的所有视角控制器中呢?
现在,我只在RootViewController上有横幅
我总共有4个视图控制器
感谢。
答案 0 :(得分:5)
你想要的是GADBannerView
单身的单身。您可以创建一个包装类来充当adView的单例,如下所示:
@interface GADMasterViewController : UIViewController {
GADBannerView *adBanner_;
BOOL didCloseWebsiteView_;
BOOL isLoaded_;
id currentDelegate_;
}
并确保GADMasterViewController
始终返回单身:
+(GADMasterViewController *)singleton {
static dispatch_once_t pred;
static GADMasterViewController *shared;
// Will only be run once, the first time this is called
dispatch_once(&pred, ^{
shared = [[GADMasterViewController alloc] init];
});
return shared;
}
有一个方法可以重置当前持有adView的视图控制器:
-(void)resetAdView:(UIViewController *)rootViewController {
// Always keep track of currentDelegate for notification forwarding
currentDelegate_ = rootViewController;
// Ad already requested, simply add it into the view
if (isLoaded_) {
[rootViewController.view addSubview:adBanner_];
} else {
adBanner_.delegate = self;
adBanner_.rootViewController = rootViewController;
adBanner_.adUnitID = kSampleAdUnitID;
GADRequest *request = [GADRequest request];
[adBanner_ loadRequest:request];
[rootViewController.view addSubview:adBanner_];
isLoaded_ = YES;
}
}
然后展示您的广告只需要:
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
shared = [GADMasterViewController singleton];
[shared resetAdView:self];
}
您可能还需要设置一个代理来转发通知,因为AdMob SDK不能很好地代表在请求过程中对其进行更改的代理。
您可以找到有关此here的博文。
答案 1 :(得分:1)
我不知道adMob是如何运作的,但是像其他一切你可以创建一个BaseViewController
,你可以在其中添加你的adMob(在viewDidLoad
方法中)然后所有其他的viewControllers都可以subClass这个BaseViewController
。只需在viewControllers的[super viewDidLoad];
方法中调用viewDidLoad
,就可以了...
希望这能解决你的问题......:)