Teoria dos Links Universais

imagem

1. Introdução


WWDC15 - Apple anuncia a transição para o Universal Links. O significado deles é proibitivo - envie o usuário ao aplicativo se ele for para a página do site que o aplicativo suporta. Geralmente é usado em cartas enviadas após o registro para confirmar o email. Assim, o Universal Links elimina a necessidade de os usuários retornarem ao aplicativo por conta própria - e isso é bom para a experiência do usuário e para as estatísticas.

imagem

Muitos agora podem pensar que este artigo não está sendo escrito muito bem, mas você, caro leitor, pode não ter visto o que está acontecendo no Stackoverflow no tópico Universal Links.

Implementação


Agora, analisaremos quatro pontos que permitirão implementar o Universal Links sem a dor extra e as surpresas ofuscantes que eu tive que enfrentar. No final, tocaremos facilmente em outras publicações e links, o que pode lhe proporcionar uma compreensão mais profunda dos Links Universais.

Vamos para o primeiro ponto.

Domínios associados em IDs de aplicativo


imagem

Se você não registrou um ID de aplicativo para seu aplicativo, faça-o agora no site da Apple Developer . Ao se registrar, certifique-se de conectar os domínios associados. Se o ID do aplicativo já estiver registrado, vá para a próxima etapa e ative Domínios Associados diretamente do Xcode.

Domínios Associados no Xcode


XcodeProject / Destinos / YourApp / Recursos

Para ser claro, mesmo para um iniciante, não faremos isso diretamente no arquivo .entitlements e seguiremos o caminho claro: Xcode → Projeto → Recursos → Domínios Associados.

Aqui precisamos clicar em "+" e adicionar os domínios que nos interessam. Os domínios são necessariamente adicionados via assinatura do applink, por exemplo ...

applink:habr.com 

Nesse caso, fingiremos que queremos ensinar o aplicativo Habr a abrir ao mudar para um dos hubs, para que eu possa dizer com segurança ao habr.com. De fato, não poderemos testar o trabalho do Universal Links no Habré, e se você imediatamente decidiu mudar da teoria para a prática, recomendo criar um domínio no Github Pages agora e indicá-lo através do applink.

AppDelegate.swift


Aqui é o suficiente para copiar e colar esse código, mas depois vem a explicação para o inquisitivo.

 func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: [Any?] -> Void) -> Bool { guard userActivity.activityType == NSUserActivityTypeBrowsingWeb, let url = userActivity.webpageURL else { return false } print(url) //    URL      . return true } 


Ao iniciar o aplicativo pelo Universal Link, você receberá um objeto NSUserActivity com um valor activityType. A propriedade webpageURL contém o URL em que o usuário clicou e pode ser analisada em pedaços usando NSURLComponents.

NSURLComponents é um tópico bastante simples que foi descoberto muitas vezes por pequenos projetos no Playground. Se você não entende do que se trata, aqui está uma boa captura de tela .

Arquivo Apple-app-site-association


É um arquivo sem extensão, mas armazena dados no formato JSON. Parece aproximadamente como se segue.

 { "applinks": { "apps": [], "details": [{ "appID": "teamId.com.bundleId.of.your.app", "paths": ["/path-for-redirectionl/*"] }] } } 

Além disso, exorto você a corrigi-lo na memória agora mesmo, para que esse arquivo seja armazenado no diretório raiz do domínio .

De fato, no código, estamos interessados ​​apenas em dois campos. O appID em apple-app-site-association é uma combinação do seu Team Identifier e Bundle Identifier. No código acima, eu já substituí os dados de tal forma que seria mais conveniente copiá-los e alterar algumas linhas.

Como procurar o Team Identifier? Para fazer isso, vá para developer.apple.com → Conta → Entrar → Associação. O terceiro campo é o seu identificador de equipe. Para mim, é 74D322Z5HV.

Como procurar um identificador de pacote configurável? Xcode → Projeto → Geral. Seu identificador de pacote está escrito na seção Identidade, segundo campo. Para mim, este é com.habrahabr.ios.application.

Agora vamos criar este appID para associação de sites de aplicativos da apple.

 "appID": "74D322Z5HV.com.habrahabr.ios.application" 

Feito! Você é incrível! Agora vamos falar sobre caminhos. Esse campo informa diretamente à testa quais páginas do site o aplicativo suporta e de quais páginas você deve ser enviado ao aplicativo. Você pode adicionar páginas quantas quiser. Além disso, um pouco de ajuda sobre como isso funciona e para torná-lo ainda mais claro, lembro que estamos solicitando o habr.com

 "paths": [ "/path-for-redirection/*" //        URLhabr.com/path-for-redirection/  -  (   *),     URL habr.com/path-for-redirection/ok/funny-video-with-dogs/      . "/path-for-redirection/" //        URLhabr.com/path-for-redirection/,    ,         , , habr.com/path-for-redirection/ok/. "*" //      -               . "NOT /path-for-redirection/*" //    ,     - URL   NOT –          ,  ,     NOT. ] 

E aqui parecerá uma associação de site de aplicativo da Apple se, por exemplo, tivermos dois aplicativos: um para o hub Swift e outro para o hub de desenvolvimento do iOS.

 { "applinks": { "apps": [], "details": [{ "appID": "74D322Z5HV.com.habrahabr.ios.application.iosdev", "paths": ["/hub/ios_dev/*"] }, { "appID": "74D322Z5HV.com.habrahabr.ios.application.swift", "paths": ["/hub/swift/*"] }] } } 

Agora você pode salvar o arquivo apple-app-site-association sem a extensão (formato) e carregá-lo no servidor. Em seguida, envie a URL necessária para o seu email, monte no Xcode um projeto com Domínios Associados e codifique em AppDelegate.swift. Você deve verificar o trabalho acessando o URL desejado no aplicativo de email padrão.

Fatos e dicas dignos de nota


  • O Universal Links não funciona no navegador. Quando você acessa o URL necessário no Safari, verá uma placa informando que pode acessar o aplicativo.
  • O Universal Links não funciona em cadeias de redirecionamento. Quando você chegar ao URL desejado, o site simplesmente mostrará uma placa na parte superior, informando que você pode acessar o aplicativo.
  • Os links universais podem ser testados sem seu próprio servidor virtual ou dedicado usando as páginas do GitHub.
  • O URL da transição deve necessariamente começar com "https: //".
  • Você pode verificar se está tudo bem com o arquivo apple-app-site-association através da Ferramenta de validação da App Search API .
  • Para causar uma transição para o aplicativo a partir do URL desejado, não é necessário ter nenhum conteúdo nesse URL. Ou seja, a transição será realizada mesmo se o navegador neste URL fornecer 404.
  • Uma pressão longa no Universal Link no aplicativo de email solicitará que você escolha entre abrir o aplicativo e abrir o navegador.

Referências e referências


Tendo em vista que um dos objetivos desta publicação é oferecer o máximo de entendimento da Universal Links, quero finalizá-la com referências à literatura que foi usada para escrever o artigo e / ou apenas fornecer uma compreensão mais profunda da Universal Links.


Espero que esta publicação tenha sido a melhor que você encontrou sobre o assunto em russo. Além disso, terei prazer em orientá-lo ainda mais aqui (nos comentários). Se eu perdi alguns pontos ou me enganei em algo, peço também que você me informe sobre isso.

Obrigada

Source: https://habr.com/ru/post/pt423315/


All Articles