AppleDeep linkingGuiasiOS 10iOS 11iOS 9Links UniversaisMarketing móvelTécnico

Como configurar Universal Links para Deep Link no Apple iOS

By abril 14, 2017 No Comments

 

Atualização: Esta publicação foi feita originalmente em 24 de julho de 2015, mas foi atualizada desde então com as informações da última versão do iOS 9.2. Agora que a Apple não oferece mais suporte a esquemas de URI schemes para deep linking, , os desenvolvedores devem implementar links universais para fazer o deep link de maneira adequada no iOS. Se você já está usando os esquemas de URI, veja nosso blog sobre como fazer a transição para Universal links.

Na Branch, nós comemos, respiramos e dormimos pensando no deep linking móvel. Criamos um único link que você pode usar em todos os lugares: em todas as plataformas, em todos os dispositivos e em todas as lojas de aplicativos para fazer com que os usuários usem seu aplicativo. É um link único, completamente configurado para conectar seu aplicativo de qualquer canal (Facebook, Twitter, Gmail, etc.) e ser listado em todos os portais de busca (Google App Indexing, Bing search, Apple Spotlight).

Simplesmente funciona. Na verdade, já escrevemos publicações no blog sobre como configurar o Como Configurar o Google App Indexing e Como Fazer Deep Link no Facebook, Dê uma olhada!

Slide1

Quando a Apple anunciou os Links Universais na última apresentação WWDC, ficamos animados em incorporá-los na plataforma de Deep Linking da Branch. Nós só não sabíamos o quanto seria complicado fazer isso funcionar. Depois de passar muito tempo nisso e dado a falta de documentação, pensamos em compartilhar um guia sobre como fazer isso para salvar todas as outras pessoas.

Como os Links Universais funcionam no iOS 9?

Antes dos Links Universais, o principal mecanismo para abrir um aplicativo quando ele estava instalado era tentar redirecionar para um esquema de URI de um aplicativo (registrado na PLIST do aplicativo) no Safari. Isso colocou a lógica de roteamento do Safari, mas não havia maneira de verificar se o aplicativo estava instalado ou não. Isso significava que os desenvolvedores tentavam chamar o esquema de URI 100% do tempo, no caso de um aplicativo estar instalado e, então, retornar para a App Store, quando não utilizando um cronômetro.

Os Links Universais do iOS9 foram projetados para resolver esse problema. Em vez de abrir o Safari primeiro ao clicar sobre um link, o iOS verifica se um Link Universal foi registrado para o domínio associado com o link, e depois verifica se o aplicativo correspondente está instalado. Caso o aplicativo esteja instalado, ele será aberto. Caso não esteja, o Safari abrirá e o link http(s) será carregado.

Funcionalmente, ele permite que você tenha um único link que abre o seu aplicativo ou seu site móvel.

Guia de integração do Link Universal

Aqui estão os passos de alto nível para fazer com que os Links Universais funcionem em seu aplicativo:

1. Configure o seu aplicativo para registrar domínios aprovados

i. Registre seu aplicativo em developers.apple.com

ii. Habilite Domínios Associados em seu identificador de aplicativos

iii. Habilite Domínio Associado em seu projeto do Xcode

iv. Adicione o direito do domínio adequado

v. Certifique-se de que o arquivo de direitos esteja incluso na versão

Se você usa Branch, você pode parar aqui. Caso contrário, continue para a seção dois.

2. Configure seu site para hospedar o arquivo apple-app-site-association

i. Compre um nome de domínio ou escolha um de seus existentes

ii. Adquira a certificação SSL para o nome do domínio

iii. Crie um arquivo JSON estruturado apple-app-site-association

iv. Assine o arquivo JSON com a certificação SSL

v. Configure o servidor do arquivo

Caso use o serviço Branch, vamos lhe poupar da complexidade de criar certificados SSL e assinar e hospedar o arquivo JSON do seu servidor, então você apenas precisa modificar o código do seu aplicativo para tirar proveito disso. Vamos apresentar isso no final da publicação.

