AppsFlyer SDKの実装 - Unity

Official_unity_logo.png

現在のUnity SDKバージョン:  v4.16.4
 Android SDK v4.8.11、 iOS SDK v4.8.4対応

1. 概要

AppsFlyerのSDKは、Android、iOS、Windows Phone、その他多くのモバイル開発プラットフォーム向けにモバイルアプリのインストールやイベントトラッキング機能を提供します。

インストール、アップデート、セッションを計測できます。また、追加でインストール後イベント(アプリ内購入、ゲームレベル等)を計測し、ROIとユーザーエンゲージメントレベルも評価できます。

Unityプラットフォームで開発されるモバイルアプリは、AppsFlyerのSDKと連携し、AndroidとiOSの両方で生成されるアプリを計測することができます。以下のガイドでは、iOSとAndroidのアプリに関して、AppsFlyerのSDKをUnityのコードと連携させる方法について詳しく説明します。

 

AppsFlyerは、Unityバージョン5以上との連携をサポートしています。

 重要!

Google Play Install Referrer APIは、Unityプラグインv.4.16.0からサポートが開始されました。新しいReferrer APIを使用するには、プラグインをバージョン4.16.0以降に更新してください。

2. クイックスタート

2.1 AppsFlyerのUnityプラグインのダウンロード

プラグインはGithubのこちらをご覧ください:https://github.com/AppsFlyerSDK/Unity

以下はAppsFlyerのUnityプラグイン使用に関する連携手順の説明です。

2.2 プラグインのインストール

以下はAppsFlyerのプラグインに関する連携手順の説明です。

  1. AppsFlyerUnityPlugin.unitypackageをUnityプロジェクトにインポートします。
  2. アセット(Assets)」>>「パッケージのインポート(Import Package)」>>「カスタムパッケージ(Custom Package)」に移動します。
  3. ファイル「AppsFlyerUnityPlugin.unitypackage」を選択します。

2.3 AndroidとiOSの必須セットアップ

Androidのセットアップ


AFレシーバーとパーミッションのAndroidManifest.xmlへの設定

// レシーバーは<application>タグ内に配置する必要がある
<receiver android:name="com.appsflyer.MultipleInstallBroadcastReceiver" android:exported="true">
<intent-filter><br>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
//Mandatory permission:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />


必須パーミッションの設定

AndroidManifest.xmlには、次のパーミッションが含まれます。

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- Optional : -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />


AndroidManifest.xmlのBroadcastReceiverの設定

インストールリファラーブロードキャストレシーバーの実装には、次の2つのオプションがあります。

単体のブロードキャストレシーバーの使用複数のブロードキャストレシーバーの使用

AndroidManifest.xmlのINSTALL_REFERRERをリッスンするレシーバーがない場合、次のレシーバーをapplicationタグ内に追加します。

<receiver android:name="com.appsflyer.SingleInstallBroadcastReceiver" android:exported="true">
    <intent-filter>
         <action android:name="com.android.vending.INSTALL_REFERRER" />
     </intent-filter>
</receiver>

iOSのセットアップ


Linked Frameworks and Libraries


xCode向けにUnityでプロジェクトを構築後、フレームワークを以前追加しなかった場合は、Security.FrameworkをxCodeのLinked Frameworks and Librariesに追加する必要があります。


iOS Apple Search Ads

以下を追加します。

AdSupport.framework
AppsFlyerは、このフレームワークが含まれている場合に限りIDFAを収集します。このフレームワークを追加しない場合、Facebook、Twitter、その他の大半の広告ネットワークを計測できないことになります。
iAd.framework

Apple Search Adsの計測に必須であるため、このフレームワークをアプリのプロジェクトに追加することを強くお勧めします。

3. SDKの初期化

Start / Initメソッド内で、iTunesやGoogle Playで使用するAppsFlyer Dev Key と一意のアプリIDをセットします。 ここでのiOSアプリIDは、"id"接頭辞を付けずに数字のみで設定する必要があります。

次のコードを追加します。

Unityプララグイン4.15.1以上Unityプラグイン4.14.3以下
void Start () {
/* Mandatory - set your AppsFlyer’s Developer key. */
AppsFlyer.setAppsFlyerKey ("YOUR_APPSFLYER_DEV_KEY_HERE");
/* For detailed logging */
/* AppsFlyer.setIsDebug (true); */
#if UNITY_IOS
/* Mandatory - set your apple app ID
NOTE: You should enter the number only and not the "ID" prefix */
AppsFlyer.setAppID ("YOUR_APP_ID_HERE");
AppsFlyer.trackAppLaunch ();
#elif UNITY_ANDROID
/* Mandatory - set your Android package name */
AppsFlyer.setAppID ("YOUR_ANDROID_PACKAGE_NAME_HERE");
/* For getting the conversion data in Android, you need to add the "AppsFlyerTrackerCallbacks" listener.*/
AppsFlyer.init ("YOUR_DEV_KEY","AppsFlyerTrackerCallbacks");
#endif
}

 重要!

  • Androidでは、AppsFlyer.inittrackAppLaunchを呼び出します。そのため、UnityプラグインのAndroidビルドでは、trackAppLaunchを呼び出さないでください。
  • iOSでは、コンバージョンデータの応答は、AppsFlyerTrackerCallbacks.csクラスでトリガーされます。

