iOS Universal Links werden nicht in der App geöffnet

108

Also habe ich dieses Tutorial genau befolgt und die gleichen Werte wie die angegebenen verwendet: https://blog.branch.io/how-to-setup-universal-links-to-deep-link-on-apple-ios-9

Die Apple Association-Datei befindet sich auch im Link-Verzeichnis:
WEB_PAGE:PORT_NUMBER/apple-app-site-association

Alles scheint auf dieser Seite eingerichtet zu sein.

Ich habe die Berechtigungen hinzugefügt, das Bereitstellungsprofil aktualisiert und alles eingerichtet.

Wenn ich die App auf meinem Gerät ausführe und den Link http://WEB_PAGE:PORT_NUMBERöffne, wird Safari immer geöffnet.

Ich habe sogar Haltepunkte in der folgenden Methode:

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

Aber zilch.

Hat jemand das perfektioniert? Fehlt mir etwas?

Legolas
quelle
2
Kasse hier, um sicherzustellen, dass Sie keinen Schritt verpassen. stackoverflow.com/questions/35609667/…
Vineet Choudhary

Antworten:

189

Es gibt einige mögliche Probleme.

  1. Versuchen Sie, Ihre Domain in diesen Link-Validator einzufügen, und stellen Sie sicher, dass keine Probleme vorliegen : https://limitless-sierra-4673.herokuapp.com/ (Gutschrift für ShortStuffSushi - siehe Repo )

  2. iOS protokolliert eine Fehlermeldung in den Systemprotokollen, wenn TLS in der in Ihren Berechtigungen angegebenen Domäne nicht ordnungsgemäß eingerichtet ist. Es ist in den Betriebssystemprotokollen vergraben, nicht in den Anwendungsprotokollen. Die Fehlermeldung sieht folgendermaßen aus 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. Von hier gezogene Fehlermeldung , schnelle (unvollständige) Anweisungen zur Verwendung von CloudFlare für TLS hier .

  3. In meinen persönlichen Tests hat das Klicken / Eingeben eines Links in Safari die App noch nie direkt geöffnet. Das Klicken von anderen Apps (iMessage, Mail, Slack usw.) hat funktioniert. Andere haben berichtet, dass das Klicken auf Links in den Google-Suchergebnissen die App direkt geöffnet hat.

  4. Beachten Sie, dass iOS die App beim Öffnen dieser URL nicht mehr öffnet , wenn ein Universal Link Ihre App erfolgreich öffnet und Sie dann zu Safari durchklicken (indem Sie in der App in der oberen rechten Ecke der Navigationsleiste auf Ihre Website tippen) . In Safari können Sie dann nach unten ziehen, um ein Banner oben auf der Seite mit "Öffnen" anzuzeigen. Ich habe viel Zeit damit verschwendet. Beachten Sie, dass durch auf die Website klicken => UL deaktivieren scheint Pfad spezifische , basierend auf den Pfaden , die Sie im Apfel-App-Ort-assocation - Datei angeben. Wenn Sie also separate Routen haben yoursite.com/a/*und auf yoursite.com/b/*klicken yoursite.com/a/*und Ihre App direkt geöffnet wird, haben Sie die Option in der oberen rechten Ecke der App, zu der Sie durchklicken können yoursite.com/a/*. Wenn Sie das tun, nachfolgende Besuche beiyoursite.com/a/*wird im Browser geöffnet, nicht in der App. Sollte yoursite.com/b/*jedoch nicht betroffen sein und trotzdem Ihre App direkt öffnen.

Lassen Sie mich wissen, wenn Sie herausfinden, worum es geht. Ich persönlich bin sehr gespannt, wie Universal Links funktionieren und welche Randfälle es gibt. Viel Glück.

st.derrick
quelle
1
Gleiche Sache. So seltsam. Manchmal wird die App direkt geöffnet, manchmal wird die Webansicht geöffnet. Ich wünschte, sie hätten die Dokumentation klargestellt. Die Bedienung dieser Funktion ist fehlerhaft
Legolas
4
In Bezug auf 1) ist es nicht mehr erforderlich, dass Sie Ihre Apple-App-Site-Zuordnungsdatei signieren, wenn Sie sie über https bereitstellen.
Jeremy Hicks
11
Ein Neustart Ihres iOS-Geräts kann ebenfalls hilfreich sein. Ich habe alle Einstellungen und die Konfiguration dreimal überprüft und war mir absolut sicher, dass alles korrekt ist, aber es würde immer noch nicht funktionieren. Dann habe ich es mit einem anderen Gerät versucht und es hat perfekt funktioniert. Ich habe dann die App vom Originalgerät gelöscht, das Gerät neu gestartet und die App neu installiert, dann hat es einfach funktioniert ...
Mathz
4
Wie komme ich zurück in die App anstatt in die Safari, wenn jemand versehentlich den Website-Link in der rechten Ecke der App gedrückt hat?
Ingenieur am
3
Ich habe nirgendwo in App Open Banner bekommen. Nach langer Suche ist hier eine Lösung: Geben Sie einen beliebigen Link für Ihre Site in die Notes-App ein (dies ist ein universeller Link). Klicken Sie jetzt auf Fertig. Sobald es ein Link wird, klicken Sie lange darauf und wählen Sie "In AppNAME-HIER öffnen"!
kishorer747
64

Es gibt viele Möglichkeiten, wie dies schief gehen kann. Zwei Punkte haben mir Probleme gemacht:

  • Wenn Sie in Xcode die Berechtigung "Zugehörige Domänen" hinzufügen, muss jeder Eintrag mit applinks:und dann mit Ihrem Domänennamen beginnen. ZB applinks:www.apple.com.

  • Obwohl Xcode eine Berechtigungsdatei für mich erstellt hat, war diese nicht in meinem Build enthalten: Ich musste manuell auf dieses Feld klicken.

Und ja, danach war es nicht notwendig, die apple-app-site-associationDatei zu signieren : Es ist nur einfacher Text und es funktioniert, solange es über HTTPS bereitgestellt wird. (Sie müssen es jedoch noch unterschreiben, wenn Sie iOS 8 unterstützen.)

DFedor
quelle
4
Ich musste die App auch vollständig vom Testgerät löschen und dann erneut erstellen und ausführen, bevor sie schließlich funktionierte.
Phil Andrews
14
Sie retten meinen Tag, dies war mein Problem, obwohl XCode eine Berechtigungsdatei für mich erstellt hat, die nicht in meinem Build enthalten war: Ich musste manuell auf dieses Feld klicken.
Cham
12
Das Einfügen der Berechtigungsdatei in den Build hat das Problem auch für mich behoben. Es ist erwähnenswert, dass in Xcode 8 die Kontrollkästchen für die Zielmitgliedschaft im Dateiinspektor tatsächlich deaktiviert sind. Ich musste zu den Build-Einstellungen gehen und die Berechtigungsdatei zur Phase "Ressourcen kopieren" hinzufügen.
Charles A.
5
@cham: Könnt ihr näher darauf eingehen? "Obwohl XCode eine Berechtigungsdatei für mich erstellt hat, war sie nicht in meinem Build enthalten: Ich musste manuell auf dieses Feld klicken."
Thang Pham
6
@AwaisFayyaz Gehen Sie zu Phasen erstellen> Bundle-Ressourcen kopieren. Klicken Sie auf das Pluszeichen und fügen Sie Ihre Berechtigungsdatei hinzu.
s.zainulabideen
36

In der Dokumentation zum Erstellen der Zuordnungsdatei für Universal Links ist anscheinend ein Fehler aufgetreten .

Wo steht:

Der Wert des AppID-Schlüssels ist die Team-ID der App und die Bundle-ID

es sollte sagen

Der Wert des AppID-Schlüssels ist das Präfix der App und die Bundle-ID

Bei den meisten Apps scheinen die Team-ID und die App-Präfixe identisch zu sein. Wenn Ihre App jedoch seit vielen Jahren im Store ist, können diese Werte unterschiedlich sein.

Um diesen Wert zu ermitteln, öffnen Sie das Member Center unter https://developer.apple.com und sehen Sie sich "Zertifikate, Kennungen und Profile" an. Klicken Sie auf "Kennungen" und dann auf "App-IDs" in der Tabelle unter "Kennungen". Suchen Sie Ihre App und verwenden Sie dort den Präfixwert und die Bundle-ID, um Ihre AppID für die Zuordnungsdatei zu erstellen.

Curtis Brian Halbrook
quelle
2
+1, das hat mir sehr geholfen. Verbringen Sie einen halben Tag damit, herauszufinden, warum es nicht funktioniert hat, und dies schien für mich der Fall zu sein
Ivo Beckers
Du hast meinen Tag gerettet, in der Tat war meine App vor langer Zeit und das App-Präfix unterscheidet sich von der Team-ID.
Ti3t
Dies ist das einzige, was für mich funktioniert. Danke!
Dhin
Das war die Lösung für mich. Guter Hinweis.
14.
32

Um das Problem zu beheben, suchen Sie bei der Installation Ihrer App in der Konsolenausgabe Ihres Geräts nach "swcd", um festzustellen, ob die Registrierung Ihres universellen Links funktioniert hat oder fehlgeschlagen ist.

  1. Verwenden Sie ein tatsächliches Gerät, nicht den Simulator.
  2. Löschen Sie die App von Ihrem Gerät.
  3. Schließen Sie das Gerät an Ihren Computer an und zeigen Sie die Konsolenausgabe des Geräts in xcode an. (Fenster -> Geräte -> [Ihr Gerät] -> Konsole öffnen). Lass dieses Fenster offen.
  4. Installieren Sie Ihre App und lassen Sie sie starten.
  5. Filtern Sie die Konsolenausgabe auf "swcd". Wenn es erfolgreich ist, sehen Sie so etwas wie den folgenden Screenshot. Wenn es fehlschlägt, sehen Sie etwas anderes. Wenn Sie nichts sehen, haben Sie etwas Grundlegendes wie das Hinzufügen der Berechtigung "Zugehörige Domänen" durcheinander gebracht.

Applink erfolgreich hinzugefügt

mpoisot
quelle
2
Hervorragender Tipp! Ich habe den Berechtigungen applinks: https: // hinzugefügt und auch den vollständigen Pfad angegeben, den ich anhören wollte, was beide Fehler waren. Ich habe example.com/path * angegeben, wobei ich nur meine domain.com und die AASA-Datei bei example.com angeben sollte, und dann den Pfad für die Bundle-ID meiner App angegeben
Numan Tariq
3
Kann ich Ihnen einen Bargeldbonus überweisen? Ich habe 2 Tage damit verbracht, jeden Schritt dieses verdammten universellen Link-Setups durchzugehen. Nichts hat geholfen, bis ich Ihren Ansatz ausprobiert habe. Ich hatte wirklich das Pech, meine Zuordnungsdatei im Stammordner einer Firebase für meine Domain zu hosten, und es stellte sich heraus, dass Apple zuerst das bekannte / Unterverzeichnis abfragt und Firebase darauf mit einer eigenen (!) Korrekten Zuordnungsdatei zu antworten scheint hat keine App verlinkt. Meine Güte, wie soll ich das herausfinden, Apple?
Nalexn
Ahhh toller Hinweis! Ich wusste nichts über diese Gerätekonsole, habe mir nur die Ausgabe der Xcode-Konsole angesehen. Mein Problem war, dass 2 von 3 Deeplink-Domänen funktionierten, aber nicht die letzte. Und dort in der Konsole sah ich, dass ich es für meine letzte Domain mit "appllinks: <domain>" (2 L's) falsch geschrieben hatte. Oh man ... trotzdem nochmals vielen Dank für eine großartige Möglichkeit zu überprüfen, ob Universal Links tatsächlich registriert sind! (Ich fand die Konsolenprotokolle auch Entfernen der Links bei der Deinstallation der App: +1)
Arno Teigseth
1
soll es standardmäßig so ausführlich sein? Weil ich kein so detailliertes Protokoll bekomme. Bedeutet dies, dass der Vorgang nicht erfolgreich ist?
Nicholas Allio
26

St.derricks Antwort ist informativ.

Damit universelle Links in der App anstelle von Safari wieder geöffnet werden können, müssen wir Folgendes tun.

  • Wenn Sie in Mail oder iMessage lange auf Universal Link klicken, werden Optionen angezeigt, ob Sie in Safari oder in App öffnen möchten.
Praveen
quelle
2
Es gibt keine Möglichkeit app, nur zu kopieren, zu öffnen, zur Leseliste hinzuzufügen usw.
iEngineer
1
Fast verrückt geworden, dieses Problem zu debuggen, aber das war die Lösung oder ich. Wenn es nicht richtig eingerichtet ist und die Mail-App den Link in Safari öffnet, wird es möglicherweise immer in Safari geöffnet? Keine Ahnung, aber ich habe einmal lange gedrückt -> in 'myapp' geöffnet ... und jetzt öffnen sich die Links richtig!
Herbert
1
Vielen Dank für diese Lösung. Ich war fast einen Tag darin gefangen. Du hast meinen Tag gerettet.
Andrew
17

Ich erkannte, dass das Problem für mich darin bestand, dass Links zum Stammverzeichnis a (z. B. http://example.com/) meine App nicht öffneten, aber wenn ich einen Pfad (z. B. http://example.com/mypath) hinzufügte , funktionierte es. Das Hinzufügen "/"zur Pfadliste führte dazu:

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

Wie von slutsker in diesem Apple Developer Forums-Thread beantwortet .

tidbeck
quelle
17

Schnelle Schritte, um zu überprüfen, ob Sie Universal Link korrekt implementiert haben.

  • Tippen und halten Sie auf den Link, über den Sie die App starten möchten. Im Kontextmenü sollte "Öffnen in [Ihrem App-Namen]" angezeigt werden.

  • Öffnen Sie die Notes-App und geben Sie den Link ein, den Sie zum Öffnen der App erwarten. Tippen Sie auf Fertig. Der Link wird gelb und durch Tippen auf den Link sollte Ihre App und nicht Safari geöffnet werden.

  • Wenn der Link http://yourDomain.com die App nicht startet, versuchen Sie es mit http://yourDomain.com/yourFolder/

  • Wenn in Safari im Kontextmenü in Safari "In [Ihrem App-Namen] öffnen" angezeigt wird, aber durch Tippen auf den Link der Link in Safari selbst geöffnet wird, anstatt die App zu starten,

    ein. Versuchen Sie, die Safari-Seite aufzurufen, die beim Klicken auf den Link geöffnet wurde, wie Sie es beim Aktualisieren tun. Es sollte ein Banner angezeigt werden, mit dem Sie Ihre App öffnen können. Tippen Sie auf das Banner, um die App zu öffnen, schließen Sie die App durch Drücken der Home-Taste, kehren Sie zur Safari zurück und versuchen Sie, die App zu starten, indem Sie erneut auf den Link tippen. Dieses Mal sollte die App gestartet werden, da durch Tippen auf das Banner die Einstellung zum Öffnen des Links in der App gespeichert werden sollte.

    b. Wenn die App nach Schritt a immer noch nicht gestartet wird, senden Sie den Link per E-Mail an ein Webmail wie Google Mail, öffnen Sie die Webmail-Site in Safari und klicken Sie auf den Link. Wenn dies funktioniert, haben Sie möglicherweise versucht, die App über dieselbe Domain wie den Link zu starten. Nach allem, was ich gesehen habe, schlägt das Starten der App von derselben Domain aus meistens fehl . Wahrscheinlich wird Safari nicht prüfen wollen, ob die Ziel-URL ein universeller Link ist, wenn sich der Link in derselben Domäne befindet, in der sich der Benutzer befindet. Versuchen Sie also, die App von einer anderen Domain aus zu starten.

Nikhil Mathew
quelle
3
Das war es, ich habe mich stundenlang mit diesem Problem beschäftigt und die App von der gleichen Domäne aus gestartet, die meistens fehlschlägt. Danke :)
maledr53
12

Es ist auch sehr wichtig, die Projektversion oder Build-Nummer nach der Integration universeller Links zu erhöhen. Selbst wenn Sie löschen / neu installieren, übernimmt iOS die Links nur, wenn Sie die Version anstoßen.

Kyle Truscott
quelle
1
Dies! Die Bundle-Version war genau das, was dazu führte, dass meine Tests fehlschlugen, da ich alle oben genannten Ratschläge apple-app-site-associationdurchging und meine Links Safari weiterhin starteten, da iOS das zwischengespeicherte Ergebnis der vorherigen Version verwendet, die das falsche AppId-Präfix hatte
zai chang
Kyle, ich glaube ich liebe dich! Diese Antwort rettet den Tag, danke!
Neiker
Das war die geheime Sauce für mich! Danke danke danke!
Nurider
10
  • Universelle Links funktionieren nicht, wenn Sie den Link in das Browser-URL-Feld einfügen.

  • Universelle Links funktionieren mit einem benutzergesteuerten <a href="...">Element, das über Domänen klickt . Beispiel: Wenn auf google.com ein universeller Link auf bnc.lt verweist, wird die App geöffnet.

  • Universal Links funktionieren nicht mit einem benutzergesteuerten <a href="...">Element, das auf dieselbe Domain klickt . Beispiel: Wenn auf google.com ein Universal Link verweist, der auf einen anderen Universal Link auf google.com verweist, wird die App nicht geöffnet.

  • Universelle Links können nicht über Javascript (in window.onload oder über einen .click () -Aufruf bei einem ausgelöst werden <a> Element) , es sei denn, es ist Teil einer Benutzeraktion.

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

Die dritte Kugel hat mich ungefähr einen Tag gekostet, um das herauszufinden.

Guido
quelle
1
3. Kugel, hier auch: Viele Stunden damit verschwendet, das herauszufinden. Apple hat sogar eine nette, sehr dumme Erklärung dafür: "iOS respektiert die wahrscheinlichste Absicht des Benutzers und öffnet den Link in Safari". Sehen Sie sich hier .
Jox
3. Kugel TOP!
Byteros
10

Für alle, die das Öffnen von (universellen) Links einfach testen möchten, können Sie den Link in Ihrem Simulator auch über das Terminal mit dem folgenden Befehl öffnen:

xcrun simctl openurl booted yourapp_or_http://yourlink

beispielsweise:

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

Morksinaanab
quelle
1
Ich habe das nicht zum Laufen gebracht, es öffnet immer nur Safari. Sie funktionieren jedoch, wenn ich auf einem tatsächlichen Gerät ausgeführt werde. Alle Ideen wären willkommen, da das Debuggen / Entwickeln ohne den Simulator etwas schmerzhafter ist.
Chib
7

Wenn die Leute hier nach anderen Lösungen suchen, haben wir Schritt für Schritt eine Anleitung zum Debuggen von Universal Links zusammengestellt, da viele Probleme aufgetaucht sind und viele Kopfschmerzen verursacht haben.

Hör zu:

Universal Links Debugging Guide

Vorschau des Debugging-Handbuchs

Wenn Sie Universal Links nur neu einrichten möchten, ist diese Anleitung sehr hilfreich:

Setup-Handbuch für iOS Deep Linking

Hoffe sie sind hilfreich!

Chris Maddern
quelle
Sehr hilfreich, danke! Arbeitete für mich, wenn ich auf einem tatsächlichen Gerät lief, aber nicht auf dem iOS-Simulator.
Josh Sklar
6

Ich dachte nur, ich würde einige Dinge hinzufügen, die ich entdeckt habe, falls in Zukunft mehr Menschen auf die gleichen Probleme stoßen wie ich. Diese hängen hauptsächlich mit Authentifizierungsfehlern zusammen.

Auch wenn Apple dies nicht explizit apple-app-site-associationangibt, muss die Datei über https bereitgestellt werden, auch wenn sie signiert ist. Das für https verwendete Zertifikat muss auch von Apple als vertrauenswürdig eingestuft werden. Während ein Zertifikat, das dem Gerät unter Einstellungen -> Allgemein -> Profile hinzugefügt wurde, https in Safari zulässt, können universelle Links nicht funktionieren.

In den Geräteprotokollen wird bei einem Authentifizierungsfehler zwischen dem Gerät und dem Server ein Wert wie folgt gedruckt "TrustResultValue" : 4. Ein TrustResultValuevon 5 bedeutet, dass das Zertifikat für die falsche Domain bestimmt ist (z. B. test.com, bereitgestellt von www.test.com). EINTrustResultValue von 4 bedeutet, dass das Zertifikat für diese Verwendung nicht vertrauenswürdig ist.

Möglicherweise gibt es einige hilfreiche Schritte für das Debuggen sein hier . Der Abschnitt "Testen des Zugriffs auf die Apple-App-Site-Zuordnung" enthält eine schrittweise Anleitung, wie Sie sicherstellen können, dass das Gerät die apple-app-site-associationDatei erhält . Die Schritte laufen auf Folgendes hinaus:

  1. Deinstallieren Sie die App. Dies ist erforderlich, da die Datei bei der Installation heruntergeladen wird.

  2. Stoppen Sie die ordnungsgemäße Bereitstellung des Servers apple-app-site-association.

  3. Öffnen Sie in xcode Fenster -> Geräte und wählen Sie dann Ihr Gerät aus.

  4. Öffnen Sie die Geräteprotokolle, indem Sie auf das Dreieck unten im Fenster klicken.

  5. Löschen Sie die Protokolle, indem Sie auf den Papierkorb klicken, um alle möglicherweise verwandten Protokolle zu löschen.

  6. Installieren Sie die App mit xcode neu, indem Sie auf die Wiedergabetaste klicken.

  7. Wenn das Gerät nach dem Start der App die Datei korrekt anfordert, sollten die Geräteprotokolle einen Fehler enthalten, der durch Suchen nach "Apple-App-Site-Zuordnung" gefunden werden kann.

Wenn die apple-app-site-associationDatei ordnungsgemäß bereitgestellt wird (Schritt 2 wird weggelassen), sollte kein Fehler auftreten. Stattdessen kann ein Authentifizierungsfehler angezeigt werden, wenn dies das Problem ist.

Sam
quelle
1
Ich habe SSL-Spoofing mit Charles Proxy durchgeführt und dies führte zu einem Vertrauenswert von 4. Als ich den Proxy ausschaltete, war dies erfolgreich.
Ben Flynn
6

Die häufigste Ursache ist, wenn der Benutzer oben rechts auf tippt und iOS anweist, die App (in diesem Fall Uber) in Zukunft NICHT mehr zu öffnen.

Ziehen Sie zum Beheben das Smart-Banner nach unten und tippen Sie auf ÖFFNEN:

Ziehen Sie in Safari nach unten und öffnen Sie erneut

Dies wird anschließend "daran erinnern", die App zu öffnen.

Samwize
quelle
5

Wir haben diesem Speicherort eine Apple-App-Site-Zuordnungsdatei hinzugefügt :

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

Unter iOS 9 hat es gut funktioniert, aber unter iOS 10 hat es nicht funktioniert.

Es schien, dass das Problem mit dem bekannten Pfad zusammenhängt:

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

Wegen https://example.com/.well-known/apple-app-site-association Pfad zu umgeleitet 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

Meiner Meinung nach unterbricht ein bekannter Pfad, wenn er irgendwie nicht richtig funktioniert, universelle Links.

Andrey Banshchikov
quelle
Im Handbuch heißt es eindeutig: "Auf die Datei muss über HTTPS zugegriffen werden können - ohne Weiterleitungen."
Eonil
Im Handbuch heißt es außerdem deutlich: "Für Apps, die unter iOS 9.3.1 und höher ausgeführt werden, darf die unkomprimierte Größe der Apple-App-Site-Zuordnungsdatei nicht größer als 128 KB sein, unabhängig davon, ob die Datei signiert ist." Diese Datei ist 154 KB groß.
Roberto
Unter iOS11 sollte Ihr Server explizit den 404-Status für: example.com/.well-known/apple-app-site-association zurückgeben. Swcd verwendet dann den Fallback für root: example.com/apple-app-site-association . Sie können schnell den zurückgegebenen HTTP-Status mit Tools wie Postman
Max Odnovolyk
4

Ich habe es geschafft, dass es funktioniert, aber es hat einige Zeit und Mühe gekostet. Beachten Sie, dass das Tippen auf einen Link in Safari Ihre App nicht öffnet , wenn Sie die apple-app-site-association Datei nicht signieren (Signieren ist optional!). Dies hat mir große Kopfschmerzen bereitet.

Attila Bardos
quelle
1
Das ist merkwürdig. Apple gibt in den Dokumenten an, dass Sie für reine Universal Links und die Verwendung in iOS9 keine Signatur benötigen. Nur wenn Sie iOS 8 Handoff / Shared Web Credentials unterstützen möchten, müssen Sie sich anmelden. Interessant! Ich habe das gleiche Problem, also werde ich versuchen zu unterschreiben.
Wrtsprt
Die Unterzeichnung ist in der Tat optional. Das Tippen auf einen Link in Mobile Safari, um das Öffnen der nativen iOS-App auszulösen, wird als "Übergabe von Webbrowsern an native Apps" bezeichnet. In diesem Fall müssen Sie activitycontinuationder apple-app-site-associationJSON-Datei eine Eigenschaft hinzufügen . developer.apple.com/library/ios/documentation/UserExperience/…
Devy
3

Ich habe fast einen Tag gebraucht, um das herauszufinden. Das Problem war, dass ich die aktualisierten Bereitstellungsprofile in XCode nicht heruntergeladen habe (danach habe ich auch XCode neu gestartet).

(Einstellungen> Konten> Details anzeigen> Alle herunterladen)

Ken
quelle
3

Sie können universelle Links im Simulator testen

Aus dem App Search-Programmierhandbuch: Unterstützung universeller Links

holmesal
quelle
6
Hat jemand universelle Links bekommen, um in einem Simulator zu arbeiten? Ich habe es unzählige Male versucht und es funktioniert nie. Es funktioniert jedoch mit einem realen Gerät mit denselben Flüssen.
Tony
Ich konnte das auch nicht testen. Der Versuch, Safari dazu zu bringen, universelle Links im Simulator auszulösen, war erfolglos, obwohl es auf einem physischen Gerät ordnungsgemäß funktioniert.
Albert Bori
Ich konnte sie auch nicht dazu bringen, im Simulator zu arbeiten. @ AlbertBori hast du das zum Laufen gebracht?
Chib
Ich bin mir fast sicher, dass sie im Simulator nicht funktionieren . Ich bin mit all den anderen Fallstricken vertraut, und ich kann sie nie dazu bringen, im Simulator zu arbeiten.
Fattie
3

Nach zwei Tagen stellte sich für mich heraus, dass diese Art von Links (von der Filiale)

applinks: xxxx.app.link

Arbeiten Sie erst nach der Archivierung (auch Ad-hoc) der Anwendung und installieren Sie sie auf dem Telefon.

Bence Pattogato
quelle
3

Wenn Sie Ihre apple-app-site-associationauf Firebase hosten , stellen Sie sicher, dass Sie sie im /.well-known/Unterverzeichnis ablegen! Es scheint, dass Xcode diese URL zuerst abfragt. Wenn dies erfolgreich ist, wird kein Versuch unternommen, die URL apple-app-site-associationim Stammverzeichnis abzufragen . Aus irgendeinem Grund haben Firebase-Ingenieure die gehosteten Websites so eingestellt, dass sie automatisch /.well-known/apple-app-site-associationmit einer leeren (aber korrekt erstellten) Zuordnungsdatei antworten , die Ihre benutzerdefinierte überschreibt, sodass Sie keine Ahnung haben, warum nichts funktioniert!

nalexn
quelle
2
Schließlich! Vielen Dank. Ist es irgendwo geschrieben? Firebase sollte irgendwo dokumentieren.
Berkay Turancı
2

Gehen Sie zu developer.apple.com und bearbeiten Sie eines Ihrer Distributionsprofile. Auf der Bearbeitungsseite können Sie ein Popup für App-IDs öffnen , in dem eine Liste Ihrer App-Namen angezeigt wird. In () runden Klammern hinter dem Namen der App werden alle Ihre tatsächlichen App-IDs angezeigt . Einige Apps haben möglicherweise Ihre Team-ID als Präfix, andere nicht . Stellen Sie sicher, dass Sie genau das verwenden, was Sie in diesem Popup-Menü innerhalb von () sehen, und fügen Sie es in das Feld appID der Apple-App-Site-Zuordnungsdetails ein. Ich hatte genau dieses Problem mit einer App und ihren universellen Links.

MacMark
quelle
2

Das Problem für mich war die apple-app-site-associationDatei. Laut Apple-Dokumentation ist nur der Parameter applinks erforderlich. Ich habe den activitycontinuationParameter hinzugefügt und es hat funktioniert.

{
  "activitycontinuation": {
    "apps": [
      "9JA89QQLNQ.com.apple.wwdc"
    ]
  },
  "applinks": {
    "apps": [],
    "details": [{
        "appID": "9JA89QQLNQ.com.apple.wwdc",
        "paths": [ "/wwdc/news/", "/videos/wwdc/2015/*" ]
      }]
  }
}
Chris
quelle
3 Jahre später und wir haben genau dieses Problem getroffen. Das Hinzufügen activitycontinuationhat es für uns behoben.
Readyornot
2

Ich habe nicht genau die gleiche Problem- / Lösungskombination gesehen, die es für mich zum Laufen gebracht hat, also könnte ich auch meine hinzufügen, falls jemand das gleiche Problem hat!

Für meine App verwende ich ein benutzerdefiniertes URL-Schema (festgelegt in APP_TARGET > Info > URL Types ) und setze das URL-Schema von hier in der Firebase-Konsole so, dass es übereinstimmt, aber immer noch nicht funktioniert.

Mein Problem waren eigentlich zwei Probleme:

Achten Sie darauf, ob Sie die Option Signatur automatisch verwalten aktivieren

Wenn Sie die Xcode-Einstellung "Signatur automatisch verwalten" wie bisher überprüfen, da ich nur versucht habe, eine schnelle Demo-App zu erstellen, sollten Sie sicherstellen, dass die verwendete TeamID mit der in Ihrer Firebase-Konsole übereinstimmt. Ich ging ursprünglich zu meinem Apple Developer Account und kopierte die Team-ID von meiner Mitgliederseite. Später stellte ich jedoch fest, dass die von Xcode tatsächlich verwendete ID anders war. (Sie finden dies in APP_TARGET > General > Signing > Signing Certificate.Für mich sah es so aus iPhone Developer: My Name (TEAM_ID)).

Stellen Sie Ihre TeamID Ihrer Bundle-ID in Ihren URL-Typen voran

Nachdem ich sichergestellt hatte, dass diese in meiner Firebase-Konsole und in Xcode übereinstimmen, war mein nächstes Problem die Kennung für mein URL-Schema. Es ist typisch, dass Sie hier Ihre Bundle-ID verwenden, aber Firebase stellt dieser tatsächlich die Team-ID voran, die Sie in Ihrer Firebase-Konsole angegeben haben. Daher musste ich sie auch der ID im Abschnitt URL-Typen in Xcode voranstellen.

Nach diesen beiden Korrekturen und dem erneuten Herunterladen der GoogleService-Info.plistDatei hatte ich kein Problem damit, meine dynamischen Links zu öffnen.

Kyle H.
quelle
2

Nach zwei Tagen totaler Verzweiflung denke ich, dass ich es endlich behoben habe. Hier ist meine Lösung:

Es scheint, dass ältere Apps ein anderes App-Präfix verwenden als neuere Apps. Neuere Apps verwenden nur die Team-ID für diesen Zweck. Wenn das App-Präfix und die Team-ID nicht identisch sind, müssen Sie anscheinend das Feld für die Fortsetzung der Aktivität in der Zuordnungsdatei der Apple App-Site angeben:

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

Eine andere Sache, die ich während meiner Höllenfahrt erlebt habe, war, dass das Löschen der App und das Neustarten des Geräts die einzige Möglichkeit zu sein scheint, das Aktualisieren dieser Datei zu erzwingen.

Sebastian Boldt
quelle
1

Für mich war mein Fehler, dass unsere Website www.domain.com zu domain.com umleitet, sodass alle www.domain.com/* aus diesem Grund fehlschlagen. Hoffentlich hilft das.

wzhang84
quelle
1

Ich konnte Universal Links im iOS-Simulator mithilfe der Kalender-App testen.

Ich habe gerade ein Ereignis erstellt und die URL, die ich testen wollte, in das URLFeld des Ereignisses eingefügt . Wenn Sie dann das erstellte Ereignis anzeigen, können Sie einfach auf den URL-Link tippen und Ihre App sollte geöffnet werden.

Tiago Alves
quelle
Das scheint bei mir nicht zu funktionieren, ich habe alles versucht, um sie dazu zu bringen, ohne Erfolg im Simulator zu arbeiten. Sie funktionieren gut auf dem eigentlichen Gerät, aber das ist nicht ideal für die Entwicklung / das Debuggen. Ich habe versucht, lange auf den Link zu drücken, und es gibt keine Option "In App öffnen".
Chib
1

Nachdem ich einen Tag lang versucht hatte, dies zum Laufen zu bringen, löste ein Neustart meines Telefons das Problem.

Das Deinstallieren / Neuinstallieren der App hat ebenfalls nicht funktioniert.

Gerber Burton
quelle
1

Für ios13 gibt es ein neues Format - siehe https://developer.apple.com/documentation/safariservices/supporting_associated_domains_in_your_app?language=objc

Ich habe meine Datei so aktualisiert, dass sie so aussieht:

{
  "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
quelle
Sie müssten zum Objekt hinzufügen "exclude": true, um wahr zu seincomponentscomment
Skornos
@ Skornos guter Punkt. Ich werde meine Antwort ändern.
Anita
0

Für zukünftige Leser, die diese Seite finden ...

Ich hatte eine ähnliche Situation. In meiner Situation funktionierte iOS10 jedoch mit AOK, und unabhängig davon, was ich tat (Build-Nummern erhöhen, löschen / neu installieren usw.), schien iOS9 die Arbeit zu verweigern.

Ich kam von iOS10 dazu und musste iOS9 unterstützen. In der Dokumentation hier - https://developer.apple.com/library/content/documentation/General/Conceptual/AppSearch/UniversalLinks.html - wird derzeit eindeutig angegeben, dass die Datei möglicherweise im Stammverzeichnis des Webservers abgelegt ist (zB /apple-app-site-association) oder im bekannten Ordner (zB /.well-known/apple-app-site-association). Da ich auch Android unterstütze, das auch den bekannten Ordner für eine ähnliche Datei verwendet, habe ich beschlossen, beide dort abzulegen.

Bei Neuinstallationen unter iOS10 wird die Stammdatei eindeutig angefordert, schlägt fehl, fordert dann die bekannte Datei an und ist erfolgreich.

Für iOS9 wurde die Stammdatei eindeutig angefordert, schlägt fehl und es wird nichts anderes ausgeführt.

Lösung: Wenn Sie iOS9 unterstützen, legen Sie die Datei bei ab /apple-app-site-association.

Greymouser
quelle
0

In meinem Fall bestand mein Fehler darin, Abfrageparameter in Pfade einzufügen:

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

Wenn ich '? target = bestätige & *' aus den Pfaden entferne, beginnt es zu funktionieren

Vins
quelle