ÿÿ Xác định ngưá»i dùng trong Adapty | Tài liệu Adapty

Xác định ngưá»i dùng trong Flutter SDK

Adapty tạo má»™t ID hồ sÆ¡ ná»™i bá»™ cho má»—i ngưá»i dùng. Tuy nhiên, nếu bạn có hệ thống xác thá»±c riêng, bạn nên đặt Customer User ID cá»§a mình. Bạn có thể tìm ngưá»i dùng theo Customer User ID cá»§a há» trong phần Profiles và sá»­ dụng nó trong server-side API, thứ sẽ được gá»­i đến tất cả các tích hợp.

Äặt Customer User ID khi cấu hình

Nếu bạn đã có user ID khi cấu hình, hãy truyá»n nó qua tham số customerUserId vào phương thức .activate():

   try {
       await Adapty().activate(
           configuration: AdaptyConfiguration(apiKey: 'YOUR_API_KEY')
             ..withCustomerUserId(YOUR_CUSTOMER_USER_ID)
       );
   } catch (e) {
       // handle the error
   }

Muốn xem ví dụ thá»±c tế vá» cách tích hợp Adapty SDK vào ứng dụng di động? Hãy xem ứng dụng mẫu cá»§a chúng tôi, nÆ¡i minh há»a toàn bá»™ quá trình thiết lập, bao gồm hiển thị paywall, thá»±c hiện mua hàng và các chức năng cÆ¡ bản khác.

Äặt Customer User ID sau khi cấu hình

Nếu bạn chưa có user ID khi cấu hình SDK, bạn có thể đặt nó bất cứ lúc nào sau đó bằng phương thức .identify(). Trưá»ng hợp phổ biến nhất để sá»­ dụng phương thức này là sau khi đăng ký hoặc đăng nhập, khi ngưá»i dùng chuyển từ ngưá»i dùng ẩn danh sang ngưá»i dùng đã xác thá»±c.

try {
  await Adapty().identify(customerUserId);
} on AdaptyError catch (adaptyError) {
  // handle the error
} catch (e) {
}

Tham số yêu cầu:

  • Customer User ID (bắt buá»™c): chuá»—i định danh ngưá»i dùng.

Gá»­i lại dữ liệu ngưá»i dùng quan trá»ng

Trong má»™t số trưá»ng hợp, chẳng hạn khi ngưá»i dùng đăng nhập lại vào tài khoản cá»§a há», máy chá»§ Adapty đã có thông tin vá» ngưá»i dùng đó. Trong những tình huống này, Adapty SDK sẽ tá»± động chuyển sang làm việc vá»›i ngưá»i dùng má»›i. Nếu bạn đã truyá»n dữ liệu nào đó cho ngưá»i dùng ẩn danh, chẳng hạn như thuá»™c tính tùy chỉnh hoặc attribution từ các mạng bên thứ ba, bạn cần gá»­i lại dữ liệu đó cho ngưá»i dùng đã được xác định.

Ngoài ra, bạn cần gá»i lại tất cả các paywall và sản phẩm sau khi xác định ngưá»i dùng, vì dữ liệu cá»§a ngưá»i dùng má»›i có thể khác.

Äăng xuất và đăng nhập

Bạn có thể đăng xuất ngưá»i dùng bất cứ lúc nào bằng cách gá»i phương thức .logout():

try {
  await Adapty().logout();
} on AdaptyError catch (adaptyError) {
  // handle the error
} catch (e) {
  // handle unknown error
}

Sau đó bạn có thể đăng nhập ngưá»i dùng bằng phương thức .identify().

Gán appAccountToken (iOS)

appAccountToken là má»™t UUID cho phép bạn liên kết các giao dịch App Store vá»›i danh tính ngưá»i dùng ná»™i bá»™ cá»§a mình.
StoreKit liên kết token này vá»›i má»i giao dịch, giúp backend cá»§a bạn khá»›p dữ liệu App Store vá»›i ngưá»i dùng cá»§a bạn.

Hãy sá»­ dụng má»™t UUID ổn định được tạo cho từng ngưá»i dùng và tái sá»­ dụng nó cho cùng má»™t tài khoản trên nhiá»u thiết bị. Äiá»u này đảm bảo rằng các giao dịch mua và thông báo từ App Store được liên kết đúng cách.

Bạn có thể đặt token theo hai cách – trong quá trình kích hoạt SDK hoặc khi xác định ngưá»i dùng.

Bạn phải luôn truyá»n appAccountToken cùng vá»›i customerUserId. Nếu bạn chỉ truyá»n token, nó sẽ không được đưa vào giao dịch.

// During configuration:
try {
   await Adapty().activate(
       configuration: AdaptyConfiguration(apiKey: 'YOUR_API_KEY')
         ..withCustomerUserId(YOUR_CUSTOMER_USER_ID, iosAppAccountToken: "YOUR_APP_ACCOUNT_TOKEN")
   );
} catch (e) {
   // handle the error
}
// Or when identifying users
try {
    await Adapty().identify(customerUserId, iosAppAccountToken: "YOUR_APP_ACCOUNT_TOKEN");
} on AdaptyError catch (adaptyError) {
    // handle the error
} catch (e) {
}

Äặt obfuscated account ID (Android)

Google Play yêu cầu obfuscated account ID cho má»™t số trưá»ng hợp sá»­ dụng nhằm tăng cưá»ng quyá»n riêng tư và bảo mật ngưá»i dùng. Các ID này giúp Google Play xác định các giao dịch mua trong khi vẫn giữ thông tin ngưá»i dùng ẩn danh, Ä‘iá»u này đặc biệt quan trá»ng để phòng chống gian lận và phân tích.

