O que é um arquivo AASA (apple-app-site-association)?

Imagine isso: você quer começar a usar o Universal Links no iOS e a documentação da Apple pediu que você criasse e hospedasse um arquivo da AASA. Então, o que é um arquivo AASA?

O AASA (abreviação de apple-app-site-association) é um arquivo que vive em seu site e associa o domínio do seu site com o seu aplicativo nativo. Em outras palavras, é uma maneira segura de provar a propriedade do domínio para o iOS. Com os esquemas URI, que eram a forma padrão para abrir aplicativos no iOS até o iOS 9, os desenvolvedores de aplicativos poderiam registrar qualquer esquema URI que quisessem e o iOS, sem qualquer verificação, responderia a esses esquemas URI abrindo aplicativos. Por exemplo, se um desenvolvedor indie registra o esquema fb:// URI para um aplicativo de teste, não havia nada que impedisse isso, mesmo o fb:// sendo usado pelo aplicativo nativo do Facebook. O arquivo AASA torna o Universal Links único e seguro porque não há como um desenvolvedor indie hospedar um arquivo AASA no domínio facebook.com.

Vejamos algumas noções básicas do arquivo apple-app-site-association que o ajudará na construção e hospedagem de um em seu domínio.

O arquivo AASA contém um objeto JSON com uma lista de aplicativos e os caminhos URL no domínio que devem ser incluídos ou excluídos como Universal Links. Aqui está um exemplo de um arquivo AASA:

{
  "applinks": {
    "apps": [],
    "details": [
      {
        "appID": "3XXXXX9M83.io.branch-labs.Branchster",
        "paths": [ "NOT /e/*", "*", "/", “/archives/201?/* ]
      }
    ]
  }
}

 

No JSON AASA, cada domínio específico do aplicativo contém um dicionário de appID e caminhos. Vejamos o que é cada chave no objeto JSON AASA:

  • applinks: Como o arquivo AASA também pode servir a outros propósitos (por exemplo, Credenciais Web Compartilhadas), o objeto applinks define a seção do arquivo utilizada pelo Universal Links.
  • aplicativos: A matriz de aplicativos deve estar presente, mas estará sempre vazia.
  • appID: Construído combinando o ID da equipe do aplicativo* (ou o Prefixo do aplicativo Apple) e o Bundle Identifier***. No exemplo acima, 3XXXXX9M83 é o ID da Equipe e io.branch-labs.Branchster é o ID do Bundle.
  • caminhos: Matriz de cadeias que especificam quais caminhos são incluídos ou excluídos da associação. Você pode usar NOT (antes do caminho – como no exemplo JSON acima) para desativar caminhos. Neste caso, todos os links neste caminho irão para a web em vez de abrir o aplicativo. Você pode usar * como curinga para habilitar todos os caminhos em um diretório e ? para combinar um único caractere (/archives/201?/exemplo no JSON de amostra). Observe que estas cadeias são sensíveis a maiúsculas e minúsculas e que as cadeias de consulta e os identificadores de fragmentos são ignorados.

* Não sabe qual é a ID de sua equipe? Vá até https://developer.apple.com/account e a recupere na seção de Membros.

** Para recuperar o ID do Bundle, vá até o seu projeto Xcode, selecione o projeto e, em seguida, a guia ‘Geral’.

 

Hospedando o arquivo AASA em seu domínio

Uma vez pronto o seu arquivo AASA, você pode hospedá-lo em seu domínio em https://<<yourdomain>>/apple-app-site-association ou em https://<<yourdomain>>/.well-known/apple-app-site-association.

Ao hospedar o arquivo AASA, certifique-se de que o arquivo AASA:

  • É servido em HTTPS.
  • Usa o tipo MIME de aplicação/json.
  • Não tem um .json anexado ao nome do arquivo apple-app-site-association.
  • Tem um tamanho não superior a 128 Kb (requisito no iOS 9.3.1 e posteriores).

 

Apoio Múltiplos Aplicativos no Mesmo Domínio

Você pode suportar múltiplos aplicativos no mesmo domínio. Para fazer isso, você precisaria adicionar um novo dicionário de appID, caminho à matriz de detalhes no arquivo da AASA para se parecer com algo assim:

{
  "applinks": {
    "apps": [],
    "details": [
      {
        "appID": "3XXXXX9M83.io.branch-labs.Branchster",
        "paths": [ "NOT /e/*", "*", "/", “/archives/201?/* ]
      },
      {
         "appID": "3ZZZZZ9M94.io.branch-test.Branch",
         "paths": [ "NOT /e/*", "*", "/", “/archives/200?/* ]
      }
    ]
  }
}

 

Se dois ou mais aplicativos associarem com o mesmo caminho de conteúdo no site, então a ordem do dicionário appID, caminhos na matriz de detalhes determinará qual aplicativo terá precedência.

 

Suportando Vários Domínios para o Mesmo Aplicativo

Cada domínio que o aplicativo precisa suportar tem que ter seu próprio arquivo “apple-app-site-association”. Se o conteúdo servido pelos domínios for diferente, então o conteúdo do arquivo também será diferente para suportar os respectivos caminhos. Caso contrário, o mesmo arquivo AASA pode ser usado, mas precisa ser acessível em todos os domínios suportados. Observe também que, embora example.com e www.example.com possam estar servindo o mesmo conteúdo, você precisa garantir que o arquivo AASA esteja hospedado em ambos os domínios.

Na Filial, nós vivemos e respiramos Deep Links e criamos um validador AASA para ajudar você a construir seu arquivo AASA válido. Você pode encontrá-lo aqui: https://branch.io/resources/aasa-validator/.

Se você estiver usando links da Branch, você pode contornar todas as etapas de construção, validação, hospedagem e gerenciamento de um arquivo AASA, marcando uma única caixa no painel de controle da Branch. Nós cuidamos de todo o resto nos bastidores para você.

Se você não estiver usando links da Branch, agora é a hora de solicitar uma demonstração da Branch!