Краткий обзор. Определение соответствия между вашими данными и данными атрибуции AppsFlyer по полю CUID (Идентификатор клиента).
Использование CUID
Идентификатор клиента (CUID) — это уникальный идентификатор пользователя, который задают владельцы приложений и веб-сайтов.
- Вы предоставляете CUID в AppsFlyer через API или SDK AppsFlyer.
- AppsFlyer соответственно заполняет поле CUID в отчетах по сырым данным.
- CUID позволяет устанавливать соответствия между данными атрибуции AppsFlyer и другими вашими данными, используя CUID в качестве ключа.
- Пример: у пользователя с двумя устройствами один CUID (1234567). Каждый раз, когда пользователь совершает какое-либо действие на одном из устройств, оно регистрируется с помощью этого CUID. Это позволяет рекламодателю агрегировать сырые данные по обоим устройствам и иметь целостное представление о действиях пользователя.
- CUID применяется в AppsFlyer Audiences и атрибуции People-Based для точного таргетинга.
CUID и конфиденциальность
- AppsFlyer уважает конфиденциальность ваших данных и данных пользователей вашего приложения.
- Мы не допускаем сбор и передачу на платформу AppsFlyer персональных данных, по которым можно идентифицировать пользователя.
- Чтобы обеспечить конфиденциальность ваших пользователей, не указывайте в CUID информацию, которая может непосредственно идентифицировать пользователей. Например, идентификатор не должен содержать электронный адрес пользователя, имя, номер телефона, номер социального страхования и т.п.
- Материал по теме: Рекомендации Google, как избежать предоставления конфиденциальной информации
Задержка инициализации SDK до определения CUID
Вы можете отложить инициализацию SDK, пока не будет задан CUID. Прежде чем это сделать, помимо бизнес-логики примите во внимание следующее:
-
Плюсы:
- Данные атрибуции всегда связаны с CUID.
- CUID позволяет устанавливать соответствия между данными атрибуции и другими данными в вашей системе.
- Это позволяет более точно использовать и обрабатывать данные, которые вы получаете от AppsFlyer.
-
Минусы:
- Действия и события, которые выполняют пользователи, включая покупки и подписки, не регистрируются в AppsFlyer, пока не будет задан CUID. Это может привести к несоответствиям и повлиять на выявление мошенничества (которое не всегда можно определить до инициализации SDK).
Примечание. Если запуск SDK отложен до определения CUID, а CUID не задан, SDK не предоставляет никаких данных (включая установку).
Настройка идентификатора CUID
Указания для разработчиков по SDK для Android
Для установки своего Customer User ID используйте такой код:
public void setCustomerUserId(String id);
Пример использования:
AppsFlyerLib.getInstance().setCustomerUserId("myId");
Рекомендуется установить свой ID клиента на раннем этапе продвижения приложения, так как после установки этого идентификатора только он привязывается к событиям, включаемым в отчеты:
- Если вызов
setCustomerUserId
выполняется перед вызовомstart
, идентификатор клиента будет отображаться в отчетах по сырым данным и для установок, и для событий. - Если задать ID клиента позже, он будет привязан только к событиям, зарегистрированным после настройки этого идентификатора.
Чтобы избежать необходимости повторно устанавливать значение ID клиента после первого запуска и многократно обращаться к серверу для его получения, проверьте, задано ли его значение, с помощью этого кода:
AppsFlyerProperties.getInstance().getString(AppsFlyerProperties.APP_USER_ID)
Задержка инициализации SDK для идентификатора customerUserID
Можно отложить инициализацию SDK до настройки идентификатора customerUserID.
Чтобы указать, что инициализацию SDK необходимо отложить до установки идентификатора клиента, выполните такой вызов:
AppsFlyerLib.getInstance().waitForCustomerUserId(true);
непосредственно перед методом init(). Остальную часть инициализации SDK следует оставить без изменений.
После передачи customerUserID выполните вызов
AppsFlyerLib.getInstance().setCustomerIdAndLogSession("customer_id", this);
чтобы передать SDK соответствующий идентификатор клиента User ID и запустить 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)
}
}
Указания для разработчиков по SDK для iOS
Для установки своего Customer User ID используйте такой код:
[AppsFlyerLib shared].customerUserID = @"my user id";
AppsFlyerLib.shared().customerUserID = "my user id"
В iOS идентификатор пользователя необходимо устанавливать с каждым запуском приложения. Рекомендуется установить свой ID клиента на раннем этапе продвижения приложения, так как после установки этого идентификатора только он привязывается к событиям, включаемым в отчеты:
- Если вызов
setCustomerUserId
выполняется перед вызовомstart
, идентификатор клиента будет отображаться в отчетах по сырым данным и для установок, и для событий. - Если задать ID клиента позже, он будет привязан только к событиям, зарегистрированным после настройки этого идентификатора.
Чтобы избежать необходимости повторно устанавливать значение ID клиента после первого запуска и многократно обращаться к серверу для его получения, проверьте, задано ли его значение, с помощью этого кода:
NSString *customerUserID = [AppsFlyerLib shared].customerUserID;
let customerUserID = AppsFlyerLib.shared().customerUserID
Можно отложить инициализацию SDK до настройки идентификатора customerUserID. Это полезно, если вы хотите, чтобы в ваших данных об установках и событиях содержался идентификатор пользователя.
Добавьте следующий код:
- (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
}
}
People-Based Attribution
Атрибуция People-based (PBA) дает вам подробное представление о результативности веб- и мобильных кампаний, а также позволяет проанализировать ваши действия по переводу пользователей веба на ваше мобильное приложение и наоборот.
Нужно установить один и тот же CUID и для мобильных приложений, и для веба, чтобы проводить кросс-платформенный анализ.