תיקון שגיאות

בדף הזה נסביר איך לטפל בבעיות שקשורות לקביעת תקינות.

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

תיבות דו-שיח בנושא תקינות

GET_LICENSED (סוג קוד 1)

בעיה בהכרעה

כאשר appLicensingVerdict == "UNLICENSED". המשמעות היא שחשבון המשתמש ללא רישיון. במילים אחרות, הם לא התקינו או קנו את האפליקציה מ-Google Play.

תיקון שגיאות

אפשר להציג את תיבת הדו-שיח GET_LICENSED כדי לבקש מהמשתמש להוריד את האפליקציה מ: Google Play. אם המשתמש יאשר את ההזמנה, חשבון המשתמש יהפוך לרישיון (appLicensingVerdict == "LICENSED"). האפליקציה מתווספת לחשבון Google של המשתמש ספריית Play ו-Google Play יכולים לספק עדכונים לאפליקציה בשמכם.

UX לדוגמה

תיבת דו-שיח להפעלת GET_LICENSED

CLOSE_UNKNOWN_ACCESS_RISK (סוג קוד 2)

בעיה בהכרעה

כשהערך בשדה environmentDetails.appAccessRiskVerdict.appsDetected מכיל "UNKNOWN_CAPTURING" או "UNKNOWN_CONTROLLING", המשמעות היא שאלה לא ידועים אפליקציות שפועלות במכשיר שיכולות לצלם את המסך או לשליטה במכשיר.

תיקון שגיאות

אפשר להציג את תיבת הדו-שיח CLOSE_UNKNOWN_ACCESS_RISK כדי לבקש מהמשתמש לסגור כל האפליקציות הלא מוכרות שעשויות לצלם את המסך או לשלוט במכשיר. אם המשתמש יקיש על הלחצן Close all, כל האפליקציות האלה ייסגרו.

UX לדוגמה

תיבת דו-שיח לסגירת הסיכון לגישה לא ידועה

CLOSE_ALL_ACCESS_RISK (סוג קוד 3)

בעיה בהכרעה

כשהערך בשדה environmentDetails.appAccessRiskVerdict.appsDetected מכיל אחד או יותר מהערכים הבאים "KNOWN_CAPTURING", "KNOWN_CONTROLLING","UNKNOWN_CAPTURING" או "UNKNOWN_CONTROLLING", המשמעות היא שיש אפליקציות שפועלות במכשיר יכולים לצלם את המסך או לשלוט במכשיר.

תיקון שגיאות

אפשר להציג את תיבת הדו-שיח CLOSE_ALL_ACCESS_RISK כדי לבקש מהמשתמש לסגור את כל הפריטים אפליקציות שיכולות לצלם את המסך או לשלוט במכשיר. אם המשתמש יקיש על הלחצן Close all, כל האפליקציות האלה ייסגרו במכשיר.

UX לדוגמה

תיבת דו-שיח לסגירה של כל הסיכון לגישה

בקשה לתיבת דו-שיח של תקינות

כשהלקוח מבקש אסימון תקינות, אפשר להשתמש בשיטה שמוצעת ב- StandardIntegrityToken (Standard API) IntegrityTokenResponse (ממשק API קלאסי): showDialog(Activity activity, int integrityDialogTypeCode)

בשלבים הבאים מוסבר איך להשתמש ב-Play Integrity API כדי להציג את תיבת הדו-שיח GET_LICENSED:

  1. עליך לבקש אסימון תקינות מהאפליקציה שלך ולשלוח את האסימון לשרת. אפשר להשתמש בבקשה הרגילה או הקלאסית.

    Kotlin

    // Request an integrity token
    val tokenResponse: StandardIntegrityToken = requestIntegrityToken()
    // Send token to app server and get response on what to do next
    val yourServerResponse: YourServerResponse = sendToServer(tokenResponse.token())
    

    Java

    // Request an integrity token
    StandardIntegrityToken tokenResponse = requestIntegrityToken();
    // Send token to app server and get response on what to do next
    YourServerResponse yourServerResponse = sendToServer(tokenResponse.token());
    
  2. מפענחים את אסימון התקינות בשרת שלכם ובודקים את שדה appLicensingVerdict. זה יכול להיראות בערך כך:

    // Licensing issue
    {
      ...
      accountDetails: {
        appLicensingVerdict: "UNLICENSED"
      }
    }
    
  3. אם האסימון מכיל appLicensingVerdict: "UNLICENSED", יש להשיב לאפליקציה ומבקש להציג את תיבת הדו-שיח של הרישוי:

    Kotlin

    private fun getDialogTypeCode(integrityToken: String): Int{
    // Get licensing verdict from decrypted and verified integritytoken
    val licensingVerdict: String = getLicensingVerdictFromDecryptedToken(integrityToken)
    
    return if (licensingVerdict == "UNLICENSED") {
           1 // GET_LICENSED
       } else 0
    }
    

    Java

    private int getDialogTypeCode(String integrityToken) {
      // Get licensing verdict from decrypted and verified integrityToken
      String licensingVerdict = getLicensingVerdictFromDecryptedToken(integrityToken);
    
      if (licensingVerdict.equals("UNLICENSED")) {
        return 1; // GET_LICENSED
      }
      return 0;
    }
    
  4. באפליקציה שלך, צריך להתקשר אל showDialog עם הקוד המבוקש שאוחזר מהאפליקציה שרת:

    Kotlin

    // Show dialog as indicated by the server
    val showDialogType: Int? = yourServerResponse.integrityDialogTypeCode()
    if (showDialogType != null) {
        // Call showDialog with type code, the dialog will be shown on top of the
        // provided activity and complete when the dialog is closed.
        val integrityDialogResponseCode: TaskI<nt >=
        tokenResponse.showDialog(activity, showDialogType)
        // Handle response code, call the Integrity API again to confirm that
        // verdicts have been resolved.
    }
    

    Java

    // Show dialog as indicated by the server
    @Nullable Integer showDialogType = yourServerResponse.integrityDialogTypeCode();
    if (showDialogType != null) {
      // Call showDialog with type code, the dialog will be shown on top of the
      // provided activity and complete when the dialog is closed.
      TaskI<nteger >integrityDialogResponseCode =
          tokenResponse.showDialog(activity, showDialogType);
      // Handle response code, call the Integrity API again to confirm that
      // verdicts have been resolved.
    }
    
  5. תיבת הדו-שיח תוצג מעל הפעילות שסופקה. כשלמשתמש יש סגרו את תיבת הדו-שיח, המשימה משלימה באמצעות קוד תגובה.

  6. (אופציונלי) אפשר לבקש אסימון נוסף כדי להציג תיבות דו-שיח נוספות. אם בקשות רגילות, צריך לבצע חימום ספק האסימון שוב כדי לקבל החלטה חדשה.