在我所有的视图控制器的AdMob?(AdMob in all my view controllers

2019-09-16 10:51发布

我已经实现AdMob与一切似乎工作,
但我wonderd,我怎么可以把旗帜在我所有的视图控制器吗?
现在,我只有在RootViewController的旗帜。
我有总共4个视图控制器。
谢谢。

Answer 1:

你想要的这里是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;
}

具有将复位的控股到AD浏览当前视图控制器的方法:

-(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的不作为以及向与会代表在请求的中间就可以了改变。

你可以找到一个博客帖子关于这个在这里 。



Answer 2:

我不知道如何运用AdMob的作品,但像任何事物一样,你可以创建一个BaseViewController您可以在其中添加您的AdMob(在viewDidLoad的方法),然后所有其他viewControllers可以继承这个BaseViewController 。 只需要调用[super viewDidLoad];viewDidLoad的viewControllers的方法,你将有它...

希望这排序您的问题... :)



文章来源: AdMob in all my view controllers?