Testar links de aplicativos

Ao implementar o recurso de vinculação de apps, teste essa funcionalidade para verificar se o sistema consegue associar seu app aos sites e processar solicitações de URL conforme esperado.

Para testar um arquivo de instrução existente, use a ferramenta Statement List Generator and Tester.

As seções a seguir descrevem como testar manualmente a verificação de App Links. Se preferir, teste a verificação com a ferramenta de links diretos do Google Play ou o assistente de Links do app do Android Studio.

Confirmar a lista de hosts a serem verificados

Durante os testes, confirme a lista de hosts associados que o sistema precisa verificar para o app. Faça uma lista de todos os URLs cujos filtros de intent correspondentes incluem os seguintes atributos e elementos:

  • Atributo android:scheme com um valor de http ou https
  • Atributo android:host com um padrão de URL de domínio
  • Elemento de ação android.intent.action.VIEW
  • Elemento de categoria android.intent.category.BROWSABLE

Use essa lista para verificar se um arquivo JSON do Digital Asset Links foi disponibilizado para cada host e subdomínio nomeado.

Confirmar os arquivos Digital Asset Links

Para cada site, use a API Digital Asset Links para confirmar se o arquivo JSON Digital Asset Links está hospedado e definido corretamente:

https://digitalassetlinks.googleapis.com/v1/statements:list?
   source.web.site=https://<var>domain.name</var>:<var>optional_port</var>&amp;
   relation=delegate_permission/common.handle_all_urls

No caso dos links dinâmicos de apps, também é possível verificar as extensões de relação.

https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://www.example.com&relation=delegate_permission/common.handle_all_urls&return_relation_extensions=true

Como parte do processo de testes, é possível verificar as definições atuais do sistema para o processamento de links. Use o comando a seguir para ver uma lista das políticas de processamento de links já existentes para todos os apps no dispositivo conectado:

adb shell dumpsys package domain-preferred-apps

O comando a seguir faz a mesma coisa:

adb shell dumpsys package d

O comando retorna uma lista de cada usuário ou perfil definido no dispositivo, precedida por um cabeçalho no seguinte formato:

App linkages for user 0:

Depois desse cabeçalho, o resultado usa o seguinte formato para listar as configurações de processamento de links para esse usuário:

Package: com.android.vending
Domains: play.google.com market.android.com
Status: always : 200000002

A lista indica quais apps foram associados a cada domínio para o usuário:

  • Package: identifica um app pelo nome do pacote, como declarado no manifesto.
  • Domains: mostra a lista completa de hosts cujos links da Web são processados pelo app, usando espaços em branco como delimitadores.
  • Status: mostra a configuração atual de processamento de links para o app. Um app que passou na verificação e cujo manifesto contém android:autoVerify="true" mostra o status always. O número hexadecimal depois desse status está relacionado ao registro do sistema Android das preferências de vinculação de app do usuário. Esse valor não indica se a verificação foi concluída.

Exemplo de teste

Para que a verificação de vinculação de app seja realizada corretamente, o sistema precisa verificar seu app com cada um dos sites especificados em um determinado filtro de intent que atenda aos critérios de vinculação de app. O exemplo abaixo mostra uma configuração de manifesto com diversos links de apps definidos:

<activity android:name=”MainActivity”>
        <intent-filter android:autoVerify="true">
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="https" />
            <data android:scheme="https" />
            <data android:host="www.example.com" />
            <data android:host="mobile.example.com" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="https" />
            <data android:host="www.example2.com" />
        </intent-filter>
    </activity>

    <activity android:name=”SecondActivity”>
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="https" />
            <data android:host="account.example.com" />
        </intent-filter>
    </activity>

      <activity android:name=”ThirdActivity”>
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:scheme="https" />
            <data android:host="map.example.com" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="market" />
            <data android:host="example.com" />
        </intent-filter>
      </activity>

</application>

A lista de hosts que a plataforma tentaria verificar do manifesto anterior é:

www.example.com
mobile.example.com
www.example2.com
account.example.com

A lista de hosts que a plataforma não tentaria verificar do manifesto anterior é:

map.example.com (it does not have android.intent.category.BROWSABLE)
market://example.com (it does not have either an "http" or "https" scheme)

Para saber mais sobre listas de instruções, consulte Criar uma lista de instruções.