3

iPhoneアプリにiAdを統合する際に問題が発生しました。バナー広告は、消費しても問題ありません(http://www.clingmarks.com/iAd1.pngおよびhttp://www.clingmarks.com/iAd2.pngを参照)。 )ただし、閉じると、白い空白の画面が残りました(http://www.clingmarks.com/iAd3.pngを参照)。理由がわかりませんでした。広告を統合する方法は次のとおりです。

低バージョンのiPhoneOSで他の広告をサポートする必要があるため、アプリの上部にコンテナビューを追加します。そのビューコントローラーはAdViewControllerです。ビューがロードされたら、プログラムでAdBannerViewを作成し、それをサブビューとしてAdViewController.viewに追加します。viewDidLoadメソッドのコードは次のとおりです。

Class adClass = (NSClassFromString(@"ADBannerView"));
if (adClass != nil) {
    iAdView = [[ADBannerView alloc] initWithFrame:CGRectZero];
    iAdView.frame = CGRectOffset(iAdView.frame, 0, -50);
    iAdView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifier320x50];
    iAdView.currentContentSizeIdentifier = ADBannerContentSizeIdentifier320x50;
    iAdView.delegate = self;
    iadViewIsVisible = NO;
    [self.view addSubview:iAdView];
} else {
       // init google adsense
    }

デリゲートメソッドは次のとおりです。

enter code here
- (void)bannerViewDidLoadAd:(ADBannerView *)banner {
if (!iadViewIsVisible) {
    [UIView beginAnimations:@"animateAdBannerOn" context:NULL];
    // banner is invisible now and moved out of the screen on 50 px
    banner.frame = CGRectOffset(banner.frame, 0, 50);
    [UIView commitAnimations];
    iadViewIsVisible = YES;
}
}

- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error {
if (iadViewIsVisible) {
    [UIView beginAnimations:@"animateAdBannerOff" context:NULL];
    // banner is visible and we move it out of the screen, due to connection issue
    banner.frame = CGRectOffset(banner.frame, 0, -50);
    [UIView commitAnimations];
    iadViewIsVisible = NO;
}
}
4

3 に答える 3

4

最終的に私はそれを自分で理解しました。ADBannerViewの親ビューはフルスクリーンビューである必要があります。上記の私の場合、AdBannerViewをadViewに追加しました。これはサイズ320x50のビューです。親ビューをフルスクリーンビューに変更すると、すべてが機能します。これがiAdのバグかどうかはわかりませんが、確かに注意が必要です。

于 2010-07-03T18:11:30.200 に答える
1

バナーが終了すると、負のy座標を持つことを意味する場合でも、バナーは画面の上部に移動します。バナーが終わったら中央に配置します。私の場合、バナーだけのView Controllerがあるので、広告がクリックされたときだけ全画面表示になります。

-(void) bannerViewActionDidFinish:(UIView *)inBanner {
    CGRect                      frame = [inBanner frame];

    frame.origin.x = frame.size.width * 0.5;
    frame.origin.y = frame.size.height * 0.5;

    [inBanner setCenter:frame.origin];
}
于 2010-07-18T06:49:21.063 に答える
1

やあデビッド!私はあなたが何を意味するのか知っています、私はまた異なる広告ネットワークを呼び出す独自のAdvertisementViewControllerを使用しています。

したがって、iAdはフルスクリーンビューではなく、320x50ビュー内にあります。

単にこれを行います:

-(void) bannerViewActionDidFinish:(ADBannerView *)inBanner {

[self.view setFrame:CGRectMake(0.0f, 0.0f, 320.0f, 50.0f)];

}

そのため、外側のビューコンテナ(self.view)は元のサイズにサイズ変更されます。iAdは、iAdが表示されたときに広告を表示するために、フルスクリーンにサイズ変更しています。

于 2011-03-16T11:56:36.337 に答える