Frage an banner, xcode, advertising, admob, iphone – AdMob in allen meinen View Controllern?

5

Ich habe AdMob implementiert und alles scheint zu funktionieren.
Aber ich frage mich, wie kann ich das Banner in alle meine View-Controller einfügen?
Im Moment habe ich das Banner nur auf dem RootViewController.
Ich habe insgesamt 4 View Controller.
Vielen Dank.

Deine Antwort

2   die antwort
5

Was Sie hier wollen, ist einGADBannerView Singleton von Art. Sie können wahrscheinlich eine Wrapping-Klasse erstellen, die als Singleton für Ihr AdView fungiert.

<code>@interface GADMasterViewController : UIViewController {
  GADBannerView *adBanner_;
  BOOL didCloseWebsiteView_;
  BOOL isLoaded_;
  id currentDelegate_;
}
</code>

Und stellen Sie einfach sicher, dassGADMasterViewController Gibt immer einen Singleton zurück:

<code>+(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;
}
</code>

Verfügen Sie über eine Methode, die den aktuellen Ansichtscontroller zurücksetzt, der an der Anzeige festhält:

<code>-(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;
  }
}
</code>

Dann ist das Anzeigen Ihrer Anzeige nur eine Frage von:

<code>- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    shared = [GADMasterViewController singleton];
    [shared resetAdView:self];
}
</code>

Wahrscheinlich müssen Sie einen Delegaten einrichten, der Benachrichtigungen weiterleitet, da das AdMob-SDK sich nicht gut auf Delegaten auswirkt, die während einer Anfrage Änderungen daran vornehmen.

Hier finden Sie einen Blog-Beitrag dazuHier.

Können Sie uns näher erläutern, wo Sie sich verlaufen haben? Wenn Sie spezielle Fragen haben, können Sie auf jeden Fall versuchen, Ihnen dabei zu helfen RajPara
Danke RajPara, ich habe versucht, diesem Beitrag zu folgen, aber "ich habe mich verlaufen" und es ist mir nicht gelungen, das zu tun: \ ... neu in all diesen Dingen Maor Zohar
1

wie AdMob funktioniert, aber wie alles andere, was Sie erstellen könnenBaseViewController in dem du deinen adMob hinzufügen kannst (in derviewDidLoad Methode) und dann können alle anderen viewController diese Unterklasse zuweisenBaseViewController. Ruf einfach an[super viewDidLoad]; in demviewDidLoad Methoden Ihrer viewController und Sie werden es haben ...

Ich hoffe, das löst dein Problem ... :)

Danke Ankit, also lass es mich verstehen ... Wenn ich dies in viewDidLoad des RootViewControllers habe: CGRect frame = CGRectMake (0.0, self.view.frame.size.height, GAD_SIZE_320x50.width, GAD_SIZE_320x50.height); self.adBanner = [[GADBannerView alloc] initWithFrame: frame]; Wie schreibe ich nun, was Sie in jedem viewDidLoad für jede VC gesagt haben? Sorry, es ist nur so, dass ich in all diesen Dingen neu bin ... Maor Zohar
everyViewController unterordnet rootViewController und ruft dann einfach [super viewDidLoad] auf; in den viewDidLoad-Methoden Ihres viewControllers und Sie werden es haben ... Ankit Srivastava

Verwandte Fragen