Ich habe AdMob implementiert & alles scheint zu arbeiten,
Aber ich wunderte mich, wie kann ich das Banner in alle meine View-Controller setzen?
Für jetzt habe ich das Banner nur auf dem RootViewController.
Ich habe insgesamt 4 View-Controller.
Danke.AdMob in allen meinen View-Controllern?
Antwort
Ich weiß nicht, wie AdMob aber wie alles funktioniert sonst können Sie einen BaseViewController
erstellen, in dem Sie Ihre AdMob (im viewDidLoad
Methode) hinzufügen und dann alle anderen Viewcontrollers dieses BaseViewController
Subklasse kann. rufen Sie einfach [super viewDidLoad];
in den viewDidLoad
Methoden Ihres Viewcontrollers und Sie werden es haben ...
der Hoffnung, das Ihr Problem sortiert ... :)
Was Sie hier wollen ein GADBannerView
Singleton von Sorten ist. Sie können sich wahrscheinlich eine Verpackungs Klasse erstellen als Singleton für Ihren adView zu handeln, so etwas wie:
@interface GADMasterViewController : UIViewController {
GADBannerView *adBanner_;
BOOL didCloseWebsiteView_;
BOOL isLoaded_;
id currentDelegate_;
}
Und nur sicherstellen, dass GADMasterViewController
immer ein Singleton zurückgibt:
+(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;
}
eine Methode, die zurücksetzt die aktuelle Ansicht-Controller, der auf die adView hält an:
-(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;
}
}
Dann Ihre Anzeige Anzeige ist nur eine Frage von:
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
shared = [GADMasterViewController singleton];
[shared resetAdView:self];
}
Wahrscheinlich müssen Sie auch einen Delegaten einrichten, um Benachrichtigungen weiterzuleiten, da das AdMob SDK nicht gut für Delegierte funktioniert, die sich während einer Anfrage ändern.
Sie können einen Blogbeitrag zu diesem here finden.
Danke RajPara, ich habe versucht, diesem Post yesday zu folgen, aber "ich bin verloren gegangen" und habe es nicht geschafft: \ ... neu in all dem Zeug –
Können Sie etwas genauer angeben, wo Sie verloren gegangen sind? Wenn Sie spezifische Fragen haben, können Sie auf jeden Fall versuchen, Ihnen zu helfen – RajPara
Dank Ankit, Lassen Sie mich verstehen ... Wenn ich diese haben in der viewDidLoad des RootViewController: CGRect frame = CGRectMake (0.0, self.view.frame.size.height, GAD_SIZE_320x50.width , GAD_SIZE_320x50.height); self.adBanner = [[GADBannerView alloc] initWithFrame: frame]; Also, wie schreibe ich, was Sie in jedem ViewDidLoad für jede VC gesagt haben? Sorry, es ist nur, dass ich neu in all diesen Sachen bin ... –
EveryViewController wird Unterklasse rootViewController und dann einfach [super viewDidLoad] aufrufen; in den ViewDidLoad Methoden deiner ViewControllers und du wirst es haben ... –