昨日、これまで個別に試していた色々な広告を実際のゲームに組み込む作業をしていたのですが、admob(メディエーション)を表示させて見たとこと、cocos2dxのゲーム内の画面に不具合が生じました。 このバグに関しては、何が原因で起こっているのかわからず、再現性も低いもので、どう直したらいいのかわかりません。
今回は、ブログに書くことでこの不具合の解決策が見つからないかと考えて、私がadmobをiOSに設置した時のコードを書きます。 もし、何か良い方法があれば教えて下さい。
追記
原因は、広告にあるのか、Xcode側にあるのかわからないのですが、今まで書いていたコードの挙動が変わっているために起こった問題でした。 現在、この問題は解決をしています。ご心配をお掛けしました。
上記の原因に関しては、後日またブログで書いていきたいと思います。
不具合
この不具合はiOS5,iOS6で発生しています。(iOS7ではまだ試してません) cocos2dxは2.1.3のバージョンを使用。
不具合は、あるSceneから、別のSceneに移動した時に起こります。 不具合は、Gameを担当しているSceneで発生して、下記に書くコードで広告を非表示にしています。 不具合の内容は、おそらくですが、一部のLayerのメソッドが動いていない。
admobの設置
AppController.mm内に以下のコードを書いてadmobを表示させています。 もしかしたら、このやり方が間違っているのかもしれません。
[c]
- (BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions {
/*
最初から記載のあるコード
*/
//admob広告 bannerView_ = [[GADBannerView alloc] initWithAdSize:kGADAdSizeBanner];
//広告ユニットID
bannerView_.adUnitID = @"パブリッシャーID";
bannerView_.rootViewController = viewController;
//横画面の下部中央に表示
bannerView_.center = CGPointMake(viewController.view.center.y, viewController.view.frame.size.width - bannerView_.frame.size.height/2);
[viewController.view addSubview:bannerView_];
[bannerView_ loadRequest:[GADRequest request]];
[/c]
AppController.hでは、広告のViewを作成しています。
[c]
import "GADBannerView.h"
@interface AppController : NSObject <UIApplicationDelegate> { UIWindow window; RootViewController viewController;
GADBannerView *bannerView_;
} [/c]
広告の表示非表示
エラーが出るSceneでは、広告は表示していません。 ですので、AppControllerクラスないに、広告のバナーを非表示・表示するメソッドを用意して、これを各Scene毎に呼び出して調整をしています。
AppController.mm内。 [c]
pragma mark 広告
-(void)hideAdView{
bannerView_.hidden = YES;
}
-(void)showAdView{
bannerView_.hidden = NO;
}
[/c]
この方法は、cocos2dxのレシピ本に載っていた方法なので大丈夫だと思うのですが、以上のようなコードを利用してadmobを設置しています。
最後に
この不具合に関しては、一度最初からやり直すと出てきません。 ビルドをしなおしても出てこなく、本当にたまにしか発生しないモノです。
おそらく私のやり方が悪いのだと思うのですが、何か良い方法があれば教えて下さい。
Cocos2d‐x開発のレシピ―iOS/Android対応 松浦 晃洋,齊藤 建二,古木 映治 秀和システム 売り上げランキング : 20425 Amazonで詳しく見る |