Bạn có thể cần đặt các ID này nếu ứng dụng cá»§a bạn xá»­ lý dữ liệu ngưá»i dùng nhạy cảm hoặc nếu bạn cần tuân thá»§ các quy định vá» quyá»n riêng tư cụ thể. Các obfuscated ID cho phép Google Play theo dõi các giao dịch mua mà không để lá»™ định danh ngưá»i dùng thá»±c tế.

// During configuration:
try {
   await Adapty().activate(
       configuration: AdaptyConfiguration(apiKey: 'YOUR_API_KEY')
         ..withCustomerUserId(YOUR_CUSTOMER_USER_ID, androidObfuscatedAccountId: "OBFUSCATED_ACCOUNT_ID")
   );
} catch (e) {
   // handle the error
}
// Or when identifying users
try {
    await Adapty().identify(customerUserId, androidObfuscatedAccountId: "OBFUSCATED_ACCOUNT_ID");
} on AdaptyError catch (adaptyError) {
    // handle the error
} catch (e) {
}

Phát hiện ngưá»i dùng trên nhiá»u thiết bị

Khi SDK được kích hoạt, nó tá»± động Ä‘á»c các quyá»n hiện có cá»§a ngưá»i dùng từ StoreKit (iOS) hoặc Google Play Billing (Android) và đồng bá»™ chúng vá»›i backend cá»§a Adapty. Má»™t gói đăng ký Ä‘ang hoạt động sẽ xuất hiện trên hồ sÆ¡ ngưá»i dùng Adapty mà không cần ứng dụng gá»i restorePurchases.

Äiá»u không xảy ra tá»± động là nhận diện rằng má»™t hồ sÆ¡ ngưá»i dùng trên thiết bị má»›i thuá»™c vá» cùng má»™t ngưá»i dùng như hồ sÆ¡ trên thiết bị ban đầu. Adapty khá»›p các hồ sÆ¡ ngưá»i dùng theo Customer User ID, vì vậy tính liên tục danh tính phụ thuá»™c vào những gì bạn sá»­ dụng làm CUID.

Những ÿÿgì Adapty có thể phát hiện trên nhiá»u thiết bị

Cài đặt của bạnAdapty phát hiện được gìBạn phải làm gì
Customer User ID = device_id (không đăng nhập ứng dụng)Thiết bị má»›i nhận được CUID khác và do đó có hồ sÆ¡ ngưá»i dùng khác. Gói đăng ký đồng bá»™ vá»›i hồ sÆ¡ ngưá»i dùng má»›i thông qua sá»± kiện Access level updated, nhưng subscription_started không kích hoạt — hồ sÆ¡ ngưá»i dùng má»›i được coi là ngưá»i kế thừa cá»§a giao dịch mua ban đầu. Các phân tích dá»±a trên subscription_started sẽ đếm thiếu những ngưá»i dùng quay lại.Sá»­ dụng ID tài khoản ổn định làm Customer User ID để ngưá»i dùng quay lại khá»›p vá»›i hồ sÆ¡ ngưá»i dùng hiện có trên các thiết bị.
Customer User ID = ID tài khoản ổn định (đăng nhập trên má»i thiết bị)SDK tá»± động đồng bá»™ gói đăng ký khi activate(), và identify() khá»›p hồ sÆ¡ ngưá»i dùng hiện có theo CUID.Không cần cài đặt thêm — cả danh tính lẫn gói đăng ký Ä‘á»u được xá»­ lý tá»± động.
Ngưá»i kế thừa Apple Family SharingThành viên gia đình nhận gói đăng ký thông qua sá»± kiện Access level updated — subscription_started không kích hoạt.Lắng nghe sá»± kiện Access level updated. Xem Apple Family Sharing để biết ma trận sá»± kiện đầy đủ.
Cùng tài khoản Apple/Google, ngưá»i dùng khác nhau trong ứng dụngHồ sÆ¡ ngưá»i dùng đầu tiên ghi lại giao dịch mua trở thành hồ sÆ¡ cha. Các hồ sÆ¡ ngưá»i dùng tiếp theo thấy gói đăng ký thông qua chuá»—i kế thừa, vá»›i má»™t sá»± kiện Access level updated.Yêu cầu đăng nhập, sau đó chá»n chế độ chia sẻ phù hợp vá»›i mô hình cá»§a bạn.

Khôi phục giao dịch mua trên thiết bị mới

Hiển thị nút “Khôi phục giao dịch mua†do ngưá»i dùng khởi tạo trên paywall cá»§a bạn. Apple App Review (hướng dẫn 3.1.1) yêu cầu có nút này, và nó đóng vai trò dá»± phòng khi quá trình đồng bá»™ tá»± động bá» sót má»™t trưá»ng hợp đặc biệt. Nút này nên gá»i restorePurchases trên SDK cá»§a bạn.

Không cần gá»i restorePurchases theo chương trình khi khởi chạy lần đầu trong Ä‘iá»u kiện sá»­ dụng bình thưá»ng — SDK đã thá»±c hiện tương đương khi activate(). Chỉ dùng các lệnh gá»i theo chương trình để buá»™c kiểm tra biên lai má»›i, ví dụ khi debug trưá»ng hợp mất quyá»n truy cập sau khi activate() đã hoàn thành.

ÿÿÿÿ