Cel udostępniania treści z sieci umożliwia przeglądarce internetowej nawigowanie do treści udostępnionych z innych aplikacji zainstalowanych na urządzeniu. Z tej funkcji mogą korzystać na przykład aplikacje do edycji zdjęć, aby odbierać obrazy z aplikacji aparatu, lub sieci społecznościowe, aby odbierać obrazy i filmy do udostępnienia.
Od wersji 86 Chrome docelowe udostępnianie treści w internecie jest dostępne również dla aplikacji korzystających z zaufanej aktywności w internecie. PWA powinna działać od razu, ale w aplikacji na Androida trzeba wprowadzić kilka zmian.
W tym artykule zakładamy, że deweloper zna zaufane działania w internecie. Czytelnicy, którzy dopiero zaczynają korzystać z tej technologii, mogą skorzystać z przewodnika po integracji.
Poza tym pełne wyjaśnienie wdrożenia celu udostępniania w internecie w progresywnej aplikacji internetowej jest poza zakresem. Deweloperzy mogą zapoznać się z dodatkowymi informacjami w tym artykule.
Jako PWA tego artykułu będzie używana aplikacja demonstracyjna dostępna pod adresem https://scrapbook-pwa.web.app/, a jej kod źródłowy będzie dostępny na GitHub, a aplikacja na Androida opiera się na podstawowej demonstracji Zaufanej aktywności w internecie.
Dodawanie do aplikacji na Androida celu udostępniania przez internet
Aby zmodyfikować istniejące aplikacje korzystające z zaufanej aktywności w internecie w celu implementacji celu udostępniania w internecie, musisz zmodyfikować 3 pliki:
build.gradle
Biblioteka android-browser-helper została zaktualizowana i obsługuje teraz cel udostępniania w przeglądarce. Najpierw zaktualizuj aplikację do wersji 2.0.1 lub nowszej.
dependencies {
...
implementation 'com.google.androidbrowserhelper:androidbrowserhelper:2.2.0'
}
res/strings.xml
Aplikacja musi przekazać zaufanej aktywności w internecie szczegóły dotyczące obsługiwanych funkcji udostępniania, takie jak adresy URL do otwierania, metodę i typy mime.
Jest to realizowane za pomocą obiektu JSON udostępnionego usłudze zaufana aktywność internetowa za pomocą zasobu ciągu znaków. Pola te są takie same jak pole share_target
dostępne w pliku manifestu internetowego i można je dodać do ciągu znaków w elemencie strings.xml
(prawie w takiej postaci, w jakiej jest), z 2 ważnymi uwagami:
- Wartością atrybutu działania musi być pełny adres URL wraz ze źródłem.
- Musisz użyć znaku ucieczki, aby każdy znak
"
został zamieniony na\"
.
Oto jak wygląda sekcja share_target
w pliku https://scrapbook-pwa.web.app/manifest.json:
{
...
"share_target": {
"action": "/_share-target",
"enctype": "multipart/form-data",
"method": "POST",
"params": {
"files": [{
"name": "media",
"accept": [
"audio/*",
"image/*",
"video/*"
]
}]
}
},
...
}
Nowy element ciągu znaków będzie wyglądał tak:
<string name="share_target">
{
\"action\": \"https://twa-web-scrapbook.web.app/_share-target\",
\"method\": \"POST\",
\"enctype\": \"multipart/form-data\",
\"params\": {
\"files\": [{
\"name\": \"media\",
\"accept\": [\"image/*\", \"audio/*\", \"video/*\"]
}]
}
}
</string>
AndroidManifest.xml
W pliku manifestu Androida trzeba wprowadzić kilka zmian. Najpierw musimy się upewnić, że usługa DelegationService
jest zadeklarowana, wyeksportowana i włączona.
Programiści, którzy stworzyli aplikację na podstawie podstawowego szablonu, będą już mieć uwzględnioną usługę. Tagowanie powinno znajdować się w tagu aplikacji i wyglądać tak:
<service
android:name="com.google.androidbrowserhelper.trusted.DelegationService"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.support.customtabs.trusted.TRUSTED_WEB_ACTIVITY_SERVICE"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</service>
Do tagu aktywności LauncherActivity należy też dodać 2 nowe elementy:
– tag meta-data
, który odwołuje się do pliku JSON zdefiniowanego w pliku strings.xml;
– intent-filter
, który określa, jakie typy mime aplikacja może obsługiwać w przypadku innych aplikacji na urządzeniu.
<meta-data
android:name="android.support.customtabs.trusted.METADATA_SHARE_TARGET"
android:resource="@string/share_target"/>
<intent-filter>
<action android:name="android.intent.action.SEND" />
<action android:name="android.intent.action.SEND_MULTIPLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="audio/*" />
<data android:mimeType="image/*" />
<data android:mimeType="video/*" />
</intent-filter>
Jak widać w znacznikach powyżej, do każdego mime-type
zadeklarowanego w pliku JSON share_target
należy dodać element data
.
Podsumowanie
Integracja celu udostępniania w internecie umożliwia ściślejszą integrację aplikacji PWA w ramach zaufanej aktywności internetowej z innymi aplikacjami zainstalowanymi na urządzeniu z Androidem.
Jak opisano powyżej, dodatkowe znaczniki potrzebne do dodania obsługi interfejsu API w istniejącej aplikacji na Androida, która korzysta z zaufanej aktywności internetowej, zostały uproszczone przez android-browser-helper.
Aby dowiedzieć się więcej o korzystaniu z interfejsu API w aplikacji PWA, przeczytaj artykuł o docelniku Web Share API, a aby dowiedzieć się, jak udostępniać treści z aplikacji Progressive Web App, zapoznaj się z interfejsem Web Share API.
Rozwiązywanie problemów
Podczas udostępniania pliku z innej aplikacji moja aplikacja nie jest wyświetlana jako opcja.
Jeśli aplikacja nie jest widoczna jako opcja, oznacza to, że intent-filter
jest nieprawidłowe. Dokładnie sprawdź znacznik intent-filter
. Upewnij się, że zawiera on prawidłowe działania, kategorię oraz mime-types
obsługiwane przez aplikację.
Wyświetla się moja aplikacja, która jest uruchamiana, ale dane nie są udostępniane.
Może się tak zdarzyć z kilku powodów. Oto lista kontrolna:
- Sprawdź, czy weryfikacja Digital Asset Links zakończyła się sukcesem.
- Sprawdź, czy JSON w pliku strings.xml jest poprawny.