Auf dieser Seite wird beschrieben, wie Sie mit Problemen mit Integritätsergebnissen umgehen.
Wenn ein Integritätstoken angefordert wird, können Sie dem Nutzer ein Google Play-Dialogfeld anzeigen lassen. Sie können das Dialogfeld anzeigen, wenn ein oder mehrere Probleme mit dem Integritätsergebnis vorliegen. Das Dialogfeld wird über der App angezeigt und fordert Nutzer auf, die Ursache des Problems zu beheben. Nachdem das Dialogfeld geschlossen wurde, können Sie mit einer weiteren Anfrage an die Integrity API prüfen, ob das Problem behoben wurde.
Dialogfelder für Integrität
GET_LIZENZ (Typcode 1)
Problem bezüglich Urteil
Wenn appLicensingVerdict == "UNLICENSED"
. Dies bedeutet, dass das Nutzerkonto nicht lizenziert ist. Mit anderen Worten: Er hat die App nicht bei Google Play installiert oder gekauft.
Fehlerbehebung
Du kannst das Dialogfeld GET_LICENSED
einblenden, um den Nutzer aufzufordern, deine App aus Google Play herunterzuladen. Wenn der Nutzer die Anfrage annimmt, wird das Nutzerkonto lizenziert (appLicensingVerdict == "LICENSED"
). Die App wird der Google Play-Mediathek des Nutzers hinzugefügt und Google Play kann in Ihrem Namen App-Updates bereitstellen.
Beispiel-UX
Dialogfeld „Integrität anfordern“
Wenn der Client ein Integritätstoken anfordert, können Sie die Methode verwenden, die in StandardIntegrityToken (Standard API) und IntegrityTokenResponse (klassische API) angeboten wird: showDialog(Activity activity, int integrityDialogTypeCode)
.
In den folgenden Schritten wird beschrieben, wie Sie die Play Integrity API verwenden können, um das Dialogfeld GET_LIZENZ anzeigen zu lassen:
Fordern Sie ein Integritätstoken von Ihrer App an und senden Sie es an Ihren Server. Sie können die Standardanfrage 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 das Feld
appLicensingVerdict
. Das könnte etwa so aussehen:// Licensing issue { ... accountDetails: { appLicensingVerdict: "UNLICENSED" } }
Wenn das Token
appLicensingVerdict: "UNLICENSED"
enthält, antworten Sie dem App-Client und fordern Sie an, dass das Lizenzierungsdialogfeld angezeigt wird: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 Anwendung
showDialog
mit dem angeforderten Code auf, der von Ihrem Server abgerufen wurde: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: Task<Int> = 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. Task<Integer> 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 anderes Token an, um weitere Dialogfelder anzuzeigen. Wenn Sie Standardanfragen senden, müssen Sie den Tokenanbieter noch einmal aufwärmen, um ein neues Ergebnis zu erhalten.