Unity で AppBank Network の無料アプリ用の広告を実装する方法(iOS)
AppBankGames の梅田です。今回は Unity で作成した iOS アプリに AppBank Network を実装する方法を紹介します。
AppBank Network を実装するために必要な Nend SDK はこちらの管理画面から取得できます。
(AppBank Network は、AppBank が提供する広告ネットワークです → AppBank Network)
実装の流れ
広告を表示するために、Objective-C で記述されたネイティブプラグインとして NADViewController.mm を用意します。そして、作成されたメソッドを呼ぶためのクラス AdViewManager.cs を Unity 上で用意します。
実装環境・使用した SDK・プロジェクト名
- Xcode v4.6.3
- Unity 4.1.5f1
- NendSDK iOS v2.1.0
Unity のプロジェクト名は【NendAdSample】と名付けました。また、プロジェクトのパッケージ名は、【net.appbank.adviewproject】と指定しました。以降、プロジェクト名・パッケージ名について、自身で設定した値に読み替えをお願いします。
※ 広告を表示するのに指定している apiKey 及び spotID はテスト用の値を使用しています。アプリをリリースする際には、自身で取得された値に変更する必要があります
※ Nend SDK のバージョンによっては、必要なフレームワーク・ファイルが変わることがあります。SDK に付属しているマニュアルをご確認ください
各種ファイルを作成&配置する
AppBankNetwork の管理画面より、Nend SDK iOS を取得します。iOS は、取得したファイルの中にある libNendAd.a, NADView.h を使用します。
Unity で作成したプロジェクトにある Assets フォルダに、以下のようにフォルダ&ファイルを配置していきます。
Assets
┗ Plugins(フォルダ)
┣ iOS(フォルダ)
┃┣ libNendAd.a
┃┣ NADViewController.mm
┃┗ NADView.h
┗ AdViewManager.cs
ネイティブプラグインを実装する
ネイティブプラグインの部分を実装する方法を紹介します。
先ほど作成した【NADViewController.mm】に以下の内容を記述します。viewDidLoad メソッドにて View の生成、apiKey および spotID の登録を行っています。
また、load メソッドにて広告の読み込みを開始しています。
- (void)viewDidLoad {
[super viewDidLoad];
int h = UnityGetGLViewController().view.frame.size.height;
NADView* view = [[NADView alloc] initWithFrame:CGRectMake(0,h-50,NAD_ADVIEW_SIZE_320x50.width, NAD_ADVIEW_SIZE_320x50.height )];
self.nadView = view;
[view release];
[self.nadView setIsOutputLog:YES];
[self.nadView setNendID:@"a6eca9dd074372c898dd1df549301f277c53f2b9"
spotID:@"3172"];
[self.nadView setDelegate:self];
[self.view addSubview:self.nadView];
}
- (void)load{
[self.nadView load];
}
今回は .mm で作成しているため、Unity から呼び出す為にはリンケージ指定が必要です。
extern "C"{
void _Init();
void _Load();
void _Init()
{
[[NADViewController sharedViewController] init];
}
void _Load()
{
[[NADViewController sharedViewController] load];
}
}
以上で、ネイティブプラグインにおける広告表示の実装は完了しました。
Unity からプラグインの処理を呼び出す
Unity から先ほど作成したプラグインの処理を呼び出す方法を紹介します。
【AdViewManager.cs】に以下の内容を記述します。
using UnityEngine;
using System.Collections;
using System.Runtime.InteropServices;
public class AdViewManager : System.Object {
#if UNITY_IPHONE
[DllImport("__Internal")]
private static extern void _Init();
[DllImport("__Internal")]
private static extern void _Load();
#endif
public static bool isAvailable{
get {
if(Application.isEditor)
return false;
else
return true;
}
}
public static void Init(){
if(isAvailable){
#if UNITY_IPHONE
_Init();
#endif
}
}
public static void Load(){
if(isAvailable){
#if UNITY_IPHONE
_Load();
#endif
}
}
}
任意のタイミングで上記の Init および Load を呼ぶことで、広告が表示されます。
今回は AdController.cs というスクリプトを作成し、シーン上の MainCamera にアタッチしました。
また、Unity から Xcode プロジェクトを生成した際に Nend SDK を実装する上で必要なフレームワークを手動で追加する必要があります。
- AdSupport.framework
- Security.framework
実機に転送し、アプリが起動すると広告が表示されるのを確認できます。
広告実装されたアプリがリリースされたら
AppBank Network の広告を実装したアプリを App Store にリリースしたら AppBankプラスに申込みましょう。AppBankプラスは、AppBank Network を導入しているアプリを AppBank で紹介できるサービスです。
詳細は下記よりご覧ください。
→ AppBank Network