WebAPKs unter Android

Wenn ein Nutzer deine progressive Web-App zu seinem Android-Startbildschirm hinzufügt, erstellt Chrome automatisch ein APK für dich. Manchmal wird es auch als WebAPK bezeichnet. Wenn Sie Ihre App über ein APK installieren, wird sie im App Launcher, in den App-Einstellungen von Android angezeigt und kann eine Reihe von Intent-Filtern registrieren.

Wenn du eine PWA auf Android-Geräten installierst, reicht es nicht aus, nur die progressive Web-App dem Startbildschirm des Nutzers hinzuzufügen. Chrome generiert und installiert automatisch ein spezielles APK Ihrer App. Manchmal wird es auch als WebAPK bezeichnet. Durch die Installation über ein APK kann deine App im App Launcher, in den App-Einstellungen von Android angezeigt und eine Reihe von Intent-Filtern registriert werden.

Zum Generieren des WebAPK prüft Chrome das Manifest der Web-App und andere Metadaten. Wenn ein Update des Manifests erkannt wird, muss Chrome ein neues APK generieren.

Android-Intent-Filter

Wenn eine progressive Web-App auf Android installiert wird, registriert sie eine Reihe von Intent-Filtern für alle URLs im Geltungsbereich der App. Klickt ein Nutzer auf einen Link im Bereich der App, wird die App geöffnet, anstatt sie auf einem Browsertab zu öffnen.

Betrachten Sie den folgenden Teil-manifest.json:

"start_url": "/",
"display": "standalone",

Wenn eine Web-App, die sie verwendet, über den App Launcher gestartet wird, wird https://example.com/ als eigenständige App ohne Browser-Chrome geöffnet.

Das WebAPK würde die folgenden Intent-Filter enthalten:

<intent-filter>
  <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.DEFAULT" />
  <category android:name="android.intent.category.BROWSABLE" />
  <data
    android:scheme="https"
    android:host="example.com"
    android:pathPrefix="/" />
</intent-filter>

Wenn der Nutzer in einer installierten App auf einen Link zu https://example.com/read klickt, wird dies vom Intent abgefangen und in der progressiven Web-App geöffnet.

Intent-Filter mit scope einschränken

Wenn deine progressive Web-App nicht alle URLs innerhalb deiner Website verarbeiten soll, kannst du dem Manifest deiner Web-App die Property scope hinzufügen. Mit der Eigenschaft scope wird Android angewiesen, deine Web-App nur zu öffnen, wenn die URL mit origin + scope übereinstimmt. Damit können Sie steuern, welche URLs von Ihrer Anwendung verarbeitet werden und welche im Browser geöffnet werden sollen. Dies ist hilfreich, wenn sich Ihre App und andere Nicht-App-Inhalte in derselben Domain befinden.

Betrachten Sie den folgenden Teil-manifest.json:

"scope": "/app/",
"start_url": "/app/",
"display": "standalone",

Beim Start über den App Launcher wird https://example.com/app/ als eigenständige App ohne Browser-Chrome geöffnet.

Wie zuvor würde das generierte WebAPK einen Intent-Filter enthalten, jedoch mit einem anderen android:pathPrefix-Attribut im AndroidManifest.xml des APK:

<intent-filter>
  <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.DEFAULT" />
  <category android:name="android.intent.category.BROWSABLE" />
  <data
    android:scheme="https"
    android:host="example.com"
    android:pathPrefix="/app/" />
</intent-filter>

Sehen wir uns ein paar Beispiele an:

Das sollten Sie tun:

https://example.com/app/ – innerhalb von /app/

Das sollten Sie tun:

https://example.com/app/read/book – innerhalb von /app/

Don'ts

https://example.com/help/ – nicht in /app/

Don'ts

https://example.com/about/ – nicht in /app/

Unter scope finden Sie weitere Informationen zu scope und dazu, was passiert, wenn Sie ihn nicht festlegen, und wie Sie ihn zum Definieren des Umfangs Ihrer Anwendung verwenden können.

