שימוש ב-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 ומעלה, אבל הם עשויים להשתנות בהתאם לדרישות האזוריות.

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

כדי לשלב את Play Age Signals API באפליקציה, מוסיפים את התלות הבאה לקובץ build.gradle של האפליקציה:

implementation 'com.google.android.play:age-signals:0.0.1-beta02'

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

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

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

אותות הגיל נשמרים על ידי Google Play במכשיר עבור כל משתמש. כשמשתמשים עם חשבון Google מפוקח עוברים לקבוצת גיל חדשה, מערכת Google Play מעדכנת באופן אוטומטי את אותות הגיל ששמורים במטמון לגבי המשתמשים האלה תוך שבועיים עד 8 שבועות אחרי יום ההולדת שלהם.

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

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

לחלופין, כדי להתאים אישית את טווחי הגילאים בהתאם לדרישות הגיל המינימלי באפליקציה, אפשר לציין את דרישות הגיל המינימלי באפליקציה בדף אותות גיל ב-Google Play Console. ‫Age Signals API מחזיר את טווחי הגילאים המותאמים אישית. לדוגמה, אם מציינים את הגילאים המינימליים 9, ‏15 ו-17, משתמש בן 14 ייכלל בטווח הגילאים 10-15. הגילים המינימליים צריכים להיות בהפרש של שנתיים לפחות, ואפשר לשנות אותם פעם בשנה.

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

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

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

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

שדה תשובה ערכים תיאור
userStatus האימות בוצע בהצלחה המשתמש מעל גיל 18. ‫Google אימתה את גיל המשתמש באמצעות שיטה סבירה מבחינה מסחרית, כמו תעודה מזהה רשמית, כרטיס אשראי או הערכת גיל לפי תווי פנים.
בפיקוח למשתמש יש חשבון Google בפיקוח שמנוהל על ידי הורה שהגדיר את הגיל שלו. משתמשים ב-ageLower וב-ageUpper כדי לקבוע את טווח הגילאים של המשתמש.
SUPERVISED_APPROVAL_PENDING למשתמש יש חשבון מפוקח ב-Google, וההורה המפקח שלו עדיין לא אישר שינוי משמעותי אחד או יותר שנמצאים בהמתנה. משתמשים ב-ageLower וב-ageUpper כדי לקבוע את טווח הגילאים של המשתמש. אפשר להשתמש ב-mostRecentApprovalDate כדי לראות את השינוי המשמעותי האחרון שאושר.
SUPERVISED_APPROVAL_DENIED למשתמש יש חשבון Google בפיקוח, וההורה המפקח שלו דחה את האישור של שינוי משמעותי אחד או יותר. משתמשים ב-ageLower וב-ageUpper כדי לקבוע את טווח הגילאים של המשתמש. אפשר להשתמש ב-mostRecentApprovalDate כדי לראות את השינוי המשמעותי האחרון שאושר.
לא ידוע המשתמש לא אומת או לא נמצא בפיקוח במדינות ובאזורים הרלוונטיים. המשתמשים האלה יכולים להיות בני 18 ומעלה או מתחת לגיל 18. כדי לקבל אות גיל מ-Google Play, צריך לבקש מהמשתמש להיכנס לחנות Play כדי לפתור את הבעיה בסטטוס שלו.
ריק (ערך ריק) כל שאר המשתמשים יקבלו את הערך הזה.
ageLower ‫0 עד 18 הגבול התחתון (כולל) של טווח הגילאים של משתמש בפיקוח. משתמשים במאפיינים ageLower ו-ageUpper כדי לקבוע את טווח הגילאים של המשתמש.
ריק (ערך ריק)
userStatus לא ידוע או ריק.
ageUpper ‫2 עד 18 הגבול העליון (כולל) של טווח הגילאים של משתמש בפיקוח. משתמשים במאפיינים ageLower ו-ageUpper כדי לקבוע את טווח הגילאים של המשתמש.
ריק (ערך ריק) או שהחשבון userStatus נמצא בפיקוח והגיל של המשתמש שאושר על ידי ההורה הוא מעל 18. או שהערך של userStatus מאומת, לא ידוע או ריק.
mostRecentApprovalDate חותמת תאריך התאריך effective from של השינוי המשמעותי האחרון שאושר. כשמתקינים אפליקציה, התאריך של השינוי המשמעותי האחרון לפני ההתקנה הוא התאריך שמוצג.
ריק (ערך ריק) או שהחשבון userStatus נמצא בפיקוח ולא נשלח שינוי משמעותי. או userStatus מאומת, לא ידוע או ריק.
installID מזהה אלפאנומרי שנוצר על ידי Play. מזהה שמוקצה להתקנות של משתמשים בפיקוח על ידי Google Play, ומשמש למטרות של שליחת הודעות על ביטול אישור אפליקציה. אפשר לעיין במסמכי התיעוד בנושא אישורי אפליקציות שבוטלו.
ריק (ערך ריק) האימות של userStatus עבר בהצלחה, לא ידוע או ריק.

תגובות לדוגמה

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

  • המחיר של userStatus יהיה AgeSignalsVerificationStatus.VERIFIED.
  • שאר שדות התשובה יהיו ריקים.

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

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

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

  • המחיר של userStatus יהיה AgeSignalsVerificationStatus.SUPERVISED_APPROVAL_PENDING.
  • הערך ageLower יהיה מספר (למשל, 13).
  • הערך ageUpper יהיה מספר (למשל, 15).
  • mostRecentApprovalDate יהיה אובייקט תאריך של Java (לדוגמה, 2026-01-01) או ריק (אם לא אושר שינוי משמעותי).
  • 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. מנסים שוב עם נסיגה אקספוננציאלית. כן
-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. לא
-100 INTERNAL_ERROR שגיאה פנימית לא ידועה. מטמיעים אסטרטגיה של ניסיונות חוזרים עם מספר ניסיונות מקסימלי כתנאי יציאה. אם הבעיה נמשכת, צריך לבקש מהמשתמש לנסות שוב מאוחר יותר. אם הפעולה נכשלת באופן עקבי, פנו לתמיכה למפתחים של Google Play, ציינו את Play Age Signals API בנושא וכללו כמה שיותר פרטים טכניים (למשל, דוח באגים). לא