概要: カスタマーユーザー ID (CUID) のデータ項目を利用し、お客様の社内データとAppsFlyer アトリビューションデータを相互参照します。
CUIDの実装
カスタマーユーザーID(CUID)項目は、アプリやWebサイトの所有者によって発行・設定されたユニークユーザー識別子です。
- CUIDは、AppsFlyerのAPIまたはSDKを使用して広告主様からAppsFlyerへ送信されます。
- AppsFlyerは、それに応じてローデータレポートのCUID項目に値を入力します。
- CUIDを使用することで、CUIDをキーとしてAppsFlyerの計測データとその他のデータを相互参照できます。
- 例:ユーザーが同じCUID ("1234567") の2つのデバイスを持っています。デバイス上でイベントを実行するたびに、CUIDと一緒にイベントが記録されます。これにより、広告主は両方のデバイスのローデータをユーザーの全体像として集計することができます。
- CUIDは、AppsFlyerのオーディエンス機能とピープルベースドアトリビューションに使用され、精度とターゲティングの向上に役立ちます。
CUIDのデザインとプライバシー
- AppsFlyerでは、お客様とアプリユーザーのプライバシーを重視し、尊重しています。
- AppsFlyerでは、個人情報の収集やAppsFlyerプラットフォームへそれらの個人情報を転送することを許可していません。
- ユーザーのプライバシーを保護するため、直接ユーザーを特定できるような情報を使用しないCUIDの構造をデザインしてください。例えば、ユーザーのメールアドレス、名前、電話番号、社会保障番号などを含めることはできませんのでご注意ください。
- 関連記事:Googleの個人情報(PII)を送信しないようにする方法
CUIDが設定されるまでSDKの開始を遅延する
CUIDが設定されるまでSDKの開始を遅らせることが可能です。各々のビジネスロジックに加えて、以下の点を考慮して実行してください。
-
メリット:
- 計測データには常にCUIDが紐づきます。
- CUIDを使用して、計測データと自社システム内の他のデータを相互参照できます。
- これによりAppsFlyerから取得したデータをより高度に使用、および処理できるようになります。
-
デメリット:
- 購入やサブスクリプションなどのユーザーが実行するアクションやイベントは、CUIDが設定されるまでAppsFlyerには記録されません。これにより乖離が発生する可能性があり、不正検出に影響を与える可能性があります (SDK初期化前に必ずしも識別できるとは限りません)。
注: CUID が存在するまでSDKの開始を遅延していて、CUIDが設定されていない場合、SDKはデータ(インストールを含む)を報告しません。
CUIDの設定
Android SDKディベロッパー向けの手順
カスタマーユーザーIDを設定するには:
public void setCustomerUserId(String id);
使用例:
AppsFlyerLib.getInstance().setCustomerUserId("myId");
設定された後に計測されたイベントにしかカスタマーユーザーIDを紐付けられないので、AppsFlyerでは、 アプリ利用の一連の流れの中で、できる限り早いタイミングでカスタマーユーザーIDを設定することをお勧めしています。
start
を呼び出す前にsetCustomerUserId
が呼び出された場合には、インストールおよびイベントのローデータレポートにカスタマーユーザーIDが表示されます。- trackAppLaunchよりも後に設定された場合には、カスタマーユーザーIDはその設定後に計測されたイベントへのみ紐付けられます。
初回起動時以降にカスタマーユーザーIDの値を再度設定することを避ける、かつカスタマーユーザーIDを取得するためのサーバーへの呼び出しを減らすために、その値が空白(ブランク)かどうかを以下メソッドを使用して確認できます:
AppsFlyerProperties.getInstance().getString(AppsFlyerProperties.APP_USER_ID)
customerUserIDのためのSDK初期化の遅延
customerUserIDが設定されるまで、SDKの初期化を遅らせることも可能です。
customerUserIDの呼び出しのためにSDKの初期化を遅らせる必要があることを示すには:
AppsFlyerLib.getInstance().waitForCustomerUserId(true);
を呼び出します。SDK初期化の残りの部分は変更しません。
customerUserIDが指定されたら、
AppsFlyerLib.getInstance().setCustomerIdAndLogSession("customer_id",this);
関連するCustomer User IDをSDKに提供してSDKでの計測を開始します。
コードは次のようになります。
public class AFApplication extends Application {
private static final String AF_DEV_KEY = "qrdZGj123456789";
@Override
public void onCreate() {
super.onCreate();
AppsFlyerConversionListener conversionDataListener =
new AppsFlyerConversionListener() {
...
};
AppsFlyerLib.getInstance().waitForCustomerUserId(true);
//WARNING!Removing above line doesn't cancel its effect.
// Replace with this to stop waiting for CUID:
// AppsFlyerLib.getInstance().waitForCustomerUserId(false);
AppsFlyerLib.getInstance().init(AF_DEV_KEY,getConversionListener(), getApplicationContext());
AppsFlyerLib.getInstance().start(this);
// Do your magic to get the customerUserID
// ...
// any AppsFlyer SDK code invoked here will be discarded
//Call the following API once the customerUserID is available:
AppsFlyerLib.getInstance().setCustomerIdAndLogSession("customer_id",this);
}
}
class AFApplication: Application() {
private val afDevKey = ""
override fun onCreate() {
super.onCreate()
val conversionDataListener = object: AppsFlyerConversionListener {
...
}
AppsFlyerLib.getInstance().waitForCustomerUserId(true);
//WARNING!Removing above line doesn't cancel its effect.
// Replace with this to stop waiting for CUID:
// AppsFlyerLib.getInstance().waitForCustomerUserId(false);
AppsFlyerLib.getInstance().init(afDevKey,conversionDataListener, this)
AppsFlyerLib.getInstance().start(this)
// Do your magic to get the customerUserID
// ...
// any AppsFlyer SDK code invoked here will be discarded
// Call the following API once the customerUserID is available:
AppsFlyerLib.getInstance().setCustomerIdAndLogSession("customer_id",this)
}
}
iOS SDKディベロッパー向けの手順
カスタマーユーザーIDを設定するには:
[AppsFlyerLib shared].customerUserID= @"my user id";
AppsFlyerLib.shared().customerUserID= "my user id"
iOSでは、アプリを起動するたびにカスタマーユーザーIDを設定する必要があります。設定された後に計測されたイベントにしかカスタマーユーザーIDを紐付けられないので、AppsFlyerでは、 アプリ利用の一連の流れの中で、できる限り早いタイミングでカスタマーユーザーIDを設定することをお勧めしています。
start
を呼び出す前にsetCustomerUserId
が呼び出された場合には、インストールおよびイベントのローデータレポートにカスタマーユーザーIDが表示されます。- trackAppLaunchよりも後に設定された場合には、カスタマーユーザーIDはその設定後に計測されたイベントへのみ紐付けられます。
初回起動時以降にカスタマーユーザーIDの値を再度設定することを避ける、かつカスタマーユーザーIDを取得するためのサーバーへの呼び出しを減らすために、その値が空白(ブランク)かどうかを以下メソッドを使用して確認できます:
NSString *customerUserID = [AppsFlyerLib shared].customerUserID;
let customerUserID = AppsFlyerLib.shared().customerUserID
Customer User IDが設定されるまで、SDKの初期化を遅らせることも可能です。これは、インストールデータとアプリ内イベントデータの両方にCustomer User IDを含めたい場合に有効です。
次のコードを実装してください。
- (void)applicationDidBecomeActive:(UIApplication *)application {
NSString *customUserId = [[NSUserDefaults standardUserDefaults] stringForKey:@"customerUserId"]; // Your custom logic of retrieving CUID
if (customUserId != nil && ![customUserId isEqual: @""]) {
[AppsFlyerLib shared].customerUserID = customUserId; // Set CUID in AppsFlyer SDK for this session
[[AppsFlyerLib shared] start]; // Start
}
}
func applicationDidBecomeActive(_ application: UIApplication) {{
let customUserId = UserDefaults.standard.string(forKey: "customUserId") // your logic to retrieve CUID
if(customUserId != nil && customUserId != ""){
AppsFlyerLib.shared().customerUserID = customUserId // Set CUID in AppsFlyer SDK for this session
AppsFlyerLib.shared().start() // Start
}
}}
ピープルベースドアトリビューション
AppsFlyerのピープル ベースド アトリビューション(PBA)は、Webとモバイルキャンペーンの成果に関する幅広い視点を提供するほか、Webユーザーをモバイルユーザーに転換させるため(またはその逆)の施策を分析できるようになります。
クロスプラットフォームでのインサイトと分析を可能にするためには、モバイルとWeb環境の両方で同じCUIDを設定する必要があります。