1

AdMob メディエーション サービスを使用して、基本的なアプリケーションをテスト用にセットアップしました。

- (void)viewDidLoad {
      [super viewDidLoad];

      // Create a view of the standard size at the top of the screen.
      // Available AdSize constants are explained in GADAdSize.h.
      bannerView_ = [[GADBannerView alloc] initWithAdSize:kGADAdSizeBanner];

      // Specify the ad's "unit identifier." This is your AdMob Publisher ID.
      bannerView_.adUnitID = kAdMobPublisherID;

      // Let the runtime know which UIViewController to restore after taking
      // the user wherever the ad goes and add it to the view hierarchy.
      bannerView_.rootViewController = self;
      [self.view addSubview:bannerView_];

      // Initiate a generic request to load it with an ad.
      [bannerView_ loadRequest:[GADRequest request]];

      GADRequest *request = [GADRequest request];
      // Make the request for a test ad. Put in an identifier for
      // the simulator as well as any devices you want to receive test ads.
      request.testDevices = [NSArray arrayWithObjects:
                             @"4D047EB9-A3A7-441E-989E-C5437F05DB04",
                             @"YOUR_DEVICE_IDENTIFIER",
                             nil];

 }

アプリケーションが広告の受信に失敗すると、これらのエラーが発生します。iAd 広告のテスト中に、iAd がかなりの数のエラーを送信すると思います。

[AppDeveloper]: ADBannerView: Unhandled error (no delegate or delegate does not implement didFailToReceiveAdWithError:): Error Domain=ADErrorDomain Code=4 "The operation couldn’t be completed. Application has iAd Network configuration error" UserInfo=0x9fd8d20 {ADInternalErrorCode=4, ADInternalErrorDomain=ADErrorDomain, NSLocalizedFailureReason=Application has iAd Network configuration error}

エラーは、didFailToReceiveAdWithError を実装していないことが原因です。私が抱えている問題は、このメソッドを実装する方法です。

iAd Progamming Guide を見てきました: iAd Prog Guide

これは、このような方法を設定することを提案しています...

- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error

ただし、私のコードは iAd ネットワークを直接実装していないため、仲介サービスを使用してセットアップされています。上記の方法を変更して機能させる方法がわかりません。

4

2 に答える 2

3

AdMobフレームワークは広告表示を処理するため(iAdなどの他の広告ソースに仲介されている場合でも)、AdMobバナーの処理を実装するだけで済みます。AdMobフレームワークがメディエーションを通じてiAdを表示する場合、それをカプセル化して、通常のAdMobバナーと同じように表示します。したがって、AdMobフレームワークからイベントを受信するようにbannerViewのデリゲートを設定する必要があります。たとえば、View ControllerにGADBannerViewDelegateプロトコルを実装させ、デリゲートとして使用させます)。

@interface MyViewController : UIViewController <GADBannerViewDelegate>
...

あなたのviewDidLoad方法で:

bannerView_.delegate = self;

次に、次のような広告イベントを処理するためのさまざまなメソッドを追加できます。

- (void)adView:(GADBannerView *)bannerView didFailToReceiveAdWithError:(GADRequestError *)error;

これは、広告をリクエストできなかったときに呼び出されます。また便利:

- (void)adViewDidReceiveAd:(GADBannerView *)bannerView;

これは、広告が正常に受信されたときに呼び出されます。この方法は通常、広告バナーをスライドさせるために使用されます。渡されるのbannerViewは常にクラスですが、表示する実際の広告(iAdバナーの場合もあります)を含むGADBannerViewプロパティがあります。mediatedAdView

ところで、あなたはあなたのコードで広告リクエストを準備していますが、実際にはそれを広告のロードに使用していません。また、通話を下に移動してloadRequest:、準備されたリクエストを使用することもできます。

[bannerView_ loadRequest:request];

GADBannerViewDelegateAdMob SDKドキュメントのメソッドの詳細については、https ://developers.google.com/mobile-ads-sdk/docs/admob/intermediateをご覧ください。

于 2013-03-18T14:45:52.687 に答える
1

行を追加するのを逃したと思います:

bannerView_.delegate = self;
于 2013-01-13T08:06:08.447 に答える