2011-12-02 18 views
7

Mam iAd, który pokazuje się dobrze po podłączeniu do sieci. Na symulatorze iOS na moim urządzeniu, jeśli otworzę swoją aplikację, zobacz iAd, następnie przejdź do ustawień i włącz tryb samolotowy, i wróć do aplikacji, baner zsunie się z ekranu. Wspaniały. Teraz, gdy wyłączę tryb samolotowy (sieć jest włączona), iAd nie pojawia się ponownie - nawet po odczekaniu 10-15 minut.Odświeżanie iAd po odłączeniu sieci

Tak, oto moje pytania:

  1. Czy iAd test Reklama odświeżyć sobie tak samo jak prawdziwy iAd będzie (co minutę lub tak)?

  2. Czy istnieje sposób zmuszenia iAd do odświeżenia i żądania nowej reklamy po wykryciu sieci?

po prostu nie mogę znaleźć informacje na temat zachowania się reklam testowych w dowolnym miejscu, a ja nie mogę przetestować prawdziwych reklam do czasu mogę przesłać aplikację do App Store (prawda?)

Herezje Mój kod:

Jeżeli iAd jest tworzony:

- (void)viewDidLoad 
{ 
    adView = [[ADBannerView alloc] initWithFrame:CGRectMake(0, 410, 320, 50)]; 
    adView.frame = CGRectOffset(adView.frame, 0, 50); 
    adView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifierPortrait]; 
    adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait; 
    [self.view addSubview:adView]; 
    adView.delegate=self; 
    self.bannerIsVisible=NO; 
    [super viewDidLoad]; 
} 

I delegata metody:

- (void)bannerViewDidLoadAd:(ADBannerView *)banner 
{ 
    NSLog(@"AdWin"); 
    if (!self.bannerIsVisible) 
    { 
     [UIView beginAnimations:@"animateAdBannerOn" context:NULL]; 
     banner.frame = CGRectOffset(banner.frame, 0, -50); 
     [UIView commitAnimations]; 
     self.bannerIsVisible = YES; 
    } 
} 

- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error 
{ 
    NSLog(@"AdLose"); 
    if (self.bannerIsVisible) 
    { 
     [UIView beginAnimations:@"animateAdBannerOff" context:NULL]; 
     banner.frame = CGRectOffset(banner.frame, 0, 50); 
     [UIView commitAnimations]; 
     self.bannerIsVisible = NO; 
    } 
} 

Wywołanie metody NSLog powoduje, że połączenia pojawiają się tylko raz - nie co minutę, tak jak oczekiwałbym, gdyby reklama została odświeżona.

Odpowiedz

2

1- tak i lubię reklamy na żywo kilka razy bez reklam, może to być kilka godzin. Sądzę, że cykl odświeżania trwa 3 minuty, ale wydaje się, że jabłko może go zmienić, ponieważ nie będzie trzeba, gdy poprawnie skonfiguruje się to automatycznie. Mam aplikację z reklamami i działa ona poprawnie podczas przełączania sieci lub korzystania z ustawienia samolotu.

Wygląda na to, że w ustawieniu samolotu coś jest, zobacz ten wątek: iAds Loading Throttled After Re-Launching App From Background (Also Happens In iAdSuite), ale nie mam ostatecznej odpowiedzi. Może mógłbyś odkryć więcej, zmieniając swój NSLog w didFail ... na NSLog (@ "% @", błąd), aby sprawdzić, co dokładnie mówi. Ah i rzeczywiście nie ma sposobu, aby przetestować z prawdziwymi reklamami, dopóki nie zostanie zaakceptowany w appstore.

+0

Dzięki za sugestie. Rzeczą, która mnie zastanawia jest to, że uruchamiam aplikację (używając xCode) na moim iPhonie za pomocą interentowego połączenia i otrzymuję log "AdWin" co 60 sekund, zgodnie z oczekiwaniami. Jeśli uruchomię aplikację w ten sam sposób, z wyjątkiem włączonego trybu samolotowego, otrzymuję "AdLose" w dzienniku dokładnie jeden raz. Spodziewałbym się, że nie uda się co 60 sekund. Wystąpił błąd: 'Error Domain = ADErrorDomain Code = 1" Operacja nie mogła zostać zakończona. (ADErrorDomain error 1.) "' –

+0

Utknąłem w tym momencie, kluczową rzeczą, którą wierzę, jest to, że otrzymujesz ADError, gdzie w moich testach otrzymuję błąd NSURL i najwyraźniej błąd NSURL jest dobrze obsługiwany. Sugerowałbym dodanie logiki takiej jak: gdy wystąpi błąd i ADErrorxxx zabije baner i zacznie go od nowa (tj. Release + realloc jak w viewDidLoad). – gregory

+0

Zamierzam oznaczyć to jako zaakceptowaną odpowiedź, ponieważ było to najbardziej pomocne. Jestem zadowolony, że moje urządzenie będzie działało, ponieważ pobrałem przykładowy program Apple 'iAdSuite' i stwierdziłem, że dało ten sam błąd w tych samych warunkach. Dzięki –

Powiązane problemy