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 de apps da Web, como o PWA, seu app Android usando um protocolo baseado em guias personalizadas.

navegação ff-origin

Uma Atividade na Web confiável precisa que as origens que estão sendo 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. Na barra de URL A guia informa aos usuários que eles estão navegando em um domínio fora do aplicativo, além de fornecendo ao usuário um botão X que permite retornar rapidamente à origem validada.

Mas também é comum que aplicativos 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 checkout o fluxo está hospedado em checkout.example.com.

Nesses casos, mostrar as guias personalizadas não é desejável, não apenas porque o usuário está no mas também porque a barra superior poderia fazer o usuário pensar que saiu do aplicativo e abandonar a finalização da compra.

As Atividades Confiáveis na Web permitem que os desenvolvedores validem várias origens, e o usuário permanece no em tela cheia ao navegar por essas origens. Assim como no domínio principal, o desenvolvedor deve ser possam controlar cada origem validada.

Como configurar a validação para várias origens

Como na origem principal, a validação é feita pelos Links de recursos digitais e cada domínio a ser validado precisa ter o próprio arquivo assetlinks.json.

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 são exatamente iguais.

Supondo que o nome do pacote para o aplicativo Android seja com.example.twa, ambos assetlink.json conteriam 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 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 outras origens à 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 a serem validadas configurando o 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 da atividade existente que faz referência ao LauncherActivity, em 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 código personalizado para iniciar uma Atividade Confiável na Web, é possível adicionar origens extras chame setAdditionalTrustedOrigins ao criar a intent para iniciar a Atividade na Web confiável:

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 confiáveis na Web de várias origens. Marca verifique.

Solução de problemas

A configuração dos Links de recursos digitais tem algumas partes móveis. Se o aplicativo ainda estiver mostrando o Barra de guias personalizadas na parte superior, é provável que haja algo de 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 do Digital Asset Link.

Há também a incrível Peter's Asset Link Tool, que ajuda a depurar os Digital Asset Links nos aplicativos instalados no dispositivo.