
Unter den verschiedenen Tools, die auf dem
Android Dev Summit angekündigt wurden, möchte ich dem Mechanismus zur Aktualisierung von In-App-Updates (IAUs) besondere Aufmerksamkeit widmen, mit dem Entwickler das Hinzufügen neuer Funktionen, Fehlerkorrekturen und Leistungsverbesserungen beschleunigen können. Da diese Funktionalität nach Google I / O 2019 veröffentlicht wurde, werde ich in diesem Artikel ausführlich über IAUs sprechen, die empfohlenen Implementierungsschemata beschreiben und einige Codebeispiele geben. Ich werde auch über unsere Erfahrungen bei der Integration von IAUs in
Pandao sprechen , eine Anwendung zur Bestellung von Waren aus China.
Mit der neuen API können Entwickler ein Anwendungsupdate auf die neueste Version von Google Play initiieren. Auf diese Weise ergänzen IAUs den vorhandenen automatischen Aktualisierungsmechanismus von Google Play. IAUs enthalten mehrere Implementierungsschemata, die sich in Bezug auf die Benutzerinteraktion grundlegend unterscheiden.
- Flexible Flow bietet Benutzern die Möglichkeit, das Update im Hintergrund herunterzuladen und zu einem für den Benutzer geeigneten Zeitpunkt zu installieren. Es ist für Fälle vorgesehen, in denen Benutzer die alte Version weiterhin verwenden können, eine neue jedoch bereits verfügbar ist.

- Für den sofortigen Ablauf müssen Benutzer das Update herunterladen und installieren, bevor sie die Anwendung weiter verwenden können. Es ist für Fälle gedacht, in denen es für Entwickler wichtig ist, die Anwendung zu aktualisieren.

