2013-01-23 7 views
7

Używam pakietu Google AdMob SDK (najnowszy pobrany niedawno) w mojej aplikacji.Google AdMob GADBannerWidok pierwszego żądania zajmuje dużo czasu i zawiesza interfejs użytkownika

Po uruchomieniu mojej aplikacji zawiesza się na 4-5 sekund, dopóki reklama nie zostanie załadowana i wyświetlona. Następnie działa płynnie. Po zakomentowaniu linii żądania baneru aplikacja uruchamia się normalnie.

Zrobiłem niestandardową klasę pomocniczą, w której mam następujący kod.

- (void) getGoogleBanner:(UIViewController *) targetController 
{ 
    self.googleBannerView.rootViewController = targetController; 
    [self.googleBannerView.rootViewController.view addSubview:self.googleBannerView]; 
    [self.googleBannerView setDelegate:self]; 
    GADRequest* request = [GADRequest request]; 
    [self.googleBannerView loadRequest:request]; 
} 

gdzie

  • googleBannerView jest własnością mojej klasy, a ma typ GADBannerView
  • ustawić rozmiar ramki i identyfikator jednostki reklamowej uprzednio prawidłowo
  • targetController jest kontroler chcę dodać baner do
  • Zadzwonię do metody [CustomClass getGoogleBanner: self] w viewDidAppear różnych kontrolerów i pomyślnie wyświetl baner, z wyjątkiem ten pierwszy problem z ładowaniem.

Chciałbym wiedzieć, czy ktoś napotkał na ten problem i jak go rozwiązano. Jestem otwarty na wszelkie pomysły, które usuwają problem zamrażania. Próbowałem uruchomić kod do wątku w tle, ale nie udało mi się, ponieważ nie mam z tym dużego doświadczenia.

Każda pomoc jest doceniana, z góry dzięki.

+0

Czy możesz opracować, jaki rodzaj interfejsu użytkownika masz konkretnie i gdzie GADBannerView jest w twojej hierarchii? Opóźnienie 4-5 sekund brzmi całkiem nieźle, czy robisz jakieś skomplikowane rysunki/animacje? – RajPara

+0

Nie robię żadnego złożonego rysunku. W rzeczywistości cała aplikacja składa się z UIViews i 2-3 TableViews. Tabele nigdy nie mają więcej niż 50 elementów. Próbowałem również wysłać metodę loadRequest: do wątku w tle, jednak nie zadziałał, z błędem, który jest związany z modyfikowaniem okna głównego z wątku tła. Ta funkcja jest prawdopodobnie już asynchroniczna, ponieważ jest to standardowa metoda Google, a odpowiedź jest wybierana przez delegata Google Banner View. –

+0

to samo dzieje się dla mnie! Czy znalazłeś jakieś rozwiązanie? – Aitul

Odpowiedz

2

Mam problem tylko podczas pracy w symulatorze, więc jeśli tak jest, prawdopodobnie nie powinieneś się martwić.

Z tego, co udało mi się znaleźć, podczas wywoływania metody loadRequest, framework będzie również wywoływał metodę canOpenURL: (UIApplication). Z niektórych testów, które przeprowadziłem (zarówno na symulatorze, jak i urządzeniach z systemem iOS 5.1.1 i 6.1.3), od czasu do czasu na symulatorze od czasu do czasu zamarza on na kilka sekund (po powrocie 20 sekund), ale działa dobrze na urządzeniach .

Powiązane problemy