久しぶりにAdWhirlを経由した広告モデルのアプリを書いています。
以前のiRulerはLandscapeのみのUIでしたが今回のアプリではPortraitもサポートしてRotationを前提としています。
AdWhirlのAPIとしてはRotationした場合には下記のAPIを呼ぶ事になっています。
[AdWhirlView rotateToOrientation:(UIInterfaceOrientation)orientation]
iAdは全然大丈夫なのですが、その他の広告を表示しようとするとRotationが上手く行かない場合があります。
調べてみたのですが単純でした。
このメソッドは各ネットワークアダプタの同名のメソッドを呼ぶのですが、例えばAdMob用のネットワークアダプタはこのメソッドが実装されておらず、親クラスの何もしないメソッドが呼ばれていました。
ですので解決策としてはAdMob用のネットワークアダプタでメソッドをオーバラードしてやれば良いだけです。
AdWhirlAdapterGoogleAdMobAds.m
-(void)rotateToOrientation:(UIInterfaceOrientation)orientation {
GADBannerView* adMobView;
adMobView = (GADBannerView*)adNetworkView;
switch (orientation) {
case UIInterfaceOrientationPortrait:
case UIInterfaceOrientationPortraitUpsideDown:
adMobView.adSize = kGADAdSizeSmartBannerPortrait;
break;
case UIInterfaceOrientationLandscapeLeft:
case UIInterfaceOrientationLandscapeRight:
adMobView.adSize = kGADAdSizeSmartBannerLandscape;
break;
default:
break;
}
}
Really liked what you had to say in your post, AdWhirlã§Rotation (備忘録) – FuturesVision, thanks for the good read!
— Stanton
http://www.terrazoa.com