Cel udostępniania w internecie umożliwia aplikacjom PWA odbieranie treści udostępnianych z innych aplikacji zainstalowanych na urządzenia. Tej funkcji mogą używać na przykład aplikacje, takie jak edytory obrazów, do otrzymują zdjęcie z aplikacji aparatu lub z sieci społecznościowej, aby otrzymać obraz lub film do udostępnienia.
Od Chrome 86 usługa Web Share Target jest teraz dostępna również dla aplikacji, które używają Zaufana aktywność w internecie. Progresywna aplikacja internetowa powinna działać od razu, jednak trzeba wprowadzić kilka zmian, aby aplikacji na Androida.
W tym artykule zakładamy, że deweloper zna zaufane aktywności w internecie. Czytelnicy, którzy dopiero zaczynają korzystać z aby zacząć korzystać z technologii, skorzystaj z przewodnika po integracji.
Pełne wyjaśnienie wdrożenia celu udostępniania w internecie w progresywnej aplikacji internetowej znajduje się poza a deweloperzy mogą znaleźć więcej informacji w tym artykule.
Jako PWA będzie używana aplikacja w wersji demonstracyjnej https://scrapbook-pwa.web.app/. jego kod źródłowy jest dostępny na GitHub, a aplikacja na Androida opiera się podstawowej prezentacji Zaufanej aktywności w internecie.
Dodaj cel udostępniania w internecie do aplikacji na Androida
Modyfikowanie istniejącej aplikacji opartej na Zaufanej aktywności internetowej w celu wdrożenia Udostępniania w internecie Trzeba zmodyfikować 3 różne pliki docelowe:
build.gradle
Biblioteka android-browser-helper obsługuje teraz cel udostępniania w internecie. Jako Zaktualizuj aplikację, tak aby korzystała z wersji 2.0.1 lub nowszej.
dependencies {
...
implementation 'com.google.androidbrowserhelper:androidbrowserhelper:2.2.0'
}
res/strings.xml
Aplikacja musi przekazać do zaufanej aktywności internetowej szczegóły obsługiwanego udostępniania takie jak adresy URL do otworzenia, metodę do użycia i obsługiwane typy MIME.
Odbywa się to za pomocą pliku JSON udostępnianego zaufanej aktywności internetowej za pomocą zasobu w postaci ciągu znaków.
są takie same jak pole share_target
dostępne w pliku manifestu internetowego i można je dodać do
ciąg znaków wewnątrz elementu strings.xml
, niemal w takiej postaci, w jakiej jest, z dwoma ważnymi uwagami:
- Wartością atrybutu działania musi być pełny adres URL wraz ze źródłem.
- Aby znak
"
zmieniał się w\"
, trzeba zmienić znaczenie cudzysłowów.
Tak wygląda sekcja share_target
w pliku https://scrapbook-pwa.web.app/manifest.json
lubię:
{
...
"share_target": {
"action": "/_share-target",
"enctype": "multipart/form-data",
"method": "POST",
"params": {
"files": [{
"name": "media",
"accept": [
"audio/*",
"image/*",
"video/*"
]
}]
}
},
...
}
Nowy element typu string 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
Zadeklarowano, wyeksportowano i włączono interfejs DelegationService
.
Deweloperzy, którzy stworzyli swoje aplikacje w oparciu o podstawową wersję demonstracyjną, już będą mieli dostęp do tej usługi. , a znaczniki powinny 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>
Wreszcie do tagu aktywności LauncherActivity należy dodać dwa nowe elementy:
– tag meta-data
, który odwołuje się do pliku JSON zdefiniowanego w string.xml.
– intent-filter
deklarujący, które typy MIME obsługuje aplikacja dla innych
aplikacje 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, w przypadku każdego zadeklarowanego mime-type
należy dodać element data
w pliku JSON share_target
.
Podsumowanie
Integracja celu udostępniania w internecie pozwala na głębsze wykorzystanie aplikacji PWA w zaufanej aktywności internetowej zintegrowane z innymi aplikacjami zainstalowanymi na urządzeniu z Androidem.
Jak opisano powyżej, dodatkowe znaczniki niezbędne do dodania obsługi interfejsu API w polu istniejąca aplikacja na Androida, która korzysta z zaufanej aktywności internetowej, została uproszczona przez android-browser-helper.
Zapoznaj się z artykułem na temat celu udostępniania w internecie, aby dowiedzieć się więcej o używaniu interfejsu API na PWA oraz Interfejs Web Share API, aby dowiedzieć się, jak udostępniać treści z progresywnej aplikacji internetowej.
Rozwiązywanie problemów
Gdy próbuję udostępnić plik z innej aplikacji, nie wyświetla się żadna opcja w mojej aplikacji.
Jeśli aplikacja nie jest widoczna jako opcja, oznacza to, że intent-filter
jest
niepoprawnie. Dokładnie sprawdź znacznik intent-filter
. Upewnij się, że zawiera on prawidłowe działania.
i mime-types
obsługiwane przez aplikację.
Wyświetla się moja aplikacja, która jest uruchamiana, ale dane nie są udostępniane.
Może to wynikać z kilku przyczyn. Oto lista kontrolna, na którą warto zwrócić uwagę:
- Upewnij się, że weryfikacja komponentu Digital Asset Links zakończyła się powodzeniem.
- Sprawdź poprawność pliku JSON w string.xml.