Force Operation X (以下F.O.X)は、スマートフォンにおける広告効果最適化のためのトータルソリューションプラットフォームです。アプリケーションのダウンロード、ウェブ上でのユーザーアクションの計測はもちろん、スマートフォンユーザーの行動特性に基づいた独自の効果計測基準の元、企業のプロモーションにおける費用対効果を最大化することができます。
本ドキュメントでは、スマートフォンアプリケーションにおける広告効果最大化のためのF.O.X SDK導入手順について説明します。
F.O.X SDKをアプリケーションに導入することで、以下の機能を実現します。
- インストール計測
広告流入別にインストール数を計測することができます。
- LTV計測
流入元広告別にLife Time Valueを計測します。主な成果地点としては、会員登録、チュートリアル突破、課金などがあります。各広告別に登録率、課金率や課金額などを計測することができます。
- アクセス解析
自然流入と広告流入のインストール比較。アプリケーションの起動数やユニークユーザー数(DAU/MAU)。継続率等を計測することができます。
本ドキュメントでは、Force Operation X SDK Cocos2d-js プラグインの導入手順について説明します。Force Operation X SDK Cocos2d-jsプラグインはiOSおよびAndroidに対応しています。
Force Operation X SDKでは、インストールおよびLTVの計測、アクセス解析を行うことができます。
SDKの実装後は、アプリケーションの動作及び効果測定の結果に問題のないことを確認した後にマーケットへの申請を行ってください。効果測定のテスト手順については、Force Operation X管理者よりご連絡いたします。
F.O.X SDKをアプリケーションに導入することで、以下の機能を実現します。
| 処理 | 必須 | 概要 |
|---|---|---|
| インストール計測 | 必須 | 起動時はブラウザが起動し、Cookie計測により広告効果測定を行います。 コンバージョン数、CVRなどを測定することができます。 メソッド名:sendConversion |
| LTV計測 | オプション | 任意の成果地点で成果通知を行い、広告別の課金数や入会数の計測を行います。 課金金額、退会数などを測定することができます。 メソッド名:sendLtv |
| アクセス解析 | オプション | アプリの起動時およびバックグラウンドからの復帰時の起動計測を行います。 起動数、アクティブユーザー数(DAU)、継続率などを測定することができます。 メソッド名:sendStartSession |
Force Operation X SDK Cocos2d-js プラグインは、ネイティブ版SDKへのブリッジを行うラッパーとして実装しています。SDK導入には、プラグインと、iOS及びAndroidのネイティブ版SDKが必要となります。_
#2. iOS用 Xcode プロジェクトの設定
##2.1 SDKの展開
ダウンロードしたSDK「FOX_Cocos2djs_SDK_.zip」をOS上に展開します。Classesフォルダ内に同梱されているファイルは以下の通りです。
| ファイル名 | 必須 | 概要 |
|---|---|---|
| jsb_Cocos2dxFox_auto.cpp | 必須 | JavaScriptからC++を使用するためのjsbファイル |
| jsb_Cocos2dxFox_auto.hpp | 必須 | JavaScriptからC++を使用するためのjsbファイル |
| Cocos2dxFox.h | 必須 | ヘッダファイル。Cocos2d-xからSDKを使用するためのラッパー |
| Cocos2dxFox.mm | iOS専用 | ライブラリファイル。Cocos2d-xからFOX SDKを使用するためのiOS用のラッパー |
| Cocos2dxFox.cpp | Android専用 | ライブラリファイル。Cocos2d-xからFOX SDKを使用するためのAndroid用のラッパー |
| FoxVersionPlugin.h | オプション | ヘッダファイル。Cocos2d-xからバンドルバージョンを制御するラッパー |
| FoxVersionDelegate.m | オプション | ライブラリファイル。Cocos2d-xからバンドルバージョンを制御するラッパー |
| FoxVersionPlugin.h | オプション | ヘッダファイル。Cocos2d-xからバンドルバージョンを制御するラッパー |
| FoxVersionPlugin.m | オプション | ライブラリファイル。Cocos2d-xからバンドルバージョンを制御するラッパー |
| FoxReengagePlugin.h | オプション | ライブラリファイル。Cocos2d-xからURLスキーム経由の起動計測を行うためのラッパー |
| FoxReengagePlugin.m | オプション | ヘッダファイル。Cocos2d-xからURLスキーム経由の起動計測を行うためのラッパー |
上記のファイルはラッパーですので、実装ファイルはネイティブSDKを組み合わせます。
以下のファイル群が、iOSのネイティブSDKとなっており「FOX_iOS_SDK_」フォルダに同梱されています。
| ファイル名 | 必須 | 概要 |
|---|---|---|
| AdManager.h | 必須 | ヘッダファイル。広告の効果測定を行う。 |
| libAppAdForce.a | 必須 | ライブラリファイル。広告の効果測定を行う。 |
| Ltv.h | オプション | ヘッダファイル。LTV計測を行う。 |
| AnalyticsManager.h | オプション | ヘッダファイル。アクセス解析を行う。 |
※「FOX_Cocos2djs_SDK_.zip」に「FOX_iOS_SDK_」フォルダが含まれていない場合は
SDKダウンロードサイトからFOX_iOS_SDK_.zipをダウンロードの上、ご使用ください。
##2.2 ライブラリの組み込み
- Xcodeのメニュー「File」→「Add Files to “XXX”」を選択
- Cocos2dxFox.h、Cocos2dxFox.mmを組み込んでください。Cocos2dxFox.cppはAndroid用ライブラリであるため、追加の必要はありません。
- バンドルバージョン判定機能を使う場合は、FoxVersionDelegate.h、FoxVersionDelegate .mmとFoxVersionPlugin.h、FoxVersionPlugin.mmの計4ファイルを組み込んでください。
- リエンゲージメント計測を行う場合はFoxReengagePlugin.hとFoxReengagePlugin.mの2ファイルを組み込んでください。
- 「Copy items into destination group’s folder」にチェック
##2.3 Cocos2d-jsプロジェクトのClassesへの導入
- jsb_Cocos2dxFox_auto.cppとjsb_Cocos2dxFox_auto.hppをプロジェクト配下のClassesへコピー
(Androidプロジェクトと共通)
##2.4 フレームワークの追加
次のフレームワークをプロジェクトにリンクしてください。
| フレームワーク名 | Status |
|---|---|
| AdSupport.framework | Optional |
| iAd.framework | Required |
| Security.framework | Required |
| StoreKit.framework | Required |
| SystemConfiguration.framework | Required |
AdSupport.frameworkはiOS 6以降で追加されたフレームワークのため、アプリケーションをiOS 5以前でも動作させる(iOS Deployment Targetを5.1以下に設定する)場合にはweak linkを行うために”Optional”に設定してください。
##2.5 SDKの設定
SDKの動作に必要な設定をplistに追加します。「AppAdForce.plist」というファイルをプロジェクトの任意の場所に作成し、次のキーと値を入力してください。
| Key | Type | Value |
|---|---|---|
| APP_ID | String | Force Operation X管理者より連絡しますので、その値を入力してください。 |
| SERVER_URL | String | Force Operation X管理者より連絡しますので、その値を入力してください。 |
| APP_SALT | String | Force Operation X管理者より連絡しますので、その値を入力してください。 |
| APP_OPTIONS | String | 何も入力せず、空文字の状態にしてください。 |
| CONVERSION_MODE | String | 1 |
| ANALYTICS_APP_KEY | String | Force Operation X管理者より連絡しますので、その値を入力してください。 アクセス解析を利用しない場合は設定の必要はありません。 |
#3. Android用 プロジェクトの設定 ##3.1 SDKの展開
ダウンロードしたSDK「FOX_Cocos2djs_SDK_.zip」をOS上に展開します。
「FOX_Android_SDK_」フォルダに同梱されている「AppAdForce.jar」を開発環境に導入します。次に、Eclipseプロジェクトへの導入手順について説明します。
| ファイル名 | 必須 | 概要 |
|---|---|---|
| AppAdForce.jar | 必須 | AndroidのネイティブSDK。通常成果・LTV成果・アクセス解析を計測することができます。 |
※「FOX_Cocos2djs_SDK_.zip」に「FOX_Android_SDK_」フォルダが含まれていない場合はSDKダウンロードサイトからFOX_Android_SDK_.zipをダウンロードの上、ご使用ください。
##3.2 プロジェクトへの導入
既にアプリケーションにSDKが導入されている場合には、最新バージョンへのアップデートについてをご参照ください。
ダウンロードしたSDK「FOX_Android_SDK_.zip」を展開し、「AppAdForce.jar」をアプリケーションのプロジェクトに組み込んでください。
##3.3 AndroidManifest.xmlの編集 ###3.3.1 パーミッションの設定
Force Operation X SDKの実行に必要なパーミッションの設定をタグ内に追加します。
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
###3.3.2 メタデータの設定
| パラメータ名 | 必須 | 概要 |
|---|---|---|
| APPADFORCE_APP_ID | 必須 | Force Operation X管理者より連絡しますので、その値を入力してください。 |
| APPADFORCE_SERVER_URL | 必須 | Force Operation X管理者より連絡しますので、その値を入力してください。 |
| APPADFORCE_CRYPTO_SALT | 必須 | Force Operation X管理者より連絡しますので、その値を入力してください。 |
| ANALYTICS_APP_KEY | 必須 | Force Operation X管理者より連絡しますので、その値を入力してください。 |
| APPADFORCE_ID_DIR | オプション | 内(外)部ストレージを利用する際、任意の保存するディレクトリ名を指定できます。 未指定の場合、パッケージ名でディレクトリが作成されます。 |
| APPADFORCE_ID_FILE | オプション | 内(外)部ストレージを利用する際、任意の保存する識別子ファイル名を指定できます。 未指定の場合、”FOX_XUNIQ”でファイルが作成されます。 |
| APPADFORCE_USE_EXTERNAL_STORAGE | オプション | 0を指定した場合、内(外)部ストレージへの保存は実行しません。 |
Force Operation X SDKの実行に必要な情報をタグ内に追加します。
<meta-data android:name="APPADFORCE_APP_ID" android:value="1" />
<meta-data android:name="APPADFORCE_SERVER_URL" android:value="012345ABC" />
<meta-data android:name="APPADFORCE_CRYPTO_SALT" android:value="abcdef123" />
<meta-data android:name="ANALYTICS_APP_KEY" android:value="xxxxxx" />
###3.3.3 インストールリファラー計測の設定 インストールリファラー計測を行うために必要な設定をタグ内に追加します。
<receiver android:name="jp.appAdForce.android.InstallReceiver" android:exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
既に"com.android.vending.INSTALL_REFERRER"に対するレシーバークラスが定義されている場合には、二つのINSTALL_REFERRERレシーバーを共存させる場合の設定をご参照ください。
###3.3.4 AndroidManifest.xmlに関連するその他の設定
- URLスキームの設定
- (オプション)広告IDを利用するためのGoogle Play Services SDKの導入
- (オプション)外部ストレージを利用した重複排除設定
- AndroidManifest.xmlの設定例
##3.4 Cocos2d-jsプロジェクトのClassesへの導入
「FOX_Cocos2djs_SDK_.zip」を展開し、以下の操作を行います。
- Android/Classes配下のCocos2dxFox.hとCocos2dxFox.cppをプロジェクト配下のClassesへコピー
- Android/Classes配下のjsb_Cocos2dxFox_auto.cppとjsb_Cocos2dxFox_auto.hppをプロジェクト配下のClassesへコピー
- プロジェクト内配下のjni/Android.mkにCocos2dxFox.cppファイルとjsb_Cocos2dxFox_auto.cppファイルを追記し、ビルドの対象に含める
→ LOCAL_SRC_FILESにClasses/Cocos2dxFox.cppとClasses/jsb_Cocos2dxFox_auto.cppの指定を追加してください。
Cocos2dxFox.cppのJniHelper.hのincludeパスを開発環境に合わせる(以下はその例)
#include <iostrem>
#inclued “cocos2d.h”
#include “Cocos2dxFox.h”
#include “../android/jni/JniHelper.h”
#4 インストール計測の実装
FOXプラグインをCocos2d-xに登録するため、AppDelegate.cppを編集します。
まず、以下のようにヘッダファイルをインクルードします。
#include "jsb_Cocos2dxFox_auto.hpp"
次に、AppDelegate::applicationDidFinishLaunching()メソッド内のsc->start();よりも前に以下のコードを記述します。
sc->addRegisterCallback(register_all_jsb_Cocos2dxFox_auto);
sc->start();
##4.1 インストールの計測
初回起動のインストール計測を実装することで、広告の効果測定を行うことができます。初回起動時に、ブラウザを起動し、広告クリック時に付与されたCookieの情報を照合することで、成果の計測を行います。
初回起動時にブラウザを起動するために、AppDelegate:applicationDidFinishLaunching:メソッド等、アプリケーションの起動時に必ず呼ばれる箇所に効果測定用の処理を追加します。
ヘッダファイルをインクルード
#include "Cocos2dxFox.h"
成果通知のコードをJavaScript上に記述
FoxPlugin::sendConversion(“default”);
sendConversionメソッドの引数には、通常は上記の通り"default"という文字列をそのまま指定してください。
また、URLスキーム経由の起動を計測するために、URLスキームが設定されている全てのActivityのonResume()にsendConversionWithUrlSchemeメソッドを実装します。
クラスをインポート
import jp.appAdForce.android.cocos2dx.Cocos2dxAdManager;
アプリケーション起動時の起動計測(MainActivityクラスへの実装例)
public class MainActivity extends Cocos2dxActivity {
@Override
protected void onResume() {
super.onResume();
Cocos2dxAdManager.sendConversionWithUrlScheme(this);
}
}
URLスキームで起動されるActivityのlaunchModeが"singleTask"または"singleInstance"の場合は、URLスキーム経由でパラメータを受け取るためにonNewIntentメソッドをoverrideし、以下のようにsetIntentメソッドをコールしてください。
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
}
#5 LTV計測の実装
LTV計測により、広告流入別の課金金額や入会数などを計測することができます。計測のために、任意の地点にLTV成果通信を行うコードを追加します。
ソースの編集は、成果が上がった後に実行されるスクリプトに処理を記述します。例えば、会員登録やアプリ内課金後の課金計測では、登録・課金処理実行後のコールバック内にLTV計測処理を記述します。
成果がアプリ内部で発生する場合、成果処理部に以下のように記述してください。 LTV成果の計測のコードをJavaScript上に記述
cc.FoxPlugin.sendLtv(成果地点ID);
成果地点ID(必須):管理者より連絡します。その値を入力してください。
#6 アクセス解析
アクセス解析を導入することで、自然流入・広告流入別の起動数、アクティブユーザー数(DAU/MAU)や継続率を計測することができます。アクセス解析では、アプリケーションが起動、もしくはバックグラウンドから復帰する際にセッション計測を行うコードを追加します。不要の場合には、本項目の実装を省略できます。
####iPhone プロジェクト iPhoneの場合、以下の設定が必要です。
アプリ起動地点となるAppDelegate.cppのapplicationDidFinishLaunchingおよびapplicationWillEnterForegroundの両方に、以下のように記述してください。
FoxPlugin::sendStartSession();
####Android プロジェクト Androidの場合、以下の設定が必要です。
アプリケーションの起動及び、バックグラウンドからの復帰を計測するために、ActivityのonResume()にコードを追加します。
クラスをインポート
import jp.appAdForce.android.AnalyticsManager;
アプリケーション起動時の起動計測(MainActivityクラスへの実装例)
public class MainActivity extends Activity {
@Override
protected void onResume() {
super.onResume();
AnalyticsManager.sendStartSession(this);
}
}
<JavaのActivity上でonResume()が使えない場合>
アプリ起動地点となるAppDelegate.cppのapplicationDidFinishLaunchingおよび、applicationWillEnterForeground 内で以下のように実行します。
#include “Cocos2dxFox.h”
FoxPlugin::sendStartSession();
※アプリケーションがバックグラウンドから復帰した際に、そのActivityに起動計測の実装がされていない場合など、正確なアクティブユーザー数が計測できなくなります。
※JavaのonResume()とC++のapplicationWillEnterForegroundの両方でsendStartSession()が実行されていた場合、1ユーザーから2重にアプリ起動情報が送信されるため必ずどちらかで実装してください。
#7 AndroidプロジェクトでProGuardを利用する場合
ProGuardを利用してF.O.X SDKを導入したアプリケーションを難読化する際に、警告が発生する場合があります。その際には、警告を回避するため以下の設定を追加してください。
-libraryjars libs/AppAdForce.jar
-keep interface jp.appAdForce.** { *; }
-keep class jp.appAdForce.** { *; }
-keep class jp.co.dimage.** { *; }
-keep class com.google.android.gms.ads.identifier.* { *; }
-dontwarn jp.appAdForce.android.ane.AppAdForceContext
-dontwarn jp.appAdForce.android.ane.AppAdForceExtension
-dontwarn com.adobe.fre.FREContext
-dontwarn com.adobe.fre.FREExtension
-dontwarn com.adobe.fre.FREFunction
-dontwarn com.adobe.fre.FREObject
-dontwarn com.ansca.**
-dontwarn com.naef.jnlua.**
※GooglePlayServiceSDKを導入されている場合、以下のページで記載されているkeep指定が記述されているかご確認ください。
Google Play Services導入時のProguard対応
#8 疎通テストの実施
マーケットへの申請までに、Force Operation Xを導入した状態で十分にテストを行い、アプリケーションの動作に問題がないことを確認してください。
効果測定テストの手順については、管理者よりご連絡いたしますのでその手順に従いテストを実施してください。
成果のための通信は、起動後に一度のみ行わるため、二回目以降の起動では通信が発生しません。続けて効果測定テストを行いたい場合には、アプリケーションをアンインストールし、再度インストールから行ってください。
##8.1 テストの手順
SDKが正常に導入されていることを確認するためのテスト手順は以下の通りです。 ProGuardを掛けてリリースを行う場合、必ずProGuardを掛けた状態でテストの実施をお願い致します。
- テスト用端末にテストアプリがインストールされている場合には、アンインストール
- テスト用端末の「設定」→「Safari」→「Cookieとデータを消去」によりCookieを削除
- 弊社より発行したテスト用URLをクリック
※ テスト用URLは必ずOSに設定されているデフォルトブラウザでリクエストされるようにしてください。 デフォルトブラウザとは、URLをクリックした際に自動で起動するブラウザのことです。 メールアプリやQRコードアプリを利用され、そのアプリ内WebViewで遷移した場合には計測できません。 - マーケットへリダイレクト
※ テストURLの場合には、遷移先がなくエラーダイアログが表示される場合がありますが、問題ありません。 - テスト用端末にテストアプリをインストール
- アプリを起動、ブラウザが起動
※ ここでブラウザが起動しない場合には、正常に設定が行われていません。 設定を見直していただき、問題が見当たらない場合には弊社へご連絡ください。 - LTV地点まで画面遷移
- アプリを終了し、バックグラウンドからも削除
- 再度アプリを起動
- 弊社へ3,6,7,9の時間をお伝えください。正常に計測が行われているか確認致します。
- 弊社側の確認にて問題がなければテスト完了となります。
#9 最後に必ずご確認ください(これまで発生したトラブル集)
###URLスキームの設定がされずリリースされたためブラウザからアプリに遷移ができない
Cookie計測を行いブラウザを起動した場合には、URLスキームを利用してアプリケーションに遷移します。
この際、独自のURLスキームが設定されている必要があります。
###URLスキームに大文字が含まれ、正常にアプリに遷移されない
環境によって、URLスキームの大文字小文字が判別されないことにより正常にURLスキームの遷移が行えない場合があります。
URLスキームは全て小文字で設定を行ってください。
###F.O.Xで確認できるインストール数の値がマーケットの数字より大きい
F.O.Xではいくつかの方式を組み合わせて端末の重複インストール検知を行っています。重複検知が行えない設定では、同一端末で再インストールされる度にF.O.Xは新規のインストールと判定してしまいます。重複検知の精度を向上するために、以下の設定を行ってください。


