
Bei einer Vielzahl neuer Tools und Funktionen, die auf dem
Android Dev Summit angekündigt wurden, sollte der IAU-API (In-App Updates) besondere Aufmerksamkeit gewidmet werden, mit der Entwickler die Bereitstellung von Funktionen, Fehlerkorrekturen und Leistungsverbesserungen für aktive Benutzer beschleunigen können. Da diese Funktion nach Google I / O 2019 endlich
veröffentlicht wurde , werde ich mich in diesem Artikel eingehend mit der IAU-API befassen, die empfohlenen Benutzerabläufe ausführlich beschreiben und einige Codebeispiele bereitstellen. Darüber hinaus werde ich einige Erfahrungen mit der Integration von IAUs in die
Pandao- App, eine Marktplatzplattform für chinesische Waren, teilen.
Mit der neuen API können Entwickler einen neuen In-App-Aktualisierungsanforderungsfluss initiieren, um aktive Benutzer zum Aktualisieren der App zu bewegen. IAUs ergänzen den bestehenden Mechanismus zur automatischen Aktualisierung von Google Play, haben jedoch leider keine Auswirkungen auf die Absichten einiger Nutzer, Aktualisierungen jeglicher Art zu deaktivieren. IAUs-Anforderungen können auf zwei Arten implementiert werden, die eine völlig unterschiedliche Benutzererfahrung bieten.
- Der flexible Ablauf fordert Benutzer auf, ein Update im Hintergrund herunterzuladen und zu einem geeigneten Zeitpunkt zu installieren. Es soll in Fällen verwendet werden, in denen es für einen Benutzer noch angemessen ist, die ältere Version der App zu verwenden, während die neue veröffentlicht wurde.

- Für den sofortigen Ablauf müssen Benutzer ein Update herunterladen und installieren, bevor sie die App weiter verwenden können. Es sollte in Fällen verwendet werden, in denen es für Entwickler von entscheidender Bedeutung ist, die Verwendung der App zu verhindern, bevor das Update angewendet wird.

