שימוש ב-Play Age Signals API (בטא)

השימוש ב-Play Age Signals API (בטא) מהווה את הסכמתכם לתנאים ולהגבלות וכן את הסכמתכם לציית לכל כללי המדיניות למפתחים של Google Play. כדי לבקש את הסטטוס וטווח הגילאים של המשתמש, צריך להפעיל את ה-API מהאפליקציה בזמן הריצה. ‫Play Age Signals API מחזיר נתונים רק לגבי משתמשים שנמצאים באזורים שבהם Play נדרש על פי חוק לספק נתונים של קטגוריות גיל.

מערכת Play מחזירה טווח גילאים על סמך קבוצות הגיל שהוגדרו באזורים ובסמכויות השיפוט הרלוונטיים. טווחי הגילאים ש-API מחזיר כברירת מחדל באזורים ובסמכויות שיפוט רלוונטיים הם 0-12, ‏13-15, ‏16-17 ו-18 ומעלה, אבל יכול להיות שיתקבלו טווחי גילאים מותאמים אישית. מערכת Google Play מעדכנת באופן אוטומטי אותות גיל ששמורים במטמון של משתמש תוך שבועיים עד 8 שבועות אחרי יום ההולדת של המשתמש.

שילוב של Play Age Signals API באפליקציה

ממשק ה-API של אותות הגיל ב-Play נתמך בטלפונים, במכשירים מתקפלים ובטאבלטים עם Android מגרסה 6.0 (רמת API‏ 23) ואילך. כדי לשלב את Play Age Signals API באפליקציה, מוסיפים את התלות הבאה לקובץ build.gradle של האפליקציה:

implementation 'com.google.android.play:age-signals:0.0.3'

בקשת אותות גיל

דוגמה לשליחת בקשה לקבלת אותות גיל:

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.
          }
        });

(אופציונלי) קבלת טווחי גילאים בהתאמה אישית

טווחי הגילאים ש-API מחזיר כברירת מחדל באזורים ובסמכויות שיפוט רלוונטיים הם 0-12, ‏13-15, ‏16-17 ו-18 ומעלה.

לחלופין, כדי להתאים אישית את טווחי הגילאים שמוחזרים כברירת מחדל בהתאם לדרישות הגיל המינימלי באפליקציה, אפשר לציין את הגילאים המינימליים האלה בדף אותות גיל ב-Google Play Console.

  1. עוברים לדף אותות גיל ב-Play Console.
  2. בכרטיסייה טווחי גילאים בהתאמה אישית, מזינים עד שלושה גילים מינימליים לאפליקציה. הגילים המינימליים צריכים להיות בהפרש של שנתיים לפחות, ואפשר לשנות אותם פעם בשנה.
  3. לוחצים על שמירה.

טווחי הגילאים שיוחזרו יחליפו את תגובת ברירת המחדל של ה-API. לדוגמה:

  • אם הגדרתם גיל מינימלי אחד (15) ב-Google Play Console:

    • אם הגיל הוא 0 עד 14, הפונקציה תחזיר ageLower = 0 ו-ageUpper = 14.
    • אם הגיל הוא 15 ומעלה, הפונקציה תחזיר ageLower = 15.
  • אם מגדירים שני גילים מינימליים (13 ו-17):

    • אם הגיל הוא בין 0 ל-12, הפונקציה תחזיר את הערכים ageLower = 0 ו-ageUpper = 12.
    • אם הגיל הוא 13 עד 16, הפונקציה מחזירה ageLower = 13 ו-ageUpper = 16.
    • אם הגיל הוא 17 ומעלה, הפונקציה תחזיר ageLower = 17.
  • אם מגדירים שלושה גילים מינימליים (11, ‏13 ו-15):

    • אם הגיל הוא בין 0 ל-10, הפונקציה תחזיר את הערכים ageLower = 0 ו-ageUpper = 10.
    • אם הגיל הוא 11 או 12, הפונקציה תחזיר ageLower = 11 ו-ageUpper = 12.
    • אם הגיל הוא 13 או 14, הפונקציה תחזיר ageLower = 13 ו-ageUpper = 14.
    • אם הגיל הוא 15 ומעלה, הפונקציה תחזיר ageLower = 15.

