As Atividades Confiáveis na Web são uma nova maneira de integrar o conteúdo do seu app da Web, como o PWA, ao app Android usando um protocolo baseado em guias personalizadas.
Uma atividade da Web confiável precisa que as origens abertas sejam validadas usando links de ativos digitais 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 "Personalizado" informa aos usuários que eles estão navegando em um domínio fora do aplicativo e oferece um botão X para retornar rapidamente à origem validada.
No entanto, também é comum que os apps da Web criem experiências que abrangem várias origens. Um exemplo seria 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.
Em casos como esse, não é recomendável mostrar as guias personalizadas, não apenas porque o usuário está no mesmo aplicativo, mas também porque a barra superior pode fazer com que o usuário pense que saiu do aplicativo e abandone o processo de finalização da compra.
As atividades confiáveis da Web permitem que os desenvolvedores validem várias origens, e o usuário permanece em tela cheia ao navegar por essas origens. Assim como no domínio principal, o desenvolvedor precisa controlar cada origem validada.
Como configurar a validação para várias origens
Assim como na origem principal, a validação é feita pelo 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
No 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 é conectado ao mesmo aplicativo Android, os arquivos assetlinks.json
são exatamente iguais.
Supondo que o nome do pacote do aplicativo Android seja com.example.twa
, os dois arquivos assetlink.json
teriam algo semelhante ao seguinte:
[{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.example",
"sha256_cert_fingerprints": ["..."]}
}]
Adicionar várias origens ao app Android
No aplicativo 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 ao configurar o projeto do Android.
Primeiro, adicione um elemento string-array
ao arquivo res/values/strings.xml
. Cada URL extra a ser
validado fica 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 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 um código personalizado para iniciar uma Atividade confiável na Web, é possível adicionar origens extras
chamando setAdditionalTrustedOrigins
ao criar a intent para iniciar a Atividade confiável na Web:
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
Com essas etapas, a Atividade confiável na Web está pronta para oferecer suporte a várias origens. O android-browser-helper tem um exemplo de aplicativo para Atividades confiáveis na Web com várias origens. Confira.
Solução de problemas
A configuração de Digital Asset Links tem algumas partes móveis. Se o aplicativo ainda estiver mostrando a barra de guias personalizadas na parte de cima, é provável que haja algo errado com a configuração.
O Guia de início rápido da atividade confiável na Web tem uma ótima seção de solução de problemas sobre como depurar problemas de link de recursos digitais.
Também há a incrível Peter's Asset Link Tool, que ajuda a depurar links de recursos digitais em aplicativos instalados no dispositivo.