2

私のコードは、入門ガイドで説明されているように、リンクを参照してください: http://help.mopub.com/customer/portal/articles/82831-start-guide

- (void)viewDidLoad {
    self.adView = [[MPAdView alloc]   initWithAdUnitId:@"xxx" size:MOPUB_BANNER_SIZE];
    self.adView.delegate = self;
    self.adView.frame = CGRectMake(0, self.view.bounds.size.height - MOPUB_BANNER_SIZE.height, MOPUB_BANNER_SIZE.width, MOPUB_BANNER_SIZE.height);
    self.adView.keywords = keywords;
    [self.view addSubview:self.adView];
    [self.adView loadAd];
    [super viewDidLoad];
}

問題は、アプリを起動すると、広告をロードする viewDidLoad 関数が開始されることです。ネットワークが非常に遅いか存在しない場合、広告の読み込みにより、アプリの実行が約 20 秒間フリーズします。これは容認できる動作ではありません。これに対する解決策はありますか?

4

1 に答える 1

1

loadAd メソッドをタイマーにリンクするか、ブロックベースの到達可能性を使用することをお勧めします。ここから到達可能性を取得できます。

// in view header file
NSTimer * aTimer;

//in implementation
-(void)viewDidLoad
{
    ...
    [self.view addSubview:self.adView];
    [self.adview setHidden:YES];

    [self loadAdIfReachable];
     ...
}

-(void) loadAdIfReachable{
    // Allocate a reachability object
    Reachability* reach = [Reachability reachabilityWithHostname:@"www.google.com"];

    // Set the blocks 
    reach.reachableBlock = ^(Reachability*reach)
    {
        NSLog(@"REACHABLE!");
        [self.adview setHidden:NO];
        [self.adView loadAd];

    };
}
于 2014-02-04T14:13:52.637 に答える