Da der letztere Anwendungsfall für die Pandao-App weniger wichtig und angemessen ist, werden wir den ersteren ausführlich diskutieren.
IAUs Flexible Flow Integration
Anwendungsfall
Der flexible IAU-Ablauf besteht aus den folgenden Schritten.
- Die App fordert Google Play auf, mithilfe der Play Core Library nach verfügbaren Updates zu suchen.
- Wenn ein Update verfügbar ist, fordert die App Google Play auf, den IAU-Dialog anzuzeigen. Google Play zeigt dem Nutzer den Dialog zur Aktualisierungsanforderung an.
- Wenn der Nutzer eine Aktualisierungsanforderung akzeptiert, lädt Google Play im Hintergrund ein Update herunter und bietet dem Nutzer eine ordnungsgemäße Statusüberwachung in der Statusleiste.
- Wenn der Downloadvorgang abgeschlossen ist, während sich die App im Hintergrund befindet, schließt Google Play die Installation automatisch ab. In Fällen, in denen der Download abgeschlossen ist, während sich die App im Vordergrund befindet, müssen wir eine benutzerdefinierte Logik für den Abschluss des Updates definieren. Berücksichtigen Sie verschiedene Best Practices für die Implementierung.
- Die App startet den Installationsvorgang, während dem Benutzer ein Google Play-Bildschirm mit dem Installationsfortschritt angezeigt wird. Nach Abschluss der Installation wird die App neu gestartet und eine aktualisierte Version geöffnet. In diesem Fall wird empfohlen, einen zusätzlichen Dialog anzuzeigen, damit der Benutzer explizit bestätigen kann, dass er bereit ist, die App jetzt neu zu starten. Dies ist ein sehr empfehlenswerter Ablauf .
- Die App wartet, bis sie in den Hintergrund tritt, und schließt das Update dann stillschweigend ab. Einerseits ist diese Option in Bezug auf die Benutzererfahrung weniger invasiv. Andererseits muss der Entwickler eine schwierige Funktion implementieren, um zu erkennen, wann immer die App in den Hintergrund tritt.
In Ausnahmesituationen wird der Abschluss des Updates automatisch auf die Google Play-Hintergrundaufgabe verschoben. Diese Option wird für die explizite Verwendung nicht empfohlen, da sie keine Garantie für die Installation eines Updates bietet.
Grundvoraussetzungen für manuelles Testen
Um den vollständigen Aktualisierungsablauf auf dem Testgerät manuell ausführen zu können, sollten mindestens zwei Versionen der App mit der unterschiedlichen Versionsnummer vorhanden sein: eine Quellversion und eine Zielversion.
- Die Quellversion mit der höheren Versionsnummer sollte bei Google Play veröffentlicht werden. Dies ist die Version, die von Google Play als verfügbares Update identifiziert wird. Die Zielversion mit der niedrigeren Versionsnummer und der integrierten IAU-Funktion sollte auf Ihrem Gerät installiert sein. Dies ist die Version, die aktualisiert wird. Wenn die App Google Play auffordert, nach verfügbaren Updates zu suchen, vergleicht sie die Versionsnummer der installierten App mit der Versionsnummer des letzten verfügbaren Builds in Google Play. Die IAU-Funktion wird daher nur ausgelöst, wenn die Versionsnummer in Google Play höher ist als die tatsächliche Version der App auf dem Gerät.
- Sowohl die Quell- als auch die 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.
Beispielcode
Dieser Abschnitt enthält einen Beispielcode für die Verwendung von IAUs, der auch in
der offiziellen Dokumentation enthalten ist . Zunächst muss der Gradle-Datei auf Modulebene die Play Core-Bibliothek hinzugefügt werden.
dependencies { ... implementation "com.google.android.play:core:1.5.0" }
Als Nächstes erstellen wir eine Instanz des IAUs-Managers und fügen der
AppUpdateInfo
Task Rückrufe
AppUpdateInfo
. Das Ergebnis dieser Aufgabe enthält Informationen zur Verfügbarkeit eines Updates, die Absicht, ein Update zu starten, falls es verfügbar ist, und den aktuellen Fortschritt des Update-Downloads, falls es bereits gestartet wurde.
In Bezug darauf, wie der Dialog zur Aktualisierungsanforderung von Google Play im Code
AppUpdateInfo
wird, erhalten
PendingIntent
im
AppUpdateInfo
Objekt ein
PendingIntent
, das Sie mit
startIntentSenderForResult
starten
startIntentSenderForResult
. Dieser Dialog fordert den Benutzer auf, das Update zu starten.
appUpdateManager.startUpdateFlowForResult(
Um den Aktualisierungsstatus zu überwachen, können Sie dem IAUs-Manager
InstallStateUpdatedListener
hinzufügen. Stellen Sie sicher, dass Ihr
InstallStateUpdatedListener
lebenszyklusabhängig ist.
Sobald das Update heruntergeladen wurde (Status
DOWNLOADED
), sollte die App neu gestartet werden, um das Update abzuschließen. Es kann einfach durch Aufrufen von
appUpdateManager.completeUpdate()
initiiert werden.
appUpdateManager.completeUpdate()
wird jedoch empfohlen, eine Snackbar anzuzeigen, damit der Benutzer explizit bestätigen kann, dass er bereit ist, die App jetzt neu zu starten.
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"
Bitte überprüfen Sie zunächst die im Abschnitt "Grundlegende Implementierungsanforderungen" genannten Anforderungen. Wenn Sie die oben genannten Schritte in Übereinstimmung mit allen Anforderungen erfolgreich ausgeführt haben, obwohl das Update gemäß dem
onSuccess
Rückruf immer noch nicht verfügbar ist, beachten Sie bitte den folgenden Trick. Der wahrscheinlichste Grund ist, dass die Google Play-App aufgrund des internen Caching-Mechanismus noch nichts über das Update weiß. Um sicherzustellen, dass der Cache beim manuellen Testen frisch ist, können Sie die zwischengespeicherte Version aktualisieren, indem Sie in der Google Play-App zum Bildschirm "Meine Apps und Spiele" wechseln. Alternativ können Sie den Cache der Google Play-App einfach in den Einstellungen leeren. Beachten Sie, dass dies nur ein Problem beim Testen ist und keine Auswirkungen auf Endbenutzer hat, da der Cache ohnehin täglich aktualisiert wird.
IAUs flexibler Fluss in Pandao
Als Teil des Early-Access-Programms haben wir den flexiblen Ablauf der IAU (empfohlene Implementierung) in die Pandao-App integriert, dh eine Marktplatz-App, die Produkte chinesischer Hersteller und Anbieter anbietet. Der IAU-Dialog wurde auf dem Hauptbildschirm angezeigt, sodass die maximale Anzahl von Benutzern mit ihm interagieren konnte. Zunächst haben wir uns entschlossen, den IAU-Dialog nicht mehr als einmal am Tag zu zeigen, um zu vermeiden, dass Risikonutzer verärgert werden.
Da A / B-Tests ein entscheidender Schritt in jedem neuen Funktionslebenszyklus sind, haben wir uns entschlossen, die Auswirkungen von IAUs auf die Pandao-App zu bewerten. Wir haben unsere Benutzer zufällig in zwei nicht überlappende Gruppen aufgeteilt. Die erste ist eine Kontrollgruppe ohne IAU-Funktion, die die unveränderte Basislinie darstellt, und die zweite ist eine Testgruppe mit IAU-Dialog.
Abb. 1. A / B-Tests für IAUs (Flexible Flow) in der Pandao App.In den letzten Versionen haben wir den Prozentsatz der aktiven Benutzer für jede App-Version gemessen. Es wurde festgestellt, dass unter aktiven Benutzern mit der zuletzt verfügbaren Version der größte Teil aus Gruppe B stammte, dh Benutzer mit IAUS-Funktion. Wie Sie an den violetten Linien in Abb. In den ersten Tagen nach der Veröffentlichung der App-Version 1.29.1 hat die Anzahl der aktiven Benutzer mit IAU-Funktion die Anzahl der Benutzer ohne diese Funktion überschritten. Die umgekehrte Situation kann für die vorherigen Versionen der App beobachtet werden, siehe blaue und rote Linien nach der Veröffentlichung der App-Version 1.29.1. Daher kann festgestellt werden, dass Benutzer mit IAUs dazu neigen, die App-Version schneller zu aktualisieren.
Abb. 2. Bestätigungsrate beim IAU-Dialog (flexibler Ablauf) in der Pandao-App .
Laut Pandao-Analysedaten (siehe Abb. 2) erreicht die Konvertierung zum Klicken auf die Bestätigungsschaltfläche im IAU-Dialog in den ersten Tagen der Veröffentlichung Spitzenwerte und nimmt dann bis zum nächsten App-Update ständig ab. Das gleiche Muster kann bei der Konvertierung beobachtet werden, wenn Sie auf die Schaltfläche "Installieren" in einer Snackbar klicken, wodurch die Installation des heruntergeladenen Updates gestartet wird. Folglich scheint die durchschnittliche Conversion-Rate in beiden Fällen direkt proportional zur Häufigkeit der Veröffentlichungen zu sein. In Pandao übersteigt die durchschnittliche Conversion-Rate, die während eines Monats gemessen wurde, 35% beim Klicken auf die Bestätigungsschaltfläche und 7% beim Klicken auf die Installationsschaltfläche.
Wir haben vorgeschlagen, dass die Reduzierung der Bestätigungsrate im Laufe der Zeit nur ein Problem der Benutzererfahrung darstellt, da Personen, die an der neuen App-Version interessiert sind, ziemlich schnell aktualisiert werden und diejenigen, die nicht an einer Aktualisierung interessiert sind, weiterhin nicht interessiert sind. Aufgrund dieser Informationen haben wir beschlossen, einige Benutzer zurückzuziehen, wenn sie nicht an einer Aktualisierung interessiert sind, anstatt sie jeden Tag zu fragen. Es scheint eine gute Praxis zu sein, eine andere Anforderungslogik zu versuchen, die auf "Staleness" basiert, d. H. Wie alt die Version ist, auf der sie sich befinden, wie oft ein Benutzer sie bereits um ein Update gebeten hat usw., anstatt zu riskieren, dass Benutzer verärgert werden.
Infolgedessen haben IAUs während des A / B-Tests wertvolle Ergebnisse gezeigt, sodass wir diese Funktion für alle Benutzer eingeführt haben.
Anerkannte Segmente
Ich möchte verschiedenen Kollegen für ihren Beitrag zu diesem Artikel danken. Dank an Maryna Pliashkova
Maryna_Pliashkova , Alexander Chernyy
alexchernyy , Ilia Nazarov
RolaRko , Gleb Bodyachevskiy, Daniil Polozov
Jokerdab , Anastasia Kulik, Vladislav Breus und Vladislav Goldin
Vladiskus .