שימוש ב-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. טווח הגילאים שיוחזר יחליף את תגובת ברירת המחדל של ה-API. לדוגמה, אם הגילים המינימליים שמציינים הם 9, ‏15 ו-17, אז משתמש בן 14 ייכלל בטווח הגילאים 10-15.

כדי להתאים אישית את טווחי הגילאים ש-Age Signals API מחזיר כברירת מחדל, אפשר לציין גילאים מינימליים לשימוש באפליקציה:

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

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

התגובה של 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. ‫

או שערך userStatus לא ידוע או 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

אם האפליקציה שולחת בקשה ל-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 לא זמינים או שהגרסה שלהם ישנה מדי. מבקשים מהמשתמש להתקין, לעדכן או להפעיל את 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 בנושא וכללו כמה שיותר פרטים טכניים (למשל, דוח באגים). לא