Force Operation X (以下F.O.X)は、スマートフォンにおける広告効果最適化のためのトータルソリューションプラットフォームです。アプリケーションのダウンロード、ウェブ上でのユーザーアクションの計測はもちろん、スマートフォンユーザーの行動特性に基づいた独自の効果計測基準の元、企業のプロモーションにおける費用対効果を最大化することができます。
本ドキュメントでは、スマートフォンアプリケーションにおける広告効果最大化のためのF.O.X SDK導入手順について説明します。
F.O.X SDKをアプリケーションに導入することで、以下の機能を実現します。
- インストール計測
広告流入別にインストール数を計測することができます。
- LTV計測
流入元広告別にLife Time Valueを計測します。主な成果地点としては、会員登録、チュートリアル突破、課金などがあります。各広告別に登録率、課金率や課金額などを計測することができます。
- アクセス解析
自然流入と広告流入のインストール比較。アプリケーションの起動数やユニークユーザー数(DAU/MAU)。継続率等を計測することができます。
本ドキュメントでは、Force Operation X SDK Airエクステンションの導入手順について説明します。Force Operation X SDK AirエクステンションはiOSおよびAndroidに対応しています。
Force Operation X SDKでは、インストールおよびLTVの計測、アクセス解析を行うことができます。
SDKの実装後は、アプリケーションの動作及び効果測定の結果に問題のないことを確認した後にマーケットへの申請を行ってください。効果測定のテスト手順については、Force Operation X管理者よりご連絡いたします。
F.O.X SDKをアプリケーションに導入することで、以下の機能を実現します。
処理 | 必須 | 概要 |
---|---|---|
インストール計測 | 必須 | 起動時はブラウザが起動し、Cookie計測により広告効果測定を行います。 コンバージョン数、CVRなどを測定することができます。 メソッド名:sendConversion |
LTV計測 | オプション | 任意の成果地点で成果通知を行い、広告別の課金数や入会数の計測を行います。 課金金額、退会数などを測定することができます。 メソッド名:sendLtv |
アクセス解析 | オプション | アプリの起動時およびバックグラウンドからの復帰時の起動計測を行います。 起動数、アクティブユーザー数(DAU)、継続率などを測定することができます。 メソッド名:sendStartSession |
AppAdForce_AIR_Extension_.zipを展開すると以下2つのファイルが存在します。F.O.X SDKの動作にはGoogle Play Servicesが必要になり、通常はあらかじめGoogle Play Servicesが組み込まれたwithGooglePlayServicesをご利用ください。
既にGoogle Play Servicesを利用されているか、もしくは別バージョンのGoogle Play Servicesをご利用されたい場合にはwithoutGooglePlayServicesを選択し、ご自身でGoogle Play Servicesの導入を行う必要があります。 また、Android版をビルドせずiOSのみビルドする際はGoogle Play Servicesは不要です。
ファイル | 概要 |
---|---|
withGooglePlayServices/AppAdForceExtension.ane | Google Play Services, version 4.4 (4452000) ライブラリを内包しています。 |
withoutGooglePlayServices/AppAdForceExtension.ane | Google Play Servicesライブラリを内包していません。ご自身でGoogle Play Servicesを導入する必要があります。 |
- Google Play Services非内包版:Adobe AIR SDK 3.5 以上
- Google Play Services内包版:Adobe AIR SDK 4.0 以上
Adobe AIR 4.0未満ではGoogle Play Servicesが導入できず、Google広告IDなど一部計測機能が利用できなくなります。
- Flash Builderを起動して、エクステンションを組込むFlexモバイルプロジェクトを選択する。
- AppAdForceExtension.aneをプロジェクト配下に配置する。
ここではlibsに配置していますが指定はありません。
- Flexプロジェクト上で、右クリック→「プロパティー」を選択する。
- 左側に見えるツリーから「Flexビルドパス」を選択する。
- 右側のメイン画面にある「ネイティブエクステンション」タブを選択する。
- ANEを追加ボタンを押下する。
- 「AppAdForceExtension.ane」を選択する。
- AIRアプリケーション記述子を更新にチェックを付けたままOKボタンを押下する。
- メイン画面に「AppAdForceExtension.ane」が表示されていることを確認する。
※ OSによって手順が異なります。
- 左側に見えるツリーから「Flexビルドのパッケージ化」>「Apple iOS」を選択する。
- 右側のメイン画面にある「ネイティブエクステンション」タブを選択する。
- パッケージにチェックを付けてOKボタンを押下する
- 左側に見えるツリーから「Flexビルドのパッケージ化」>「Google Android」を選択する。
- 右側のメイン画面にある「ネイティブエクステンション」タブを選択する。
- パッケージにチェックを付けてOKボタンを押下する
コードの編集は、通常 メインMXMLアプリケーションに行います。 メインMXMLアプリケーションとは、アプリ起動時に、一番最初に表示される画面になります。
-
jp.appAdForce.AdLtvManagerクラスをインポートする。
import jp.appAdForce.AdLtvManager;
-
AppAdForceをインスタンス宣言する。
private var ad:AdLtvManager = new AdLtvManager();
-
成果計測用のコードをメインMXMLアプリケーションに追加します。
※ ここでは初期処理イベントハンドラで計測する方法を記述します。<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" applicationComplete="init(event)"> <fx:Script><![CDATA[ import jp.appAdForce.AdLtvManager; private var ad:AdLtvManager = new AdLtvManager(); import mx.events.FlexEvent; protected function init(event:FlexEvent):void { ad.sendConversionWithStartPage("http://○○○○"); }
sendConversionWithStartPage関数の引数はURLになります。 アプリ起動時に表示させたいページのURLをご指定ください。 ※ページのご用意が無い場合は、ページの作成をお願い致します。
ブラウザに表示するページが特に無い 場合は、以下のように文字列”default”を渡してください。
ad.sendConversionWithStartPage("default");
※ デフォルトのページはアプリを特定せず汎用的にご使用いただくため、デザイン・内容ともに非常にシンプルなものになっております。各広告主様に共用いただく形となるため、自由な変更も行えません。 広告主様で独自に作成されましたオリジナルページをご使用いただくことを推奨いたします。
#####【 起動時以外で成果計測を行いたい場合 】 起動時以外のタイミングでブラウザを開き、そのタイミングで成果計測を行いたい場合には 任意の場所(ボタン押下のコールバックなど)に、以下のように記述してください。
ad.sendConversionWithStartPage("http://○○○○");
※OSによって手順が異なります。
※ここではIDEにFlashを使用して説明いたします。
-
Flashを起動して、「Air for iOS」プロジェクトを選択する。
-
AppAdForceExtension_vX.X.X.aneをライブラリパスに配置する。
・「+」を押下し新規パスを追加する。
・ネイティブ拡張ボタンを押下する。 -
「ファイル」→「パブリッシュ」を選択し証明書、プロビジョニングプロファイルを環境に合わせて設定する。
-
パブリッシュボタンを押下しパブリッシュを実行
コードの編集は、ActionScriptに行います。
-
jp.appAdForce.AdLtvManagerクラスをインポートする。
import jp.appAdForce.AdLtvManager;
-
AppAdForceをインスタンス宣言する。
private var ad:AdLtvManager = new AdLtvManager();
3. 成果計測用のソースをアプリケーションに追加する
※ここではマウスクリックイベントに埋め込んだサンプルを紹介します。
sendConversionWithStartPage関数の引数はURLになります。 アプリ起動時に表示させたいページのURLをご指定ください。 ※ページのご用意が無い場合は、ページの作成をお願い致します。
ブラウザに表示するページが特に無い場合は、以下のように文字列”default”を渡してください。
※ デフォルトのページはアプリを特定せず汎用的にご使用いただくため、デザイン・内容ともに非常にシンプルなものになっております。各広告主様に共用いただく形となるため、自由な変更も行えません。
広告主様で独自に作成されましたオリジナルページをご使用いただくことを推奨いたします。
起動時以外のタイミングでブラウザを開き、そのタイミングで成果計測を行いたい場合には 任意の場所(ボタン押下のコールバックなど)に、以下のように記述してください。
ad.sendConversionWithStartPage("http://○○○○");
OSによって手順が異なります。
Force Operation X内でのLTVとは、“アプリDL後のアクション”を指します。
主にアプリ内課金、資料請求、会員登録、商品購入など広告におけるCV地点になりますが、“ユーザー”のアクション地点であれば、自由にご設定頂くことが可能です。
(アプリ起動時、チュートリアル完了、特定ページ到達など)
複数地点での登録が可能になります。
事前にForce Operation X担当者までご希望をご連絡下さいませ。
LTV計測により、広告流入別の課金金額や入会数などを計測することができます。計測のために、任意の地点にLTV成果通信を行うコードを追加します。
コードの編集は、通常、成果が上がった後に実行されるMXMLアプリケーションに処理を記述します。例えば、会員登録やアプリ内課金後の課金計測では、登録・課金処理実行後のコールバック内にLTV計測処理を記述します。
-
jp.appAdForce.AdLtvManagerクラスをインポート
import jp.appAdForce.AdLtvManager;
-
LTV計測処理を行うオブジェクトの生成
AdLtvManager ad = new AdLtvManager()
-
計測種類に応じた設定を行う
以下、計測種類に応じて組み込んでください。
######<アプリ内でLTV計測を行う>
成果がアプリ内部で発生する場合、成果処理部に以下のように記述してください。
ad.sendLtv(成果地点ID);
成果地点ID(必須):管理者より連絡します。その値を入力してください。
######<アプリ内でLTV計測を行う(広告主端末IDあり)>
アプリ内部の成果に、広告主端末ID(会員IDなど)を含める事ができ、これを基準とした成果計測が行えます。
以下のように記述してください。
ad.sendLtvWithAdid(成果地点ID, “広告主端末ID”);
成果地点ID(必須):管理者より連絡します。その値を入力してください。 広告主端末ID(オプション):広告主様が管理しているユニークな識別子(会員IDなど)です。
######【アプリ内計測時(A/B)に設定する事が可能なオプション】
アプリ内計測時には、下記パラメータもオプションとして設定する事が可能です。 <オプションの設定例>
ad.addParameter(“パラメータ名”, “値”);
▼ オプション
パラメータ名 | 概要 |
---|---|
AdLtvManager.PARAM_SKU | Stock Keeping Unit(商品管理コード) (半角英数字32文字まで) 商品の在庫管理する際に使用してください |
AdLtvManager.PARAM_PRICE | Price (整数値 日本円) 売上額を管理する際に使用してください。 |
任意でパラメータを加える事も可能です。 | Currency (半角英字3文字の通貨コード) 通貨別で課金額を集計する際に使用してください。 通貨が設定されていない場合、PriceをJPY(日本円)として扱います。 |
<オプションの使用例>
ad.addParameter (AdLtvManager.PARAM_SKU, “ABC1234”);
ad.addParameter (AdLtvManager.PARAM_PRICE, “2000”);
ad.addParameter (“my_param”, “ABC”);
ad.sendLtvWithAdid (70, “Taro”);
動作テストを実施する際は、インストール計測(インストールからアプリ起動時の成果計測)実行後、アプリ上で成果地点に到達してください。インストール計測において成果がない場合にはLTV計測が行われません。
・広告効果測定ツール『Force Operation X』(以下F.O.X)のアドオン機能
・F.O.X SDKの最新版をインストールすることにより、F.O.Xの広告効果計測に加え、広告流入別に「アクティブユーザー数」や「課金ユーザー数」、「イベント実行数」などを分析することができ、インストール数だけではなく、アプリケーションを利用するユーザーの質や動向に着目した広告運用が可能となります。
・F.O.X SDK v2.8以降でアクセス解析の機能を利用できます。
######※ 本SDKはマルチスレッドに対応していません。必ず全てのAPIをメインスレッドから実行するようにしてください。
アクセス解析を行うには、ソースの編集が必要になります。
全体の流れは、以下のようになります。
ソースの編集
- プジェクとにライブラリを追加
- app.xmlにANALYTICS_APP_KEYを追加(Android)
AppAdForce.plistにANALYTICS_APP_KEYを追加(iOS) - ソースコードを編集し、セッション開始のコードを追加
動作確認
コードの編集は、通常全てのMXMLアプリケーションに行います。
-
jp.appAdForce.AnalyticsManagerクラスをインポートする。
import jp.appAdForce.analyticsManager;
-
AnalyticsManagerをインスタンス宣言する。
private var analytics: AnalyticsManager = new AnalyticsManager ();
Flexプロジェクトに組み込まれたAIR アプリケーション記述子を編集します。 AIR アプリケーション記述子とはMXMLアプリケーションに対応する○○○-app.xmlの事です。
・<application> ~ </application>内に、以下の設定を追加する。
<meta-data android:name="ANALYTICS_APP_KEY" android:value="***" />
ANALYTICS_APP_KEY ⇒ Force Operation X管理者より連絡します。
AppAdForce.plistを編集します。
Force Operation Xの導入時に作成したAppAdForce.plistを選択し、次のKeyおよびValueを追加します。
# | キー名 | タイプ | 値 |
---|---|---|---|
1 | ANALYTICS_APP_KEY | String | Force Operation X管理者より連絡いたしますので、その値を入力してください |
2 | ANALYTICS_QUEUE_INTERVAL | Number | (オプション) イベントログの送信間隔(秒)。 0でイベント発生時に即時送信。 設定しなかった場合にはイベント発生時、データはキューに保持され、デフォルト値の60秒ごとに送信します。 トラッキング地点を多く設定し、イベントが頻繁に発生する場合には、送信間隔を多めにすることでイベントログが定期的に一度の通信でまとめて送られるため、頻繁な通信を抑制できます。 |
アプリケーション起動時やバックグラウンド状態からの復帰時等、セッションの開始を計測します。 広告ごとのアクティブユーザー数、起動時間、リテンション等を分析できます。
API | 概要 |
---|---|
sendStartSession()void | アプリケーションの起動やバックグラウンドからの復帰を計測 |
######※mxmlファイルを複数利用している場合はmxmlファイル毎に以下のような計測処理の記述が必要です。 <実装サンプル>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
applicationComplete="foxInitialize(event)">
<fx:Script><![CDATA[
import jp.appAdForce.analyticsManager;
private var analytics: AnalyticsManager = new AnalyticsManager ();
private function foxInitialize(event:Event):void {
//起動計測用リスナー設定
NativeApplication.nativeApplication.addEventListener(InvokeEvent.INVOKE,
function onInvoke(event:Event):void {
analytics.sendStartSession(); //起動計測
});
}
・・・省略
アプリ内課金を利用していない売上をトラッキングするために、各パラメータを明示的に指定できます。
本機能では広告経由および自然流入経由での売上をそれぞれ計測可能です。
※広告経由の売上のみを計測したい場合はLTV計測で計測可能ですので本機能の実装は必要ありません。
※主に自然流入経由の売上を計測したい場合などに本機能を実装してください。
パラメータ | タイプ | 最大長 | 必須 | 概要 |
---|---|---|---|---|
eventName | String | 255 | 必須 | トラッキングを行うイベントを識別できる任意の名前を設定します。 イベント名は自由に設定可能です。 イベント単位でグルーピングされ、それぞれのイベントごとに集計を行うことができます。 |
action | String | 255 | オプション | イベントに属するアクション名を設定します。 アクション名は自由に設定可能です。 各イベントをドリルダウンすることで、アクションごとに集計を行うことができます。 特に指定しない場合は””を設定してください。 |
label | String | 255 | オプション | アクションに属するラベル名を設定します。 ラベル名は自由に設定可能です。 各アクションをドリルダウンすることで、ラベルごとに集計を行うことができます。 特に指定しない場合は””を設定してください。 |
orderID | String | 255 | オプション | 注文番号。特に指定いない場合は""を設定してください。 |
sku | String | 255 | オプション | 商品コード。特に指定しない場合は””を設定してください。 |
itemName | String | 255 | 必須 | 商品名 |
price | double | 必須 | 商品単価 | |
quantity | int | 必須 | 購入数 | |
currency | String | オプション | 通貨コード。指定しなかった場合は"JPY" |
トラッキングを行いたい任意の課金地点を計測することで、イベント名をキーにした売上を集計することができます。
以下のように記述してください。
analytics.sendEvent(eventName, action, label, orderId, sku, itemName, price, quantity, currency);
リエンゲージメント広告経由での起動を計測するための実装を説明します。
API | 概要 |
---|---|
sendReengagementConversion(String urlScheme):void | リエンゲージメント広告経由で起動したユーザーの成果を計測 |
ソースの編集は、すべてのMXMLアプリケーションに行います。
-
jp.appAdForce.AdLtvManagerクラスをインポートする。
import jp.appAdForce.AdLtvManager;
-
AppAdForceをインスタンス宣言する。
private var ad:AdLtvManager = new AdLtvManager();
-
アプリケーションの起動イベントリスナー内でsendReengagementConversionメソッドを実装します。
実装サンプル
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" applicationComplete="foxInitialize(event)">
<fx:Script><![CDATA[
import jp.appAdForce.AdLtvManager;
private var ad: AdLtvManager = new AdLtvManager ();
private function foxInitialize(event:Event):void {
//リエンゲージメント計測用リスナー設定
NativeApplication.nativeApplication.addEventListener(InvokeEvent.INVOKE,
function onInvoke(event:InvokeEvent):void {
if(event.arguments.length > 0) {
//起動計測
ad.sendReengagementConversion(event.arguments[0].toString());
}
});
}
・・・省略
マーケットへの申請までに、Force Operation Xを導入した状態で十分にテストを行い、アプリケーションの動作に問題がないことを確認してください。
効果測定テストの手順については、管理者よりご連絡いたしますのでその手順に従いテストを実施してください。
成果のための通信は、起動後に一度のみ行わるため、二回目以降の起動では通信が発生しません。続けて効果測定テストを行いたい場合には、アプリケーションをアンインストールし、再度インストールから行ってください。
##7.1 テストの手順
SDKが正常に導入されていることを確認するためのテスト手順は以下の通りです。 ProGuardを掛けてリリースを行う場合、必ずProGuardを掛けた状態でテストの実施をお願い致します。
- テスト用端末にテストアプリがインストールされている場合には、アンインストール
- テスト用端末の「設定」→「Safari」→「Cookieとデータを消去」によりCookieを削除
- 弊社より発行したテスト用URLをクリック
※ テスト用URLは必ずOSに設定されているデフォルトブラウザでリクエストされるようにしてください。 デフォルトブラウザとは、URLをクリックした際に自動で起動するブラウザのことです。 メールアプリやQRコードアプリを利用され、そのアプリ内WebViewで遷移した場合には計測できません。 - マーケットへリダイレクト
※ テストURLの場合には、遷移先がなくエラーダイアログが表示される場合がありますが、問題ありません。 - テスト用端末にテストアプリをインストール
- アプリを起動、ブラウザが起動
※ ここでブラウザが起動しない場合には、正常に設定が行われていません。 設定を見直していただき、問題が見当たらない場合には弊社へご連絡ください。 - LTV地点まで画面遷移
- アプリを終了し、バックグラウンドからも削除
- 再度アプリを起動
- 弊社へ3,6,7,9の時間をお伝えください。正常に計測が行われているか確認致します。
- 弊社側の確認にて問題がなければテスト完了となります。
#8 最後に必ずご確認ください(これまで発生したトラブル集)
###URLスキームの設定がされずリリースされたためブラウザからアプリに遷移ができない
Cookie計測を行いブラウザを起動した場合には、URLスキームを利用してアプリケーションに遷移します。
この際、独自のURLスキームが設定されている必要があります。
###URLスキームに大文字が含まれ、正常にアプリに遷移されない
環境によって、URLスキームの大文字小文字が判別されないことにより正常にURLスキームの遷移が行えない場合があります。
URLスキームは全て小文字で設定を行ってください。
###F.O.Xで確認できるインストール数の値がマーケットの数字より大きい
F.O.Xではいくつかの方式を組み合わせて端末の重複インストール検知を行っています。重複検知が行えない設定では、同一端末で再インストールされる度にF.O.Xは新規のインストールと判定してしまいます。重複検知の精度を向上するために、以下の設定を行ってください。