Da die zweite Option für die Pandao-Anwendung nicht so wichtig und weniger geeignet ist, werden wir das Flexible Flow-Szenario genauer analysieren.
IAUs Flexible Flow Integration
Anwendungsfälle
Der Upgrade-Prozess mit IAUs besteht aus mehreren Schritten.
- Eine Anwendung, die die Play Core-Bibliothek verwendet und bei Google Play prüft, ob Updates verfügbar sind.
- Wenn dies der Fall ist, fordert die Anwendung Google Play auf, den IAU-Dialog anzuzeigen. Google Play zeigt dem Nutzer einen Dialog mit einem Aktualisierungsvorschlag.
- Wenn der Nutzer zustimmt, lädt Google Play im Hintergrund das Update herunter und zeigt dem Nutzer in der Statusleiste den Download-Fortschritt an.
- Wenn der Download abgeschlossen ist, während die Anwendung im Hintergrund ausgeführt wird, schließt Google Play die Installation automatisch ab. Wenn die Anwendung zu diesem Zeitpunkt aktiv ist, müssen Sie in solchen Fällen Ihre eigene Logik für den Abschluss der Installation festlegen. Betrachten Sie die folgenden Szenarien.
- Die Anwendung startet den Installationsprozess, indem sie dem Nutzer ein Google Play-Dialogfeld mit einer Fortschrittsanzeige anzeigt. Nach Abschluss der Installation wird eine aktualisierte Version der Anwendung gestartet. In diesem Fall wird empfohlen, ein zusätzliches Dialogfeld anzuzeigen, in dem der Benutzer bestätigen kann, dass er bereit ist, die Anwendung jetzt neu zu starten. Dies ist das empfohlene Implementierungsschema .
- Die Anwendung wartet, bis sie sich im Hintergrund befindet, und schließt dann die Aktualisierung ab. Einerseits ist dies aus Sicht von UX ein weniger aufdringliches Verhalten, da die Benutzerinteraktion mit der Anwendung nicht unterbrochen wird. Andererseits muss der Entwickler die Logik implementieren, um festzustellen, ob sich die Anwendung im Hintergrund befindet.
Wenn die Installation des heruntergeladenen Updates nicht abgeschlossen wurde, kann Google Play die Installation im Hintergrund abschließen. Diese Option sollte besser nicht explizit verwendet werden, da sie die Installation des Updates nicht garantiert.
Grundlegende Testanforderungen
Um den gesamten Aktualisierungsvorgang auf einem Testgerät manuell abzuschließen, benötigen Sie mindestens zwei Versionen der Anwendung mit unterschiedlichen Baugruppennummern:
Quelle und
Ziel .
- Die Originalversion mit einer höheren Nummer muss auf Google Play veröffentlicht werden. Sie wird von Google Play als verfügbares Update identifiziert. Die Zielversion mit einer niedrigeren Build-Nummer und integrierten IAUs muss auf dem Gerät installiert sein. Wir werden sie aktualisieren. Unter dem Strich vergleicht die Anwendung, wenn sie Google Play auffordert, nach einem Update zu suchen, die Baugruppennummern der installierten und verfügbaren Version. Daher werden IAUs nur gestartet, wenn die Build-Nummer bei Google Play höher ist als die aktuelle Version auf dem Gerät.
- Die Quell- und Zielversion müssen denselben Paketnamen haben und mit demselben Versionszertifikat signiert sein.
- Android 5.0 (API Level 21) oder höher.
- Spielen Sie Core Library 1.5.0 oder höher.
Codebeispiel
Hier sehen wir uns einen Beispielcode für die Verwendung von IAUs Flexible Flow an, der auch in der
offiziellen Dokumentation enthalten ist . Zuerst müssen Sie die Play Core-Bibliothek der Datei build.gradle auf Modulebene hinzufügen.
dependencies { ... implementation "com.google.android.play:core:1.5.0" }
Erstellen Sie dann eine Instanz von
AppUpdateManager
und fügen Sie
AppUpdateManager
eine Rückruffunktion
AppUpdateInfo
, die Informationen über die Verfügbarkeit des Updates, das Objekt zum Starten des Updates (falls verfügbar) und den aktuellen Download-Fortschritt
AppUpdateInfo
, falls es bereits begonnen hat.
Um das Dialogfeld zum Anfordern von Updates von Google Play
AppUpdateInfo
, müssen Sie das empfangene
AppUpdateInfo
Objekt an die Methode
AppUpdateInfo
.
appUpdateManager.startUpdateFlowForResult(
Um den Status des Updates zu überwachen, können Sie dem IAUs-Manager den Ereignis-Listener
InstallStateUpdatedListener
hinzufügen.
Sobald das Update heruntergeladen wurde (Status
DOWNLOADED
), müssen Sie die Anwendung neu starten, um das Update abzuschließen. Der Neustart kann durch Aufrufen von
appUpdateManager.completeUpdate()
eingeleitet werden.
appUpdateManager.completeUpdate()
wird jedoch empfohlen, ein Dialogfeld
appUpdateManager.completeUpdate()
, damit der Benutzer seine Bereitschaft zum Neustart der Anwendung ausdrücklich bestätigt.
Snackbar.make( rootView, "An update has just been downloaded from Google Play", Snackbar.LENGTH_INDEFINITE ).apply { setAction("RELOAD") { appUpdateManager.completeUpdate() } show() }
Fehler "Update ist nicht verfügbar"
Überprüfen Sie zunächst erneut, ob die im Abschnitt Grundlegende Implementierungsanforderungen aufgeführten Anforderungen erfüllt sind. Wenn Sie alles getan haben, die Aktualisierung gemäß dem
onSuccess
Aufruf jedoch immer noch nicht verfügbar ist, liegt das Problem möglicherweise im Caching. Es ist wahrscheinlich, dass die Google Play-Anwendung das verfügbare Update aufgrund des internen Caching-Mechanismus nicht kennt. Um dies beim manuellen Testen zu vermeiden, können Sie einen Cache-Reset erzwingen, indem Sie bei Google Play auf die Seite "Meine Apps und Spiele" gehen. Oder Sie können den Cache einfach in den Einstellungen der Google Play-Anwendung leeren. Bitte beachten Sie, dass dieses Problem nur während des Testens auftritt und keine Auswirkungen auf Endbenutzer haben sollte, da deren Cache weiterhin täglich aktualisiert wird.
IAUs flexibler Fluss in der Pandao-App
Wir haben an einem Early-Access-Programm teilgenommen und IAUs Flexible Flow (empfohlene Implementierung) in die Pandao-Anwendung integriert, eine Plattform, auf der Hersteller und Anbieter chinesische Waren handeln können. Das IAUs-Dialogfeld wurde auf dem Hauptbildschirm angezeigt, damit die maximale Anzahl von Benutzern damit interagieren kann. Zunächst wollten wir den Dialog nur einmal am Tag zeigen, um die Benutzer nicht von der Interaktion mit der Anwendung abzulenken.
Da A / B-Tests eine Schlüsselrolle im Lebenszyklus neuer Funktionen spielen, haben wir beschlossen, die Auswirkungen von IAUs in unserer Anwendung zu bewerten. Wir haben Benutzer zufällig in zwei nicht zusammenhängende Gruppen aufgeteilt. Die erste Gruppe war eine Kontrollgruppe ohne Verwendung von IAUs, und die zweite Gruppe war eine Testgruppe. Wir haben diesen Benutzern den IAU-Dialog gezeigt.
IAUs Flexible Flow A / B-Test in der Pandao-App.In den letzten Versionen haben wir den Prozentsatz der aktiven Benutzer jeder Version der Anwendung gemessen. Es stellte sich heraus, dass unter den aktiven Benutzern mit der neuesten Version, die zu diesem Zeitpunkt verfügbar war, der Hauptteil aus Teilnehmern der Gruppe B bestand, dh mit der IAU-Funktion. Die violette Linie in der Grafik zeigt, dass in den ersten Tagen nach der Veröffentlichung von Version 1.29.1 die Anzahl der aktiven Benutzer mit IAUs die Anzahl der Benutzer ohne diese Funktion überschritten hat. Daher kann argumentiert werden, dass Benutzer mit IAUs die Anwendung schneller aktualisieren.
Das IAUs Flexible Flow-Dialogfeld in der Pandao-App.Gemäß unseren Daten (siehe Grafik oben) klicken Benutzer in den ersten Tagen nach der Veröffentlichung am häufigsten auf die Bestätigungsschaltfläche im IAU-Dialogfeld. Anschließend wird die Konvertierung bis zur Veröffentlichung der nächsten Version der Anwendung ständig reduziert. Dasselbe gilt für die Schaltfläche "Installieren" im Dialogfeld, mit der die Installation des heruntergeladenen Updates gestartet wird. Daher können wir sagen, dass der durchschnittliche Conversion-Wert in beiden Fällen direkt proportional zur Häufigkeit der Veröffentlichungen ist. In Pandao erreicht die durchschnittliche Conversion innerhalb eines Monats 35% für einen Klick auf die Bestätigungsschaltfläche und 7% für einen Klick auf die Installationsschaltfläche.
Wir gehen davon aus, dass eine Verringerung des Prozentsatzes der Bestätigungen im Laufe der Zeit nur ein Problem der Benutzererfahrung darstellt, da Personen, die an der neuen Version interessiert sind, recht schnell aktualisiert werden und diejenigen, die nicht an einer Aktualisierung interessiert sind, nicht interessiert sind. Basierend auf dieser Annahme haben wir beschlossen, diejenigen, die nicht an einer Aktualisierung interessiert sind, nicht zu stören und sie nicht jeden Tag zu fragen. Es wird empfohlen, eine andere Abfragelogik zu verwenden, die auf "Veralterung" basiert. Um die Benutzer nicht zu stören, bewerten wir, wie alt die Versionen sind und wie oft wir bereits vorgeschlagen haben, sie zu aktualisieren.
Im Allgemeinen zeigten IAUs gute Ergebnisse bei A / B-Tests, daher haben wir IAUs für alle Benutzer eingeführt.
Danksagung
Vielen Dank für Ihre Hilfe beim Schreiben dieses Artikels. Marina Pleshkova
Maryna_Pliashkova , Alexander Cherny
alexchernyy , Ilya Nazarov
RolaRko , Gleb Bodyachevsky, Daniil Polozov
Jokerdab , Anastasia Kulik, Vladislav Breus und Vladislav Goldin
Vladiskus .