4. アプリ内イベントのトラッキング

アプリ内イベントにより、アプリ内の動作に関するインサイトを得ることができます。ROI(投資収益率)やLTV(顧客生涯価値)を計測するために、時間を取って計測するイベントを定義することをお勧めします。

アプリ内イベントの計測は、イベント名と値パラメーターを使用してtrackEventを呼び出すことで実行されます。詳細については、「アプリ内イベント」ドキュメントを参照してください。

 

アプリ内イベント名は45文字以下である必要があります。イベント名が45文字を超える場合は管理画面に表示されず、ローデータ、Pull API、Push APIにのみ表示されます。


イベントトラッキングの例:

System.Collections.Generic.Dictionary<string, string> purchaseEvent = new   
System.Collections.Generic.Dictionary<string, string> ();
purchaseEvent.Add ("af_currency", "USD");
purchaseEvent.Add ("af_revenue", "0.99");
purchaseEvent.Add ("af_quantity", "1");
AppsFlyer.trackRichEvent ("af_purchase", purchaseEvent);

 

AppsFlyerでは、Unity SDKバージョン4.15.1以降で、アプリ内イベント、他のSDK APIで、英語以外の文字をサポートしています。

5. ディープリンクの計測

ディープリンクについては、オペレーティングシステムごとの手順に沿って操作します。

Android iOS
次の内容をマニフェストファイルに追加します。

<activity android:name="com.appsflyer.GetDeepLinkingActivity" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="your_scheme" />
</intent-filter>
</activity>

6. 収益の計測

AFInAppEvents.REVENUEイベントパラメータを使用し、収益をアプリ内イベントの一部としてカウントします。正負を問わず、あらゆる数値を入力できます。

 

AFInAppEvents.REVENUEaf_revenueの使用と同等)は、AppsFlyerのローデータと管理画面で真の収益としてカウントされる唯一のイベントパラメータです。詳細については、こちらをクリックしてください。

 

課金イベント
AppsFlyer.trackRichEvent(AFInAppEvents.LEVEL_ACHIEVED, new Dictionary<string, string>(){
           {AFInAppEvents.CONTENT_ID, "1234567"},
           {AFInAppEvents.CONTENT_TYPE, "category_a"},
            {AFInAppEvents.REVENUE, "1.99"},
            {AFInAppEvents.CURRENCY, "USD"}
       });

7. コンバージョンデータの取得

AppsFlyerでは、直接SDKレベルでユーザーのコンバージョンデータにリアルタイムでアクセスできます。これによって、ユーザーが新しくアプリをインストールした後、初めてアプリを開くと表示されるランディングページをカスタマイズすることができます。

AppsFlyerのコンバージョンデータをサーバーからロードするには:

  1. 空のGameObjectを追加します。
  2. プロジェクトに含まれるAppsFlyerTrackerCallbacks.csに添付します(このgameobjectをAppsFlyerTrackerCallbacksと名付ける必要があります)。
Android Unityプラグイン>4.15.1 Android Unityプラグイン<4.14.3iOS
/*Androidでコンバージョンデータを取得するには、このリスナーをinit() methodに追加する必要がある。*/
AppsFlyer.init ("YOUR_DEV_KEY","AppsFlyerTrackerCallbacks");


Androidでは、メソッドをAppsFlyerTrackerCallbacks.csから別のクラスに移動し、そのクラスをリスナーで呼び出すことができます。

AppsFlyerTrackerCallbacksに表示されるものとまったく同じメソッドのnamespaceを使用する必要があります。

8. ユーザー識別子

AppsFlyerデバイスIDの取得

AppsFlyerの一意のデバイスIDは、アプリが新しくインストールされるたびに作成されます。AppsFlyerの一意のIDを取得するには、次のAPIを使用します。

public String getAppsFlyerId();


使用例:

string AppsFlyerUID = AppsFlyer.getAppsFlyerId();

顧客ユーザーIDの設定

アプリで使用される通りにユーザーIDを設定します。

ユーザーIDを設定するには、次のメソッドを呼び出します。

AppsFlyer.setCustomerUserID("someId");

 