תגובות לאותות גיל

התגובה של Play Age Signals API (בטא) כוללת את השדות והערכים הבאים. הערכים האלה יכולים להשתנות. אם רוצים לקבל את הערכים העדכניים ביותר, צריך לשלוח בקשה לתשובת API כשהאפליקציה נפתחת. באחריותכם לספק חוויות שמתאימות לגיל באמצעות האותות האלה.

שדה תשובה ערכים תיאור
userStatus נבדק ‫Google אימתה את גיל המשתמש באמצעות שיטה סבירה מבחינה מסחרית, כמו תעודה מזהה רשמית, כרטיס אשראי או הערכת גיל לפי תווי פנים. אם הערך של userStatus הוא VERIFIED, אפשר להתעלם משאר השדות.

משתמשים במאפיינים ageLower ו-ageUpper כדי לקבוע את טווח הגילאים של המשתמש.
הצהרה הגיל של המשתמש הוכרז על ידי המשתמש, ההורה או האפוטרופוס החוקי שלו.

משתמשים במאפיינים ageLower ו-ageUpper כדי לקבוע את טווח הגילאים של המשתמש.
בפיקוח למשתמש יש חשבון Google בפיקוח שמנוהל על ידי הורה שהגדיר את הגיל שלו.

משתמשים במאפיינים ageLower ו-ageUpper כדי לקבוע את טווח הגילאים של המשתמש.

אפשר להשתמש בלחצן mostRecentApprovalDate כדי לראות את השינוי המשמעותי האחרון שאושר.
SUPERVISED_APPROVAL_PENDING למשתמש יש חשבון מפוקח ב-Google, וההורה המפקח שלו עדיין לא אישר שינוי משמעותי אחד או יותר שנמצאים בהמתנה.

משתמשים במאפיינים ageLower ו-ageUpper כדי לקבוע את טווח הגילאים של המשתמש.

אפשר להשתמש ב-mostRecentApprovalDate כדי לראות את השינוי המשמעותי האחרון שאושר.
SUPERVISED_APPROVAL_DENIED למשתמש יש חשבון Google בפיקוח, וההורה המפקח שלו דחה את האישור של שינוי משמעותי אחד או יותר.

משתמשים במאפיינים ageLower ו-ageUpper כדי לקבוע את טווח הגילאים של המשתמש.

אפשר להשתמש בלחצן mostRecentApprovalDate כדי לראות את השינוי המשמעותי האחרון שאושר.
לא ידוע הגיל של המשתמש לא ידוע והמשתמש נמצא בתחום שיפוט או באזור רלוונטיים.

רלוונטי רק למדינות בארה"ב: כדי לקבל אות גיל מ-Google Play, צריך לבקש מהמשתמש להיכנס לחנות Play כדי לפתור את הבעיה בסטטוס שלו.
null או שהמשתמש לא נמצא באזורים ובסמכויות שיפוט רלוונטיים.

או שהמשתמש לא משתף את הגיל שלו עם אפליקציות.
ageLower ‫0 עד 18 הגבול התחתון (כולל) של טווח הגילאים של משתמש בפיקוח.

משתמשים במאפיינים ageLower ו-ageUpper כדי לקבוע את טווח הגילאים של המשתמש.
null
userStatus לא ידוע או null.
ageUpper ‫2 עד 18 הגבול העליון (כולל) של טווח הגילאים של משתמש בפיקוח.

משתמשים במאפיינים ageLower ו-ageUpper כדי לקבוע את טווח הגילאים של המשתמש.
null או שהחשבון userStatus נמצא בפיקוח וההורה של המשתמש אישר שהגיל שלו מעל 18. ‫

