2013-01-23 10 views
7

Sto utilizzando l'SDK di Google AdMob (l'ultimo scaricato recentemente) nella mia app.La prima richiesta di Google AdMob GADBannerView richiede molto tempo e si blocca nell'interfaccia utente

Quando viene avviato, l'app si blocca per 4-5 secondi, fino a quando l'annuncio non viene caricato e visualizzato. Successivamente funziona senza intoppi. Quando commento la riga di richiesta del banner, l'app si avvia normalmente.

Ho creato una classe di supporto personalizzata, in cui ho il seguente codice.

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

dove

  • googleBannerView è una proprietà della mia classe, e ha il tipo GADBannerView
  • ho impostato la dimensione del frame e ID dell'unità pubblicitaria in anticipo correttamente
  • targetController è il controller che voglio per aggiungere il banner
  • io chiamo il [CustomClass getGoogleBanner: self] metodo viewDidAppear dei vari controller diversi e display con successo la bandiera, ad eccezione quel primo problema di caricamento.

Mi piacerebbe sapere se qualcuno ha incontrato questo problema e come è stato risolto. Sono aperto a qualsiasi idea che possa rimuovere il problema di congelamento. Ho provato a eseguire il codice su un thread in background, ma ho fallito perché non ne ho molta esperienza.

Qualsiasi aiuto è molto apprezzato, grazie in anticipo.

+0

Puoi approfondire quale tipo di interfaccia utente hai in particolare e dove GADBannerView è nella tua gerarchia? Un ritardo di 4-5 secondi suona piuttosto grande, stai facendo una sorta di disegno complesso/animazioni? – RajPara

+0

Non sto facendo nessun disegno complesso. In realtà tutta l'applicazione è costituita da UIViews e 2-3 TableViews. Le tabelle non hanno mai più di 50 elementi. Ho anche provato a inviare il metodo loadRequest: a un thread in background, tuttavia non ha funzionato, con un errore relativo alla modifica della finestra principale da un thread in background. Probabilmente questa funzione è già asincrona, perché è un metodo Google standard e la risposta viene catturata dal delegato di Google Banner View. –

+0

capita lo stesso a me! Hai trovato qualche soluzione? – Aitul

risposta

2

ho il problema solo quando si esegue nel simulatore, quindi se questo è il caso, non dovrei preoccuparmi.

Da quello che ho trovato, quando si chiama il metodo loadRequest, il framework chiamerà anche il metodo canOpenURL: (UIApplication). Da alcuni test che ho eseguito (su entrambi i dispositivi simulatore e iOS con 5.1.1 e 6.1.3), canOpenURL occasionalmente si blocca per alcuni secondi sul simulatore (dopo averlo impiegato 20 secondi per tornare), tuttavia, funziona bene sui dispositivi .

Problemi correlati