customerUserIDは、trackAppLaunch/initの前に設定する必要があります。この設定後に報告されるイベントにのみ関連付けられるため、顧客ユーザーIDはできる限り早く設定することをお勧めします。また、顧客ユーザーIDは、MixpanelSwrveなどのアナリティクスプラットフォームとの連携を完了させるためにも利用できます。

顧客ユーザーIDの詳細については、こちらをクリックしてくだい。

ユーザーメールの設定

現在、Unityでは使用できません。

Google Advertising ID

SDKバージョン4.8.0以降、AppsFlyerはgoogle_advertising_idを自動的に収集します。Google Advertising IDを収集する要件は、バージョン4.7.X以前のSDKにのみ関連します。

IMEIとAndroid ID

デフォルトでは、OSバージョンがKitKat(4.4)より新しく、デバイスにGoogle Play Servicesが含まれている場合( Unity SDK バージョン 4.16.4以前でGoogle Play Servicesが必要な特定のアプリ)、IMEIとAndroid IDはSDKによって収集されません。 

これらのIDをAppsFlyerに明示的に送信するには、開発者は以下のAPIを使用することができます。

AppsFlyer.setAndroidIdData(string)
AppsFlyer.setImeiData(string)

アプリにGoogle Play Servicesが含まれていない場合、IMEIとAndroid IDは、SDKによって収集されます。ただし、 Google Play Servicesを使用したアプリの場合、IMEIの収集がGoogle Playのポリシーに違反するため、収集を行わないようにしてください。

開発者は、これらのAPIを使用することで、IMEIとAndroid IDの収集をオプトアウトすることができます。

AppsFlyer.setCollectAndroidID(bool) 
AppsFlyer.setCollectIMEI(bool)

 警告

適切なアトリビューションには、少なくとも一つのデバイス識別子、GAID、Android IDまたはIMEIを収集する必要があります。

IDFAとIDFV

アプリにAdSupport.frameworkが含まれる場合、AppsFlyerではIDFA(広告主用のID)とIDFV(ベンダー用のID)を自動的に収集します。

9. オプション機能

アンインストールの計測

アンインストールするには、オペレーティングシステムごとの手順に沿って操作します。

Android - Firebase Android - GCM iOS
1. Unity Firebase SDKをhttps://firebase.google.com/docs/unity/setupからダウンロードします。 
2. FirebaseMessaging.unitypackageをプロジェクトにインポートします。
3. (Firebaseコンソールで取得した)プロジェクトにgoogle-services.jsonをインポートします

 

マニフェストレシーバーは、Unity Firebase SDKによって自動的に追加されます。


4. AppsFlyerコードを処理するUnityクラスで以下を追加します。
using Firebase.Messaging;
using Firebase.Unity;

5.  Start()メソッドに追加します。
Firebase.Messaging.FirebaseMessaging.TokenReceived += OnTokenReceived;

6.  次のメソッドを追加します。
public void OnTokenReceived
(object sender, Firebase.Messaging.TokenReceivedEventArgs token) { AppsFlyer.updateServerUninstallToken (token.Token); }

 

 警告

Unity Firebase SDKを実装するユーザーは、次のenableUninsatallTracking(“SenderID”) へのメソッド呼び出しを追加しないでください。これは、Firebase SDKにより、以前追加したgoogle-services.jsonファイルから送信元IDが取得されるためです。このメソッドを追加すると、Androidのデバッグ警告が表示される場合があります。

プッシュ通知の計測 

AppsFlyerでは、プッシュ通知をリターゲティングキャンペーンの一部として計測することが可能です。

handlePushNotification(Dictionary<string, string> payload)

データペイロードには、関連するキー/値ストリングと共にオブジェクト:afが含まれている必要があります。

\"data\": { \"score\": \"5x1\", \"time\": \"15:10\" , \"af\" : { \"c\" : \"test_campaign\" , \"is_retargeting\" : \"true\" , \"pid\" : \"push_provider_int\" } } }"[with deep-linking] \"data\": { \"score\": \"5x1\", \"time\": \"15:10\", \"click_action\" : \"com.example.someAction\", 
\"af\" : { \"c\" : \"test_campaign\" , \"is_retargeting\" : \"true\" , \"pid\" : \"push_provider_int\" } } }"

 

プッシュ通知のに関する詳細については、こちらをお読みください。

クロスプロモーションの計測 

Unity SDK(またはその他の非ネイティブプラットフォーム)を使用してクロスプロモーショントラッキングを実行するには、こちらを実装します

ユーザー招待の計測

現在、Unityでは使用できません。

通貨コードの設定 

AppsFlyerに送信される各アプリ内イベントの一部として使用できる特定の通貨コードに加えて、以下のAPIを使用して、グローバル通貨コードを設定することができます。グローバル通貨コードは、af_currency