Or the userStatus is unknown or null.
mostRecentApprovalDate חותמת תאריך התאריך של השינוי המשמעותי האחרון שאושר ב-effective from. כשמתקינים אפליקציה, התאריך של השינוי המשמעותי האחרון לפני ההתקנה הוא התאריך שמוצג.
null או שה-userStatus נמצא בפיקוח ולא נשלח שינוי משמעותי.

Or userStatus is verified, unknown, or null.
installID מזהה אלפאנומרי שנוצר על ידי Play. מזהה שמוקצה להתקנות של משתמשים בפיקוח על ידי Google Play, ומשמש למטרות הודעה על ביטול אישור האפליקציה. אפשר לעיין במסמכי התיעוד בנושא אישורי אפליקציות שבוטלו.
null האימות של userStatus עבר בהצלחה, לא ידוע או null.

תשובות לדוגמה למשתמשים בברזיל

בברזיל, הערך של userStatus יכול להיות רק DECLARED, UNKNOWN או null.

אם משתמש הצהיר על הגיל שלו ומשתף אותו עם אפליקציות, תקבלו את הנתונים הבאים:

  • הערך של userStatus יהיה AgeSignalsVerificationStatus.DECLARED.
  • הערך ageLower יהיה מספר (לדוגמה, 13).
  • ageUpper יהיה מספר או null (לדוגמה, 15).
  • שדות אחרים בתשובה יהיו null.

אם הגיל של המשתמש לא ידוע, תקבלו את הפרטים הבאים:

  • הערך של userStatus יהיה AgeSignalsVerificationStatus.UNKNOWN.
  • שדות אחרים בתשובה יהיו null.

אם הגיל של משתמש לא משותף עם אפליקציות, תקבלו את ההודעה הבאה:

  • הערך של userStatus יהיה null.
  • שדות אחרים בתשובה יהיו null.

סטטוס המשתמש יכול להשתנות ל-DECLARED ברגע שגיל המשתמש זמין לשיתוף.

דוגמאות לתגובות למשתמשים במדינות בארה"ב

במדינות מסוימות בארה"ב, הערך של userStatus יכול להיות VERIFIED,‏ SUPERVISED,‏ SUPERVISED_APPROVAL_PENDING,‏ SUPERVISED_APPROVAL_DENIED,‏ UNKNOWN או null.

אם המשתמש מאומת, תקבלו את הפרטים הבאים:

  • הערך של userStatus יהיה AgeSignalsVerificationStatus.VERIFIED.
  • הערך ageLower יהיה מספר (למשל, 18).
  • ageUpper יהיה מספר או null (לדוגמה, null).
  • שדות אחרים בתשובה יהיו null.

משתמש בפיקוח יקבל את ההודעות הבאות:

  • הערך של userStatus יהיה AgeSignalsVerificationStatus.SUPERVISED.
  • הערך ageLower יהיה מספר (לדוגמה, 13).
  • ageUpper יהיה מספר או null (לדוגמה, 15).
  • mostRecentApprovalDate יהיה אובייקט תאריך של Java (לדוגמה, 2026-01-01) או null (אם לא אושר שינוי משמעותי).
  • installID יהיה מזהה אלפאנומרי שנוצר על ידי Play (לדוגמה, 550e8400-e29b-41d4-a716-446655441111).

אם יש משתמש בפיקוח שהבקשה שלו לאישור שינוי משמעותי נמצאת בהמתנה, תקבלו את ההודעה הבאה:

  • userStatus יהיה AgeSignalsVerificationStatus.SUPERVISED_APPROVAL_PENDING.
  • הערך ageLower יהיה מספר (לדוגמה, 13).
  • ageUpper יהיה מספר או null (לדוגמה, 15).
  • mostRecentApprovalDate יהיה אובייקט תאריך של Java (לדוגמה, 2026-01-01) או null (אם לא אושר שינוי משמעותי).
  • installID יהיה מזהה אלפאנומרי שנוצר על ידי Play (לדוגמה, 550e8400-e29b-41d4-a716-446655441111).

