Os links universais do iOS não abrem no aplicativo

109

Então, segui exatamente este tutorial e usei os mesmos valores fornecidos: https://blog.branch.io/how-to-setup-universal-links-to-deep-link-on-apple-ios-9

O arquivo Apple Association também está pronto no diretório do link:
WEB_PAGE:PORT_NUMBER/apple-app-site-association

Tudo parece estar configurado deste lado.

Eu adicionei os direitos, atualizei o perfil de provisionamento e tudo está configurado.

Quando executo o aplicativo no meu dispositivo e abro o link http://WEB_PAGE:PORT_NUMBER, o Safari sempre é aberto.

Eu até tenho pontos de interrupção no seguinte método:

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray * __nullable restorableObjects))restorationHandler

Mas nada.

Alguém aperfeiçoou isso? Tem algo que estou perdendo?

Legolas
fonte
2
confira aqui para ter certeza de que não perderá nenhuma etapa stackoverflow.com/questions/35609667/…
Vineet Choudhary

Respostas:

189

Existem alguns problemas possíveis.

  1. Tente colar seu domínio neste validador de link e certifique-se de que não haja problemas: https://limitless-sierra-4673.herokuapp.com/ (crédito para ShortStuffSushi - consulte o repo )

  2. O iOS registra uma mensagem de erro nos logs do sistema se você não tiver o TLS configurado corretamente no domínio especificado em seus direitos. Está enterrado nos logs do sistema operacional, não nos logs do aplicativo. A mensagem de erro será semelhante Sep 21 14:27:01 Derricks-iPhone swcd[2044] <Notice>: 2015-09-21 02:27:01.878907 PM [SWC] ### Rejecting URL 'https://examplecustomdomain.com/apple-app-site-association' for auth method 'NSURLAuthenticationMethodServerTrust': -6754/0xFFFFE59E kAuthenticationErr. Mensagem de erro retirada daqui , instruções rápidas (incompletas) sobre como usar CloudFlare para TLS aqui .

  3. Em meus testes pessoais, clicar / digitar um link no Safari nunca abriu o aplicativo diretamente. Clicando de outros aplicativos (iMessage, Mail, Slack, etc.) tem trabalhado. Outros relataram que clicar em links nos resultados de pesquisa do Google abriram o aplicativo diretamente.

  4. Observe que se um Link Universal conseguir abrir seu aplicativo e você clicar no Safari (tocando em seu site no canto superior direito da barra de navegação no aplicativo), o iOS para de abrir o aplicativo quando você visita aquele URL . Em seguida, no Safari, você pode puxar para baixo para revelar um banner no topo da página com "Abrir". Perdi muito tempo com isso. Observe que clicar no site => desabilitar UL parece específico do caminho , com base nos caminhos que você especifica no arquivo apple-app-site-assocation. Portanto, se você tiver rotas diferentes yoursite.com/a/*e yoursite.com/b/*clicar em yoursite.com/a/*e o aplicativo for aberto diretamente, você terá a opção de clicar no canto superior direito do aplicativo yoursite.com/a/*. Se você fizer isso, as visitas subsequentes ayoursite.com/a/*será aberto no navegador, não no aplicativo. No entanto, não yoursite.com/b/*deve ser afetado e ainda assim abrir seu aplicativo diretamente.

Deixe-me saber se você descobrir qual é o problema. Pessoalmente, estou muito curioso sobre como funcionam os links universais e quais casos extremos existem. Boa sorte.

st.derrick
fonte
1
Mesma coisa. Tão estranho. Às vezes, ele abre o aplicativo diretamente, às vezes ele abre o webView. Eu gostaria que eles deixassem a documentação clara. A operação desse recurso é irregular
Legolas
4
Com relação a 1), não é mais necessário que você assine seu arquivo apple-app-site-association se estiver servindo por https.
Jeremy Hicks
11
Reiniciar seu dispositivo iOS também pode ajudar. Verifiquei três vezes todas as configurações e todas as configurações e estava absolutamente certo de que tudo estava correto, mas ainda não funcionava. Então tentei com outro dispositivo e funcionou perfeitamente. Em seguida, excluí o aplicativo do dispositivo original, reiniciei o dispositivo e reinstalei o aplicativo, então ele simplesmente funcionou ...
mathz
4
Como voltar ao aplicativo em vez do safari se alguém pressionou acidentalmente o link do site no canto direito do aplicativo?
iEngineer
3
Não recebi o banner Abrir no aplicativo em lugar nenhum. Depois de uma longa pesquisa, aqui está uma solução: Digite qualquer link para o seu site no aplicativo Notes (que é um link universal). Agora clique em Concluído. Assim que se tornar um link, clique nele e selecione "Abrir no AppNAME-HERE"!
kishorer747
64

Isso pode dar errado de várias maneiras. Dois pontos me causaram problemas:

  • No Xcode, quando você adiciona o direito de Domínios Associados, cada entrada precisa começar com applinks:seu nome de domínio. Ex applinks:www.apple.com.

  • Embora o Xcode tenha criado um arquivo de direitos para mim, ele não incluiu na minha construção: eu tive que clicar nessa caixa manualmente.

E sim, depois de fazer isso, não foi necessário assinar o apple-app-site-associationarquivo: é apenas um texto simples e funciona, desde que seja servido por HTTPS. (Você ainda precisará assiná-lo se for compatível com o iOS 8).

DFedor
fonte
4
Eu também tive que excluir o aplicativo completamente do dispositivo de teste e, em seguida, criar e executar novamente antes de finalmente funcionar.
Phil Andrews
14
você salva o meu dia, este era o meu problema, embora o XCode tenha criado um arquivo de direitos para mim, ele não incluiu na minha construção: eu tive que clicar nessa caixa manualmente.
cham de
12
Incluir o arquivo de direitos na compilação corrigiu o problema para mim também. É importante notar que no Xcode 8 as caixas de seleção de associação de destino no Inspetor de arquivos estão realmente desabilitadas. Tive que ir para as configurações de compilação e adicionar o arquivo de direitos à fase Copiar recursos.
Charles A.
5
@cham: vocês podem elaborar sobre "embora o XCode tenha criado um arquivo de direitos para mim, ele não incluiu na minha construção: eu tive que clicar nessa caixa manualmente."
Thang Pham
6
@AwaisFayyaz Vá para Build Phases> Copy Bundle Resources. Clique no sinal de mais e adicione seu arquivo de direitos.
s.zainulabideen 01 de
36

Aparentemente, há um erro na documentação para fazer o arquivo de associação para Links Universais .

Onde diz:

O valor da chave appID é o ID da equipe do aplicativo e o ID do pacote

deveria dizer

O valor da chave appID é o prefixo do aplicativo e o ID do pacote

Para a maioria dos aplicativos, parece que o ID da equipe e os prefixos do aplicativo são os mesmos, mas se o seu aplicativo já está na loja há muitos anos, esses valores podem ser diferentes.

Para encontrar esse valor, abra o Member Center em https://developer.apple.com e olhe em "Certificados, identificadores e perfis", clique em "Identificadores" e em "IDs de aplicativos" na tabela em "Identificadores". Encontre seu aplicativo e use o valor do prefixo e o ID do pacote para criar seu AppID para o arquivo de associação.

Curtis Brian Halbrook
fonte
2
+1, isso me ajudou muito. Passe meio dia tentando descobrir por que não funcionou e esse parece ser o meu caso
Ivo Beckers
você salvou meu dia, na verdade meu aplicativo foi há muito tempo e o prefixo do aplicativo é diferente do ID da equipe.
Ti3t
esta é a única coisa que funciona para mim. obrigado!
dhin de
Essa foi a solução para mim. Ótimo conselho.
vincenth
33

Para ajudar a depurar esse problema, pesquise "swcd" na saída do console do seu dispositivo ao instalar seu aplicativo para ver se o registro do seu link universal funcionou ou falhou.

  1. Use um dispositivo real, não o simulador.
  2. Exclua o aplicativo de seu dispositivo.
  3. Conecte o dispositivo ao seu computador e veja a saída do console do dispositivo no xcode. (janela -> dispositivos -> [seu dispositivo] -> console aberto). Mantenha esta janela aberta.
  4. Instale seu aplicativo e deixe-o iniciar.
  5. Filtre a saída do console para "swcd". Se for bem-sucedido, você verá algo como a imagem a seguir. Se falhar, você verá outra coisa. Se você não vê nada, então você bagunçou algo fundamental como adicionar o direito de domínios associados.

Applink adicionado com sucesso

Mpoisot
fonte
2
Excelente dica! Eu estava adicionando https: // aos applinks: entitlement e também especificando o caminho completo que eu queria ouvir, que eram ambos erros. Eu estava especificando example.com/path * onde deveria estar especificando apenas my domain.com e o arquivo AASA em example.com, em seguida, especificava o caminho em relação ao id do pacote do meu aplicativo
Numan Tariq
3
Posso te transferir um bônus em dinheiro ?? Passei 2 dias passando por cada etapa desta configuração de link universal, nada estava ajudando até que eu tentei sua abordagem. Tive a infelicidade de hospedar meu arquivo de associação em uma pasta raiz do firebase para meu domínio, e descobri que a Apple consulta o subdiretório .well-known / primeiro, e o firebase parece responder a ele com seu próprio (!) Arquivo de associação correto que não tem aplicativo vinculado. Puxa, como vou descobrir isso, Apple?
nalexn
Ahhh ótima dica! Eu não sabia sobre este console de dispositivo, apenas olhando para a saída do console Xcode. Meu problema era que 2 de 3 domínios de link direto funcionavam, mas não aquele último. E lá no console eu vi que no meu último domínio eu tinha escrito errado com "appllinks: <domain>" (2 L's) Oh cara ... de qualquer forma, obrigado novamente por uma ótima maneira de verificar se os Links Universais estão realmente registrados! (Também encontrei os logs do console Remoção dos links ao desinstalar o aplicativo: +1)
Arno Teigseth
1
é suposto ser tão detalhado por padrão? Porque eu não obtenho um registro tão detalhado .. isso significa que a operação não foi bem sucedida?
Nicholas Allio
26

A resposta de St.derrick é informativa.

Mas para permitir que links universais abram novamente no aplicativo em vez de no safari, precisamos fazer o seguinte.

  • Pressione e segure o link universal no Mail ou iMessage, então você verá as opções para abrir no safari ou no aplicativo.
Praveen
fonte
2
Não há opção de app, apenas copiar, abrir, adicionar à lista de leitura etc.
iEngineer
1
Quase fiquei louco depurando esse problema, mas ESTA foi a solução ou eu. Talvez se não estiver configurado corretamente e o aplicativo Mail abrir o link no Safari, ele sempre abrirá no Safari? não tenho ideia, mas uma vez pressionei longamente -> abrir em 'myapp' ... e agora os links abrem corretamente!
herbert
1
Muito obrigado por esta solução. Fiquei preso nisso por quase um dia. Você salvou meu dia.
Andrew
18

Percebi que o problema para mim era que os links para o diretório raiz a (por exemplo http://example.com/) não abriam meu aplicativo, mas se eu adicionasse um caminho (por exemplo http://example.com/mypath), funcionava. Adicionar "/"à lista de caminhos o considerou:

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "TEAM_ID.BundleIdentifier",
                "paths": [ "*", "/" ]
            }
        ]
    }
}

Como respondido por slutsker neste tópico do Apple Developer Forums.

boato
fonte
17

Passos rápidos para verificar se você implementou o Universal Link corretamente.

  • Toque e segure o link que você espera para iniciar o aplicativo. Você deve ver "Abrir em [nome do seu aplicativo]" no Menu de contexto.

  • Abra o aplicativo Notas, digite o link que você espera para abrir o aplicativo. Toque em Concluído. O link ficará amarelo e tocar nele deve abrir seu aplicativo, não o Safari.

  • Se o link http://yourDomain.com não estiver iniciando o aplicativo, tente http://yourDomain.com/yourFolder/

  • No Safari, se o menu de contexto mostrar "Abrir em [nome do seu aplicativo]" no safari, mas tocar no link abre o link no próprio safari em vez de iniciar o aplicativo,

    uma. Experimente puxar para baixo a página do safari que foi aberta quando o link foi clicado, como você 'puxa para atualizar'. Deve aparecer um banner que pode abrir seu aplicativo. Toque no banner para abrir o aplicativo, feche o aplicativo pressionando o botão home, volte para o safari e tente iniciar o aplicativo tocando no link novamente. Desta vez, o aplicativo deve ser iniciado porque tocar no banner deve ter salvo a preferência de abrir o link no aplicativo.

    b. Se o aplicativo ainda não for iniciado após a etapa a., Tente enviar o link para um webmail, como o Gmail, e abra o site de webmail no Safari e tente clicar no link. Se isso funcionar, você pode estar tentando iniciar o aplicativo do mesmo domínio do link. Pelo que vi, iniciar o aplicativo do mesmo domínio geralmente falha . Provavelmente o Safari não se importará em verificar se o URL de destino é um link universal, quando o link está no mesmo domínio em que o usuário está. Portanto, tente iniciar o aplicativo de outro domínio.

Nikhil Mathew
fonte
3
Pronto, estou lidando há horas com esse problema, A MAIORIA DE FALHA NO LANÇAMENTO DO APP DO MESMO DOMÍNIO. Obrigado :)
maledr53
12

Também é muito importante incrementar a versão do projeto ou o número da compilação após integrar os links universais. Mesmo se você excluir / reinstalar, o iOS não coletará os links, a menos que você altere a versão.

Kyle Truscott
fonte
1
Este! A versão do pacote era totalmente o que estava causando a falha do meu teste, porque eu seguiria todos os conselhos acima e meus links ainda iniciariam o Safari, pois o iOS está usando o resultado em cache da versão anterior apple-app-site-associationque tinha o prefixo appId errado
zai chang
Kyle, acho que te amo! Essa resposta salva o dia, obrigado!
neiker
Esse era o tempero secreto para mim! Obrigado, obrigado, obrigado!
nurider de
10
  • Links universais não funcionarão se você colar o link no campo de URL do navegador.

  • Links universais funcionam com um <a href="...">clique de elemento orientado pelo usuário em vários domínios . Exemplo: se houver um link universal em google.com apontando para bnc.lt, ele abrirá o aplicativo.

  • Links universais não funcionarão com um <a href="...">clique de elemento orientado pelo usuário no mesmo domínio . Exemplo: se houver um link universal no google.com apontando para um link universal diferente no google.com, o aplicativo não será aberto.

  • Links universais não podem ser disparados via Javascript (em window.onload ou via uma chamada .click () em um <a>elemento), a menos que seja parte de uma ação do usuário.

fonte: https://dev.branch.io/getting-started/universal-app-links/support/ios/#appsbrowsers-that-support-universal-links

O terceiro marcador me custou cerca de um dia para descobrir.

guido
fonte
1
3º marcador, aqui mesmo: perdi muitas horas tentando descobrir isso. A Apple tem até uma explicação bem estúpida para isso: "O iOS respeita a intenção mais provável do usuário e abre o link no Safari" veja-se aqui .
jox de
3º marcador TOP!
Byteros
10

Para quem precisa testar facilmente a abertura de links (universais), você também pode abrir o link em seu Simulador a partir do terminal com este comando:

xcrun simctl openurl booted yourapp_or_http://yourlink

por exemplo:

xcrun simctl openurl booted https://www.google.com

morksinaanab
fonte
1
Eu não fiz isso funcionar, ele sempre abre o Safari. Eles funcionam quando corro em um dispositivo real. Qualquer ideia seria apreciada, pois é um pouco mais doloroso depurar / desenvolver sem o simulador.
chib
7

Caso as pessoas aqui estejam procurando por outras soluções, nós montamos todo um passo-a-passo para depurar links universais, pois vimos muitos problemas surgindo, causando MUITA dor de cabeça.

Confira:

Guia de depuração de links universais

Visualização do guia de depuração

Se você está apenas procurando configurar links universais novos, este guia é realmente útil:

Guia de configuração do Deep Linking iOS

Espero que sejam úteis!

Chris Maddern
fonte
Muito útil, obrigado! Funcionou para mim ao executar em um dispositivo real, mas não no simulador iOS.
Josh Sklar
6

Pensei em acrescentar algumas coisas que descobri, caso mais pessoas encontrem os mesmos problemas que eu no futuro. Eles estão principalmente relacionados a erros de autenticação.

Mesmo que a apple não indique isso explicitamente, o apple-app-site-associationarquivo deve ser servido por https, mesmo se assinado. O certificado usado para https também deve ser confiável para a apple. Portanto, embora um certificado adicionado ao dispositivo em Configurações -> Geral -> Perfis permita https no safari, ele não permitirá que links universais funcionem.

Nos logs do dispositivo, em um erro de autenticação entre o dispositivo e o servidor, haverá um valor impresso como "TrustResultValue" : 4. Um TrustResultValueigual a 5 significa que o certificado é para o domínio errado (por exemplo, test.com servido de www.test.com). Um TrustResultValuede 4 significa que o certificado não é confiável para este uso.

Pode haver algumas etapas úteis para depuração aqui . A seção "Testando o acesso à apple-app-site-association" é um guia passo a passo de como ter certeza de que o dispositivo está obtendo o apple-app-site-associationarquivo. As etapas se resumem a:

  1. Desinstale o aplicativo. Isso é necessário porque o arquivo é baixado na instalação.

  2. Impeça o servidor de servir corretamente apple-app-site-association.

  3. No xcode, abra Window -> Devices e selecione seu dispositivo.

  4. Abra os registros do dispositivo clicando no triângulo na parte inferior da janela.

  5. Limpe os registros clicando na lixeira para limpar todos os registros anteriores que possam estar relacionados.

  6. Reinstale o aplicativo com o xcode clicando no botão play.

  7. Depois que o aplicativo for iniciado, se o dispositivo estiver solicitando o arquivo corretamente, os logs do dispositivo devem conter um erro que pode ser encontrado pesquisando por "apple-app-site-association".

Se o apple-app-site-associationarquivo for fornecido corretamente (a etapa 2 é omitida), não deve haver erro. Em vez disso, um erro de autenticação pode ser exibido se esse for o problema.

Sam
fonte
1
Eu estava fazendo SSL spoofing usando Charles Proxy e isso estava resultando em um valor de confiança de 4. Quando desliguei o proxy, ele teve êxito.
Ben Flynn
6

A causa mais comum é quando o usuário toca no canto superior direito, dizendo ao iOS para NÃO abrir o aplicativo (neste caso, Uber) no futuro.

Para corrigir, puxe para baixo para revelar o banner inteligente e toque em ABRIR:

Puxe para baixo no Safari e abra novamente

Posteriormente, isso "lembrará" de abrir o aplicativo.

Samwize
fonte
5

Adicionamos o arquivo apple-app-site-association a este local:

https://example.com/apple-app-site-association

No iOS 9 funcionou bem, mas no iOS 10 não funcionou.

Parecia que o problema era com .caminho bem conhecido :

https://example.com/.well-known/apple-app-site-association

Por causa do caminho https://example.com/.well-known/apple-app-site-association redirecionado para https://example.com

<Notice>: Allowing redirect 'https://example.com/.well-known/apple-app-site-association' -> 'https://example.com/'
<Notice>: ### Rejecting AASA file size 154466 for URL https://example.com/.well-known/apple-app-site-association

Na minha opinião, se de alguma forma um caminho bem conhecido não funcionar corretamente, ele quebra os links universais.

Andrey Banshchikov
fonte
O manual diz claramente que "O arquivo precisa estar acessível via HTTPS - sem quaisquer redirecionamentos".
eonil
O manual também diz claramente que "Para aplicativos executados no iOS 9.3.1 e posterior, o tamanho descompactado do arquivo apple-app-site-association não deve ser maior que 128 KB, independentemente de o arquivo ser assinado." Este arquivo tem 154 KB.
Roberto
No iOS11, seu servidor deve retornar explicitamente o status 404 para: example.com/.well-known/apple-app-site-association e swcd usa fallback para root: example.com/apple-app-site-association . Você pode verificar rapidamente o status do HTTP retornado com ferramentas como Postman
Max Odnovolyk
4

Consegui fazer funcionar, mas demorou bastante e foi difícil. Observe que, a menos que você assine o apple-app-site-association arquivo (a assinatura é opcional!), Tocar em um link no Safari não abrirá seu aplicativo (isso me causou muita dor de cabeça).

Attila Bardos
fonte
1
Isso é curioso. A Apple afirma nos documentos que, para links universais puros e o uso no iOS9, você não precisa de assinatura. Somente se você deseja oferecer suporte para iOS 8 Handoff / Shared Web Credentials, você deve assinar. Interessante! Estou com o mesmo problema, então vou tentar assinar.
Wrtsprt de
A assinatura é realmente opcional. Tocar em um link no Mobile Safari para acionar a abertura do aplicativo iOS nativo é chamado de "Handoff do navegador da Web para o aplicativo nativo", nesse caso, você precisará adicionar a activitycontinuationpropriedade ao apple-app-site-associationarquivo json. developer.apple.com/library/ios/documentation/UserExperience/…
Devy
3

Levei quase um dia para descobrir isso. O problema que eu tive foi não baixar os perfis de provisionamento atualizados no XCode (eu também reiniciei o XCode depois disso).

(Preferências> Contas> Ver detalhes> Baixar tudo)

ken
fonte
3

Você pode testar links universais no simulador

Do Guia de programação do App Search: Links universais de suporte

holmesal
fonte
6
Alguém conseguiu links universais para trabalhar em um simulador? Já tentei inúmeras vezes e nunca deu certo. No entanto, ele funciona usando um dispositivo real com os mesmos fluxos.
Tony
Eu não fui capaz de testar isso também. Tentar fazer o Safari acionar links universais no simulador foi inútil, apesar do fato de funcionar corretamente em um dispositivo físico.
Albert Bori
Não consegui fazê-los funcionar no simulador também. @AlbertBori, você conseguiu fazer isso funcionar?
chib
Tenho quase certeza de que eles não funcionam no simulador . Estou familiarizado com todas as outras armadilhas, e nunca consigo fazê-las funcionar no simulador.
Fattie
3

Depois de dois dias descobri para mim, que esse tipo de links (da filial)

applinks: xxxx.app.link

trabalhe apenas após Arquivar (também Ad-hoc) o aplicativo e instalá-lo no telefone.

Bence Pattogato
fonte
3

Se você estiver hospedando seu apple-app-site-associationno Firebase , certifique-se de colocá-lo no /.well-known/subdiretório! Parece que o Xcode consulta primeiro esse URL e, se for bem-sucedido, não fará nenhuma tentativa de consultar o apple-app-site-associationno diretório raiz. Por algum motivo, os engenheiros do Firebase fizeram os sites hospedados responderem automaticamente /.well-known/apple-app-site-associationcom um arquivo de associação vazio (mas formado corretamente) que substitui o seu personalizado, deixando você sem ideia de por que nada funciona!

nalexn
fonte
2
Finalmente! Muito obrigado. Está escrito em algum lugar? O Firebase deve documentar em algum lugar.
Berkay Turancı
2

Acesse developer.apple.com e edite um de seus perfis de distribuição. Na página de edição, você pode abrir um pop-up para IDs de aplicativo que mostrará uma lista dos nomes de seu aplicativo e, entre colchetes () atrás do nome do aplicativo, revela todos os seus IDs de aplicativo reais . Alguns aplicativos podem ter seu ID de equipe como prefixo, mas outros não . Certifique-se de usar exatamente o que você vê no menu pop-up dentro de () e coloque-o no campo appID de detalhes de associação de app-app-apple. Eu tive exatamente esse problema com um aplicativo e seus links universais.

MacMark
fonte
2

O problema para mim acabou sendo o apple-app-site-associationarquivo. De acordo com a documentação da Apple, apenas o parâmetro applinks é necessário. Eu adicionei o activitycontinuationparâmetro e funcionou.

{
  "activitycontinuation": {
    "apps": [
      "9JA89QQLNQ.com.apple.wwdc"
    ]
  },
  "applinks": {
    "apps": [],
    "details": [{
        "appID": "9JA89QQLNQ.com.apple.wwdc",
        "paths": [ "/wwdc/news/", "/videos/wwdc/2015/*" ]
      }]
  }
}
Chris
fonte
3 anos depois, encontramos exatamente esse problema. Adicionar activitycontinuationé o que consertou para nós.
readyornot
2

Ainda não vi exatamente o mesmo combo problema / solução que o fez funcionar para mim, então posso adicionar o meu caso alguém tenha o mesmo problema!

Para meu aplicativo, estou usando um esquema de URL personalizado (configurado em APP_TARGET > Info > URL Types) e configurei o esquema de URL daqui para o console do Firebase para corresponder, mas ainda não estava funcionando.

Meu problema era na verdade dois problemas:

Cuidado ao marcar Gerenciar assinatura automaticamente

Se você estiver verificando a configuração "Gerenciar automaticamente a assinatura" do Xcode como eu estava, já que estava apenas tentando fazer um aplicativo de demonstração rápida, você vai querer garantir que o TeamID que é usado corresponda ao do seu console do Firebase. Eu fui originalmente para minha conta de desenvolvedor da Apple e copiei o ID da equipe da minha página de associação, mas depois vi que o ID real sendo usado pelo Xcode era diferente. (Você pode encontrar isso em APP_TARGET > General > Signing > Signing Certificate.Para mim parecia iPhone Developer: My Name (TEAM_ID)).

Prefixe seu TeamID para o seu identificador de pacote em seus tipos de URL

Depois de garantir a correspondência entre meu console do Firebase e o Xcode, meu próximo problema foi o identificador do meu esquema de URL. É comum usar seu identificador de pacote aqui, mas o Firebase na verdade prefixa isso com o ID de equipe que você forneceu no console do Firebase, então eu tive que prefixá-lo para o identificador na seção de tipos de URL no Xcode também.

Após essas duas correções e refazer o download do GoogleService-Info.plistarquivo, não tive problemas para abrir meus links dinâmicos.

Kyle H
fonte
2

Depois de dois dias de desespero total, acho que finalmente consertei. Aqui está minha solução:

Parece que os aplicativos mais antigos usam um prefixo de aplicativo diferente dos aplicativos mais recentes. Os aplicativos mais recentes usam apenas o ID da equipe para essa finalidade. Se o prefixo do aplicativo e o ID da equipe não forem idênticos, parece que você precisa especificar o campo de continuação da atividade no arquivo de associação do site do aplicativo da apple:

{
    "activitycontinuation": {
        "apps": [
            "YOUR_APP_PREFIX.de.company.app"
        ]
   },
  "applinks": {
    "apps": [],
    "details": [
      {
        "appID": "YOUR_APP_PREFIX.de.company.app",
        "paths": ["/*"]
      }
    ]
  }
} 

Outra coisa que experimentei durante minha viagem infernal foi que excluir o aplicativo e reiniciar o dispositivo parece ser a única maneira de forçar a atualização desse arquivo.

Sebastian Boldt
fonte
1

Para mim, meu erro foi que nosso site está redirecionando www.domain.com para domain.com, então todo o www.domain.com/* irá falhar por causa disso. Espero que ajude.

wzhang84
fonte
1

Consegui testar links universais no simulador iOS usando o aplicativo Agenda.

Acabei de criar um evento e adicionei a URL que queria testar no URLcampo do evento . Então, ao visualizar o evento criado, você pode simplesmente tocar no link da URL e seu aplicativo deve abrir.

Tiago Alves
fonte
Isso não parece funcionar para mim, eu tentei de tudo para fazê-los funcionar no simulador, sem sucesso. Eles funcionam bem no dispositivo real, mas isso não é ideal para desenvolvimento / depuração. Tentei manter pressionado o link e não há a opção "Abrir no aplicativo".
chib
1

Depois de passar um dia tentando fazer isso funcionar, reiniciar meu telefone resolveu o problema.

Desinstalar / reinstalar o aplicativo também não funcionou.

Tanner Burton
fonte
1

Para ios13, há um novo formato - confira aqui https://developer.apple.com/documentation/safariservices/supporting_associated_domains_in_your_app?language=objc

Eu atualizei meu arquivo para ficar assim:

{
  "applinks": {
      "details": [
           {
             "appIDs": [ "ABCDE12345.com.example.app" ],
             "components": [
               {
                  "/": "/my-link/*",
                  "exclude": true,
                  "comment": "Matches any URL whose path starts with /my-link/ and instructs the system not to open it as a universal link"
               }
             ]
           }
       ]
   },
   "webcredentials": {
      "apps": [ "ABCDE12345.com.example.app" ]
   }
}
Anita
fonte
você precisaria adicionar "exclude": trueao componentsobjeto para commentser verdadeiro
skornos
@skornos, bom argumento. vou alterar minha resposta.
Anita
0

Para futuros leitores que encontrarem esta página ...

Eu tive uma situação semelhante. No entanto, na minha situação, o iOS10 estava funcionando AOK e, não importa o que eu fizesse (aumentar os números de compilação, excluir / reinstalar, etc), o iOS9 parecia se recusar a funcionar.

Eu estava começando a fazer isso do iOS10 e precisava oferecer suporte ao iOS9. No momento, a documentação aqui - https://developer.apple.com/library/content/documentation/General/Conceptual/AppSearch/UniversalLinks.html - afirma claramente que o arquivo pode ser colocado na raiz do servidor da web (por exemplo /apple-app-site-association) ou na pasta .well-known (por exemplo /.well-known/apple-app-site-association). Como também suporte o Android, que também usa a pasta .well-known para um arquivo semelhante, decidi colocar os dois lá.

Para novas instalações no iOS10, ele solicita claramente o arquivo raiz, falha e, a seguir, solicita o arquivo .well-known e é bem-sucedido.

Para iOS9, ele solicitou claramente o arquivo raiz, falhou e não faz mais nada.

Solução: se você tem suporte para iOS9, coloque o arquivo em /apple-app-site-association.

greymouser
fonte
0

No meu caso, meu erro foi colocar parâmetros de consulta em caminhos:

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "TEAM_ID.BundleIdentifier",
                "paths": [ "/auth-ui/hub?target=confirm&*" ]
            }
        ]
    }
}

quando eu removo '? target = confirm & *' dos caminhos, ele começa a funcionar

Vins
fonte