Observação: Também criamos uma ferramenta para verificar se o seu arquivo apple-app-site-association está configurado corretamente.

Seção 1: Configuração dos direitos de seu aplicativo

Para registrar o projeto do Xcode para Links Universais, você precisa criar um Apple ID no portal de desenvolvedores da Apple e habilitar os direitos adequados. É muito parecido com a configuração necessária para compras dentro do aplicativo.

Você não pode usar um identificador de aplicativo de caracteres-curinga para Links Universais

Registre seu aplicativo em developers.apple.com developers.apple.com

Primeiro, vá em developers.apple.com e faça login. Então, clique em Certificate, Indentifiers & Profiles (Certificado, Identificadores e Perfis), e depois clique em Identifiers (Identificadores).

Apple Developer Portal for Universal LinksApple Dev Portal for Universal Links

Caso você não tenha um Identificador de Aplicativos registrado, você precisará criar um clicando no sinal de +. Caso tenha, pule para a próxima seção.

Você precisa preencher 2 campos aqui: nome e ID do pacote. Para o nome, basicamente insira o que você quiser. Para a ID de pacote, você deve inserir o valor do pacote

Explicit App ID for Universal Links

 

Você pode saber qual é olhando na guia Geral de seu projeto do Xcode para o alvo adequado da versão.

Setting up Universal Links in xcode

Habilite os Domínios Associados em seu identificador de aplicativo em developers.apple.com

Para um identificador de aplicativo pré-existente ou em andamento, role a página até a última seção e verifique os serviços de Domínios Associados.

Setting up App ID for Universal Links

 

Role a página e clique em Salvar.

Habilite os Domínios Associados em seu projeto do Xcode

Agora, você deve habilitar o direito dos Domínios Associados dentro de seu projeto do Xcode. Primeiro, assegure-se de que seu projeto do Xcode tenha a mesma equipe selecionada que o local onde você acabou de registrar seu Identificador de Aplicativo. Em seguida, vá para a guia Recursos de seu arquivo de projeto.

Universal Links in xcode

Role a página para baixo e habilite Domínios Associados para que o acordeão seja expandido.

setting up associated domain for Universal Links

Caso veja um erro como este, verifique:

  • se você selecionou a equipe correta

  • se o identificador de pacote do seu projeto do Xcode corresponde ao usado para registrar o Identificador de Aplicativo

Adicionar o direito de domínio

Na seção de domínios, adicione a tag de domínio apropriada. Você deve prefixá-la com applinks: Nesse caso, você pode ver que adicionamos applinks:yourdomain.com.

App Links and your domain

Certifique-se de que o arquivo de direitos esteja incluído na versão

Por fim, por algum motivo, o Xcode 7 não incluiu meu arquivo de direitos em minha versão. No navegador do projeto, certifique-se de que o seu novo arquivo de direitos esteja selecionado para que a associação aos alvos corretos seja criada.

Configuring xcode for universal links

Caso use links Branch, você pode parar aqui! Caso contrário, continue lendo ou use o botão abaixo para começar a integrar.

Se quiser economizar horas de dor de cabeça, você pode evitar todo o trabalho de hospedagem de JSON e certificação de SSL e simplesmente usar links Branch para hospedar.

https://dev.branch.io/recipes/branch_universal_links

No entanto, caso você seja muito controlador e adore uma punição, então fique à vontade e continue.

Seção 2: Como configurar seu arquivo apple-app-site-association

Os links universais tornam o URL de seu site em um link de aplicativo, então você precisa executar um servidor web para fazer uso deles. Para ajudar nesse processo, use nosso nosso Validador de Universal Links para verificar se o seu arquivo apple-app-site-association está configurado de maneira adequada.

Escolha um domínio

Primeiro, identifique o domínio que você gostaria de usar para seus Links Universais. Você pode registrar um novo ou um existente. Caso for registrar um novo, preferimos um registro limpo e sem spam, como o ghandi.net.

