2012-04-10 6 views
5

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

1

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 ... :)

+0

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 ... –

+0

EveryViewController wird Unterklasse rootViewController und dann einfach [super viewDidLoad] aufrufen; in den ViewDidLoad Methoden deiner ViewControllers und du wirst es haben ... –

5

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.

+0

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 –

+0

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