Geschäft sperren

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

Viele Nutzer verwalten weiterhin ihre eigenen Anmeldedaten, wenn sie ein neues Android-Gerät einrichten. Dieser manuelle Prozess kann eine Herausforderung darstellen und häufig zu einer schlechten Nutzererfahrung führen. Die Block Store API ist eine von Google Play-Diensten bereitgestellte Bibliothek. Die Lösung bietet die Möglichkeit, Anmeldedaten von Nutzern in Apps zu speichern, ohne dass das Passwort oder die Komplexität beim Speichern von Nutzerpasswörtern komplex wird.

Mit der Block Store API kann Ihre App Nutzeranmeldedaten speichern, die sie später zur erneuten Authentifizierung von Nutzern auf einem neuen Gerät abrufen können. Dies ermöglicht dem Nutzer ein nahtloseres Erlebnis, da er beim ersten Start der App auf dem neuen Gerät keinen Anmeldebildschirm sehen muss.

Der Block Store bietet folgende Vorteile:

  • Verschlüsselte Lösung zum Speichern von Anmeldedaten für Entwickler Anmeldedaten werden nach Möglichkeit Ende-zu-Ende-verschlüsselt.
  • Speichern Sie Tokens anstelle von Nutzernamen und Passwörtern.
  • Reibungslose Abläufe bei der Anmeldung
  • Sie sparen Nutzern den Verwaltungsaufwand für komplexe Passwörter.
  • Google überprüft die Identität des Nutzers.

Hinweis

Führen Sie die Schritte in den folgenden Abschnitten aus, um Ihre App vorzubereiten.

Eigene App konfigurieren

Fügen Sie in der Datei build.gradle auf Projektebene das Maven-Repository von Google in die Abschnitte buildscript und allprojects ein:

buildscript {
  repositories {
    google()
    mavenCentral()
  }
}

allprojects {
  repositories {
    google()
    mavenCentral()
  }
}

Fügen Sie der Gradle-Build-Datei des Moduls (in der Regel app/build.gradle) die Abhängigkeit für die Google Play-Dienste für die Block Store API hinzu:

dependencies {
  implementation 'com.google.android.gms:play-services-auth-blockstore:16.1.0'
}

Funktionsweise

Der Blockspeicher ist ein Token-basierter Anmeldemechanismus, der mit Ende-zu-Ende-Verschlüsselung gesichert und auf der Infrastruktur für Sicherung und Wiederherstellung basiert. Die folgenden Schritte beschreiben, wie eine Anwendung, die Block Store verwendet, funktioniert:

  1. Während der Authentifizierung Ihrer Anwendung oder danach können Sie das Authentifizierungstoken des Nutzers im Block Store speichern, um später abgerufen zu werden.
  2. Das Token wird lokal gespeichert und kann nach Möglichkeit mit Ende-zu-Ende-Verschlüsselung in der Cloud gesichert werden.
  3. Die Daten werden übertragen, wenn der Nutzer einen Wiederherstellungsvorgang auf einem neuen Gerät startet.
  4. Wenn der Nutzer Ihre App während des Wiederherstellungsprozesses wiederherstellt, kann Ihre Anwendung das gespeicherte Token aus dem Block Store auf dem neuen Gerät abrufen.

Token speichern

Wenn sich ein Nutzer bei Ihrer Anwendung anmeldet, können Sie das Authentifizierungstoken, das Sie für diesen Nutzer generieren, im Block Store speichern. Dazu wird setBytes() auf einer Instanz von StoreBytesData.Builder aufgerufen, um die Anmeldedaten des Nutzers auf dem Quellgerät zu speichern. Nachdem Sie das Token im Block Store gespeichert haben, wird es verschlüsselt und lokal auf dem Gerät gespeichert.

Das folgende Beispiel zeigt, wie Sie das Authentifizierungstoken auf dem lokalen Gerät speichern:

val client = Blockstore.getClient(this)
val data = StoreBytesData.Builder()
        .setBytes(/* BYTE_ARRAY */)
        .build()
client.storeBytes(data)
        .addOnSuccessListener{ result ->
            Log.d(TAG, "Stored: ${result} bytes")
        }
        .addOnFailureListener { e ->
            Log.e(TAG, “Failed to store bytes”, e)
        }