AFInAppEvents.CURRENCY

がアプリ内イベントの一部として送信されない場合に使用されます。

USD(米国ドル)がデフォルト値です。使用可能なISO通貨コードは、こちらで確認することができます。

通貨コードを設定するには、以下のAPIを使用します。

public void setCurrencyCode(String currencyCode);

使用例:

setCurrencyCode(string currencyCode)

アプリ内購入検証

アプリ内購入のレシート検証を行うには、オペレーティングシステムごとの手順に沿って操作します。

Androidの呼び出し リスナーの呼び出し(Androidのみ) iOS
//コールバックを取得する
//AppsFlyer.createValidateInAppListener("AppsFlyerTrackerCallbacks", 
"onInAppBillingSuccess", "onInAppBillingFailure"); AppsFlyer.validateReceipt(stringpublicKey, string purchaseData,
string signature, string price, string currency, Dictionary additionalParametes);

購入検証の応答は、AppsFlyerTrackerCallbacks.csクラスでトリガーされます

ユーザーデータの匿名化

AppsFlyerでは、AppsFlyerアナリティクスで特定のユーザーを匿名化するためのメソッドが用意されています。このメソッドは、最新のプライバシー要件とFacebookのデータおよびプライバシーに関するポリシーに準拠しています。デフォルトではNOに設定されているため、匿名化は無効になっています。

ユーザーのインストール、イベント、セッションのトラッキングを明示的に匿名化するには、SDKの初期化中にこのAPIを使用します。

public void setDeviceTrackingDisabled(boolean isDisabled);

使用例:

AppsFlyer.setDeviceTrackingDisabled(true);
トラッキングを再開するには、deviceTrackingDisabledfalseに設定されている)を再度呼び出します。

 警告

ユーザーをオプトアウトすることにより、アトリビューション情報に大きな悪影響があります。
ユーザーの情報を収集することが法的に禁じられている地域でのみ、このオプションを使用してください。

カスタムのセッション間隔

現在、Unityでは使用できません。

ユーティリティ系アプリ向けバックグラウンドセッション

現在、Unityでは使用できません。

ストア外アプリの計測 

 

Google Playがデフォルトのストアです。Google Playのみでアプリを公開する場合、このセクションはスキップしてください。

Google Play以外からのインストールを計測するには、各APKに固有のチャネルやストア名を使用して、アプリのAndroidManifest.xmlでチャネルまたはストアを設定します。CHANNEL値では大文字と小文字を区別します。

<

<meta-data android:name="CHANNEL" android:value="Amazon" />
<meta-data android:name="CHANNEL" android:value="Standalone"/>
<meta-data android:name="CHANNEL" android:value="Verizon" />

 

アプリのセットアップ時にAppsFlyerの管理画面でCHANNEL値を設定する必要があります。

</application>タグの前にmeta-dataタグを配置します。

ストア外アプリのインストールを計測する方法の詳細については、こちらを参照してください。

オプトアウト

いくつかの極端なケースでは、法律とプライバシーの遵守のため、すべてのSDKトラッキングを停止する必要が出てくることがあります。この場合は、isStopTracking APIを使用できます。このAPIが呼び出されると、SDKはサーバーとの通信と動作を停止します。

AppsFlyer.stopTracking(true);

任意のイベントで、同じAPIを呼び出すことにより、SDKを再アクティブ化することができますが、falseを渡す必要があります。

 警告

このユーザーをすべてのトラッキングで完全に無視する場合にのみ、このAPIを使用します。このAPIを使用することにより、レポートとアトリビューションに大きな影響があります。

カスタムデータの追加設定

setAdditionalData APIを使用するには、SegmentAdobe、Urban Airshipなど、複数の外部パートナーのプラットフォームとSDKレベルで連携する必要があります。このAPIは、プラットフォームの連携の記事に、 setAdditionalData APIが必要であると記載されている場合にのみ使用してください。
次に、UnityでsetAdditionalDataを実装するコードの例を示します。

Dictionary<string, string> CustomDataMap = new Dictionary<string, string>();
CustomDataMap.Add("custom_param_1", "value_of_param_1");

AppsFlyer.setAdditionalData(CustomDataMap);

 重要!

AppsFlyer Unity SDKを使用する場合は、次を避けてください。

PlayerPrebs.DeleteAll()

10. SDK実装テスト

連携をテストするためのオペレーティングシステムごとの手順については、「Android SDK実装テスト」または「iOS SDK実装テスト」を参照してください。  

11. Unityサンプルプロジェクト

Unityサンプルプロジェクトを表示するには、こちらをクリックしてください。

この記事は役に立ちましたか?
5人中2人がこの記事が役に立ったと言っています

コメント

0件のコメント

ログインしてコメントを残してください。

このセクションの記事