概要: AppsFlyer SDKをUnityで開発されたiOS/Androidアプリに実装することで、インストールやアプリ内イベントをメディアソースに紐付ける形で計測が可能になります。
Unity V6のiOS14対応
Unityプラグイン V6はiOS 14にも対応していますが、過去のバージョンと比べてAPIメソッドの大幅な変更がありますので注意してください。古いバージョンからのUnity V6への移行はこの変更の適用を阻害してしまいます。今回の変更には、新しいAPI、異なるclassやパッケージネーム、そして com.appsflyer.GetDeepLinkingActivity
の削除が含まれています。
以前のバージョン (V5) からプラグインを更新する場合には、 V6への移行 に関するガイドを必ず参照してください。(Unityのパッケージをアップデートする必要があります。)
注意
UnityプラグインV4は非推奨です。V4向けの実装ガイドは、PDF形式でダウンロードが可能です。(ページ最下部にリンク有り)
Unityプラグイン V6
Unityプラグイン V6は、Unityプラットフォームを使用したiOS / Androidアプリの開発を可能にします。AppsFlyer SDKに基づいて、同じメソッドを実装し、プラットフォーム毎のSDKと同等の機能をサポートしています。このプラグインはオープンソースであり、GitHubで利用可能です。
(このページ内では、プラグインとSDKという用語は同じ意味で使用しています。)
1. 概要 - Unity V6
Unityプラットフォームで開発されたモバイルアプリは、AndroidとiOSの両方に共通のAppsFlyerプラグインを使用します。
タブ | コンテンツ | 結果 |
---|---|---|
[必須] 実装 |
プラグインの追加と設定 |
管理画面には以下が表示されます:
|
[推奨] 主要 API |
主要APIで可能なこと:
|
管理画面には以下が表示されます:
準備:
|
追加API |
オプションAPIの実装と使用方法:
|
準備:
|
APIリファレンス |
開発者向けのSDK APIリファレンス |
プラグインを実装して初期化すると、AppsFlyerの管理画面(オーバービュー)にはオーガニックと非オーガニック、2つのインストールが表示されるようになります。
2. アプリへのプラグイン追加
重要!
AppsFlyer Unity SDKでは、Unity Internal Build Systemをサポートしていません。
2.1 AppsFlyer Unityプラグインのダウンロード
GitHub からプラグインをダウンロードしてください。
2.2 プラグインのインストール
Unity用のExternal Dependency Manager(EDM4U)は、デフォルトでAppsFlyer Unityプラグインとともに配布されます。これにより、プラグインとプロジェクト内の他のプラグイン間の依存関係の競合を解決し、実装プロセスが容易になります。
プラグインをインストールするには :
Appsflyer-unity-plugin.v*.unitypackage を追加することで、AppsFlyerプラグインとEDM4Uの両方に必要なすべてのアセットが自動的にインポートされます。
EDM4Uなしでプラグインをインストールするには:
- 同じくappsflyer-unity-plugin.v*.unitypackage をプロジェクトにインポートしますが、EDM4Uの依存関係の選択を必ずクリアしてください。
- 必要なAndroidの依存関係をダウンロードし、Assets / Plugins / Androidフォルダに追加してください:
- 必要なiOSの依存関係をダウンロードし、Assets/Plugins/iOS/AppsFlyerフォルダに追加してください:
2.3 Androidの設定
必要なAndroidの権限を設定するには:
次の権限を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" />
3. プラグインの初期化
このセクションではプラグインを実装と初期化の方法について説明しています。
3.1 Dev Keyの取得
- AppsFlyerのDev Keyはアカウント毎にユニークで、アカウントを識別するために必要なもので、場合によってはアプリ単位でDev Keyが存在する場合もあります。
- Dev Keyは実装の際に必須です。
Dev Keyを取得するには:
- AppsFlyerの管理画面内で、左メニュー 設定 > アプリ設定へ移動してください。
- 表示されているDev Keyを取得してください。
3.2 プラグインの初期化
AppsFlyerプレハブを使用してプラグインを初期化するには:
- Assets > AppsFlyer へ移動してください。
- AppsFlyerObject.Prefabをsceneにドラッグしてください。
- 次のフィールドを設定してください。
設定 備考 Dev key 先程取得したDev Keyを貼り付けてください。 アプリID iOS:iOSのAppIDを入力してください。(冒頭の
id
は消去してください。)Android:空白のままにしてください。
コンバージョンデータの取得 アプリが、AppsFlyerのディープリンク を実装している場合は、「True」に設定してください。デフォルト設定は「False」なので、デフォルト設定ではディープリンクは実装されませんので注意してください。 Is debug 開発中にデバッグログを表示する際は、「True」に設定してください。
注:アプリを本番環境にリリースする前には、必ず無効に(Falseに設定)してください。
- Assets> AppsFlyer> AppsFlyerObjectScript.cs内のコードを他の利用可能な APIと一緒に更新してください。
マニュアルで実装するには:
ゲームオブジェクトを作成し、以下のinitコードを追加してください。
using AppsFlyerSDK;
public class AppsFlyerObjectScript : MonoBehaviour , IAppsFlyerConversionData
{
void Start()
{
/* AppsFlyer.setDebugLog(true); */
AppsFlyer.initSDK("devkey", "appID", this);
AppsFlyer.startSDK();
}
public void onConversionDataSuccess(string conversionData)
{
AppsFlyer.AFLog("onConversionDataSuccess", conversionData);
Dictionary<string, object> conversionDataDictionary = AppsFlyer.CallbackStringToDictionary(conversionData);
// add deferred deeplink logic here
}
public void onConversionDataFail(string error)
{
AppsFlyer.AFLog("onConversionDataFail", error);
}
public void onAppOpenAttribution(string attributionData)
{
AppsFlyer.AFLog("onAppOpenAttribution", attributionData);
Dictionary<string, object> attributionDataDictionary = AppsFlyer.CallbackStringToDictionary(attributionData);
// add direct deeplink logic here
}
public void onAppOpenAttributionFailure(string error)
{
AppsFlyer.AFLog("onAppOpenAttributionFailure", error);
}
}
注 :ゲームオブジェクトに対してdestroyをコールしないようにしてください。
4. インストール計測のテスト
4.1 テスト端末のホワイトリスト登録
テスト端末をホワイトリストに追加してください。
注意
実装テストとデバッグが完了したら、デバッグログの記録 を無効にしてください。
アプリ内イベントと収益を計測することでユーザーの質を測ることが可能になり、ディープリンクを使用することでより優れたユーザー体験を提供できるようになります。
このタブでは、アプリ開発者にとって必要な関連手順を確認できます。ただし、アプリオーナー/マーケティング担当者からの情報提供も不可欠です。アプリオーナー(マーケター)は、
- ユーザーの質を計測するために、どのアプリ内イベントを計測する必要があるかを決定しなければなりません。
- ディープリンク用にOneLinkを設定するために、AppsFlyerの管理画面へアクセスする必要があります。
5. アプリ内イベントの計測
アプリ内イベントを記録して、LTV(顧客生涯価値)、ROI、収益などのKPIを計測しましょう。
アプリ内イベントは、ユーザーイベントを記録するために実装する必要があります。アプリ内イベントはいくつかの方法で送信可能です:
- [推奨]アプリ経由でのイベント送信。(本記事内に記載)
- その他の方法については アプリ内イベントの概要ガイドを参照してください。
旅行、ゲーム、Eコマースなどの特定のカテゴリーのアプリの場合には、 業種別のアプリ内イベントの推奨リストも参照してください。
5.1 アプリ内イベントの名前とパラメータ
イベントを送信するには:
- イベント名と含めるパラメータを決定してください。
- 関連するリスト:
- 推奨するアプリ内イベント名とパラメータのリスト
- リストは
AFInAppEvents
のクラスで見つかります。
[推奨]以下の理由からも、AppsFlyerで推奨しているイベント名とパラメータを使用してください。
- これらの標準的なアプリ内イベント名を使うと、連携設定の際にAppsFlyerからFacebook、Google、Twitterへ自動的にイベントをマッピングします。
- 下位互換性: もしもAppsFlyerがイベント名やパラメータを変更した場合にも、互換性があり影響を与えません。
5.2 収益の計測
アプリ内イベントに af_revenue
のパラメータを追加することで収益を記録できます。
- プラス・マイナスを問わず、あらゆる数値を入力できます。
af_revenue
のパラメータは、AppsFlyerでの収益の計測とローデータレポートへの収益の入力を可能にし、管理画面でも簡単に収益を確認できるようになります。- 収益の値を他のパラメータを使用して送信することも可能ですが、AppsFlyer上では”収益”の値として認識されません。 詳細についてはこちらを参照してください。
- 値区切りのコンマ、通貨記号、テキストなどは収益の値に含めないでください。
たとえば、収益の値は「1234.56」のように設定してください。
推奨 通貨設定、通貨換算、管理画面上での表示についても参照してください。
収益イベントを送信する際の通貨コードの要件
- デフォルトの通貨設定:USD
- 3文字のISO4217コードを使用: (以下例を参照してください。)
- API を呼んで通貨コードを設定:
AppsFlyer.setCurrencyCode("ZZZ")
例:収益を伴うアプリ内イベント
この購入イベントは200.12ユーロです。管理画面上に収益を反映させるには、以下のような実装になります。
System.Collections.Generic.Dictionary<string, string> purchaseEvent = new
System.Collections.Generic.Dictionary<string, string> ();
purchaseEvent.Add(AFInAppEvents.CURRENCY, "EUR");
purchaseEvent.Add(AFInAppEvents.REVENUE, "200.12");
purchaseEvent.Add(AFInAppEvents.QUANTITY, "1");
purchaseEvent.Add(AFInAppEvents.CONTENT_TYPE, "category_a",);
AppsFlyer.sendEvent ("af_purchase", purchaseEvent);
マイナス収益の計測
マイナス記号を使用してマイナスの収益を記録します。
- 収益値の前にはマイナス記号が追加されています。
- イベント名は専用の「cancel_purchase(購入キャンセル)」になり、管理画面やローデータレポートでマイナスの収益イベントを確認できます。
たとえば、ユーザーが払い戻しを受け取ったり、サブスクリプションをキャンセルしたときです。
System.Collections.Generic.Dictionary<string, string> purchaseEvent = new
System.Collections.Generic.Dictionary<string, string> ();
purchaseEvent.Add(AFInAppEvents.CURRENCY, "USD");
purchaseEvent.Add(AFInAppEvents.REVENUE, "-200");
purchaseEvent.Add(AFInAppEvents.QUANTITY, "1");
purchaseEvent.Add(AFInAppEvents.CONTENT_TYPE, "category_a");
AppsFlyer.sendEvent ("cancel_purchase", purchaseEvent);
5.3 アプリ内購入の検証
このプラグインでは、アプリ内購入をサーバーにて検証できます。
購入を検証する場合は、関連するOS毎の手順を参照してください。
#if UNITY_ANDROID && !UNITY_EDITOR
AppsFlyerAndroid.validateAndSendInAppPurchase(
"publicKey",
"signature",
"purchaseData",
"price",
"currency",
null,
this);
#endif
テストという目的のため、次のようにAppleのsandbox server callに対してテストするようにしてください。
#if UNITY_IOS && !UNITY_EDITOR
AppsFlyeriOS.validateAndSendInAppPurchase(
"productIdentifier",
"price",
"currency",
"tranactionId",
null,
this);
#endif
メソッドパラメータ
パラメータ名 | 説明 |
---|---|
String publicKey | Google Developer Consoleで取得したPublic Key |
String signature |
Transaction signature: 購入が完了したときにGoogle APIによって返されます。 |
String purchaseData |
JSON形式の購入された製品: 購入が完了したときにGoogle APIによって返されます。 |
String revenue | AppsFlyerへレポートされるアプリ内イベントの収益です。 |
String currency | AppsFlyerへレポートされるアプリ内イベントの通貨単位です。 |
Dictionary<String, String> additionalParameters |
追加のアプリ内イベントのパラメータは、 アプリ内イベントのローデータ内にあるevent_valueのフィールドに表示されます。 |
パラメータ名 | 説明 |
---|---|
String productIdentifier | 製品識別子 |
String price | AppsFlyerへレポートされるアプリ内イベントの収益です。 |
String currency | AppsFlyerへレポートされるアプリ内イベントの通貨単位です。 |
Dictionary<String, String> additionalParameters |
追加のアプリ内イベントのパラメータは、アプリ内イベントのローデータ内にあるevent_valueのフィールドに表示されます。 |
注意
validateReceipt
を呼び出すと、 af_purchase のアプリ内イベントが自動的に生成されます。
購入検証後に別の購入イベントが送信されると、イベント計測が重複してしまうので送信しないでください。
5.4 アプリ内イベントに関する注意事項
- イベント名:最大45文字まで(半角)
- イベント値(Event Value):半角1000文字を超えないでください。 - 超えた場合には切り捨てる可能性があります。
- アプリ内イベント(およびその他のAPI)で、英語以外の文字もサポートしています。
- 価格と収益について:
- 5や5.2など、数値と小数点のみを使用してください。
- 5.12345など、小数点以下は5桁まで使用可能です。
5.5 アプリ内イベントの計測例
sendEvent
を呼び出してアプリ内イベントを記録し、イベント名とパラメータをその中に含めてください。.
詳細については、アプリ内イベント を参照してください。
例:アプリ内購入(課金)イベントの計測方法
業種別の既製のコードスニペットの包括的なリストについては、 業種別のリッチアプリ内イベントのガイドを参照してください
System.Collections.Generic.Dictionary<string, string> purchaseEvent = new
System.Collections.Generic.Dictionary<string, string> ();
purchaseEvent.Add(AFInAppEvents.CURRENCY, "USD");
purchaseEvent.Add(AFInAppEvents.REVENUE, "200");
purchaseEvent.Add(AFInAppEvents.QUANTITY, "2");
purchaseEvent.Add(AFInAppEvents.CONTENT_TYPE, "category_a");
purchaseEvent.Add(AFInAppEvents.CONTENT_ID, "092");
AppsFlyer.sendEvent (AFInAppEvents.PURCHASE, purchaseEvent);
5.6 オフラインで発生したアプリ内イベントの計測
ユーザーは、インターネットに接続していないときにもアプリ内イベントを生成することがありますが、AppsFlyerでも可能な限りそのイベントを記録します。
- プラグインはAppsFlyerサーバーにイベントを送信し、その応答を待ちます。
- プラグインが200のサーバーレスポンスを受け取らなかった場合、イベントはキャッシュに保存されます。
- 次の200サーバーレスポンスが受信された後に、保存されたイベントはサーバーに再送信されます。
- キャッシュが複数のイベントを保存している場合には、それらは順次サーバーに送信されます。
注意
キャッシュは最大40個のイベントを保存できます。
- 最初の40個までのオフラインイベントのみが保存されます。
- 次の200のサーバーレスポンスまでに発生した、41個目以降のイベント情報はすべては破棄されます。
- ローデータレポート内で、
- Event time:ユーザーの端末がオンラインに戻った後、AppsFlyerにイベントが送信された時間です。
- 実際にイベントが行われた時ではありません。
6. OneLinkでのディープリンク
OneLinkは、AppsFlyerが提供するマルチプラットフォーム向けの計測、 リダイレクト、ディープリンクのためのソリューションです。
6.1 デバイスの検知とリダイレクト
OneLink:
- ユーザーがクリックしたときに、端末の種別(AndroidおよびiOS、デスクトップなど)を検出
- ユーザーを以下のような正しい遷移先へリダイレクトさせます:Google Play、iOS AppStore、Google Play以外の第三者ストア、またはWebページなど。
マルチプラットフォーム向けの計測リンクの発行と、ディープリンクの基本仕様を確認するには、 OneLink リダイレクト設定ガイド を参照してください。
6.2 ディープリンク
ディープリンクを使用することで、 既存ユーザーを特定のアクティビティやカスタマイズされたコンテンツに誘導します。
アプリ所有者と開発担当者は、協力してOneLinkでのディープリンクを設定する必要があります。
- アプリ所有者はAppsFlyerの管理画面に アクセスする必要があります。
- 開発担当者はアプリに手を加える必要があります。
OneLinkでのディープリンク設定 のガイドを参照してください。
6.3 ディファードディープリンク
ディファードディープリンク を使用すると、新規ユーザーをディープリンクさせ、アプリの初回起動時にカスタマイズされたコンテンツを提供できます。
標準のディープリンクも特定のアクティビティとカスタマイズされたコンテンツにユーザーを誘導しますが、アプリがユーザーの端末に既にインストールされている必要があります。
OneLinkでディファードディープリンクを設定するには:
- アプリ開発者もAppsFlyerの管理画面にアクセスする必要があります。
- ディファードディープリンクと標準のディープリンク用のAppsFlyer管理画面上での設定項目は同じです。
- 唯一の違いは、ユーザーがアプリをインストールして起動した後に、ユーザーをディープリンクさせてカスタマイズされたコンテンツを提供するために、アプリに追加のロジックを実装する必要がある点です。
詳細については、 ディファードディープリンクのガイドを参照してください。
6.4 ディープリンクデータの取得
AppsFlyer SDKは、すべてのインストールまたはディープリンクイベントに伴う、コンバージョンデータまたはエンゲージメントデータを提供します。このデータを使用することで、コンテンツとアプリの動作をプログラムしてカスタマイズできます。
ディープリンクデータを取得するには:
- AppsFlyerプラグインで呼ばれる、
IAppsFlyerConversionData
classの中にあるonAppOpenAttribution
のコールバックを実装してください。 - アプリ起動を促すOneLinkや計測リンクのパラメータの値を返します。
- 値を解析して、特定のアプリページを開くロジックを適用してください。
public void onAppOpenAttribution(string attributionData)
{
AppsFlyer.AFLog("onAppOpenAttribution", attributionData);
Dictionary<string, object> attributionDataDictionary = AppsFlyer.CallbackStringToDictionary(attributionData);
// add direct deeplink logic here
}
詳細については、 ディープリンクデータ のガイドを参照してください。
7. コンバージョンデータの取得
インストール毎に、リアルタイムにそのユーザーのアトリビューションデータにアクセス可能です。これにより次のようなユーザーエンゲージメントの強化が可能です:
- パーソナライズされたコンテンツ
- アプリ内の特定のアクティビティへの誘導 詳細はこの記事のディファードディープリンクの箇所を参照してください。
AppsFlyerのコンバージョンデータを取得するには:
IAppsFlyerConversionDatabase
を実装してください。- 最後のパラメータとして
initSDK
のメソッドをコールしてください。 onConversionDataSuccess
のメソッドを使用して、ユーザーをリダイレクトさせてください。
reference for onConversionDataSuccessのAPIを参照してください。
using AppsFlyerSDK;
public class AppsFlyerObjectScript : MonoBehaviour , IAppsFlyerConversionData
{
void Start()
{
/* AppsFlyer.setDebugLog(true); */
AppsFlyer.initSDK("devkey", "appID", this);
AppsFlyer.startSDK();
}
public void onConversionDataSuccess(string conversionData)
{
AppsFlyer.AFLog("onConversionDataSuccess", conversionData);
Dictionary<string, object> conversionDataDictionary = AppsFlyer.CallbackStringToDictionary(conversionData);
// add deferred deeplink logic here
}
public void onConversionDataFail(string error)
{
AppsFlyer.AFLog("onConversionDataFail", error);
}
public void onAppOpenAttribution(string attributionData)
{
AppsFlyer.AFLog("onAppOpenAttribution", attributionData);
Dictionary<string, object> attributionDataDictionary = AppsFlyer.CallbackStringToDictionary(attributionData);
// add direct deeplink logic here
}
public void onAppOpenAttributionFailure(string error)
{
AppsFlyer.AFLog("onAppOpenAttributionFailure", error);
}
}
8. アトリビューション
アンインストール計測
さまざまなメディアソースから来たユーザーのアンインストール率を測定します。
アンインストール計測の設定方法については、関連するOS毎の手順を参照してください。
- Unity Firebase SDKを https://firebase.google.com/docs/unity/setupからダウンロードしてください。
- FirebaseMessaging.unitypackageをプロジェクトにインポートしてください。
- (Firebaseコンソールで取得した)google-services.jsonをプロジェクトにインポートしてください。
注意
Unity Firebase SDKは、マニフェストレシーバーを自動的に追加します。
- AppsFlyerのコードを処理するUnityのクラスに以下のコードを追加してください:
using Firebase.Messaging; using Firebase.Unity;
- Start() メソッドに追加してください。
Firebase.Messaging.FirebaseMessaging.TokenReceived += OnTokenReceived;
- このメソッドを追加してください:
public void OnTokenReceived(object sender, Firebase.Messaging.TokenReceivedEventArgs token)
{
#if UNITY_ANDROID
AppsFlyerAndroid.updateServerUninstallToken(token.Token);
#endif
}
警告
シナリオ: Unity Firebase SDKを実装している場合
要件: Firebase Unity SDKをプロジェクトに追加した場合、enableUninstallTracking(“ SenderID”)に次のメソッドの呼び出しを追加しないでください。
追加した場合の結果:
- Firebase Unity SDKは、google-services.jsonファイル(以前に追加されたもの)からsender IDを取得します。
- その結果、Androidのデバッグの警告が表示される可能性があります。
デバイストークンは、 UnityEngine.iOS.NotificationServices.deviceToken.
から取得してください。
デバイストークンを受け取ったときにこのメソッドを呼び出してください。(タブコンテンツの問題):
AppsFlyer.registerUninstall("device_push_notification_token");
例:
using AppsFlyerSDK;
public class AppsFlyerObjectScript : MonoBehaviour, IAppsFlyerConversionData
{
private bool tokenSent;
void Start()
{
AppsFlyer.initSDK("devKey", "appID", this);
AppsFlyer.startSDK();
#if UNITY_IOS
UnityEngine.iOS.NotificationServices.RegisterForNotifications(UnityEngine.iOS.NotificationType.Alert | UnityEngine.iOS.NotificationType.Badge | UnityEngine.iOS.NotificationType.Sound);
#endif
}
void Update()
{
#if UNITY_IOS
if (!tokenSent)
{
byte[] token = UnityEngine.iOS.NotificationServices.deviceToken;
if (token != null)
{
AppsFlyeriOS.registerUninstall(token);
tokenSent = true;
}
}
#endif
}
}
詳細についてはiOS アンインストール ガイドを参照してください。
カスタムデータの追加設定
Segment、Adobe、Urban Airshipなどの外部のパートナープラットフォームとプラグインレベルで連携する際には、setAdditionalData
のAPIの利用が必要になります。
各パートナーとの連携ガイド内で、setAddionalData API が必要と明示されている場合にのみ
、このAPIを使用してください。
例: setAdditionalData
のコード
Dictionary<string, string> CustomDataMap = new Dictionary<string, string>();
CustomDataMap.Add("custom_param_1", "value_of_param_1");
AppsFlyer.setAdditionalData(CustomDataMap);
9. セッション
カスタムのセッション間隔
デフォルトでは、それぞれ別のセッションとしてカウントされるには、2つのアプリ起動の間隔が少なくとも5秒以上空いている必要があります。 セッション間の最小時間を任意で設定したい場合には以下を設定してください:
AppsFlyer.setMinTimeBetweenSessions(custom_time_ins_seconds);
注意! セッション間のカスタム時間に大きい値を設定すると、ディープリンクなどのセッションデータに依存するAPI へ悪影響を与える可能性があるので注意してください。
詳細はアプリセッションのカウントを参照してください。
ユーティリティ系アプリ向けバックグラウンドセッション
Unityでは使用できません。
10. 自社メディア
加工されたDeep Link URLsの解決方法
一部のサードパーティサービス( メールサービスプロバイダーなど ):
- 独自のクリック記録ドメインを使用して、AppsFlyerの計測リンクをメール内で加工します。
- 独自のクリック計測ドメインを設定できます。
もしもOneLinkURLが上記のように変換/短縮された場合には、OneLinkの機能が制限される可能性があります。これを克服するには:
- SDKの初期化よりも前に、
setResolveDeepLinkURLs
のAPI を呼び出してください。 - このAPIを使用することで、アプリを起動するクリックドメインからOneLinkを取得することが可能です。
シナリオ:あなたのOneLinkhttps://mysubdomain.onelink.me/abCDにリダイレクトする3つのクリックドメインがあったとします。
ソリューション:
setResolveDeepLinkURLs
のAPIを使用して、クリックドメインがアプリユーザーをリダイレクトした後に到達するOneLinkを取得してください。- このAPIメソッドは、プラグインが分解したドメインのリストを受信します。
- 以下のコードではご自身のクリックドメインを使用できますが、同時にOneLink機能も保持します。
例
AppsFlyer.setResolveDeepLinkURLs("example.com", "click.example.com");
これで、 このOneLinkからのデータを使って 、ディープリンクと遷移先コンテンツのカスタマイズを行ってください。
プッシュ通知の計測
AppsFlyerでは、リターゲティングキャンペーンの一部として、プッシュ通知の成果を計測できます。
プッシュ通知を記録するには:
sendPushNotificationData
のメソッドを呼び出してください。- このメソッドは、この通知をクリックした後に起動されるすべてのアクティビティの
onCreate
メソッド内にあります:
#if UNITY_ANDROID && !UNITY_EDITOR
AppsFlyerAndroid.handlePushNotifications();
#endif
詳細については、 プッシュ通知の計測を参照してください。
ユーザー招待計測
既存ユーザーが友人やコンタクトを新規ユーザーとしてアプリに招待できるようにすることで、アプリインストール数増加のきっかけとなる場合があります。
AppsFlyerを使用することで、アプリ内のユーザー招待から発生したインストールの計測を行うことが可能です。詳細はユーザー招待の計測を参照してください。
クロスプロモーションの計測
アプリ間での相互送客(クロスプロモーション)もアプリのインストールを促進可能です。
AppsFlyerを使用することで、既に持っているアプリ内に表示された、別アプリへのクロスプロモーションで発生したインストールの計測が可能になります。 詳細はクロスプロモーションの計測を参照してください。
11. ユーザー識別子
AppsFlyer IDの取得
AppsFlyer IDは、アプリのインストール毎に都度発行されます。AppsFlyer IDには様々な利用用途があります。
- サーバー間(S2S)でイベント送信するとき
- 広告主側で持っているシステム上のユーザー情報と一致させるとき
- Pull APIとPush APIのデータをマージするときに、各データを突合させるとき
AppsFlyer IDを取得するには:
string AppsFlyerUID = AppsFlyer.getAppsFlyerId();
カスタマーユーザーIDの設定
独自のユニークなカスタマーユーザーID(CUID)を設定し、一意のAppsFlyer IDと紐付け・相互参照が可能です。
一意のCUID:
- AppsFlyerの ローデータ CSVレポート上に表示されます。
- ポストバックAPIで使用して、お客様側のユーザーIDと相互参照できます。
CUIDを設定するには:
AppsFlyer.setCustomerUserId("someId");
推奨 設定された後に計測されたイベントにしかカスタマーユーザーIDを紐付けられないので、AppsFlyerでは、 アプリ利用の一連の流れの中で、できる限り早いタイミングでカスタマーユーザーIDを設定することをお勧めしています。
startSDK
を呼ぶ前にsetCustomerUserID
を呼び出してください。
- 計測されたイベントはCUIDに関連付けられます。
- 関連するデータは、インストールとアプリ内イベントのローデータレポートに表示されます。
AppsFlyer.setCustomerUserId("someId");
カスタマーユーザーIDの取得
詳細については、 CUID を確認してください。
customerUserIDのためのプラグイン初期化の遅延
カスタマーユーザーID(CUID)を設定してから、プラグインを初期化してください。これは、インストールデータとアプリ内イベントデータの両方にCUIDを含める場合に有効です。
関連するOSの手順を参照してください。
警告
アプリ内でのユーザーの流れに適する場合にのみ、 CUID の設定を遅延させてください。CUIDの設定を遅延させることで、数値の乖離や、アプリが広告不正の企みにさらされる可能性が高まります。
OAIDの取得
OAIDはアトリビューションを可能にするユニークな端末IDの1つです。
OAIDを取得するには:
OAIDは自動的に収集されるのがデフォルト仕様です。オプトアウトしたい場合には、AppsFlyerAndroid.setCollectOaid(false);
を呼び出してください。
- MSA allianceが提供している AAR をダウンロードしてください。
- ダウンロードしたaarを、Assets/Plugins/Androidフォルダに追加してください。
- Huawei端末向けに、Assets/Plugins/Androidフォルダに
hms-ads-identifier
libを追加してください。 - appsflyer-oaid をプロジェクトに追加してください。これは、Assets/Plugins/Androidフォルダにaarを追加するか、Assets/AppsFlyer/Editor/AppsFlyerDependencies.xml に以下を追加することで実行可能です。
<androidPackage spec="com.appsflyer:oaid:5.2.0">
</androidPackage>
12. ユーザープライバシー
オプトアウト
法律やプライバシーのコンプライアンス問題といったさまざまな事情により、オプトアウトしてすべての計測/記録を停止する決定が下される可能性があります。
ベストプラクティス アプリに適したシナリオを、正しい手順に沿って実装していただくことをお勧めします。
計測を停止するには:
- stopSDKを呼び出し、trueに設定してください。
AppsFlyer.stopSDK(true);
- このAPIが起動するとプラグインは動作を停止し、AppsFlyerサーバーとの通信は何も発生しなくなります。
計測を再度アクティブにするには: stopSDK を呼び出してfalseに設定してください。
警告
このstopSDKのAPIは、特定ユーザーの計測を全て停止したい場合に使用してください。また、このAPIの使用はアトリビューションやデータ収集、ディープリンクの機能に影響を与えますのでご注意ください。
ユーザーデータの匿名化
アプリユーザーを匿名化するには:
- SDKの初期化中にこのAPIを設定してください。
anonymizeUser
を呼び出し、true に設定してください。
AppsFlyer.anonymizeUser(true);
- ユーザーのインストール、イベント、およびセッションを匿名化します。
計測を再開するには: anonymizeUser
を呼び出し、 false に設定してください。
警告
ユーザーを匿名化することにより、アトリビューション情報に大きな悪影響があります。ユーザーの情報を収集することが法的に禁じられている地域でのみ、このオプションを使用してください。
データ取得からのパートナーの除外
場合によっては、アドネットワークやパートナーに対する特定ユーザーのユーザーレベルのデータ共有を停止したい場合があるかと思います。その理由としては:
- CCPAやGDPRのようなプライバシーポリシー
- ユーザーによるオプトアウト
- 一部パートナー(広告ネットワーク/第三者ツール)との競合
AppsFlyerでは、一部またはすべてのパートナーとのデータ共有を停止するための、2つのAPIメソッドを用意しています。
- setSharingFilter: 広告主がデータ取得から 特定の アドネットワークや連携パートナーを 除外する ために使用するものです。
- setSharingFilterForAllPartners: 広告主が すべての アドネットワーク / 連携パートナーに対して、データを共有しないようにするために使用します。
これらのフィルタリングメソッドは、SDK V5.4.1からサポートされています。
このフィルタリングメソッドは、SDK が初期化される毎に呼び出されなければならず、セッション全体に影響を与えます。 このフィルタを設定する必要があるかどうかを判断するのに時間がかかる場合には、 SDKの初期化を遅延 させてください。
最初のstartSDKの呼び出しよりも前にこのメソッドがアクティブ化された場合 :
- SRN経由のユーザーはOrganicユーザーと見なされ、そのユーザーのデータは連携パートナーとも共有されません。
- 通常のアドネットワーク(SRN以外)経由のユーザー は、AppsFlyer上で正しく媒体へ紐付けされますが、ポストバック、API、ローデータレポート、またはその他の方法においてアドネットワークへデータは共有されません。
現在、これらのメソッドを使用してアンインストールに関するデータをフィルタリングすることはできませんが、AppsFlyerの連携設定ページ を使用して、各パートナーへのアンインストールイベントのポストバック送信は停止することができます。
Android / iOSのAPI
initSDK
説明 |
Dev KeyとAppIDでプラグインを初期化してください。Dev Keyはすべてのアプリに必要です。AppIDはiOSでのみ必要になります。アプリがAndroidのみである場合には、AppIDはnullで渡してください。ゲームオブジェクトには、IAppsFlyerConversionData interfaceが含まれています。 |
メソッドのシグネチャ |
|
例 |
|
startSDK
説明 |
このAPIが呼び出されると、SDKが起動され、セッションがすぐに送信され、すべてのバックグラウンドからフォアグラウンドへの遷移においてセッションが記録されます。 |
メソッドのシグネチャ |
|
例 |
|
sendEvent
説明 |
アプリ内イベントの計測は、イベント名とパラメータと一緒にsendEventを呼び出すことで実行されます。 |
メソッドのシグネチャ |
|
例 |
|
stopSDK
説明 |
極稀に、規約やプライバシー遵守のためにすべてのSDKの機能をシャットダウンしなければならない場合がありますが、その場合にはstopSDKのAPIを使用してください。このAPIが呼び出されると、SDKはAppsFlyerのサーバーとの通信を停止し、機能しなくなります。 |
メソッドのシグネチャ |
|
例 |
|
isSDKStopped
説明 |
stopSDK(boolean) APIがtrueにセットされているかどうかを返します。 |
メソッドのシグネチャ |
bool isSDKStopped() |
例 |
|
getSdkVersion
説明 |
AppsFlyer SDKのバージョンを取得します。 |
メソッドのシグネチャ |
|
例 |
|
setIsDebug
説明 |
デバッグログを有効にします。 |
メソッドのシグネチャ |
|
例 |
|
setCustomerUserID
説明 |
カスタマーユーザーID(CUID)を設定します。 |
メソッドのシグネチャ |
|
例 |
|
setAppInviteOneLink
説明 |
ユーザー招待用のカスタム計測リンクの作成に使用される、OneLinkテンプレートIDを設定します。 |
メソッドのシグネチャ |
|
例 |
|
setAdditionalData
説明 |
外部のパートナープラットフォームに送信するデータを追加します。 |
メソッドのシグネチャ |
|
例 |
|
setResolveDeepLinkURLs
説明 |
クリックドメインからのOneLinkを解決します。詳細は、変換されたディープリンクURLの解決方法 を参照してください。 |
メソッドのシグネチャ |
|
例 |
|
setOneLinkCustomDomain
説明 |
広告主はこのメソッドを利用して、カスタムしたOneLinkドメイン(Branded OneLink)を設定できます。 |
メソッドのシグネチャ |
|
例 |
|
setcurrencyCode
説明 |
収益を持つイベントに使用します。ISO通貨コードを使用します。 |
メソッドのシグネチャ |
|
例 |
|
recordLocation
説明 |
ユーザーの位置情報をマニュアルで記録します。 |
メソッドのシグネチャ |
|
例 |
|
anonymizeUser
説明 |
ユーザーのインストール、イベント、セッションの計測を明示的に匿名化するには、初期化中にこのAPIを使用してください。匿名化を停止するには、再度anonymizeUserを呼び出して、falseに設定してください。 |
メソッドのシグネチャ |
|
例 |
|
getAppsFlyerId
説明 |
新規インストール時にAppsFlyerIDを取得します。 |
メソッドのシグネチャ |
|
例 |
|
setMinTimeBetweenSessions
説明 |
デフォルトでは、2つのセッションがそれぞれ別の起動としてカウントされるには、2つのアプリ起動の間隔が少なくとも5秒以上会いている必要があります。このセッション計測の最小間隔を任意で設定したい場合には、値を設定してください。 |
メソッドのシグネチャ |
|
例 |
|
setUserEmails
説明 |
ユーザーのEメールアドレスを設定し暗号化します。 |
メソッドのシグネチャ |
|
例 |
|
setHost
説明 |
カスタムホストを設定します。 |
メソッドのシグネチャ |
|
例 |
|
getConversionData
説明 |
コンバージョンデータリスナーを実装すると、新規インストール毎にリアルタイムにそのユーザーのアトリビューションデータにアクセスできるようになります。これにより、パーソナライズされたコンテンツを提供したり、アプリ内の特定のアクティビティに誘導したりして、ユーザーのアプリへのエンゲージメントを大きく高めることができます。 |
メソッドのシグネチャ |
|
例 |
|
attributeAndOpenStore
説明 |
クリックをアトリビュートしてアプリストアのアプリページを起動します。 |
メソッドのシグネチャ |
|
例 |
|
recordCrossPromoteImpression
説明 |
インプレッションをアトリビュートするには、次のAPIコールを使用します。AppsFlyerの管理画面上に表示されているAppIDを使用してください。 |
メソッドのシグネチャ |
|
例 |
|
generateUserInviteLink
説明 |
LinkGeneratorのクラスは、クリックで追加情報を渡すことができるさまざまなセッターメソッドに従って、ユーザー招待のURLを作成します。 |
メソッドのシグネチャ |
|
例 |
|
onAppOpenAttribution
説明 |
アプリがディープリンク起動されたときに、ディープリンクのデータを取得します。 |
メソッドのシグネチャ |
|
例 |
|
onAppOpenAttributionFailure
説明 |
ディープリンクデータを取得する際のエラー情報を取得します。 |
メソッドのシグネチャ |
|
例 |
|
onConversionDataSuccess
説明 |
コンバージョンデータを取得するために使用されるメソッドです。ディファードディープリンクに役立ちます。 詳細はこちら。
|
メソッドのシグネチャ |
|
例 |
|
onConversionDataFail
説明 |
インストールのコンバージョンデータを取得できない時のエラーを処理します。 |
メソッドのシグネチャ |
|
例 |
|
onInviteLinkGenerated
説明 |
OneLink URLを作成するときのサクセスコールバックです。 |
メソッドのシグネチャ |
|
例 |
|
onInviteLinkGeneratedFailure
説明 |
OneLink URLを作成するときのエラーコールバックです。 |
メソッドのシグネチャ |
|
例 |
|
didFinishValidateReceipt
説明 |
validateAndSendInAppPurchase APIのサクセスコールバックです。 Androidの場合:"Validate success"と返します。 |
メソッドのシグネチャ |
|
例 |
|
didFinishValidateReceiptWithError
説明 |
購入検証のためのエラーコールバックです。 |
メソッドのシグネチャ |
|
例 |
|
setPhoneNumber
説明 |
ユーザーの電話番号を設定するために使用します。 |
メソッドのシグネチャ |
|
例 |
|
setSharingFilterForAllPartners
説明 |
広告主が すべての アドネットワーク/連携済みパートナーに対して データを共有しないようにするために使用します。 詳細はこちらを参照してください。 |
メソッドのシグネチャ |
|
例 |
|
setSharingFilter
説明 |
広告主が 特定の (ひとつもしくは複数の) アドネットワーク/連携済みパートナーに対して データを共有しないようにするために使用します。 詳細はこちらを参照してください。 |
メソッドのシグネチャ |
|
例 |
|
Android向けAPI
updateServerUninstallToken
説明 |
アンインストール計測のために、Firebaseのデバイストークンを手動で渡します。 |
メソッドのシグネチャ |
|
例 |
|
setImeiData
説明 |
IMEIをAppsFlyerに明示的に送信します。 |
メソッドのシグネチャ |
|
例 |
|
setAndroidIdData
説明 |
Android IDをAppsFlyerに明示的に送信します。 |
メソッドのシグネチャ |
|
例 |
|
waitForCustomerUserId
説明 |
この機能を使用すると、customerUserIDが設定されるまで、SDKは動作を開始しません。 |
メソッドのシグネチャ |
|
例 |
|
setCustomerIdAndStartSDK
説明 |
関連するCustomer User IDをSDKに提供してからSDKを発火させて通常の計測を開始します。 |
メソッドのシグネチャ |
|
例 |
|
getOutOfStore
説明 |
現在のAF_STOREの値を取得します。 |
メソッドのシグネチャ |
|
例 |
|
setOutOfStore
説明 |
AF_STOREの値をマニュアルで設定します。 |
メソッドのシグネチャ |
|
例 |
|
setCollectAndroidID
説明 |
Android IDの取得を無効化します。アプリがGooglePlay Servicesを搭載していない場合に、Android IDがSDKによって取得されます。ただし、Google Play Servicesを使用したアプリの場合には、Android IDの取得はGoogle Playのポリシーに違反するため、取得しないようにしてください。 |
メソッドのシグネチャ |
|
例 |
|
setCollectIMEI
説明 |
IMEIの取得を無効化します。アプリがGooglePlay Servicesを搭載していない場合に、端末のIDEIがプラグインによって取得されます。ただし、Google Play Servicesを使用したアプリの場合には、IMEIの取得はGoogle Playのポリシーに違反するため、取得しないようにしてください。 |
メソッドのシグネチャ |
|
例 |
|
setIsUpdate
説明 |
アプリがアップデートされたことをマニュアルで設定します。 |
メソッドのシグネチャ |
|
例 |
|
setPreinstallAttribution
説明 |
プリインストールを発生させた端末メーカーやメディアソース名を指定します。 |
メソッドのシグネチャ |
|
例 |
|
isPreInstalledApp
説明 |
端末メーカーによるプリインストール計測用のBoolean型のインジケーターです。 |
メソッドのシグネチャ |
|
例 |
|
getAttributionId
説明 |
(存在する場合)Facebookのattribution IDを取得します。 |
メソッドのシグネチャ |
|
例 |
|
handlePushNotifications
説明 |
プッシュ通知を記録します。 |
メソッドのシグネチャ |
|
例 |
|
validateAndSendInAppPurchase
説明 |
アプリ内課金をサーバー検証するためのAPIです。検証が成功すると、関連するイベント値を持つaf_purchaseイベントが自動的に送信されます。 |
メソッドのシグネチャ |
|
例 |
|
iOS向けのAPI
setShouldCollectDeviceName
説明 |
現在のデバイス名(" My iPhone など ")を収集するには、このフラグを true に設定してください。デフォルト設定は false です。 |
メソッドのシグネチャ |
|
例 |
|
setDisableCollectIAd
説明 |
Apple Search Adsの計測を無効化します。 |
メソッドのシグネチャ |
|
例 |
|
setUseReceiptValidationSandbox
説明 |
iOS(本番環境 or サンドボックス)でのアプリ内課金の検証をします。デフォルト設定はfalseです。 |
メソッドのシグネチャ |
|
例 |
|
setUseUninstallSandbox
説明 |
iOS(本番環境 or サンドボックス)でのアンインストール計測をテストするには、このフラグを設定してください。デフォルト設定はfalseです。 |
メソッドのシグネチャ |
|
例 |
|
validateAndSendInAppPurchase
説明 |
アプリ内課金を送信して検証するには、ProcessPurChase メソッドからこのメソッドを呼び出します。 |
メソッドのシグネチャ |
|
例 |
|
registerUninstall
説明 |
リモート通知に登録し、AppsFlyerにプッシュデバイストークンを提供します。 |
メソッドのシグネチャ |
|
例 |
|
handleOpenUrl
説明 |
ディープリンクを手動で計測するために使用します。 |
メソッドのシグネチャ |
|
例 |
|
onOpenStoreLinkGenerated
説明 |
StoreKit コンポーネントを使用して、アプリのコンテキストを維持しながら、App Storeを開くことができます。詳細はこちらを参照してください。 |
メソッドのシグネチャ |
|
例 |
|
disableSKAdNetwork
説明 |
SKAdNetworkの計測を無効にすることができます。"trueに設定することで無効化できます。 |
メソッドのシグネチャ |
|
例 |
|
waitForATTUserAuthorizationWithTimeoutInterval
説明 |
IDFAなど、ユーザーや端末を記録するためのアプリ関連データにアクセスする前に、ポップアップでユーザー認証を要求 したい場合に使用します。ユーザーがオプトインした場合、IDFA が SDKに渡されます。 Timeout Intervalにより、IDFAの取得をオプトインするまで一定の時間がユーザに対して付与され、このタイマーの期限が切れるとIDFAは取得されません。 |
メソッドのシグネチャ |
|
例 |
|