Berechtigungen verwalten

Berechtigungen funktionieren genauso wie andere Webanwendungen und können nicht bei der Installation angefordert werden. Stattdessen müssen sie während der Laufzeit angefordert werden, idealerweise nur dann, wenn Sie sie wirklich benötigen. Fragen Sie beispielsweise nicht beim ersten Laden nach der Kameraberechtigung, sondern warten Sie, bis der Nutzer versucht, ein Bild zu machen.

Speicher und Anwendungsstatus verwalten

Obwohl die progressive Web-App über ein APK installiert wird, verwendet Chrome das aktuelle Profil zum Speichern von Daten und diese werden nicht getrennt. Dies ermöglicht eine gemeinsame Erfahrung zwischen dem Browser und der installierten Anwendung. Cookies werden gemeinsam genutzt und aktiv, alle clientseitigen Speicher sind zugänglich und der Service Worker ist installiert und einsatzbereit.

WebAPK aktualisieren

Informationen dazu, wie ein WebAPK aktualisiert wird, wurden unter Wie Chrome mit Updates des Web-App-Manifests verarbeitet verschoben.

Häufig gestellte Fragen

Welche Symbole werden verwendet, um den Ladebildschirm zu erstellen? :
Wir empfehlen, mindestens zwei Symbole bereitzustellen: 192 px und 512 px für den Ladebildschirm. Viele haben uns berichtet, dass die Symbole auf dem Begrüßungsbildschirm zu klein sind. In Chrome 71 oder höher generierte WebAPKs haben ein größeres Symbol auf dem Ladebildschirm. Sie müssen nichts weiter tun, solange die empfohlenen Symbole bereitgestellt werden.
Was passiert, wenn der Nutzer die native App für die Website bereits installiert hat?
Wie heute können Nutzer Websites unabhängig von nativen Apps hinzufügen. Wenn Sie davon ausgehen, dass Nutzer möglicherweise beides installieren, sollten Sie das Symbol oder den Namen Ihrer Website von der nativen App unterscheiden.
Wird der Speicher meiner installierten Website gelöscht, wenn der Nutzer den Chrome-Cache leert?
Ja.
Wird meine App neu installiert, wenn ich ein neues Gerät erhalte?
Im Moment noch nicht, aber wir denken, dass dies ein wichtiger Bereich ist, und wir suchen nach Möglichkeiten, wie er funktionieren kann.
Wie werden Berechtigungen gehandhabt? Sehe ich die Chrome-Aufforderung oder die von Android?
Berechtigungen werden weiterhin über Chrome verwaltet. Nutzer sehen die Aufforderungen von Chrome zum Gewähren von Berechtigungen und können diese in den Chrome-Einstellungen bearbeiten.
Auf welchen Android-Versionen ist das möglich?
Progressive Web-Apps können auf allen Android-Versionen installiert werden, auf denen Chrome für Android ausgeführt wird, vor allem auf Jelly Bean und höher.
Wird WebView verwendet?
Nein, die Website wird in der Chrome-Version geöffnet, aus der der Nutzer sie hinzugefügt hat.
Können wir die erstellten APKs im Play Store hochladen?
Nein. Wenn Sie ein eigenes APK hochladen möchten, sehen Sie sich die Informationen unter Vertrauenswürdige Web-Aktivitäten an.
Sind diese im Play Store aufgeführt?
Nein. Wenn du ein eigenes APK für den Eintrag im Play Store hochladen möchtest, kannst du unter Vertrauenswürdige Web-Aktivitäten nachsehen.
Ich bin Entwickler eines anderen Browsers unter Android. Kann ich diesen nahtlosen Installationsprozess nutzen? :
Wir arbeiten daran. Unser Ziel ist es, diese Funktion für alle Browser auf Android-Geräten verfügbar zu machen. Weitere Informationen folgen bald.