Auf dieser Seite wird beschrieben, wie Sie mit Problemen mit Integritätsergebnissen umgehen.
Wenn ein Integritätstoken angefordert wird, können Sie ein Google-Konto Dialogfeld für den Nutzer abspielen. Das Dialogfeld kann angezeigt werden, wenn mindestens ein Probleme mit dem Integritätsergebnis. Das Dialogfeld wird über der App angezeigt. und fordert Nutzer auf, die Ursache des Problems zu beheben. Nach dem Schließen des Dialogfelds können Sie mit einer weiteren Anfrage an die Integrity API prüfen, der API erstellen.
Dialogfelder zur Integrität
GET_LicenseD (Typcode 1)
Problem mit dem Ergebnis
Wenn appLicensingVerdict == "UNLICENSED"
. Das bedeutet, dass das Nutzerkonto
nicht lizenziert. Mit anderen Worten: Sie haben die App nicht bei Google Play installiert oder gekauft.
Fehlerbehebung
Du kannst das Dialogfeld GET_LICENSED
einblenden, um den Nutzer aufzufordern, deine App herunterzuladen
Google Play Wenn der Nutzer akzeptiert, wird das Nutzerkonto lizenziert
(appLicensingVerdict == "LICENSED"
) Die App wird dem Google-Konto des Nutzers hinzugefügt,
Die Play-Mediathek und Google Play können App-Updates in deinem Namen senden.
Beispiel-UX
CLOSE_UNKNOWN_ACCESS_RISK (Typcode 2)
Problem mit dem Ergebnis
Wenn environmentDetails.appAccessRiskVerdict.appsDetected
enthält
"UNKNOWN_CAPTURING"
oder "UNKNOWN_CONTROLLING"
bedeutet, dass unbekannte Daten vorhanden sind.
die auf dem Gerät ausgeführt werden,
die Bildschirmaufzeichnung oder
dem Steuern des Geräts.
Fehlerbehebung
Sie können das Dialogfeld CLOSE_UNKNOWN_ACCESS_RISK
anzeigen, um den Nutzer zum Schließen aufzufordern
Alle unbekannten Apps, mit denen möglicherweise der Bildschirm aufgenommen oder das Gerät gesteuert wird.
Wenn der Nutzer auf die Schaltfläche „Close all
“ tippt, werden alle Apps geschlossen.
Beispiel-UX
CLOSE_ALL_ACCESS_RISK (Typcode 3)
Problem mit dem Ergebnis
Wenn environmentDetails.appAccessRiskVerdict.appsDetected
einen der folgenden Werte enthält:
"KNOWN_CAPTURING"
, "KNOWN_CONTROLLING"
,"UNKNOWN_CAPTURING"
oder
"UNKNOWN_CONTROLLING"
bedeutet, dass auf dem Gerät Apps ausgeführt werden, die
z. B. den Bildschirm aufnehmen oder das Gerät steuern.
Fehlerbehebung
Sie können das Dialogfeld CLOSE_ALL_ACCESS_RISK
einblenden, um den Nutzer aufzufordern, alle zu schließen
z. B. Bildschirmaufnahmen
oder Gerätesteuerung.
Wenn der Nutzer auf die Schaltfläche „Close all
“ tippt, werden alle entsprechenden Apps auf dem
.
Beispiel-UX
Dialogfeld zum Anfordern einer Integrität
Wenn der Client ein Integritätstoken anfordert, können Sie die in
StandardIntegrityToken (Standard API) und
IntegrityTokenResponse (Classic API):
showDialog(Activity activity, int integrityDialogTypeCode)
In den folgenden Schritten wird beschrieben, wie du die Play Integrity API verwenden kannst, um die Dialogfeld GET_LicenseD:
Fordern Sie ein Integritätstoken von Ihrer App an und senden Sie es an Ihren Server. Sie können die Standard- oder die klassische Anfrage verwenden.
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());
Entschlüsseln Sie auf Ihrem Server das Integritätstoken und prüfen Sie die
appLicensingVerdict
. Sie könnte etwa so aussehen:// Licensing issue { ... accountDetails: { appLicensingVerdict: "UNLICENSED" } }
Wenn das Token
appLicensingVerdict: "UNLICENSED"
enthält, antworten Sie der App. Client anfordern, wird das Lizenzierungsdialogfeld angezeigt: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; }
Rufen Sie in Ihrer App
showDialog
auf und geben Sie dabei den angeforderten Code aus Ihrem Server: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. }
Das Dialogfeld wird über der angegebenen Aktivität angezeigt. Wenn der Nutzer das Dialogfeld geschlossen hat, wird die Aufgabe mit einem Antwortcode abgeschlossen.
Optional: Fordern Sie ein weiteres Token an, damit weitere Dialogfelder angezeigt werden. Wenn Sie Standardanfragen gehören, müssen Sie eine Aufwärmphase um ein neues Ergebnis zu erhalten.