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 ff-origin

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 que serão validadas pela configuração do projeto 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 na Web confiável agora está pronta para oferecer suporte a várias origens. O android-browser-helper tem um aplicativo de exemplo para atividades da Web confiáveis de 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.