Khái quát: Tham chiếu chéo dữ liệu nội bộ của bạn với dữ liệu phân bổ AppsFlyer theo trường Customer User ID (CUID).
Triển khai CUID
Trường Customer User ID (CUID) là một mã định danh người dùng duy nhất do chủ sở hữu ứng dụng và trang web thiết lập.
- CUID được bạn báo cáo cho AppsFlyer bằng API hoặc SDK của AppsFlyer.
- AppsFlyer điền vào trường CUID trong các báo cáo dữ liệu thô tương ứng.
- Sử dụng CUID để tham chiếu chéo dữ liệu phân bổ AppsFlyer với dữ liệu khác của bạn bằng cách sử dụng CUID làm mã khóa.
- Ví dụ: Một người dùng có hai thiết bị có cùng CUID ("1234567"). Mỗi lần họ thực hiện một sự kiện trên một thiết bị, sự kiện sẽ được ghi nhận cùng với CUID. Điều này cho phép nhà quảng cáo hợp nhất dữ liệu thô của cả hai thiết bị vào một chế độ xem tổng thể về người dùng.
- CUID được sử dụng bởi các giải pháp Đối tượng và Phân bổ trên Cơ sở Người dùng của AppsFlyer để cải thiện độ chính xác và khả năng nhắm mục tiêu.
Kiểu CUID và quyền riêng tư
- AppsFlyer coi trọng và tôn trọng quyền riêng tư của bạn và người dùng của bạn.
- Chúng tôi không cho phép thu thập hoặc chuyển thông tin cá nhân có thể nhận dạng trực tiếp sang nền tảng AppsFlyer.
- Để đảm bảo quyền riêng tư của người dùng, hãy tạo CUID mà không dùng đến thông tin nhận dạng trực tiếp người dùng. Ví dụ: CUID không nên chứa địa chỉ email, tên, số điện thoại, số an sinh xã hội, v.v. của người dùng.
- Bài viết liên quan: Phương pháp thực hành tốt nhất của Google trong việc tránh gửi PII
Trì hoãn khởi động SDK cho đến khi CUID được đặt
Bạn có thể trì hoãn khởi động SDK cho đến khi CUID được đặt. Bên cạnh logic kinh doanh của bạn, hãy xem xét những thông tin sau trước khi làm vậy:
-
Ưu điểm:
- Dữ liệu phân bổ luôn được liên kết với CUID.
- Sử dụng CUID để liên kết dữ liệu phân bổ với dữ liệu khác mà bạn có trong hệ thống của mình.
- Điều này cho phép sử dụng và xử lý một cách tinh tế hơn các dữ liệu mà bạn nhận được từ AppsFlyer.
-
Nhược điểm:
- Các hành động và sự kiện mà người dùng thực hiện, bao gồm mua hàng và đăng ký, không được ghi nhận vào AppsFlyer cho đến khi CUID được đặt. Điều này có thể dẫn đến sự sai khác và có thể ảnh hưởng đến việc phát hiện gian lận (không nhất thiết phải xác định được trước khi khởi tạo SDK).
Lưu ý: Nếu quá trình khởi động SDK bị trì hoãn cho đến khi có CUID và không có CUID nào được đặt, thì SDK sẽ không báo cáo bất kỳ dữ liệu nào (bao gồm cả lượt cài đặt).
Cài đặt CUID
Hướng dẫn dành cho nhà phát triển SDK Android
Để thiết lập ID người dùng Customer User ID:
public void setCustomerUserId(String id);
Ví dụ cách dùng:
AppsFlyerLib.getInstance().setCustomerUserId("myId");
Chúng tôi khuyên bạn nên đặt Customer User ID sớm trong luồng của ứng dụng, vì nó chỉ được liên kết với các sự kiện được báo cáo sau khi thiết lập:
- Nếu
setCustomerUserId
được gọi trước khi gọistart
, Customer User ID sẽ xuất hiện trong các báo cáo dữ liệu thô cho các lượt cài đặt và sự kiện. - Nếu được đặt sau, Customer User ID chỉ được liên kết với các sự kiện được ghi nhận sau khi cài đặt Customer User ID.
Để tránh thiết lập lại giá trị Customer User ID sau lần khởi chạy đầu tiên và để giảm các cuộc gọi đến máy chủ của bạn để lấy Customer User ID, bạn có thể kiểm tra xem giá trị của nó có trống hay không bằng cách:
AppsFlyerProperties.getInstance().getString(AppsFlyerProperties.APP_USER_ID)
Trì hoãn Khởi tạo SDK cho customerUserID
Bạn có thể trì hoãn Khởi tạo SDK cho đến khi customerUserID được thiết lập.
Để chỉ ra rằng SDK sẽ trì hoãn việc khởi tạo cho cuộc gọi Customer User ID:
AppsFlyerLib.getInstance().waitForCustomerUserId(true);
ngay trước khi thực hiện phương pháp init(). Phần còn lại của Khởi tạo SDK nên được giữ nguyên.
Khi đã được cung cấp customerUserID, hãy gọi
AppsFlyerLib.getInstance().setCustomerIdAndLogSession("customer_id", this);
để cung cấp cho SDK customer user id liên quan và bắt đầu SDK.
Đoạn mã sẽ xuất hiện như sau:
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)
}
}
Hướng dẫn dành cho nhà phát triển SDK iOS
Để thiết lập ID người dùng Customer User ID:
[AppsFlyerLib shared].customerUserID = @"my user id";
AppsFlyerLib.shared().customerUserID = "my user id"
Trong iOS, Customer User ID cần được đặt cho mỗi lần khởi chạy ứng dụng. Chúng tôi khuyên bạn nên đặt Customer User ID sớm trong luồng của ứng dụng, vì nó chỉ được liên kết với các sự kiện được báo cáo sau khi thiết lập:
- Nếu
setCustomerUserId
được gọi trước khi gọistart
, Customer User ID sẽ xuất hiện trong các báo cáo dữ liệu thô cho các lượt cài đặt và sự kiện. - Nếu được đặt sau, Customer User ID chỉ được liên kết với các sự kiện được ghi nhận sau khi cài đặt Customer User ID.
Để tránh thiết lập lại giá trị Customer User ID sau lần khởi chạy đầu tiên và để giảm các cuộc gọi đến máy chủ của bạn để lấy Customer User ID, bạn có thể kiểm tra xem giá trị của nó có trống hay không bằng cách:
NSString *customerUserID = [AppsFlyerLib shared].customerUserID;
let customerUserID = AppsFlyerLib.shared().customerUserID
Bạn có thể trì hoãn Khởi tạo SDK cho đến khi Customer User ID được thiết lập. Điều này hữu ích nếu điều bạn cần là dữ liệu cài đặt và sự kiện chứa Customer User ID của bạn.
Thực hiện mã sau:
- (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
}
}
Phân bổ trên cơ sở người dùng
Giải pháp Phân bổ trên Cơ sở Người dùng (PBA) của AppsFlyer cung cấp cho bạn một cái nhìn bao quát về tác động của các chiến dịch trên web và di động, cũng như khả năng phân tích nỗ lực của bạn trong việc chuyển người dùng web sang ứng dụng di động của bạn và ngược lại.
Bạn phải đặt cùng một CUID trong cả môi trường di động và web, để bật tính năng thông tin chuyên sâu và phân tích đa nền tảng.