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!
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).
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
Você pode saber qual é olhando na guia Geral de seu projeto do Xcode para o alvo adequado da versão.
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.
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.
Role a página para baixo e habilite Domínios Associados para que o acordeão seja expandido.
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.
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.
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.
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:
- Ele deve ser enviado com o cabeçalho application/pkcs7-mime
- Ele deve ser enviado do endpoint youdomain.com/apple-app-site-association
- 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!