iOSでAdmobSDKを実装したものの国内の特定のアドネットワークだけ上手く表示されなかったりして困っていました。
それでいろいろテストしてみたらAdmobの特徴がすこしわかった話。
当初の実装(AdmobのSDKは6.12.2とすこし古めです)
GADBannerView* banner = [[GADBannerView alloc] initWithAdSize: GADAdSizeFullWidthPortraitWithHeight(GAD_SIZE_320x50.height)];
これだと一部のアドネットワークの広告が表示されないようで困っていたのでとりあえず
GADBannerView* banner = [[GADBannerView alloc]init];
とサイズを指定せずに実装。しかしこれだと次のようなエラーが発生します。
"Request Error: No ads to show"
Admobはサイズを適切に設定してやらないと表示されないという特徴がありました。
iOS SDK7.0.0(2015年3月時点で最新版)では先ほどの
GADAdSizeFullWidthPortraitWithHeight(GAD_SIZE_320x50.height)
のメソッドは消されていてDeprecatedなメソッドだったぽいので次のように書き換えたら上手くいきました。
GADBannerView* banner = [[GADBannerView alloc] initWithAdSize:kGADSizeBanner];
// iPadならkGADSizeFullBannerになります。
アドネットワーク各社さんにご迷惑をおかけしてしまいましたが、AdmobのSDKにはこのような特徴があるため
適切なサイズの設定をしてあげなければなりません。
次のパターンにはまったらこの解決法で上手くいくかもしれません
・AdUnitID設定したのに表示されない
・アドネットワークの設定が適切なのに表示されない
・ちゃんとViewControllerにaddSubViewしてRequest出してるのに表示されない
[追記 2015/03/24]
iAdについて
iAdはデフォルトでスマートバナーといって
GADAdSizeFullWidthPortraitWithHeight(GAD_SIZE_320x50.height)
のサイズでバナーを表示しようとするためサイズが見切れてしまうという現象が起こってしまいます。
通常のkGADAdSizeBannerだと(320 x 50)のサイズになってしまうためです。
したがってメディエーションについてはiAdはお勧めしません。onDidReceivedAd(delegateイベント)で
iAdの場合だけハンドリングしてうまくやれる方法があればいいのですが.....