Token abrufen

Wenn ein Nutzer später den Wiederherstellungsvorgang auf einem neuen Gerät durchläuft, wird er von den Google Play-Diensten geprüft und anschließend werden die Block Store-Daten abgerufen. Der Nutzer hat im Rahmen der Wiederherstellung bereits zugestimmt, dass Ihre App-Daten wiederhergestellt werden. Es sind also keine zusätzlichen Einwilligungen erforderlich. Wenn der Nutzer Ihre App öffnet, können Sie Ihr Token im Block Store anfordern, indem Sie retrieveBytes() aufrufen. Das abgerufene Token kann dann verwendet werden, um den Nutzer auf dem neuen Gerät angemeldet zu lassen.

Das folgende Beispiel zeigt, wie das verschlüsselte Token abgerufen wird, das zuvor im Block Store gespeichert wurde:

val client = Blockstore.getClient(this)
client.retrieveBytes()
            .addOnSuccessListener { result ->
                Log.d(TAG, "Retrieved: ${String(result)}")
            }
            .addOnFailureListener { e ->
                Log.e(TAG, "Failed to retrieve bytes", e)
            }
}

Ende-zu-Ende-Verschlüsselung

Für die Bereitstellung der Ende-zu-Ende-Verschlüsselung muss auf dem Gerät Android 9 oder höher installiert sein. Außerdem muss der Nutzer für sein Gerät eine Displaysperre (PIN, Muster oder Passwort) eingerichtet haben. Mit isEndToEndEncryptionAvailable() können Sie prüfen, ob die Verschlüsselung auf dem Gerät verfügbar ist.

Das folgende Beispiel zeigt, wie Sie prüfen können, ob die Verschlüsselung während der Cloud-Sicherung verfügbar ist:

client.isEndToEndEncryptionAvailable()
        .addOnSuccessListener { result ->
          Log.d(TAG, "Will Block Store cloud backup be end-to-end encrypted? $result")
        }

Cloud-Sicherung aktivieren

Fügen Sie Ihrem StoreBytesData-Objekt die Methode setShouldBackupToCloud() hinzu, um die Cloud-Sicherung zu aktivieren. Block Store sichert regelmäßig Sicherungen in der Cloud, wenn setShouldBackupToCloud() als „true“ festgelegt ist.

Im folgenden Beispiel wird gezeigt, wie Sie die Cloud-Sicherung nur bei Ende-zu-Ende-Verschlüsselung aktivieren:

val client = Blockstore.getClient(this)
val storeBytesDataBuilder = StoreBytesData.Builder()
        .setBytes(/* BYTE_ARRAY */)

client.isEndToEndEncryptionAvailable()
        .addOnSuccessListener { isE2EEAvailable ->
          if (isE2EEAvailable) {
            storeBytesDataBuilder.setShouldBackupToCloud(true)
            Log.d(TAG, "E2EE is available, enable backing up bytes to the cloud.")

            client.storeBytes(storeBytesDataBuilder.build())
                .addOnSuccessListener { result ->
                  Log.d(TAG, "stored: ${result.getBytesStored()}")
                }.addOnFailureListener { e ->
                  Log.e(TAG, “Failed to store bytes”, e)
                }
          } else {
            Log.d(TAG, "E2EE is not available, only store bytes for D2D restore.")
          }
        }

Testen

Verwenden Sie die folgenden Methoden während der Entwicklung, um die Wiederherstellungsabläufe zu testen.

Deinstallation/Neuinstallation desselben Geräts

Wenn der Nutzer Sicherungsdienste aktiviert (kann unter Einstellungen > Google > Sicherung geprüft werden), werden Block Store-Daten über die App-Deinstallation/-Installation hinweg beibehalten.

So testen Sie sie:

  1. Binden Sie die BlockStore API in Ihre Test-App ein.
  2. Verwenden Sie die Test-App, um die BlockStore API zum Speichern Ihrer Daten aufzurufen.
  3. Deinstallieren Sie die Test-App und installieren Sie sie anschließend auf demselben Gerät neu.
  4. Verwenden Sie die Test-App, um die BlockStore API aufzurufen, um Ihre Daten abzurufen.
  5. Prüfen Sie, ob die abgerufenen Byte mit denen übereinstimmen, die vor der Deinstallation gespeichert wurden.

