最近のAppleの審査でReject連発でへこんでいます。一回で全部の指摘をいってほすぃなぁとか・・・ しかもiOS8とiphone6,6+,ipadのリリースで審査が激混みです・・・
それはそうと、まだCocos2d-iphoneのしかもver2.xを使っているのかと言われそうですが、手を付けていたのが v2.xでして・・・v3.xに書き換えるのもめんどくさいし・・・ゴニョゴニョ
え?Cocos2d-xじゃねーの?って・・・2d-xもインストールはして、使えるんですけど・・・ゴニョゴニョ
まぁ、何かも役に立つかもしれないので、CCLayerから、interstitialを使う方法をちょっと御紹介します。
https://developers.google.com/mobile-ads-sdk/docs/admob/ios/interstitial?hl=ja
これをみると、最終的にViewControllerに渡すみたいなんです。 いろいろ、見てみても今一、ピンとくる方法がなくてAppControllerからビューコントローラーを取得してそれに入れよーか とも思ったんですが、InterstitialViewControllerを作って、生成時にリクエストを行い、表示するという方法で やってみました。
では、コード
InterstitialViewController.h
1 2 3 4 5 6 7 8 9 10 11 12 13 |
[obj-c] #import <UIKit/UIKit.h> #import "GADInterstitial.h" @interface InterstitialViewController : UIViewController{ GADInterstitial *interstitial; } - (id)init; - (BOOL)interstitialIsReady; @end [/obj-c] |
InterstitialViewController.m
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
[obj-c] #import "InterstitialViewController.h" @interface InterstitialViewController () @end @implementation InterstitialViewController - (id)init { if (self = [super init]) { //インタースティシャル広告準備 interstitial = [[GADInterstitial alloc] init]; interstitial.adUnitID = ADMOB_INT_ID; GADRequest *request = [GADRequest request]; // Requests test ads on simulators. //request.testDevices = @[ GAD_SIMULATOR_ID ]; [interstitial loadRequest:request]; } return self; } - (BOOL)interstitialIsReady{ return [interstitial isReady]; } - (void)viewDidLoad { [super viewDidLoad]; } - (void)viewDidAppear:(BOOL)animated{ if(![interstitial hasBeenUsed]){ [interstitial presentFromRootViewController:self.view.window.rootViewController]; } } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; } @end [/obj-c] |
で、CCLayerでどう使うかというと抜粋コード SenceLayer.m
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
[obj-c] -(id) init { if( (self=[super init])) { //ivcはInterstitialViewControllerのインスタンスでメンバ変数として.hで宣言しといてください ivc = [[InterstitialViewController alloc]init]; } } // ---- 他の無関係コード //戻るボタンを押したときに呼ばれる このときにインタースティシャル広告の表示 -(void)back_btn_push:(id)sender{ //HogeHogeLayerに戻る [[CCDirector sharedDirector] replaceScene:[CCTransitionFade transitionWithDuration:0.5f scene:[HogehogeLayer scene]]]; //準備が出来れていればインタースティシャルを表示 if ([ivc interstitialIsReady]) { NSLog(@"インタースティシャルロード完了済"); [[[CCDirector sharedDirector] view] addSubview:ivc.view]; } } [/obj-c] |
まぁ、なんてことはないんですが、こうしとけば、いちいちCCLayer毎にコードを書かなくても、InterstitialViewControllerを 呼び出せば使えるんではないでしょうか〜。