0

Admob Mediation サービスを使用してテスト アプリケーションをセットアップしました。エラーが発生し、バナー ビューを非表示にした場合にメソッドによって処理されると、おそらくこの「非表示ステータス」が原因で、それ以上の広告リクエストが発生しないという問題があります。

私ができることは、エラーメソッド内で一定時間スリープしてから再度リクエストすることですが、これは最良の方法ではありません...これにより、スリープ中に一部のプロセスと潜在的に他のユーザー入力がロックされると思いますか? アプリには広告しか含まれていないためテストできないため、これについてはわかりません.

これが私の方法です...

- (void)adView:(GADBannerView *)view didFailToReceiveAdWithError:(GADRequestError *)error;
{
    NSLog(@"Failed to receive ad with error: %@", [error localizedFailureReason]);
    bannerView_.hidden = YES;
    sleep(59);
    [bannerView_ loadRequest:[self createRequest]];
}

- (void)adViewDidReceiveAd:(GADBannerView *)view;
{
    NSLog(@"Ad Received");
    bannerView_.hidden = NO;
}

1.広告が返されない場合はビューを非表示にしますが、広告が受信されるとリクエストが続行され、広告ビューが再び表示されるようにします。2. エラー メソッドでループを使用して、成功するまで要求を再処理し、他のものをロックしません。

違いがある場合は、現時点ではシミュレーターでのみテストされています。

4

2 に答える 2

2

スリープはスレッドをブロックするため、スリープを使用する代わりに performSelector を使用して非同期呼び出しを行うことをお勧めします。したがって、これはあなたが言及した最初の方法のように実装されています。

- (void)adView:(GADBannerView *)view didFailToReceiveAdWithError:(GADRequestError *)error;
{
    NSLog(@"Failed to receive ad with error: %@", [error localizedFailureReason]);
    bannerView_.hidden = YES;
    [self performSelector:@selector(repeatAdRequest) withObject:nil afterDelay:60.0];
}

- (void)adViewDidReceiveAd:(GADBannerView *)view;
{
    NSLog(@"Ad Received");
    bannerView_.hidden = NO;
}

-(void) repeatAdRequest
{
    [bannerView_ loadRequest:[self createRequest]];
}
于 2013-02-03T11:31:14.113 に答える
0

addview を別の空の uiview のサブビューにします。

adview didfail で、adview ではなくビューを非表示にし、recieve でビューを再度表示します。

于 2013-01-31T09:27:42.287 に答える