- iAdビューを貼付けるだけ(通常のADBannerViewクラスと同じ扱い)で自社広告の表示を行なう。
- iAd非表示中は自社広告を表示し、iAd表示中は自社広告を表示しない。
- 自社広告をタップすることで、対象のAppStoreリンクに遷移する。
// 自社広告クラス
@interface ICTF_AdView : UIImageView
{
}
@end
@implementation ICTF_AdView
-(id) init
{
CGRect frame;
if ([CommonFunctions isiPad]) {
frame = CGRectMake(0, 0, 768, 66);
}
else {
frame = CGRectMake(0, 0, 320, 50);
}
if (self = [super initWithFrame:frame]) {
if ([CommonFunctions isiPad]) {
self.image = [UIImage imageNamed:@"ICTF_Ad768.png"];
}
else {
self.image = [UIImage imageNamed:@"ICTF_Ad320.png"];
}
}
return self;
}
@end
#import <iAd/iAd.h>
#import "ICTF_AdView.h"
// 自社広告表示機能を追加したiAdビュー
@interface ADBannerViewEx : ADBannerView
<ADBannerViewDelegate>
{
ICTF_AdView* _ictfAdView;
UITapGestureRecognizer* _ictfAdTapGesture;
}
@end
@interface ADBannerViewEx ()
// 自社広告のタップイベント
-(void) adIctfAdTapHandle:(UITapGestureRecognizer*)sender;
// 自社広告のタップイベント追加
-(void) addIctfAdTapGesture;
// 自社広告のタップイベント削除
-(void) removeIctfAdTapGesture;
@end
@implementation ADBannerViewEx
-(id) initWithAdType:(ADAdType)type
{
if (self = [super initWithAdType:type]) {
self.delegate = self;
_ictfAdTapGesture = nil;
// 自社広告を追加
_ictfAdView = [[ICTF_AdView alloc] init];
[self addSubview:_ictfAdView];
_ictfAdView.center = CGPointMake(self.bounds.size.width * 0.5, self.bounds.size.height * 0.5);
[self addIctfAdTapGesture];
}
return self;
}
-(void) dealloc
{
[_ictfAdView release];
[super dealloc];
}
// iAdの読み込み完了通知
- (void)bannerViewDidLoadAd:(ADBannerView *)banner
{
NSLog(@"iAd読み込み完了");
_ictfAdView.hidden = YES;
[self removeIctfAdTapGesture];
}
// iAdの読み込み失敗通知
-(void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error
{
NSLog(@"iAd読み込み失敗: %@",error);
_ictfAdView.hidden = NO;
[self addIctfAdTapGesture];
}
// 自社広告のタップイベント
-(void) adIctfAdTapHandle:(UITapGestureRecognizer*)sender
{
// AppStoreを開く
NSURL* url = [NSURL URLWithString:@"http://itunes.apple.com/jp/app/mono-calculator/id517496688?mt=8"];
UIApplication* application = [UIApplication sharedApplication];
if ([application canOpenURL:url]) {
[application openURL:url];
}
}
// 自社広告のタップイベント追加
-(void) addIctfAdTapGesture
{
if (_ictfAdTapGesture == nil) {
_ictfAdTapGesture = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(adIctfAdTapHandle:)] autorelease];
_ictfAdTapGesture.numberOfTapsRequired = 1;
[self addGestureRecognizer:_ictfAdTapGesture];
}
}
// 自社広告のタップイベント削除
-(void) removeIctfAdTapGesture
{
[self removeGestureRecognizer:_ictfAdTapGesture];
_ictfAdTapGesture = nil;
}
@end
adView = [[ADBannerViewEx alloc] initWithAdType:ADAdTypeBanner];
コメントする