As atividades confiáveis na Web são uma nova maneira de integrar o conteúdo do app da Web, como o PWA, ao app Android usando um protocolo baseado em guias personalizadas.
Uma atividade confiável na Web precisa que as origens abertas sejam validadas usando Digital Asset Links para mostrar o conteúdo em tela cheia.
Quando um usuário sai da origem validada, a interface da guia personalizada é mostrada. A barra de URL na guia Personalizada informa aos usuários que eles estão navegando em um domínio fora do aplicativo, além de oferecer um botão X que permite retornar rapidamente à origem validada.
No entanto, também é comum que os apps da Web criem experiências que abrangem várias origens. Por exemplo, um aplicativo de compras com a experiência principal em www.example.com, enquanto o fluxo de finalização de compra é hospedado em checkout.example.com.
Nesses casos, mostrar as guias personalizadas não é o ideal, não apenas porque o usuário está no mesmo app, mas também porque a barra superior pode fazer com que ele pense que saiu do aplicativo e abandonou a finalização da compra.
Atividades confiáveis na Web permitem que os desenvolvedores validem várias origens, e o usuário permanecerá em tela cheia ao navegar por elas. Assim como acontece com o domínio principal, o desenvolvedor precisa controlar cada origem validada.
Como configurar a validação para várias origens
Como na origem principal, a validação é feita por meio do Digital Asset Links, e cada domínio a ser validado precisa ter o próprio arquivo assetlinks.json.
Adicionar um arquivo assetlinks a cada origem
Em nosso exemplo com www.example.com e checkout.example.com, teríamos:
https://www.example.com/.well-known/assetlinks.json
https://checkout.example.com/.well-known/assetlinks.json
Como cada domínio está sendo conectado ao mesmo app Android, os arquivos assetlinks.json
têm a mesma aparência.
Supondo que o nome do pacote do aplicativo para Android seja com.example.twa
, os dois arquivos assetlink.json
conteriam algo semelhante a:
[{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.example",
"sha256_cert_fingerprints": ["..."]}
}]
Adicionar várias origens ao aplicativo Android
No app Android, a declaração asset_statements
precisa ser atualizada para conter todas
as origens que precisam ser validadas:
<string name="asset_statements">
[{
\"relation\": [\"delegate_permission/common.handle_all_urls\"],
\"target\": {
\"namespace\": \"web\",
\"site\": \"https://www.example.com\"
}
}],
[{
\"relation\": [\"delegate_permission/common.handle_all_urls\"],
\"target\": {
\"namespace\": \"web\",
\"site\": \"https://checkout.example.com\"
}
}],
</string>
Adicionar origens extras à LauncherActivity
Como usar a LauncherActivity padrão
O LauncherActivity
que faz parte da Biblioteca de Suporte android-browser-helper
oferece uma maneira de adicionar várias origens para validação pela configuração do projeto Android.
Primeiro, adicione um elemento string-array
ao arquivo res/values/strings.xml
. Cada URL extra a ser
validado estará dentro de um subelemento item
:
...
<string-array name="additional_trusted_origins">
<item>https://www.google.com</item>
</string-array>
...
Em seguida, adicione uma nova tag meta-data
dentro do elemento de atividade existente que faz referência ao
LauncherActivity
, dentro de AndroidManifest.xml
:
...
<activity android:name="com.google.androidbrowserhelper.trusted.LauncherActivity"
android:label="@string/app_name">
<meta-data
android:name="android.support.customtabs.trusted.ADDITIONAL_TRUSTED_ORIGINS"
android:resource="@array/additional_trusted_origins" />
...
</activity>
...
Como usar uma LauncherActivity personalizada
Ao usar o código personalizado para iniciar uma Atividade na Web confiável, é possível adicionar origens extras
chamando setAdditionalTrustedOrigins
ao criar a intent para iniciar essa atividade:
public void launcherWithMultipleOrigins(View view) {
List<String> origins = Arrays.asList(
"https://checkout.example.com/"
);
TrustedWebActivityIntentBuilder builder = new TrustedWebActivityIntentBuilder(LAUNCH_URI)
.setAdditionalTrustedOrigins(origins);
new TwaLauncher(this).launch(builder, null, null);
}
Conclusão
Depois de concluir essas etapas, a Atividade na Web confiável vai estar pronta para oferecer suporte a várias origens. O android-browser-helper tem um app de exemplo (link em inglês) para atividades da Web confiáveis de várias origens. Não se esqueça de conferir.
Solução de problemas
A configuração do Digital Asset Links envolve algumas etapas. Se o aplicativo ainda estiver mostrando a barra de guias personalizadas na parte de cima, é provável que algo esteja errado com a configuração.
O Guia de início rápido da Atividade na Web confiável tem uma ótima seção de solução de problemas sobre como depurar problemas do Digital Asset Link.
Há também a incrível Ferramenta de link de recursos do Pedro, que ajuda a depurar links de recursos digitais em aplicativos instalados no dispositivo.