Bằng việc sử dụng Play Age Signals API (thử nghiệm), bạn đồng ý với các điều khoản dịch vụ và đồng ý tuân thủ mọi chính sách của nhà phát triển trên Google Play. Để yêu cầu trạng thái và độ tuổi của người dùng, bạn gọi API từ ứng dụng của mình trong thời gian chạy. Play Age Signals API chỉ trả về dữ liệu cho người dùng ở những khu vực mà Google Play bắt buộc phải cung cấp dữ liệu danh mục độ tuổi theo luật.
Play trả về một độ tuổi dựa trên các nhóm tuổi do khu vực tài phán và vùng áp dụng xác định. Độ tuổi mặc định mà API trả về ở những khu vực pháp lý và khu vực áp dụng là 0-12, 13-15, 16-17 và từ 18 trở lên, nhưng bạn có thể nhận được độ tuổi tùy chỉnh. Google Play tự động cập nhật các dấu hiệu về độ tuổi được lưu vào bộ nhớ đệm cho một người dùng trong vòng 2 đến 8 tuần sau ngày sinh của người dùng.
Tích hợp Play Age Signals API vào ứng dụng
Play Age Signals API được hỗ trợ trên điện thoại, điện thoại gập và máy tính bảng chạy Android 6.0 (cấp độ API 23) trở lên. Để tích hợp Play Age Signals API vào ứng dụng, hãy thêm phần phụ thuộc sau vào tệp build.gradle của ứng dụng:
implementation 'com.google.android.play:age-signals:0.0.3'
Yêu cầu dấu hiệu về độ tuổi
Dưới đây là ví dụ về cách đưa ra yêu cầu về dấu hiệu về độ tuổi:
Kotlin
// Create an instance of a manager val ageSignalsManager = AgeSignalsManagerFactory.create(ApplicationProvider.getApplicationContext()) // Request an age signals check ageSignalsManager .checkAgeSignals(AgeSignalsRequest.builder().build()) .addOnSuccessListener { ageSignalsResult -> // Store the install ID for later... val installId = ageSignalsResult.installId() if (ageSignalsResult.userStatus() == AgeSignalsVerificationStatus.SUPERVISED_APPROVAL_DENIED) { // Disallow access... } else { // Do something else if the user is VERIFIED, DECLARED, SUPERVISED, etc. } }
Java
// Create an instance of a manager AgeSignalsManager ageSignalsManager = AgeSignalsManagerFactory.create(ApplicationProvider.getApplicationContext()); // Request an age signals check ageSignalsManager .checkAgeSignals(AgeSignalsRequest.builder().build()) .addOnSuccessListener( ageSignalsResult -> { // Store the install ID for later... String installId = ageSignalsResult.installId(); if (ageSignalsResult .userStatus() .equals(AgeSignalsVerificationStatus.SUPERVISED_APPROVAL_DENIED)) { // Disallow access ... } else { // Do something else if the user is SUPERVISED, VERIFIED, etc. } });
(Không bắt buộc) Nhận độ tuổi tuỳ chỉnh
Độ tuổi mặc định mà API trả về ở những khu vực pháp lý và khu vực áp dụng là 0-12, 13-15, 16-17 và từ 18 trở lên.
Ngoài ra, để tuỳ chỉnh độ tuổi mặc định theo độ tuổi tối thiểu để dùng ứng dụng của bạn, bạn có thể cung cấp các độ tuổi tối thiểu này cho ứng dụng của mình trên trang Dấu hiệu về độ tuổi trong Google Play Console.
- Chuyển đến trang Dấu hiệu về độ tuổi trong Play Console.
- Trên thẻ Độ tuổi tuỳ chỉnh, hãy nhập tối đa 3 độ tuổi tối thiểu cho ứng dụng của bạn. Các độ tuổi tối thiểu phải cách nhau ít nhất 2 năm và bạn có thể thay đổi thông tin này mỗi năm một lần.
- Nhấp vào Lưu.
Độ tuổi được trả về sẽ ghi đè phản hồi API mặc định. Ví dụ:
Nếu bạn đặt một độ tuổi tối thiểu (15) trong Google Play Console:
- Người dùng từ 0 đến 14 tuổi sẽ trả về
ageLower = 0vàageUpper = 14. - Người dùng từ 15 tuổi trở lên sẽ trả về
ageLower = 15.
- Người dùng từ 0 đến 14 tuổi sẽ trả về
Nếu bạn đặt 2 độ tuổi tối thiểu (13 và 17):
- Người dùng từ 0 đến 12 tuổi sẽ trả về
ageLower = 0vàageUpper = 12. - Người dùng từ 13 đến 16 tuổi sẽ trả về
ageLower = 13vàageUpper = 16. - Người dùng từ 17 tuổi trở lên sẽ trả về
ageLower = 17.
- Người dùng từ 0 đến 12 tuổi sẽ trả về
Nếu bạn đặt 3 độ tuổi tối thiểu (11, 13 và 15):
- Người dùng từ 0 đến 10 tuổi sẽ trả về
ageLower = 0vàageUpper = 10. - Người dùng 11 hoặc 12 tuổi sẽ trả về
ageLower = 11vàageUpper = 12. - Người dùng 13 hoặc 14 tuổi sẽ trả về
ageLower = 13vàageUpper = 14. - Người dùng từ 15 tuổi trở lên sẽ trả về
ageLower = 15.
- Người dùng từ 0 đến 10 tuổi sẽ trả về
Phản hồi về dấu hiệu về độ tuổi
Phản hồi của Play Age Signals API (thử nghiệm) bao gồm các trường và giá trị sau. Các giá trị có thể thay đổi. Nếu bạn muốn có các giá trị gần đây nhất, hãy yêu cầu phản hồi API khi ứng dụng của bạn mở. Bạn chịu trách nhiệm cung cấp trải nghiệm phù hợp với độ tuổi bằng cách sử dụng các dấu hiệu này.
| Trường phản hồi | Giá trị | Mô tả |
|---|---|---|
userStatus |
ĐÃ XÁC MINH | Google đã xác minh độ tuổi của người dùng bằng một phương pháp hợp lý về phương diện thương mại, chẳng hạn như giấy tờ tuỳ thân do chính phủ cấp, thẻ tín dụng hoặc ước tính độ tuổi dựa trên khuôn mặt. Nếu userStatus là VERIFIED, bạn có thể bỏ qua các trường khác.
Sử dụng ageLower và ageUpper để xác định độ tuổi của người dùng.
|
| ĐÃ KHAI BÁO | Độ tuổi của người dùng do người dùng, cha mẹ hoặc người giám hộ hợp pháp của họ khai báo.
Sử dụng ageLower và ageUpper để xác định độ tuổi của người dùng. |
|
| SUPERVISED | Người dùng có một Tài khoản Google được giám sát do cha mẹ quản lý và đặt độ tuổi.
Sử dụng ageLower và ageUpper để xác định độ tuổi của người dùng.
Sử dụng mostRecentApprovalDate để xác định thay đổi quan trọng gần đây nhất đã được phê duyệt. |
|
| SUPERVISED_APPROVAL_PENDING | Người dùng có một Tài khoản Google được giám sát và cha mẹ giám sát của họ chưa phê duyệt một hoặc nhiều thay đổi quan trọng đang chờ xử lý.
Sử dụng ageLower và ageUpper để xác định độ tuổi của người dùng.
Sử dụng mostRecentApprovalDate để xác định thay đổi quan trọng gần đây nhất đã được phê duyệt. |
|
| SUPERVISED_APPROVAL_DENIED | Người dùng có một Tài khoản Google được giám sát và cha mẹ giám sát của họ đã từ chối phê duyệt một hoặc nhiều thay đổi quan trọng.
Sử dụng ageLower và ageUpper để xác định độ tuổi của người dùng.
Sử dụng mostRecentApprovalDate để xác định thay đổi quan trọng gần đây nhất đã được phê duyệt. |
|
| UNKNOWN (KHÔNG XÁC ĐỊNH) | Không xác định được độ tuổi của người dùng và người dùng đang ở một khu vực tài phán hoặc vùng áp dụng.
Chỉ áp dụng cho các bang của Hoa Kỳ: Để nhận dấu hiệu về độ tuổi từ Google Play, hãy yêu cầu người dùng truy cập vào Cửa hàng Play để giải quyết trạng thái của họ. |
|
null |
Hoặc người dùng không ở các khu vực pháp lý và khu vực áp dụng.
Hoặc người dùng không chia sẻ độ tuổi của họ với các ứng dụng. |
|
ageLower |
0 đến 18 | Giới hạn dưới (bao gồm) của độ tuổi của người dùng được giám sát.
Sử dụng ageLower và ageUpper để xác định độ tuổi của người dùng. |
null |
userStatus là không xác định hoặc null. |
|
ageUpper |
2 đến 18 | Giới hạn trên (bao gồm) của độ tuổi của người dùng được giám sát.
Sử dụng ageLower và ageUpper để xác định độ tuổi của người dùng. |
null |
Hoặc userStatus là được giám sát và cha mẹ của người dùng đã xác nhận rằng độ tuổi của người dùng là trên 18.
Hoặc userStatus là không xác định hoặc null. |
|
mostRecentApprovalDate |
Dấu thời gian | Ngày effective from của thay đổi quan trọng gần đây nhất đã được phê duyệt. Khi một ứng dụng được cài đặt, ngày của thay đổi quan trọng gần đây nhất trước khi cài đặt sẽ được sử dụng. |
null |
Hoặc userStatus là được giám sát và không có thay đổi quan trọng nào được gửi.
Hoặc userStatus là đã xác minh, không xác định hoặc null. |
|
installID |
Mã gồm chữ và số do Play tạo. | Mã do Google Play chỉ định cho các bản cài đặt của người dùng được giám sát, được dùng cho mục đích thông báo cho bạn về việc phê duyệt ứng dụng bị thu hồi. Xem tài liệu về việc phê duyệt ứng dụng bị thu hồi. |
null |
userStatus là đã xác minh, không xác định hoặc null. |
Phản hồi làm ví dụ dành cho người dùng ở Brazil
Ở Brazil, userStatus chỉ có thể là DECLARED, UNKNOWN hoặc null.
Đối với người dùng đã khai báo độ tuổi và chia sẻ độ tuổi đó với các ứng dụng, bạn sẽ nhận được thông tin sau:
userStatussẽ làAgeSignalsVerificationStatus.DECLARED.ageLowersẽ là một số (ví dụ: 13).ageUppersẽ là một số hoặcnull(ví dụ: 15).- Các trường phản hồi khác sẽ là
null.
Đối với người dùng có độ tuổi không xác định, bạn sẽ nhận được thông tin sau:
userStatussẽ làAgeSignalsVerificationStatus.UNKNOWN.- Các trường phản hồi khác sẽ là
null.
Đối với người dùng không chia sẻ độ tuổi của họ với các ứng dụng, bạn sẽ nhận được thông tin sau:
userStatussẽ lànull.- Các trường phản hồi khác sẽ là
null.
Trạng thái người dùng có thể thay đổi thành DECLARED sau khi độ tuổi của người dùng có thể chia sẻ.
Phản hồi làm ví dụ dành cho người dùng ở các bang của Hoa Kỳ
Ở các bang của Hoa Kỳ trong phạm vi áp dụng, userStatus có thể là VERIFIED,
SUPERVISED, SUPERVISED_APPROVAL_PENDING,
SUPERVISED_APPROVAL_DENIED, UNKNOWN, hoặc
null.
Đối với người dùng đã xác minh, bạn sẽ nhận được thông tin sau:
userStatussẽ làAgeSignalsVerificationStatus.VERIFIED.ageLowersẽ là một số (ví dụ: 18).ageUppersẽ là một số hoặcnull(ví dụ:null).- Các trường phản hồi khác sẽ là
null.
Đối với người dùng được giám sát, bạn sẽ nhận được thông tin sau:
userStatussẽ làAgeSignalsVerificationStatus.SUPERVISED.ageLowersẽ là một số (ví dụ: 13).ageUppersẽ là một số hoặcnull(ví dụ: 15).mostRecentApprovalDatesẽ là một đối tượng ngày Java (ví dụ:2026-01-01) hoặcnull(nếu không có thay đổi quan trọng nào được phê duyệt).installIDsẽ là một mã gồm chữ và số do Play tạo (ví dụ:550e8400-e29b-41d4-a716-446655441111).
Đối với người dùng được giám sát có thay đổi quan trọng đang chờ phê duyệt, bạn sẽ nhận được thông tin sau:
userStatussẽ làAgeSignalsVerificationStatus.SUPERVISED_APPROVAL_PENDING.ageLowersẽ là một số (ví dụ: 13).ageUppersẽ là một số hoặcnull(ví dụ: 15).mostRecentApprovalDatesẽ là một đối tượng ngày Java (ví dụ:2026-01-01) hoặcnull(nếu không có thay đổi quan trọng nào được phê duyệt).installIDsẽ là một mã gồm chữ và số do Play tạo (ví dụ:550e8400-e29b-41d4-a716-446655441111).
Xử lý mã lỗi API
Nếu ứng dụng của bạn đưa ra yêu cầu API Play Age Signals và lệnh gọi không thành công, thì ứng dụng sẽ nhận được một mã lỗi. Các lỗi này có thể xảy ra vì nhiều lý do, chẳng hạn như ứng dụng Cửa hàng Play đã lỗi thời.
Chiến lược thử lại
Trong trường hợp người dùng đang hoạt động, bạn nên triển khai một chiến lược thử lại với số lần thử tối đa làm điều kiện thoát để hạn chế tối đa việc lỗi làm gián đoạn trải nghiệm người dùng.
| Giá trị số của mã lỗi | Mã lỗi | Mô tả | Có thể thử lại |
|---|---|---|---|
| -1 | API_NOT_AVAILABLE | Không có Play Age Signals API. Phiên bản ứng dụng Cửa hàng Play được cài đặt trên thiết bị có thể đã cũ. Giải pháp có thể
|
Có |
| -2 | PLAY_STORE_NOT_FOUND | Không tìm thấy ứng dụng Cửa hàng Play trên thiết bị. Yêu cầu người dùng cài đặt hoặc bật Cửa hàng Play. | Có |
| -3 | NETWORK_ERROR | Không tìm thấy bất cứ mạng nào. Hãy yêu cầu người dùng kiểm tra kết nối. | Có |
| -4 | PLAY_SERVICES_NOT_FOUND | Không có Dịch vụ Play hoặc phiên bản quá cũ. Yêu cầu người dùng cài đặt, cập nhật hoặc bật Dịch vụ Play. | Có |
| -5 | CANNOT_BIND_TO_SERVICE | Không liên kết được với dịch vụ trong Cửa hàng Play. Điều này có thể là do phiên bản Cửa hàng Play được cài đặt trên thiết bị đã cũ hoặc bộ nhớ thiết bị đã quá tải. Yêu cầu người dùng cập nhật ứng dụng Cửa hàng Play. Thử lại bằng cách tăng thời gian chờ theo cấp số nhân. | Có |
| -6 | PLAY_STORE_VERSION_OUTDATED | Người dùng cần cập nhật ứng dụng Cửa hàng Play. Yêu cầu người dùng cập nhật ứng dụng Cửa hàng Play. | Có |
| -7 | PLAY_SERVICES_VERSION_OUTDATED | Cần cập nhật Dịch vụ Play. Yêu cầu người dùng cập nhật Dịch vụ Play. | Có |
| -8 | CLIENT_TRANSIENT_ERROR | Đã xảy ra lỗi tạm thời trong thiết bị ứng dụng. Triển khai chiến lược thử lại với số lần thử tối đa làm điều kiện thoát. Nếu vấn đề vẫn chưa được giải quyết, hãy yêu cầu người dùng thử lại sau. | Có |
| -9 | APP_NOT_OWNED | Ứng dụng không được cài đặt qua Google Play. Yêu cầu người dùng tải ứng dụng của bạn xuống từ Google Play. | Không |
| -10 | SDK_VERSION_OUTDATED | Phiên bản SDK Play Age Signals không còn được hỗ trợ. Yêu cầu người dùng cập nhật ứng dụng của bạn lên phiên bản mới hơn sử dụng phiên bản gần đây của SDK Play Age Signals. | Không |
| -100 | INTERNAL_ERROR | Lỗi nội bộ không xác định. Triển khai chiến lược thử lại với số lần thử tối đa làm điều kiện thoát. Nếu vấn đề vẫn chưa được giải quyết, hãy yêu cầu người dùng thử lại sau. Nếu lỗi xảy ra liên tục, hãy liên hệ với nhóm hỗ trợ nhà phát triển của Google Play, ghi Play Age Signals API trong tiêu đề và cung cấp càng nhiều thông tin kỹ thuật càng tốt (chẳng hạn như báo cáo lỗi). | Không |