Atividades confiáveis na Web de várias origens

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.

Navegação de origem ff

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.

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.