iAd広告の取得状態に合わせてADBannerViewを表示するには

アプリの画面に空のバナーを表示すると、Appleの審査でリジェクトされてしまうそうです。対処方法として、iAd広告の取得状態に合わせてADBannerViewの表示/非表示を切り替える必要があります。
Interface Builderで画面の最下部にバナーを配置した場合のコードを書いてみました。

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

@interface TestViewController : UIViewController &lt;ADBannerViewDelegate&gt;
{
	IBOutlet ADBannerView *adBannerView;
	BOOL bannerIsVisible;
}
@end
#import <TestViewController.h>

@implementation TestViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        adBannerView.frame = CGRectOffset(adBannerView.frame, 0.0, + adBannerView.frame.size.height);
    }
    return self;
}

- (BOOL)bannerViewActionShouldBegin:(ADBannerView *)banner willLeaveApplication:(BOOL)willLeave
{
	return YES;
}

- (void)bannerViewDidLoadAd:(ADBannerView *)banner
{
	if (!bannerIsVisible) {
		[UIView beginAnimations:@&quot;animateAdBannerOn&quot; context:NULL];
		banner.frame = CGRectOffset(banner.frame, 0.0, - banner.frame.size.height);
		[UIView commitAnimations];
		bannerIsVisible = YES;
	}
}

- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error
{
	if (bannerIsVisible) {
		[UIView beginAnimations:@&quot;animateAdBannerOff&quot; context:NULL];
		banner.frame = CGRectOffset(banner.frame, 0.0, + banner.frame.size.height);
		[UIView commitAnimations];
		bannerIsVisible = NO;
	}
}

@end

※フレームワーク(iAd.framework)の追加も忘れずに。

Tweet about this on TwitterShare on Facebook0Share on Google+0Pin on Pinterest0

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です