Fehlerbehebung

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

Play-Dialogfeld GET_LicenseD

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:

  1. 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());
    
    
  2. 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"
      }
    }
    
  3. 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;
    }
    
    
  4. 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.
    }
    
    
  5. Das Dialogfeld wird über der angegebenen Aktivität angezeigt. Wenn der Nutzer das Dialogfeld geschlossen hat, wird die Aufgabe mit einem Antwortcode abgeschlossen.

  6. 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.