Kiểm tra trạng thái gói đăng ký trong Flutter SDK
Để quyết định xem người dùng có thể truy cập nội dung trả phí hay cần xem paywall, bạn cần kiểm tra mức độ truy cập của họ trong hồ sơ người dùng.
Bài viết này hướng dẫn bạn cách truy cập trạng thái hồ sơ người dùng để quyết định nên hiển thị gì cho họ — paywall hay nội dung trả phí.
Lấy trạng thái gói đăng ký
Khi quyết định hiển thị paywall hay nội dung trả phí cho người dùng, bạn kiểm tra mức độ truy cập trong hồ sơ của họ. Có hai lựa chọn:
- Gọi
getProfilekhi cần dữ liệu hồ sơ mới nhất ngay lập tức (ví dụ: khi khởi động ứng dụng) hoặc muốn buộc cập nhật. - Thiết lập cập nhật hồ sơ tự động để giữ một bản sao cục bộ được tự động làm mới mỗi khi trạng thái gói đăng ký thay đổi.
Lấy hồ sơ người dùng
Cách đơn giản nhất để lấy trạng thái gói đăng ký là dùng phương thức getProfile:
try {
final profile = await Adapty().getProfile();
// check the access
} on AdaptyError catch (adaptyError) {
// handle the error
} catch (e) {
}
Lắng nghe các cập nhật gói đăng ký
Để tự động nhận cập nhật hồ sơ người dùng trong ứng dụng:
- Sử dụng
Adapty().didUpdateProfileStream.listen()để lắng nghe các thay đổi của hồ sơ người dùng — Adapty sẽ tự động gọi phương thức này mỗi khi trạng thái gói đăng ký của người dùng thay đổi. - Lưu dữ liệu hồ sơ người dùng đã cập nhật khi phương thức này được gọi, để bạn có thể sử dụng trong toàn bộ ứng dụng mà không cần thực hiện thêm các yêu cầu mạng.
class SubscriptionManager {
AdaptyProfile? _currentProfile;
SubscriptionManager() {
// Listen for profile updates
Adapty().didUpdateProfileStream.listen((profile) {
_currentProfile = profile;
// Update UI, unlock content, etc.
});
}
// Use stored profile instead of calling getProfile()
bool hasAccess() {
return _currentProfile?.accessLevels['premium']?.isActive ?? false;
}
}
Adapty tự động gọi stream listener cập nhật hồ sơ người dùng khi ứng dụng khởi động, cung cấp dữ liệu gói đăng ký được lưu trong bộ nhớ cache ngay cả khi thiết bị ngoại tuyến.
Kết nối hồ sơ người dùng với logic paywall
Khi bạn cần đưa ra quyết định ngay lập tức về việc hiển thị paywall hay cấp quyền truy cập vào các tính năng trả phí, bạn có thể kiểm tra trực tiếp hồ sơ người dùng. Cách tiếp cận này hữu ích trong các tình huống như khi khởi chạy ứng dụng, khi người dùng truy cập vào các phần premium, hoặc trước khi hiển thị nội dung cụ thể.
Future<bool> _checkAccessLevel() async {
try {
final profile = await Adapty().getProfile();
return profile.accessLevels['YOUR_ACCESS_LEVEL']?.isActive ?? false;
} catch (e) {
print('Error checking access level: $e');
return false; // Show paywall if access check fails
}
}
Future<void> _initializePaywall() async {
await _loadPaywall();
final hasAccess = await _checkAccessLevel();
if (!hasAccess) {
// Show paywall if no access
}
}
Bước tiếp theo
Sau khi đã biết cách theo dõi trạng thái gói đăng ký, hãy tìm hiểu cách làm việc với hồ sơ người dùng để đảm bảo họ có thể truy cập những gì đã thanh toán.