2012-04-10 14 views
5

Implementé AdMob & todo parece funcionar,
Pero me pregunto, ¿cómo puedo poner el banner en todos mis controladores de vista?
Por ahora, tengo el banner solo en RootViewController.
Tengo un total de 4 controladores de vista.
Gracias.AdMob en todos mis controladores de vista?

Respuesta

1

No sé cómo funciona AdMob pero al igual que todo lo demás se puede crear un BaseViewController en la que se puede añadir su AdMob (en el método viewDidLoad) y luego todos los demás viewControllers puede subclase este BaseViewController. simplemente llame [super viewDidLoad]; en los métodos de viewDidLoad sus viewControllers y lo tendrá ...

esperando que esto ordena su problema ... :)

+0

Gracias Ankit, Así que déjame entender ... Si tengo esto en el viewDidLoad del RootViewController: marco CGRect = CGRectMake (0.0, self.view.frame.size.height, GAD_SIZE_320x50.width , GAD_SIZE_320x50.height); self.adBanner = [[GADBannerView alloc] initWithFrame: frame]; Entonces, ¿cómo escribo lo que ha dicho en cada viewDidLoad para cada VC? Lo siento, es solo que soy nuevo en todas estas cosas ... –

+0

everyViewController subclase rootViewController y luego simplemente llame a [super viewDidLoad]; en los métodos viewDidLoad de tus viewControllers y lo tendrás ... –

5

Lo que se quiere aquí es un producto único GADBannerView de clases. Probablemente se puede crear una clase envoltorio para actuar como un producto único para su adView, así que algo como:

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

Y sólo asegúrese de que GADMasterViewController siempre devuelve un producto único:

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

tener un método que restablece el controlador de vista actual que se aferra a la 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; 
    } 
} 

Entonces mostrando su anuncio es sólo una cuestión de:

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

Probablemente necesite configurar un delegado para reenviar notificaciones también, ya que el SDK de AdMob no funciona bien para los delegados que cambian en el medio de una solicitud.

Puede encontrar una publicación de blog sobre este here.

+0

Gracias RajPara, traté de seguir este post yesturday pero "me perdí" y no logré hacer eso: \ ... nuevo en todo esto –

+0

¿Puede proporcionar más detalles sobre dónde se perdió? Si tiene preguntas específicas definitivamente puede intentar ayudarlo con ellas – RajPara

Cuestiones relacionadas