בדף הזה נסביר איך לטפל בבעיות שקשורות לקביעת תקינות.
כשנשלחת בקשה לאסימון תקינות, יש לך אפשרות להציג הפעלת תיבת דו-שיח למשתמש. אפשר להציג את תיבת הדו-שיח כשיש אחת או יותר בעיות בקביעת התקינות. תיבת הדו-שיח מוצגת מעל האפליקציה. וקורא למשתמשים לפתור את הבעיה. אחרי שתיבת הדו-שיח נסגרת, אפשר לוודא שהבעיה נפתרה באמצעות בקשה אחרת ליושרה API.
תיבות דו-שיח בנושא תקינות
GET_LICENSED (סוג קוד 1)
בעיה בהכרעה
כאשר appLicensingVerdict == "UNLICENSED"
. המשמעות היא שחשבון המשתמש
ללא רישיון. במילים אחרות, הם לא התקינו או קנו את האפליקציה מ-Google Play.
תיקון שגיאות
אפשר להציג את תיבת הדו-שיח GET_LICENSED
כדי לבקש מהמשתמש להוריד את האפליקציה מ:
Google Play. אם המשתמש יאשר את ההזמנה, חשבון המשתמש יהפוך לרישיון
(appLicensingVerdict == "LICENSED"
). האפליקציה מתווספת לחשבון Google של המשתמש
ספריית Play ו-Google Play יכולים לספק עדכונים לאפליקציה בשמכם.
UX לדוגמה
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:
עליך לבקש אסימון תקינות מהאפליקציה שלך ולשלוח את האסימון לשרת. אפשר להשתמש בבקשה הרגילה או הקלאסית.
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());
מפענחים את אסימון התקינות בשרת שלכם ובודקים את שדה
appLicensingVerdict
. זה יכול להיראות בערך כך:// Licensing issue { ... accountDetails: { appLicensingVerdict: "UNLICENSED" } }
אם האסימון מכיל
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; }
באפליקציה שלך, צריך להתקשר אל
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. }
תיבת הדו-שיח תוצג מעל הפעילות שסופקה. כשלמשתמש יש סגרו את תיבת הדו-שיח, המשימה משלימה באמצעות קוד תגובה.
(אופציונלי) אפשר לבקש אסימון נוסף כדי להציג תיבות דו-שיח נוספות. אם בקשות רגילות, צריך לבצע חימום ספק האסימון שוב כדי לקבל החלטה חדשה.