Quick Tip: Universal Links no iOS13 abrindo no Safari
Eu passei por um problema com Universal Links no iOS e vi que muita gente tem passado por esse mesmo problema no iOS 13 nos fóruns e stackoverflow da vida, mas sem nenhuma resposta muito precisa ou satisfatória. Então resolvi escrever essa quick tip para ajudar a galera.
Os Universal Links são controlados pelo swc no iOS (se você quiser ver os logs desse serviço no Console, procure pelo processo swcd).
O SWC tem uma forma de trabalhar pouco conhecida e documentada, por isso eu vou explicar passo-a-passo como o SWC faz para relacionar um domínio à um app.
- Ao instalar um aplicativo, o iOS valida se ele possui algum Associated Domain, e no caso dos Universal Links, um applink no seu entitlement.
- Caso tenha, ele manda para o SWC processar.
- O SWC tem uma lista de TLDs importantes. TLD (Top-Level Domain) são os famosos .com, .net, .org que nós vemos nos domínios.
- Se o seu applink possui um TLD importante, ele é executado de imediato, em foreground.
- Se o seu applink não possui um TLD importante, ele é colocado em uma fila de background.
- Quando possível, seu applink será processado, e se estiver em conformidade com as premissas da Apple, o iOS fará a ligação do domínio com o seu app.
Alguns detalhes importantes precisam ser analisados.
Os TLDs importantes são definidos baseados na região do usuário.
Alguns apps tem abrangência internacional, como Google por exemplo. Com isso ele tem vários domínios (.com, .co.uk, .nl, etc), mas apenas um app.
Então imagine um app como os do Google, com todos os domínios possíveis. É uma lista gigantesca.
Por esse motivo, o iOS tem uma lista de TLDs importantes, que são processados de imediato quando o app é instalado.
Dessa forma, os domínios relevantes para o seu país são executados primeiro. Por exemplo, se eu estou na Inglaterra, os domínios .co.uk serão processados de imediato, e os demais (como os da China, França etc) serão processados posteriormente.
Os domínios jogados para background serão executados (uma hora, um dia)
Quando seu domínio for colocado para ser processado em background, o iOS irá processar quando possível.
O tempo em que será executado pode variar de acordo com muitas variáveis do SO e recursos disponíveis, como disponibilidade de rede, bateria, tempo de processamento, etc. Outro ponto importante para esse tempo é a quantidade de aplicativos que o usuário tem instalado, e a quantidade de applinks que esses aplicativos possuem para serem processados.
Portanto, é impossível dizer quando seu applink será processado e estará pronto para uso.
A dica de ouro
A dica de ouro (e não documentada) para o caso dos Universal Links é: se você quer que seu applink seja processado de imediato, utilize um domínio “importante”.
Muitos apps utilizam domínios próprios, ou domínios genéricos (como .me, .link, etc). Se esse for seu caso, aguarde o SO processar seu applink, ou considere mudar ou adicionar um novo domínio para os seus Universal Links.
Espero ter ajudado uma galera aí, e se alguém tiver mais algum problema que eu possa ajudar, não deixa de me falar 😉.