GameFeatのウォール広告を設置する

先日、セミナーにも参加させていただいた「GameFeat」さんの「オーバーウォール」型広告を今度は「cocos2dx」に実装ができるようになったので、今回はこの設定方法を紹介したいと思います。 「GameFeat」さんの広告についてはこちらを参考にしてみて下さい。

【cocos2d】を利用の場合は、前回の記事を参考にしてください。 [cocos2d編] GameFeatのウォール広告を設置する | albatrus.com

準備

まずは、下準備としてGameFeatさんのSDKXcode上のプロジェクトに追加します。

2013-10-15-ddsds

ついでに、必要なフレームワークもプロジェクトに追加します。

  • Foundation.framework
  • UIKit.framework
  • CoreTelephony.framework
  • StoreKit.framework

実装する

自分で考えた方法ですが、アプリ内でしっかりと動いているので、このやり方で大丈夫だと思います。 その方法を書きます。

GFViewDelegateを継承したViewを作成

まずは、GFViewDelegateを利用するためのUIViewControllerクラスを親クラスにもつViewを作成します。 ここでは仮にGameFeatViewControllerという名前のクラスを作成します。これは好きな名前を考えて下さい。

[c]

//GameFeatViewController.h

import <UIKit/UIKit.h>

import <GameFeatKit/GFView.h>

import <GameFeatKit/GFController.h>

@interface GameFeatViewController : UIViewController{

}

//クラスメソッド +(void)onClickBtn;

@end

[/c]

ここに、他のクラスから呼び出せる「オーバーウォール」広告を表示させるクラス・メソッドを設置します。 [c]

//GameFeatViewController.m

//======================================================= // GFViewDelegate //======================================================= - (void)didShowGameFeat{ // GameFeatが表示されたタイミングで呼び出されるdelegateメソッド NSLog(@"didShowGameFeat"); } - (void)didCloseGameFeat{ // GameFeatが閉じられたタイミングで呼び出されるdelegateメソッド NSLog(@"didCloseGameFeat"); }

-(void)didGetGfAds:(NSArray *)lists{

}

-(void)failGetGfAds{

}

//これを呼び出すことで、GameFeatの広告を表示させます。 + (void)onClickBtn{

//MEDIA_CODEにはGameFeatの広告のIDを入れて下さい。
AppController *appController = (AppController *)[[UIApplication sharedApplication] delegate];
[GFController showGF:(UIViewController *)appController.viewController site_id:@"MEDIA_CODE"];

}

[/c]

AppControllerを編集

プロジェクトにある[iOS]フォルダの中に、AppControllerクラスがあります。 これを編集します。

まずはヘッダーにGFControllerをインポートする。 [c]

//インポート

import <GameFeatKit/GFController.h>

@interface AppController : NSObject { UIWindow window; RootViewController viewController;

}

[/c]

次に、AppController.mmに必要な記述をします。 [c]

  • (void)applicationDidBecomeActive:(UIApplication *)application {

    //MEDIA_CODEにはGameFeatのIDを入れて下さい [GFController activateGF:@"MEDIA_CODE"];

    / Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. / cocos2d::CCDirector::sharedDirector()->resume(); }

  • (void)applicationDidEnterBackground:(UIApplication *)application {

    UIDevice *device = [UIDevice currentDevice]; BOOL backgroundSupported = NO; if ([device respondsToSelector:@selector(isMultitaskingSupported)]) { backgroundSupported = device.multitaskingSupported; } if (backgroundSupported) { [GFController backgroundTask]; }

    / Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. If your application supports background execution, called instead of applicationWillTerminate: when the user quits. / cocos2d::CCApplication::sharedApplication()->applicationDidEnterBackground(); }

  • (void)applicationWillEnterForeground:(UIApplication *)application {

    [GFController conversionCheckStop];

    / Called as part of transition from the background to the inactive state: here you can undo many of the changes made on entering the background. / cocos2d::CCApplication::sharedApplication()->applicationWillEnterForeground(); }

[/c]

これで必要な記述は完了です。 後は、必要な場所でGameFeatを呼び出してあげればOK!!

こんな感じクラスメソッドを呼び出してあげれるだけです。 [c]

include "GameFeatViewController.h"

//CCMenuのボタンを押した後のメソッド void GameLayer::setGameFeat(){

[GameFeatViewController onClickBtn];

}

[/c]

最後に

私自身、cocos2dxもといObjective-cのViewに関して、全然わかっていなかったので当初は非常に悩んだのですが、何とかこのような形でGameFeatの広告を表示することができました。 これが、正しい方法かどうかはわかりませんが、もし、上手く設置ができない場合は参考にしていただきたいです。

次回はcococs2dのAndoird編を書こうかと思っています。