加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

iphone – 我所有视图控制器中的AdMob?

发布时间:2020-12-14 17:56:36 所属栏目:百科 来源:网络整理
导读:我已经实施了AdMob一切似乎都有效, 但我想知道,我怎么能把横幅放在我的所有视角控制器中? 现在,我只在RootViewController上有横幅. 我总共有4个视图控制器. 谢谢. 解决方法 你想要的是一个GADBannerView单例.您可以创建一个包装类来充当adView的单例,如下所
我已经实施了AdMob&一切似乎都有效,
但我想知道,我怎么能把横幅放在我的所有视角控制器中?
现在,我只在RootViewController上有横幅.
我总共有4个视图控制器.
谢谢.

解决方法

你想要的是一个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的博客文章.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读