3

現在、テストデバイスでのみAdMobメディエーションサービスを使用してテストアプリケーションをセットアップしています。ドキュメントに従って、必要なすべてのメソッドを設定しました。「広告の受信に失敗」エラーが発生すると、それ以上広告が要求または表示されなくなるという問題がありますか?

ヘッダ:

#import <UIKit/UIKit.h>
#import "GADBannerViewDelegate.h"

@class GADBannerView, GADRequest;

@interface AdTestViewController : UIViewController
    <GADBannerViewDelegate> {
    GADBannerView *bannerView_;
}

@property (nonatomic, retain) GADBannerView *bannerView;

- (GADRequest *)createRequest;

@end

Impファイル

#import "AdTestViewController.h"
#import "Constants.h"
#import "GADBannerView.h"
#import "GADRequest.h"

@implementation AdTestViewController

@synthesize bannerView = bannerView_;

- (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];
    // Initialize the banner at the bottom of the screen.
    //CGPoint origin = CGPointMake(0.0,
     //                            self.view.frame.size.height -
       //                          CGSizeFromGADAdSize(kGADAdSizeBanner).height);
    self.bannerView = [[GADBannerView alloc] initWithAdSize:kGADAdSizeBanner];
                                                    //origin:origin];

    self.bannerView.adUnitID = kAdMobPublisherID;
    self.bannerView.delegate = self;
    [self.bannerView setRootViewController:self];
    [self.view addSubview:self.bannerView];
    self.bannerView.center =
    CGPointMake(self.view.center.x, self.bannerView.center.y);
    [bannerView_ loadRequest:[self createRequest]];

    bannerView_.backgroundColor = [UIColor blueColor];


    // 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.
    GADRequest *request = [GADRequest request];
    request.testDevices = [NSArray arrayWithObjects:
                           @"4D047EB9-A3A7-441E-989E-C5437F05DB04",
                           @"YOUR_DEVICE_IDENTIFIER",
                           nil];

}

- (GADRequest *)createRequest {
    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];
    return request;
}

- (void)adView:(GADBannerView *)view didFailToReceiveAdWithError:(GADRequestError *)error;
{
    NSLog(@"Error - did Fail to Receive an Ad");
    bannerView_.hidden = YES;

}

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

@end

ログに表示されるのは、「広告を受信しました」と「エラー-広告の受信に失敗しました」です...このログの後に、要求を停止したようなエントリはありませんか?現在、シミュレーターでのみテストしています。

これを解決する方法、またはエラー/広告が受信されないときにビューを非表示にするための代替方法の可能性はありますか?

4

5 に答える 5

1

私は同じことを見つけGADBannerViewました.

私が成功したことの 1 つは、非表示にするのではGADBannerViewなく、画面外に移動することです。もちろん、これは の結果としてのみ実行し、 のdidFailToReceiveAdWithErrorときに画面上に戻す必要がありますadViewDidReceiveAd。iAd が推奨するように、広告が出入りするときにユーザーに素敵なアニメーションが表示されるように、これを機能させました。

要するに、以下のコードは、ブール値に応じて、 GADBannerView(ここでは と呼ばれるmAdBannerView) を画面の下部または画面外に配置しますadIsLoaded

  CGRect bannerFrame = mAdBannerView.frame;
  bannerFrame.origin.y = self.view.bounds.size.height - (adIsLoaded * bannerFrame.size.height);
  mAdBannerView.frame = bannerFrame;
于 2014-05-30T18:17:47.787 に答える
0

簡単な解決策、メソッドでbannerView_.hiddenをtrueに設定しますadView:didFailToReciewvwAdWithError。そして、ビューの使用adViewDidReceiveAdメソッドを取得します。コード例:

これらはADmobのデリゲートメソッドです。

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

- (void)adViewDidReceiveAd:(GADBannerView *)view
{
    bannerView_.hidden = NO;
}
于 2013-01-26T00:31:25.263 に答える
0

hidden プロパティを使用して bannerView_ を非表示にする方がよいと考えてください。

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

もちろん、広告が正常に受信されたときにhidden戻すことを忘れないでください。YES

于 2013-01-25T23:31:25.967 に答える
0

私は同じ問題を抱えていましたが、これは私にとってはうまくいきました:

.hidden プロパティを使用して AdMob 広告を非表示にしないでください。アルファを 0 (不可視) または 1 (可視) に設定するだけです。

したがって、GADBannerView デリゲート メソッドで...

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

    // Hide the ad banner.
    [UIView animateWithDuration:0.5 animations:^{

        self.myADBanner.alpha = 0.0;

    }];

}

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

    //Show the ad banner.
    [UIView animateWithDuration:0.5 animations:^{

        self.myADBanner.alpha = 1.0;

    }];

}

「このログの後、それ以上のエントリはありません。リクエストを停止したようなものですか?」に関しては。

これは、ビュー階層から広告を削除したときにも起こります。ただし、広告をビュー階層に追加し直すと、リクエストは続行されます。それらが継続しなかったのは、.hidden プロパティを使用していたときだけでした。

于 2016-04-22T01:54:34.680 に答える
0

次のようなものにエラーが発生したときに呼び出されるメソッドで

bannerView_.hidden = 1;

エラーが発生した場合はビューが非表示になり、広告がエラーなしで受信された場合はおそらく自動的に表示されます

于 2013-01-25T20:32:13.710 に答える