Von Gerät zu Gerät

In den meisten Fällen muss das Zielgerät auf die Werkseinstellungen zurückgesetzt werden. Anschließend kannst du den Android-Vorgang zur kabellosen Wiederherstellung oder die Google-Kabelwiederherstellung aufrufen (für unterstützte Geräte).

Cloud-Wiederherstellung

  1. Binden Sie die Blockstore API in Ihre Test-App ein. Die Test-App muss an den Play Store gesendet werden.
  2. Verwenden Sie auf dem Quellgerät die Test-App, um die Blockstore API aufzurufen, um Ihre Daten zu speichern, und sollten „BackUpUpCloud“ auf „true“ gesetzt sein.
  3. Für Geräte mit O und höher können Sie manuell eine Block Store-Cloud-Sicherung auslösen: Wechseln Sie zu Einstellungen gt; Sicherung und klicken Sie auf die Schaltfläche "Jetzt sichern".
    1. So prüfen Sie, ob die Cloud-Speicherung des Cloud-Speichers erfolgreich war:
      1. Suchen Sie nach Abschluss der Sicherung nach Logzeilen mit dem Tag „CloudSyncBpTkSvc“.
      2. Sie sollten folgende Zeilen sehen: „......, CloudSyncBpTkSvc: sync result: SUCCESS, ..., uploaded size: XXXbytes ...”
    2. Nach der Sicherung eines Blockspeichers in der Cloud gilt eine Wartezeit von fünf Minuten. Innerhalb von 5 Minuten wird durch Klicken auf die Schaltfläche „Jetzt sichern“ keine weitere Block Store-Cloud-Sicherung ausgelöst.
  4. Setzen Sie das Zielgerät auf die Werkseinstellungen zurück und durchlaufen Sie einen Ablauf zur Cloud-Wiederherstellung. Wählen Sie aus, ob die Test-App während der Wiederherstellung wiederhergestellt werden soll. Weitere Informationen zu Abläufen zur Cloud-Wiederherstellung finden Sie unter Unterstützte Abläufe für die Cloud-Wiederherstellung.
  5. Verwenden Sie auf dem Zielgerät die Test-App, um die Blockstore API aufzurufen, um Ihre Daten abzurufen.
  6. Prüfen Sie, ob die abgerufenen Byte mit denen übereinstimmen, die auf dem Quellgerät gespeichert wurden.

Geräteanforderungen

Ende-zu-Ende-Verschlüsselung

  • Die Ende-zu-Ende-Verschlüsselung wird auf Geräten mit Android 9 (API 29) und höher unterstützt.
  • Auf dem Gerät muss eine Displaysperre mit PIN, Muster oder Passwort eingerichtet sein, damit die Ende-zu-Ende-Verschlüsselung aktiviert und die Daten des Nutzers korrekt verschlüsselt werden.

Ablauf zur Wiederherstellung von Geräten zu Geräten

Für die Wiederherstellung von Gerät zu Gerät müssen Sie ein Quellgerät und ein Zielgerät haben. Dies sind die beiden Geräte, die Daten übertragen.

Auf Quellgeräten muss Android 6 (API 23) oder höher installiert sein.

Richten Sie ein Targeting auf Geräte mit Android 9 (API 29) oder höher ein, um die Wiederherstellung zu ermöglichen.

Weitere Informationen zum Vorgang der Wiederherstellung von Gerät zu Gerät finden Sie hier.

Ablauf zum Sichern und Wiederherstellen in der Cloud

Für die Sicherung und Wiederherstellung in der Cloud sind ein Quellgerät und ein Zielgerät erforderlich.

Auf Quellgeräten muss Android 6 (API 23) oder höher installiert sein.

Zielgeräte werden nach Anbietern unterstützt. Pixel-Geräte können diese Funktion über Android 9 (API 29) nutzen. Auf allen anderen Geräten muss Android 12 (API 31) oder höher ausgeführt werden.