アプリであそぼう。こどもも、おとなも。

AdwhirlのadWhirlDidReceiveAdはCustom Eventには効かない?



Adwhirlを入れてはや1ヶ月くらい経ちました。

現在入れているのはiAd、Admob、Admakerの3つですが、iAdはあまりにも効果が少なかったため、その分の通信時間がおしかったので非表示にしてあります。そのため実質AdmobとAdmakerの2つですね。

で、私は広告が表示されていないときは広告のビュー自体を透明化(なんたら.view.alpha = 0.0;)していて、広告を受信したタイミングで透明化をオフにしている(なんたら.view.alpha = 1.0;)のですが、なぜかAdmakerではこれがうまくいかない。Admobではちゃんと動いているのに。

というわけでいろいろ試してみたところ、広告が受信されたタイミングで実行されるAdwhrlの関数である「adWhirlDidReceiveAd」が、Admakerでは実行されていない感じでした。Admobではちゃんと実行されるので、もしかしたらユーザー側で追加した「Custom Event」では「adWhirlDidReceiveAd」関数は呼ばれないのかもしれません。

というわけでしょうがないから下記のようにAdmaker側の広告を受信したタイミングで実行される「didLodAdMakerView」関数の中で不透明化(なんたら.view.alpha = 1.0;)を実行させることで対応しました。

ソースの一部は下記のとおり。

- (void)viewDidLoad {
	[super viewDidLoad];	
	
	// 以下、Admaker-----------------
	AdMaker = [[AdMakerView alloc] init];
	[AdMaker setAdMakerDelegate:self];
	[AdMaker setFrame:CGRectMake(0, 0, 320, 50)];
	[AdMaker start];

	// 広告が受信されるまではAdmakerの広告枠自体を非表示
	AdMaker.view.alpha = 0.0;
	// 以上、Admaker-----------------
	
	//adwirl
	[super viewDidLoad];
	
	self.awView = [AdWhirlView requestAdWhirlViewWithDelegate:self];
	[self.view addSubview:awView];
	
	awView.frame = CGRectMake(0.0, self.view.frame.size.height - 
							   GAD_SIZE_320x50.height - 44,GAD_SIZE_320x50.width, GAD_SIZE_320x50.height);
	
	awView.delegate = self;
	awView.alpha = 0.0;	
}

// Adwhirl側の広告受信時に実行される関数
- (void)adWhirlDidReceiveAd:(AdWhirlView *)adWhirlView{
	// Admobは広告受信時のこの関数が実行されるが、Admakerはなぜか実行されない
	awView.alpha = 1.0;
}

// AdMaker側の広告受信時に実行される関数
- (void)didLoadAdMakerView:(AdMakerView*)view{
	// しょうがないのでAdmaker側に「awView.alpha = 1.0;」を追加
	AdMaker.view.alpha = 1.0;
	awView.alpha = 1.0;
}