gpt4 book ai didi

iphone - 我的所有 View Controller 中都包含 AdMob 吗?

转载 作者:行者123 更新时间:2023-12-03 18:56:31 26 4
gpt4 key购买 nike

我已经实现了 AdMob,一切似乎都正常,
但我想知道,如何将横幅放入我的所有 View Controller 中?
目前,我仅在 RootViewController 上有横幅。
我总共有 4 个 View Controller 。
谢谢。

最佳答案

您在这里想要的是一个 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 的 View Controller :

-(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];
}

您可能还需要设置委托(delegate)来转发通知,因为 AdMob SDK 无法很好地处理在请求过程中对其进行更改的委托(delegate)。

您可以找到有关此内容的博客文章 here .

关于iphone - 我的所有 View Controller 中都包含 AdMob 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10092349/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com