Adquirir a certificação SSL

Você precisa adquirir os arquivos de certificação SSL para o domínio que vai usar para hospedar os Links Universais. Para fazer isso, você precisará usar um serviço de terceiros para registrar seu domínio para SSL e criar os arquivos de que você precisa. Depois de dar uma olhada, escolhemos o Digicert para lidar com o branch.io e subdomínios associados.

Aqui estão os passos para criar sua certificação SSL:

1. Visite https://www.digicert.com/easy-csr/openssl.htm e preencha o formulário na parte superior para gerar um comando openSSL. Deixe esta janela aberta

2. Faça login no seu servidor remoto

3. Execute o comando openSSL para gerar uma solicitação de assinatura de certificado (.csr) e arquivo de certificação (.cert)

4. Pague por sua certificação SSL em https://www.digicert.com/welcome/ssl-plus.htm

5. Espere que o Digicert aprove e envie os arquivos finais

6. No final, mova seudominio.com.cert, seudominio.com.key e digicertintermediate.cert no mesmo diretório em seu servidor remoto

Crie seu JSON apple-app-site-association

Há uma estrutura bem padrão deste arquivo JSON para que você possa basicamente só copiar essa versão e editá-la para que atenda suas necessidades. Eu vou explicar onde conseguir os valores corretos abaixo.

{
  "applinks": {
    "apps": [],
    "details": [
      {
        "appID": "T5TQ36Q2SQ.com.branch.sdk.TestBed",
        "paths": [
          "*"
        ]
      }
    ]
  }
}

Os únicos campos que você precisa modificar estão associados a: T5TQ36Q2SQ.com.branch.sdk.TestBed. Na verdade, aqui temos dois valores unidos com um ponto final. Os dois valores são encontrados em developers.apple.com na seção Identifiers (Identificadores) -> App IDs (IDs de aplicativo). Basta clicar na ID do aplicativo registrado correspondente, como exibido abaixo.

Configuring Apple ID for Universal Links

Nesse exemplo, conecte o Prefixo e o ID com um ponto final, para que ele fique assim: “T5TQ36Q2SQ.com.branch.sdk.TestBed”.

Salve esse arquivo JSON como apple-app-site-association-unsigned.

Assine o arquivo JSON com seus certificados SSL

Observação: caso você tenha certificado seu domínio como HTTPS, você pode pular essa etapa e enviar o JSON em texto simples.

Envie o arquivo apple-app-site-association-unsigned para seu servidor no mesmo diretório que a certificação e os arquivos chave das etapas anteriores. Usando a linha de comando, mude o diretório para aquela pasta e emita o seguinte comando:

cat apple-app-site-association-unsigned | openssl smime -sign -inkey yourdomain.com.key -signer yourdomain.com.cert -certfile digicertintermediate.cert -noattr -nodetach -outform DER > apple-app-site-association

Isso gerará o arquivo apple-app-site-association

Configure o servidor de seu arquivo

Tudo certo! Agora você assinou seu arquivo de associação apple-app-site. Então você só precisa configurar o seu servidor de arquivo para hospedá-lo para você. Mas há algumas ressalvas:

  1. Ele deve ser enviado com o cabeçalho application/pkcs7-mime

  2. Ele deve ser enviado do endpoint youdomain.com/apple-app-site-association

  3. Ele deve retornar um código 200 http.

Nós configuramos o arquivo para todos os aplicativos Branch integrados usando nossos servidores de link Node+Express. Este é o código que usamos, caso seja útil:

var aasa = fs.readFileSync(__dirname + '/static/apple-app-site-association');
app.get('/apple-app-site-association', function(req, res, next) {
  res.set('Content-Type', 'application/pkcs7-mime');
  res.status(200).send(aasa);
});

 

Guia de integração do Branch e Links Universais do iOS 9

Repetindo, você pode evitar todo o trabalho de hospedagem JSON e certificação SSL e simplesmente usar os links Branch para hospedar.

Divirtam-se com os links!