0

.h

#import <UIKit/UIKit.h>
#import <iAd/iAd.h>

#import "GADBannerView.h"

@interface MasterTableViewController : UITableViewController <GADBannerViewDelegate >{

GADBannerView *bannerView_;

}

@end

.m

#import "MasterTableViewController.h"

@interface MasterTableViewController ()

@end

@implementation MasterTableViewController


- (id)initWithStyle:(UITableViewStyle)style
{
    self = [super initWithStyle:style];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)adView:(GADBannerView *)view didFailToReceiveAdWithError:(GADRequestError *)error
{
    NSLog(@"Ad failed");
    bannerView_.hidden = YES;
}

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

- (void) repeatAdRequest
{
    [bannerView_ loadRequest:[GADRequest request]];
}

- (void)viewDidLoad
{
    [super viewDidLoad];


    [bannerView_ setDelegate:self];

    bannerView_ = [[GADBannerView alloc] initWithAdSize:kGADAdSizeBanner];

    bannerView_.adUnitID = @"ID_HERE";

    bannerView_.rootViewController = self;
    [self.view addSubview:bannerView_];

    [bannerView_ loadRequest:[GADRequest request]];

}

問題は、電話でネットワークを完全に無効にすると、(明らかに)広告が表示されないが、もスローされないことdidFailToReceiveAdWithErrorです。次に、電話でネットワークを再度有効にしますが、何も起こりません。失敗しても広告は更新されませんか?私はそれが修正される可能性があると主張する他の多くの投稿を見てきました、[bannerView_ setDelegate:self];それはそれが広告を受け取ったかどうかにかかわらずアプリが投げるでしょう。しかし、私はそれを理解できないようです...誰かが何かアイデアを持っていますか?

4

1 に答える 1

1

問題は、割り当て前に nil オブジェクトにデリゲートを設定しようとしていることです。正しい操作順序は

bannerView_ = [[GADBannerView alloc] initWithAdSize:kGADAdSizeBanner];
[bannerView_ setDelegate:self];
于 2013-06-05T19:26:20.303 に答える