Pytanie w sprawie xcode, iphone, banner, advertising, admob – AdMob we wszystkich moich kontrolerach widoku?

5

Zaimplementowałem AdMob i wszystko wydaje się działać,
Ale zastanawiam się, jak mogę umieścić baner we wszystkich moich kontrolerach widoku?
Na razie mam baner tylko w RootViewController.
Mam w sumie 4 kontrolery widoku.
Dzięki.

Twoja odpowiedź

2   odpowiedź
1

jak działa adMob, ale podobnie jak wszystko inne możesz utworzyćBaseViewController w którym możesz dodać swój adMob (wviewDidLoad metoda), a następnie wszystkie inne kontrolery viewController mogą to podklasowaćBaseViewController. Zadzwoń[super viewDidLoad]; wviewDidLoad metody twoich kontrolerów widoku i będziesz je miał ...

mając nadzieję, że to rozwiąże twój problem ... :)

Dzięki Ankit, Więc pozwól mi zrozumieć ... Jeśli mam to w viewDidLoad 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]; Jak więc napisać to, co powiedziałeś w każdym viewDidLoad dla każdego VC? Przepraszam, ale po prostu jestem nowy w tym wszystkim ... Maor Zohar
EveryViewController podklasuje rootViewController, a następnie wywołuje [super viewDidLoad]; w metodach viewDidLoad kontrolerów viewController i będziesz miał je ... Ankit Srivastava
5

To, czego tu potrzebujesz, toGADBannerView rodzaju singleton. Prawdopodobnie możesz utworzyć klasę zawijania, aby działała jako singleton dla Twojego adView, więc coś w stylu:

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

I tylko upewnij się, żeGADMasterViewController zawsze zwraca singleton:

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

Masz metodę, która resetuje bieżący kontroler widoku, który trzyma się adView:

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

Wyświetlenie reklamy to tylko kwestia:

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

Prawdopodobnie będziesz musiał skonfigurować delegata do przekazywania powiadomień, ponieważ zestaw AdMob SDK nie działa dobrze dla delegatów zmieniających go w środku żądania.

Możesz znaleźć post na blogu na ten temattutaj.

Dziękuję RajPara, starałem się śledzić ten post wczoraj, ale „zgubiłem się” i nie udało mi się tego zrobić:… nowy w tym wszystkim Maor Zohar
Czy możesz podać więcej szczegółów o tym, gdzie zgubiłeś się? Jeśli masz konkretne pytania, zdecydowanie możesz spróbować pomóc z nimi RajPara

Powiązane pytania