2012-04-10 17 views
5

Zaimplementowałem AdMob & wszystko wydaje się działać,
Ale zastanawiam się, w jaki sposób mogę umieścić banner we wszystkich moich kontrolerach widoku?
Na razie mam banner tylko na RootViewController.
Mam łącznie 4 kontrolerów widoku.
Dzięki.AdMob we wszystkich moich kontrolerach widoku?

Odpowiedz

1

nie wiem jak AdMob działa, ale jak wszystko inne można utworzyć BaseViewController, w którym można dodać AdMob (w metodzie viewDidLoad), a następnie wszystkie pozostałe viewControllers może Podklasa ta BaseViewController. zadzwoń [super viewDidLoad]; w viewDidLoad metod swoimi viewControllers i trzeba będzie go ...

nadzieję, że to sortuje problemu ... :)

+0

Dzięki Ankit, Więc pozwól mi zrozumieć ... Jeśli mam to w viewDidLoad z RootViewController: CGRect ramy = CGRectMake (0,0, self.view.frame.size.height, GAD_SIZE_320x50.width , GAD_SIZE_320x50.height); self.adBanner = [[przydzielenie GADBannerView] initWithFrame: frame]; W jaki sposób mogę napisać to, co powiedziałeś w każdym viewDidLoad dla każdego VC? Przepraszam, to tylko, że jestem nowy we wszystkich tych rzeczach ... –

+0

everyViewController będzie podklasę rootViewController, a następnie wystarczy wywołać [super viewDidLoad]; w viewDidLoad metody twojego viewControllers i będziesz go miał ... –

5

Co chcesz o to GADBannerView Singleton rodzajów. Prawdopodobnie można utworzyć klasę zawijania do działania jako pojedyncza dla adview, więc coś takiego:

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

i po prostu upewnij się, że GADMasterViewController zawsze zwraca pojedyncza:

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

mieć metodę, która resetuje obecny kontroler widoku, który trzyma się do 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; 
    } 
} 

Następnie wyświetlania reklamy to tylko kwestia:

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

Prawdopodobnie należy skonfigurować delegata również do przesyłania powiadomień, ponieważ pakiet SDK AdMob nie działa dobrze w przypadku delegatów, którzy zmieniają to w trakcie żądania.

Możesz znaleźć wpis na blogu na ten temat here.

+0

Dzięki RajPara, próbowałem śledzić ten post, ale "zgubiłem się" i nie udało mi się tego zrobić: \ ... nowość w tym wszystkim –

+0

Czy możesz podać więcej szczegółów na temat tego, gdzie zgubiłeś się? Jeśli masz konkretne pytania, zdecydowanie możesz spróbować pomóc Ci z nimi – RajPara

Powiązane problemy