טיפול בקודי שגיאה של API

אם האפליקציה שולחת בקשת API ל-Play Age Signals API והקריאה נכשלת, האפליקציה מקבלת קוד שגיאה. השגיאות האלה יכולות לקרות בגלל מגוון סיבות, למשל אם האפליקציה של חנות Play לא עדכנית.

אסטרטגיה של ניסיון חוזר

במקרים שבהם המשתמש נמצא בסשן, מומלץ להטמיע אסטרטגיה של ניסיון חוזר עם מספר מקסימלי של ניסיונות כתנאי יציאה, כדי שהשגיאה תשבש את חוויית המשתמש כמה שפחות.

ערך מספרי של קוד השגיאה קוד שגיאה תיאור ניתן לניסיון חוזר
-1 API_NOT_AVAILABLE ‫Play Age Signals API לא זמין. יכול להיות שהגרסה של אפליקציית חנות Play שמותקנת במכשיר ישנה.

פתרון אפשרי
  • מבקשים מהמשתמש לעדכן את חנות Play.
כן
‪-2 PLAY_STORE_NOT_FOUND לא נמצאה אפליקציית חנות Play במכשיר. מבקשים מהמשתמש להתקין את חנות Play או להפעיל אותה. כן
-3 NETWORK_ERROR לא נמצאה רשת זמינה. מבקשים מהמשתמש לבדוק אם יש חיבור. כן
-4 PLAY_SERVICES_NOT_FOUND הפלטפורמה של Play Services לא זמינה או שהגרסה שלה ישנה מדי. מבקשים מהמשתמש להתקין, לעדכן או להפעיל את Play Services. כן
-5 CANNOT_BIND_TO_SERVICE הקישור לשירות בחנות Play נכשל. יכול להיות שהסיבה לכך היא שמותקנת במכשיר גרסה ישנה של חנות Play או שהזיכרון של המכשיר עמוס מדי. מבקשים מהמשתמש לעדכן את אפליקציית חנות Play. מנסים שוב עם השהיה מעריכית לפני ניסיון חוזר (exponential backoff). כן
-6 PLAY_STORE_VERSION_OUTDATED צריך לעדכן את אפליקציית חנות Play. מבקשים מהמשתמש לעדכן את אפליקציית חנות Play. כן
-7 PLAY_SERVICES_VERSION_OUTDATED צריך לעדכן את שירותי Play. מבקשים מהמשתמש לעדכן את Play Services. כן
-8 CLIENT_TRANSIENT_ERROR אירעה שגיאה זמנית במכשיר הלקוח. מטמיעים אסטרטגיה של ניסיונות חוזרים עם מספר ניסיונות מקסימלי כתנאי יציאה. אם הבעיה נמשכת, צריך לבקש מהמשתמש לנסות שוב מאוחר יותר. כן
-9 APP_NOT_OWNED האפליקציה לא הותקנה מ-Google Play. מבקשים מהמשתמש להוריד את האפליקציה מ-Google Play. לא
-10 SDK_VERSION_OUTDATED הגרסה של Play Age Signals SDK לא נתמכת יותר. מבקשים מהמשתמש לעדכן את האפליקציה לגרסה חדשה יותר שמשתמשת בגרסה עדכנית של Play Age Signals SDK. לא
-100 INTERNAL_ERROR שגיאה פנימית לא ידועה. מטמיעים אסטרטגיה של ניסיונות חוזרים עם מספר ניסיונות מקסימלי כתנאי יציאה. אם הבעיה נמשכת, צריך לבקש מהמשתמש לנסות שוב מאוחר יותר. אם הפעולה נכשלת באופן עקבי, פנו לתמיכה למפתחים של Google Play, ציינו את Play Age Signals API בנושא וכללו כמה שיותר פרטים טכניים (למשל, דוח באגים). לא