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
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 ... :)
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.
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 –
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
- 1. Dlaczego muszę przekazywać żądania RequestContext we wszystkich moich odpowiedziach?
- 2. Jak ustawić domyślny margines dla wszystkich elementów sterujących we wszystkich moich oknach WPF?
- 3. grep we wszystkich katalogach
- 4. Chcę utworzyć metodę, która będzie dostępna we wszystkich kontrolerach, a widoki
- 5. Tryb edycji Swift/Enable w kontrolerach widoku
- 6. Udostępnianie wartości NSOperationQueue w kontrolerach widoku?
- 7. Python: Czytanie wszystkich plików we wszystkich katalogach
- 8. Znajdź typy we wszystkich złożeniach
- 9. czy można ustawić amdefine w testach, aby nie musiałem go definiować we wszystkich moich plikach modułów?
- 10. Czy muszę dodać app.initialize() we wszystkich moich plikach html w projekcie cordova/phonegap
- 11. Szyny Zmienna we wszystkich działaniach kontrolera
- 12. Ciągłe, zapętlone, przewijane treści we wszystkich kierunkach
- 13. System.exit (0) nie zamyka wszystkich moich działań?
- 14. Obsługa AdMob w Delphi XE5
- 15. Dynamicznie ładuj stalówkę dla iPhone'a/iPada w kontrolerach widoku
- 16. Lista wszystkich zatwierdzeń (we wszystkich gałęziach) dla danego pliku
- 17. Wyróżnianie obiektów TODO we wszystkich trybach programowania
- 18. zastępczy nie działa poprawnie we wszystkich przeglądarkach
- 19. Mysql - znajdź tabelę we wszystkich bazach danych
- 20. Zastąp ciąg we wszystkich plikach w Eclipse
- 21. Jak włączyć wszystkie produkty we wszystkich sklepach?
- 22. Ograniczenia typu we wszystkich instancjach rodzinnych typów
- 23. NetBeans i stop/break we wszystkich wyjątkach?
- 24. Django: Wymuszanie tokenu CSRF we wszystkich odpowiedziach
- 25. Python: zwyczaj rejestrowania we wszystkich modułach
- 26. Sprawdzanie pola we wszystkich wystąpieniach zrzutów pamięci
- 27. Potrzebujesz shebang we wszystkich skryptach basha?
- 28. Problem jQuery .load() we wszystkich wersjach IE
- 29. Jak wyzwalać zdarzenia we wszystkich elementach?
- 30. Gitignore wykluczyć niektóre pliki we wszystkich podkatalogach
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 ... –
everyViewController będzie podklasę rootViewController, a następnie wystarczy wywołać [super viewDidLoad]; w viewDidLoad metody twojego viewControllers i będziesz go miał ... –