Como transmitir informações para uma Atividade confiável na Web usando parâmetros de consulta

Ao usar a Atividade confiável na Web nos aplicativos, os desenvolvedores talvez precisem transmitir informações da parte nativa do app para o App Web Progressivo (PWA).

Um caso de uso comum para isso é a implementação de segmentações de análise personalizadas para medir instalações e sessões iniciadas na Atividade na Web confiável. Os parâmetros de consulta podem ser adicionados ao URL de início para implementar isso.

Como modificar o URL inicial

Se o parâmetro transmitido ao PWA permanecer o mesmo entre os usuários e inicializar, o parâmetro poderá ser anexado diretamente ao URL de início. Um exemplo desse uso é quando os desenvolvedores querem medir o número de sessões de navegação criadas com base em uma atividade confiável da Web.

Usar o Bubblewrap

O Bubblewrap é uma ferramenta criada para ajudar os desenvolvedores a criar um projeto para um aplicativo Android que inicia PWAs existentes usando uma atividade confiável da Web. Ela contém uma biblioteca e uma interface de linha de comando (CLI).

Como criar um novo projeto

Ao usar a CLI Bubblewrap, um projeto é inicializado com o comando init e cria valores padrão a partir de um manifesto da Web, fornecido como um parâmetro:

bubblewrap init --manifest https://material.money/manifest.json

O assistente vai usar o start_url do manifesto da Web como padrão e vai solicitar que os usuários confirmem o valor. Assim, os desenvolvedores podem adicionar outros parâmetros ao URL usado para iniciar o Progressive Web App.

Como mostrar a saída da CLI do Bubblewrap

Como modificar um projeto atual

Quando o Bubblewrap gera um projeto, as informações desse projeto específico são armazenadas em um arquivo chamado twa-manifest.json, na pasta do projeto. Para modificar o URL de início de um projeto, os desenvolvedores precisam modificar o arquivo:

{
  ...
  "startUrl": "/?utm_source=trusted-web-activity",
  ...
}

Em seguida, gere novamente os arquivos do projeto e aplique o novo URL de início

bubblewrap update

Como usar o Android Studio

Ao usar o Android Studio e a LauncherActivity padrão, o startUrl é definido como uma metatag dentro do AndroidManifest.xml, e podemos modificar o URL usado para iniciar a atividade confiável na Web:

<activity android:name="com.google.androidbrowserhelper.trusted.LauncherActivity"
    android:label="@string/app_name">
    ...
    <meta-data android:name="android.support.customtabs.trusted.DEFAULT_URL"
        android:value="https://svgomg.firebaseapp.com/?utm_source=trusted-web-activity" />
    ...
</activity>

Modificar o URL inicial dinamicamente

Em outros casos, os desenvolvedores podem criar parâmetros que mudam entre usuários ou sessões, por exemplo. Na maioria dos casos, isso envolve a coleta de detalhes do lado do Android do aplicativo para que ele seja transmitido ao App Web Progressivo.

Etapa 1: criar uma LauncherActivity personalizada

public class CustomQueryStringLauncherActivity extends LauncherActivity {
    private String getDynamicParameterValue() {
        return String.valueOf((int)(Math.random() * 1000));
    }

    @Override
    protected Uri getLaunchingUrl() {
        // Get the original launch Url.
        Uri uri = super.getLaunchingUrl();

        // Get the value we want to use for the parameter value
        String customParameterValue = getDynamicParameterValue();

        // Append the extra parameter to the launch Url
        return uri
                .buildUpon()
                .appendQueryParameter("my_parameter", customParameterValue)
                .build();
    }
}

Etapa 2: modificar o AndroidManifest.xml para usar a LauncherActivity personalizada

<activity android:name="com.myapp.CustomQueryStringLauncherActivity"
    android:label="@string/app_name">
    ...
    <meta-data android:name="android.support.customtabs.trusted.DEFAULT_URL"
        android:value="https://squoosh.app/?utm_source=trusted-web-activity" />
    ...
</activity>

Conclusão

É possível transmitir informações da parte nativa para a parte da Web de um aplicativo usando parâmetros de consulta. Quando um parâmetro é adicionado à string de consulta, ele fica acessível para os scripts em execução na página e pode fazer parte da referência quando os usuários navegam para uma página diferente ou o desenvolvedor implementa uma ação de compartilhamento.

Os desenvolvedores precisam estar cientes dessas implicações e podem mitigá-las usando link rel=noreferrer ou limpando o URL usando a API Page Location.

Atualmente, o protocolo de atividade confiável na Web não oferece um mecanismo para trocar mensagens com a parte nativa do aplicativo depois que a parte da Web é invocada.

Acreditamos que as APIs Web Platform atuais ou futuras permitem a maioria dos casos de uso necessários para os desenvolvedores. Se você estiver procurando APIs da Web novas ou futuras, confira a página de status dos novos recursos.