I collegamenti universali iOS non si aprono in-app


109

Quindi ho seguito esattamente questo tutorial e ho utilizzato gli stessi valori di quelli forniti: https://blog.branch.io/how-to-setup-universal-links-to-deep-link-on-apple-ios-9

Il file dell'Associazione Apple è disponibile anche nella directory dei collegamenti:
WEB_PAGE:PORT_NUMBER/apple-app-site-association

Tutto sembra essere impostato da questa parte.

Ho aggiunto i diritti, aggiornato il profilo di provisioning e tutto è stato configurato.

Quando eseguo l'app sul mio dispositivo e apro il collegamento http://WEB_PAGE:PORT_NUMBER, viene sempre aperto Safari.

Ho anche punti di interruzione nel seguente metodo:

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

Ma zilch.

Qualcuno l'ha perfezionato? C'è qualcosa che mi manca?


2
controlla qui per assicurarti di non perdere nessun passaggio stackoverflow.com/questions/35609667/…
Vineet Choudhary

Risposte:


189

Ci sono alcuni possibili problemi.

  1. Prova a incollare il tuo dominio in questo validatore di link e assicurati che non ci siano problemi: https://limitless-sierra-4673.herokuapp.com/ (credito a ShortStuffSushi - vedi repo )

  2. iOS registra un messaggio di errore nei log di sistema se non hai impostato correttamente TLS sul dominio specificato nei tuoi diritti. È sepolto nei registri del sistema operativo, non nei registri dell'applicazione. Il messaggio di errore sarà simile 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. Messaggio di errore estratto da qui , istruzioni rapide (incomplete) sull'utilizzo di CloudFlare per TLS qui .

  3. Nei miei test personali, fare clic / digitare un collegamento in Safari non ha mai aperto direttamente l'app. Fare clic su altre app (iMessage, Mail, Slack, ecc.) Ha funzionato. Altri hanno riferito che facendo clic sui collegamenti nei risultati di ricerca di Google l'app è stata aperta direttamente.

  4. Tieni presente che se un collegamento universale riesce ad aprire la tua app e poi fai clic su Safari (toccando il tuo sito nell'angolo in alto a destra della barra di navigazione nell'app), iOS interrompe l'apertura dell'app quando visiti quell'URL . Quindi in Safari, puoi tirare verso il basso per rivelare un banner nella parte superiore della pagina con "Apri". Ho sprecato molto tempo su questo. Tieni presente che fare clic sul sito => disabilitare UL sembra specifico del percorso , in base ai percorsi specificati nel file di associazione del sito-app-apple. Quindi, se disponi di percorsi separati yoursite.com/a/*e yoursite.com/b/*, se fai clic yoursite.com/a/*e si apre direttamente la tua app, hai l'opzione nell'angolo in alto a destra dell'app per fare clic yoursite.com/a/*. Se lo fai, le visite successive ayoursite.com/a/*si aprirà nel browser, non nell'app. Tuttavia, yoursite.com/b/*dovrebbe essere inalterato e aprire comunque la tua app direttamente.

Fammi sapere se scopri qual è il problema. Personalmente sono molto curioso di sapere come funzionano gli Universal Links e quali casi limite esistono. In bocca al lupo.


1
Stessa cosa. Così strano. A volte apre direttamente l'app, a volte apre webView. Vorrei che rendessero chiara la documentazione. Il funzionamento di questa funzione è irregolare
Legolas

4
Per quanto riguarda 1), non è più necessario firmare il file di associazione sito-app-apple se lo stai servendo su https.
Jeremy Hicks

11
Anche il riavvio del tuo dispositivo iOS potrebbe aiutare. Ho controllato tre volte tutte le impostazioni e la configurazione ed ero assolutamente sicuro che tutto fosse corretto ma non funzionava ancora. Poi ho provato con un altro dispositivo e ha funzionato perfettamente. Ho quindi eliminato l'app dal dispositivo originale, riavviato il dispositivo e reinstallato l'app, quindi ha funzionato ...
mathz

4
Come tornare nell'app invece di Safari se qualcuno ha premuto accidentalmente il collegamento al sito Web nell'angolo destro dell'app?
iEngineer

3
Non ho ricevuto il banner Apri in app da nessuna parte. Dopo una lunga ricerca, ecco una soluzione: digita qualsiasi link per il tuo sito nell'app Notes (che è un collegamento universale). Ora fai clic su Fine. Una volta che diventa un collegamento, fare clic su di esso e selezionare "Apri in AppNAME-HERE"!
kishorer747

64

Ci sono molti modi in cui questo può andare storto. Due punti mi hanno causato problemi:

  • In Xcode, quando aggiungi il diritto di Associated Domains, ogni voce deve iniziare con applinks:e poi il tuo nome di dominio. Ad esempio applinks:www.apple.com.

  • Sebbene Xcode abbia creato un file di diritti per me, non è stato incluso nella mia build: ho dovuto fare clic su quella casella manualmente.

E sì, dopo averlo fatto, non è stato necessario firmare il apple-app-site-associationfile: è solo testo normale e funziona, purché sia ​​servito su HTTPS. (Dovrai comunque firmarlo se stai supportando iOS 8, però.)


4
Ho anche dovuto eliminare completamente l'app dal dispositivo di prova e quindi crearla ed eseguirla di nuovo prima che funzionasse.
Phil Andrews

14
mi salvi la giornata, questo era il mio problema, anche se XCode ha creato un file di diritti per me, non lo includeva nella mia build: dovevo fare clic su quella casella manualmente.
cham

12
L'inclusione del file dei diritti nella build ha risolto il problema anche per me. Vale la pena notare che in Xcode 8 le caselle di controllo dell'appartenenza di destinazione in File Inspector sono effettivamente disabilitate. Ho dovuto andare alle impostazioni di compilazione e aggiungere il file dei diritti alla fase Copia risorse.
Charles A.

5
@cham: ragazzi potete approfondire "sebbene XCode abbia creato un file di diritti per me, non è stato incluso nella mia build: ho dovuto fare clic su quella casella manualmente".
Thang Pham

6
@AwaisFayyaz Vai a Build Phases> Copy Bundle Resources. Fare clic sul segno più, quindi aggiungere il file di autorizzazione.
s.zainulabideen

36

Apparentemente c'è un errore nella documentazione per creare il file di associazione per Universal Links .

Dove dice:

Il valore della chiave appID è l'ID del team dell'app e l'ID del bundle

dovrebbe dire

Il valore della chiave appID è il prefisso dell'app e l'ID bundle

Per la maggior parte delle app, sembra che l'ID team e i prefissi dell'app siano gli stessi, ma se la tua app è nello store da molti anni, questi valori possono essere diversi.

Per trovare questo valore, apri il Centro membri su https://developer.apple.com e guarda "Certificati, identificatori e profili", fai clic su "Identificatori", quindi "ID app" nella tabella sotto "Identificatori". Trova la tua app e usa il valore Prefix e Bundle ID lì per creare il tuo AppID per il file di associazione.


2
+1, questo mi ha aiutato molto. Trascorri mezza giornata a capire perché non ha funzionato e questo sembrava essere il caso per me
Ivo Beckers

mi hai salvato la giornata, in effetti la mia app era molto tempo fa e il prefisso dell'app è diverso dall'ID del team.
Ti3t

questa è l'unica cosa che funziona per me. grazie!
Dhin

Questa era la soluzione per me. Ottimo consiglio.
venerdì

33

Per aiutare a eseguire il debug di questo problema, cerca "swcd" nell'output della console del tuo dispositivo quando installi l'app per vedere se la registrazione del tuo collegamento universale ha funzionato o non è riuscita.

  1. Usa un dispositivo reale, non il simulatore.
  2. Elimina l'app dal tuo dispositivo.
  3. Collega il dispositivo al computer e visualizza l'output della console del dispositivo in xcode. (finestra -> dispositivi -> [il tuo dispositivo] -> apri console). Tieni aperta questa finestra.
  4. Installa la tua app e lasciala avviare.
  5. Filtra l'output della console su "swcd". Se ha successo vedrai qualcosa come lo screenshot seguente. Se fallisce vedrai qualcos'altro. Se non vedi nulla, hai sbagliato qualcosa di fondamentale come l'aggiunta del diritto ai domini associati.

Applink aggiunto con successo


2
Suggerimento eccellente! Stavo aggiungendo https: // ad applinks: entitlement e specificando anche il percorso completo che volevo ascoltare che erano entrambi gli errori. Stavo specificando example.com/path * dove dovrei specificare solo il mio dominio.com e il file AASA su example.com quindi specifica il percorso rispetto all'ID bundle della mia app
Numan Tariq

3
Posso trasferirti un bonus in contanti? Ho passato 2 giorni a esaminare ogni passaggio di questa folle configurazione di collegamento universale, niente mi ha aiutato finché non ho provato il tuo approccio. Sono stato davvero sfortunato ad ospitare il mio file di associazione nella cartella principale di Firebase per il mio dominio, e si è scoperto che Apple interroga prima .well-known / sottodirectory e Firebase sembra rispondere con il proprio (!) File di associazione corretto che non ha un'app collegata. Accidenti come dovrei scoprirlo, Apple?
nalexn

Ahhh ottimo suggerimento! Non sapevo di questa console del dispositivo, solo guardando l'output della console Xcode. Il mio problema era che 2 domini deeplink su 3 hanno funzionato, ma non l'ultimo. E lì nella console ho visto che per il mio ultimo dominio avevo scritto male con "appllinks: <domain>" (2 L's) Oh amico… comunque, grazie ancora per l'ottimo modo di controllare se i link universali sono effettivamente registrati! (Ho trovato anche i log della console Rimozione dei collegamenti durante la disinstallazione dell'app: +1)
Arno Teigseth

1
dovrebbe essere così prolisso per impostazione predefinita? Perché non ottengo un registro così dettagliato .. significa che l'operazione non è andata a buon fine?
Nicholas Allio

26

La risposta di St.Derrick è informativa.

Ma per abilitare nuovamente i collegamenti universali da aprire nell'app anziché in Safari, dobbiamo fare quanto segue.

  • Premi a lungo sul collegamento universale in Mail o iMessage, quindi vedrai le opzioni se aprire in Safari o in App.

2
Non è possibile app, solo copiare, aprire, aggiungere all'elenco di lettura, ecc.
iEngineer

1
Quasi impazzito durante il debug di questo problema, ma QUESTA era la soluzione o me. Forse se non è impostato correttamente e l'app Mail apre il collegamento in Safari si apre sempre in Safari? non ne ho idea, ma una volta ho premuto a lungo -> apri in "miaapp" ... e ora i collegamenti si aprono correttamente!
herbert

1
Grazie mille per questa soluzione. Sono rimasto bloccato in questo per quasi un giorno. Mi hai salvato la giornata.
andrew


18

Mi sono reso conto che il problema per me era che i collegamenti alla directory principale a (es. http://example.com/) Non aprivano la mia app ma se aggiungevo un percorso (es. http://example.com/mypath) Funzionava. L'aggiunta "/"all'elenco dei percorsi ha sovrastato:

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

Come risposto da slutsker in questo thread dei forum degli sviluppatori Apple.


17

Passaggi rapidi per verificare se hai implementato correttamente Universal Link.

  • Tocca e tieni premuto il collegamento che prevedi di avviare l'app. Dovresti vedere un "Apri in [nome della tua app]" nel menu contestuale.

  • Apri l'app Note, digita il collegamento che prevedi di aprire l'app. Tocca Fatto. Il collegamento diventerà giallo e toccando il collegamento si dovrebbe aprire la tua app e non Safari.

  • Se il collegamento http://yourDomain.com non avvia l'app, provare http://yourDomain.com/yourFolder/

  • In Safari, se il menu contestuale mostra "Apri in [nome app]" in Safari, ma toccando il collegamento si apre il collegamento in Safari stesso invece di avviare l'app,

    un. Prova a tirare verso il basso la pagina di safari che si è aperta quando il collegamento è stato cliccato come nel modo in cui "trascina per aggiornare". Dovrebbe apparire un banner che può aprire la tua app. Tocca il banner per aprire l'app, chiudi l'app premendo il tasto home, torna a safari e prova ad avviare l'app toccando nuovamente il link. Questa volta, l'app dovrebbe essere avviata perché toccando il banner avrebbe dovuto salvare la preferenza per aprire il collegamento nell'app.

    b. Se l'app continua a non essere avviata dopo il passaggio a., Prova a inviare il link a una webmail come gmail e apri il sito webmail in Safari e prova a fare clic sul link. Se funziona, potresti aver tentato di avviare l'app dallo stesso dominio del collegamento. Da quello che ho visto, l' avvio dell'app dallo stesso dominio per lo più fallisce . Probabilmente Safari non si preoccuperà di verificare se l'URL di destinazione è un collegamento universale, quando il collegamento si trova nello stesso dominio su cui si trova l'utente. Quindi prova ad avviare l'app da un altro dominio.


3
Questo è tutto, ho dovuto affrontare questo problema per ore, LANCIARE L'APP DALLO STESSO DOMINIO PER LA MAGGIOR PARTE FAIL. Grazie :)
maledr53

12

È anche estremamente importante aumentare la versione del progetto o il numero di build dopo aver integrato i collegamenti universali. Anche se elimini / reinstalli, iOS non raccoglierà i link a meno che non sbagli la versione.


1
Questo! La versione bundle era totalmente ciò che stava causando il fallimento del mio test, perché avrei seguito tutti i consigli di cui sopra ei miei collegamenti avrebbero comunque avviato Safari poiché iOS utilizza il risultato memorizzato nella cache della versione precedente di apple-app-site-associationcui aveva il prefisso appId sbagliato
zai chang

Kyle, penso di amarti! Questa risposta salva la giornata, grazie!
neiker

Questa era la salsa segreta per me! Grazie, grazie, grazie!
Nurider

10
  • I link universali non funzioneranno se incolli il link nel campo dell'URL del browser.

  • I collegamenti universali funzionano con un <a href="...">clic su un elemento guidato dall'utente tra i domini . Esempio: se su google.com è presente un collegamento universale che punta a bnc.lt, si aprirà l'app.

  • I collegamenti universali non funzioneranno con un <a href="...">clic su un elemento gestito dall'utente nello stesso dominio . Esempio: se su google.com è presente un collegamento universale che punta a un collegamento universale diverso su google.com, l'app non verrà aperta.

  • I collegamenti universali non possono essere attivati ​​tramite Javascript (in window.onload o tramite una chiamata .click () su un <a>elemento), a meno che non faccia parte di un'azione dell'utente.

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

Il terzo proiettile mi è costato circa un giorno per capirlo.


1
Terzo proiettile, lo stesso qui: ho perso molte ore a capirlo. Apple ha anche una bella spiegazione molto stupida per questo: "iOS rispetta l'intento più probabile dell'utente e apre il collegamento in Safari" vedi tu stesso qui .
Jox

3 ° punto in alto!
Byteros

10

Per chiunque abbia bisogno di testare facilmente l'apertura dei collegamenti (universali), è anche possibile aprire il collegamento nel simulatore dal terminale con questo comando:

xcrun simctl openurl booted yourapp_or_http://yourlink

per esempio:

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


1
Non ho questo per funzionare, apre sempre e solo Safari. Funzionano però quando corro su un dispositivo reale. Qualsiasi idea sarebbe apprezzata in quanto è un po 'più doloroso il debug / sviluppo senza il simulatore.
chib

7

Nel caso in cui le persone qui stiano cercando altre soluzioni, abbiamo messo insieme un intero passo dopo passo sul debug di Universal Links poiché abbiamo visto un sacco di problemi che si verificano, causando MOLTI mal di testa.

Controlla:

Guida al debug di collegamenti universali

Anteprima della guida al debug

Se stai solo cercando di configurare Universal Links da zero, questa guida è davvero utile:

Guida alla configurazione di iOS Deep Linking

Spero siano utili!


Molto utile, grazie! Ha funzionato per me durante l'esecuzione su un dispositivo reale, ma non sul simulatore iOS.
Josh Sklar

6

Ho solo pensato di aggiungere alcune cose che ho scoperto nel caso in cui più persone incontrassero i miei stessi problemi in futuro. Questi sono principalmente legati agli errori di autenticazione.

Anche se Apple non lo afferma esplicitamente, il file apple-app-site-association file deve essere servito su https, anche se firmato. Anche il certificato utilizzato per https deve essere considerato attendibile da Apple. Quindi, sebbene un certificato aggiunto al dispositivo in Impostazioni -> Generali -> Profili consentirà https in Safari, non consentirà il funzionamento dei collegamenti universali.

Nei registri del dispositivo, in caso di errore di autenticazione tra il dispositivo e il server, verrà stampato un valore simile "TrustResultValue" : 4. Un valore TrustResultValue5 significa che il certificato è per il dominio sbagliato (es. Test.com servito da www.test.com). Un valore TrustResultValue4 indica che il certificato non è attendibile per questo utilizzo.

Potrebbero esserci alcuni passaggi utili per il debug qui . La sezione "Verifica dell'accesso a apple-app-site-association" è una guida passo passo su come assicurarsi che il dispositivo riceva il apple-app-site-associationfile. I passaggi si riducono a:

  1. Disinstalla l'app. Ciò è necessario perché il file viene scaricato durante l'installazione.

  2. Impedisci al server di servire correttamente apple-app-site-association.

  3. In xcode, apri Finestra -> Dispositivi e quindi seleziona il tuo dispositivo.

  4. Apri i registri del dispositivo facendo clic sul triangolo nella parte inferiore della finestra.

  5. Cancella i log facendo clic sul cestino per cancellare tutti i log precedenti che potrebbero essere correlati.

  6. Reinstalla l'app con xcode facendo clic sul pulsante di riproduzione.

  7. Dopo l'avvio dell'app, se il dispositivo richiede correttamente il file, i log del dispositivo dovrebbero contenere un errore che può essere trovato cercando "apple-app-site-association".

Se il apple-app-site-associationfile viene servito correttamente (il passaggio 2 viene omesso), non dovrebbero esserci errori. Se questo è il problema, potrebbe invece essere visualizzato un errore di autenticazione.


1
Stavo effettuando lo spoofing SSL utilizzando Charles Proxy e questo si traduceva in un valore di fiducia di 4. Quando ho disattivato il proxy, è riuscito.
Ben Flynn

6

La causa più comune è quando l'utente tocca in alto a destra, dicendo così a iOS di NON aprire l'app (in questo caso Uber) in futuro.

Per risolvere il problema, scorri verso il basso per visualizzare il banner intelligente e tocca APRI:

Apri in Safari e APRI di nuovo

Questo successivamente "ricorderà" di aprire l'app.


5

Abbiamo aggiunto il file di associazione del sito dell'app apple a questo percorso:

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

Su iOS 9 ha funzionato bene, ma su iOS 10 non ha funzionato.

Sembrava che il problema fosse con il percorso .well-known :

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

A causa del percorso https://example.com/.well-known/apple-app-site-association reindirizzato a 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

Secondo me se in qualche modo il percorso .well-known non funziona correttamente interrompe i collegamenti universali.


Il manuale dice chiaramente che "Il file deve essere accessibile tramite HTTPS, senza reindirizzamenti".
eonil

Il manuale dice anche chiaramente che "Per le app che vengono eseguite in iOS 9.3.1 e versioni successive, la dimensione non compressa del file di associazione sito-app-apple non deve essere superiore a 128 KB, indipendentemente dal fatto che il file sia firmato". Questo file è 154 KB.
Roberto

Su iOS11 il tuo server dovrebbe restituire esplicitamente lo stato 404 per: example.com/.well-known/apple-app-site-association, quindi swcd utilizza il fallback a root: example.com/apple-app-site-association . Puoi controllare rapidamente lo stato HTTP restituito con strumenti come Postman
Max Odnovolyk

4

Sono riuscito a farlo funzionare, ma ci è voluto un po 'di tempo e fatica. Nota che a meno che tu non firmi il apple-app-site-association file (la firma è facoltativa!) Toccando un collegamento in Safari non si aprirà la tua app (mi ha causato molto mal di testa).


1
Questo è curioso. Apple afferma nei documenti che per i collegamenti universali puri e l'uso in iOS9 non è necessario firmare. Solo se desideri supportare iOS 8 Handoff / Credenziali Web condivise dovresti firmare. Interessante! Ho lo stesso problema, quindi proverò a firmare.
Wrtsprt

La firma è davvero facoltativa. Il tocco di un collegamento in Mobile Safari per attivare l'apertura di un'app iOS nativa viene chiamato "Passaggio da browser Web a app native", nel qual caso sarà necessario aggiungere activitycontinuationproprietà al apple-app-site-associationfile json. developer.apple.com/library/ios/documentation/UserExperience/…
Devy

3

Mi ci è voluto quasi un giorno per capirlo. Il problema che ho avuto non era il download dei profili di provisioning aggiornati in XCode (ho anche riavviato XCode dopo questo).

(Preferenze> Account> Visualizza dettagli> Scarica tutto)


3

Puoi testare i collegamenti universali nel simulatore

Dalla Guida alla programmazione per la ricerca di app: supporta collegamenti universali


6
Qualcuno ha ottenuto collegamenti universali per lavorare in un simulatore? Ho provato innumerevoli volte e non funziona mai. Tuttavia, funziona utilizzando un dispositivo reale con gli stessi flussi.
Tony

Non sono stato in grado di testare neanche questo. Cercare di convincere Safari ad attivare i collegamenti universali nel simulatore è stato inutile, nonostante il fatto che funzioni correttamente su un dispositivo fisico.
Albert Bori

Nemmeno io sono riuscito a farli funzionare nel simulatore. @AlbertBori l'hai fatto funzionare?
chib

Sono quasi certo che non funzionino nel simulatore . Conosco tutte le altre insidie ​​e non riesco mai a farle funzionare in simulatore ..
Fattie

3

Dopo due giorni si è scoperto che questo tipo di collegamenti (dal ramo)

AppLinks: xxxx.app.link

funziona solo dopo aver archiviato (anche ad-hoc) l'applicazione e averla installata sul telefono.


3

Se stai ospitando il tuo apple-app-site-associationsu Firebase , assicurati di inserirlo nella /.well-known/sottodirectory! Sembra che Xcode interroghi prima quell'URL e, se riesce, non fa alcun tentativo di interrogare l'URL apple-app-site-associationnella directory principale. Per qualche ragione, gli ingegneri di Firebase hanno fatto sì che i siti Web ospitati rispondessero automaticamente /.well-known/apple-app-site-associationcon un file di associazione vuoto (ma correttamente formato) che sovrascrive quello personalizzato, lasciandoti senza indizi sul motivo per cui non funziona nulla!


2
Finalmente! Molte grazie. È scritto da qualche parte? Firebase dovrebbe documentarsi da qualche parte.
Berkay Turancı

2

Vai su developer.apple.com e modifica uno dei tuoi profili di distribuzione. Nella pagina di modifica puoi aprire un popup per gli ID app che mostrerà un elenco dei nomi delle tue app e tra parentesi tonde () dietro il nome dell'app rivela tutti i tuoi ID app reali . Alcune app potrebbero avere il tuo ID team come prefisso, ma altre no . Assicurati di utilizzare esattamente ciò che vedi in quel menu a comparsa all'interno di () e inseriscilo nel campo appID dei dettagli dell'associazione del sito-app-apple. Ho avuto esattamente questo problema con un'app e i suoi collegamenti universali.


2

Il problema per me si è rivelato essere il apple-app-site-associationfile. Secondo la documentazione di Apple, è richiesto solo il parametro applinks. Ho aggiunto il activitycontinuationparametro e ha funzionato.

{
  "activitycontinuation": {
    "apps": [
      "9JA89QQLNQ.com.apple.wwdc"
    ]
  },
  "applinks": {
    "apps": [],
    "details": [{
        "appID": "9JA89QQLNQ.com.apple.wwdc",
        "paths": [ "/wwdc/news/", "/videos/wwdc/2015/*" ]
      }]
  }
}

3 anni dopo e abbiamo riscontrato questo problema esatto. L'aggiunta activitycontinuationè ciò che ha risolto il problema per noi.
readyornot

2

Non ho davvero visto la stessa identica combinazione problema / soluzione che ha funzionato per me, quindi potrei anche aggiungere la mia nel caso in cui qualcuno abbia lo stesso problema!

Per la mia app sto utilizzando uno schema URL personalizzato (impostato in APP_TARGET > Info > URL Types) e ho impostato lo schema URL da qui nella console Firebase in modo che corrisponda ma ancora non funzionava.

Il mio problema era in realtà due problemi:

Fai attenzione se selezioni Gestisci automaticamente la firma

Se stai controllando l'impostazione "Gestisci automaticamente la firma" di Xcode come me, dato che stavo solo cercando di creare un'app demo rapida, assicurati che il TeamID utilizzato corrisponda a quello nella tua console Firebase. Inizialmente sono andato al mio account sviluppatore Apple e ho copiato l'ID del team dalla mia pagina di iscrizione, ma in seguito ho visto che l'ID effettivo utilizzato da Xcode era diverso. (Puoi trovarlo in APP_TARGET > General > Signing > Signing Certificate.Per me sembrava iPhone Developer: My Name (TEAM_ID)).

Prefisso il tuo TeamID al tuo identificatore di bundle nei tuoi tipi di URL

Dopo essermi assicurato che questi corrispondessero nella mia console Firebase e Xcode, il mio problema successivo è stato l'identificatore per il mio schema URL. È tipico utilizzare l'identificatore del pacchetto qui, ma Firebase in realtà lo prefissa con l'ID squadra che hai fornito nella tua console Firebase, quindi ho dovuto anteporre anche l'identificatore nella sezione dei tipi di URL in Xcode.

Dopo queste due correzioni e il nuovo download del GoogleService-Info.plistfile non ho avuto problemi ad aprire i miei collegamenti dinamici.


2

Dopo due giorni di totale disperazione, penso di aver finalmente risolto il problema. Ecco la mia soluzione:

Sembra che le app precedenti utilizzino un prefisso app diverso rispetto alle app più recenti. Le app più recenti utilizzano solo l'ID team per questo scopo. Se il prefisso dell'app e l'ID del team non sono identici, sembra che sia necessario specificare il campo di continuazione dell'attività nel file di associazione del sito dell'app Apple:

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

Un'altra cosa che ho sperimentato durante la mia corsa infernale è stata che l'eliminazione dell'app e il riavvio del dispositivo sembra essere l'unico modo per forzare l'aggiornamento di questo file.


1

Per me, il mio errore è stato che il nostro sito sta reindirizzando www.domain.com a domain.com, quindi tutto il www.domain.com/* fallirà per questo motivo. Spero che aiuti.


1

Sono stato in grado di testare collegamenti universali nel simulatore iOS utilizzando l'app Calendario.

Ho appena creato un evento e aggiunto l'URL che volevo testare nel campo dell'evento URL. Quindi, durante la visualizzazione dell'evento creato, puoi semplicemente toccare il collegamento URL e la tua app dovrebbe aprirsi.


Questo non sembra funzionare per me, ho provato di tutto per farli funzionare nel simulatore senza alcun risultato. Funzionano bene sul dispositivo reale, ma non è l'ideale per lo sviluppo / debug. Ho provato a premere a lungo il collegamento e non è presente l'opzione "Apri nell'app".
chib

1

Dopo aver trascorso una giornata cercando di farlo funzionare, il riavvio del telefono ha risolto il problema.

Anche la disinstallazione / reinstallazione dell'app non ha funzionato.


1

Per ios13, c'è un nuovo formato: controlla qui https://developer.apple.com/documentation/safariservices/supporting_associated_domains_in_your_app?language=objc

Ho aggiornato il mio file in questo modo:

{
  "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" ]
   }
}

avresti bisogno di aggiungere "exclude": truead componentsoggetto per commentessere vero
skornos

@skornos buon punto. Modificherò la mia risposta.
Anita

0

Per i futuri lettori che trovano questa pagina ...

Ho avuto una situazione simile. Tuttavia, nella mia situazione, iOS10 funzionava AOK e, indipendentemente da ciò che facevo (aumentare i numeri di build, eliminare / reinstallare, ecc.), IOS9 sembrava rifiutarsi di funzionare.

Stavo arrivando a questo da iOS10 e avevo bisogno di supportare iOS9. Al momento, la documentazione qui - https://developer.apple.com/library/content/documentation/General/Conceptual/AppSearch/UniversalLinks.html - afferma chiaramente che il file può essere posizionato nella radice del server web (ad esempio /apple-app-site-association) o nella cartella .well-known (ad esempio /.well-known/apple-app-site-association). Poiché sto supportando anche Android, che utilizza anche la cartella .well-known per un file simile, ho deciso di inserirli entrambi.

Per le nuove installazioni su iOS10, richiede chiaramente il file root, non riesce, quindi richiede il file .well-known e riesce.

Per iOS9, ha chiaramente richiesto il file di root, non riesce e non fa nient'altro.

Soluzione: se supporti iOS9, metti il ​​file in /apple-app-site-association.


0

Nel mio caso il mio errore è stato quello di inserire i parametri di query nei percorsi:

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

quando rimuovo "? target = confirm & *" dai percorsi, inizia a funzionare

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.