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; }
コメント