1

Meine app verwendet in verschiedenen Bildschirmen:Wie kann ich universelle Links verwenden, wenn ich in meiner eigenen App openURL aufrufen?

[[UIApplication sharedApplication] openURL:url]; 

, um URLs aus meiner Web-Service erhalten zu öffnen. Manchmal sind diese URLs nicht mit meinem Projekt verknüpft, daher ist es OK, sie in Safari zu öffnen. Andere, diese URLs gehören zu meinen eigenen, wie ein Produktdetail. Diese können von meiner App mit universellen Links geöffnet werden und auf den richtigen Bildschirm gehen, aber das passiert nicht.

Lese Apfel docs habe ich diese: „Es ist wichtig zu verstehen, dass, wenn Ihre App openURL verwendet. Einen universellen Link zu Ihrer Website zu öffnen, wird die Verbindung nicht in der App öffnet In diesem Szenario iOS erkennt an, dass Der Anruf stammt aus Ihrer App und sollte daher von Ihrer App nicht als universeller Link behandelt werden. " https://developer.apple.com/library/content/documentation/General/Conceptual/AppSearch/UniversalLinks.html

Dieses Verhalten verwirrt mich. Wie kann ich mit openURL versuchen, zuerst diese URL in meiner App zu verarbeiten, anstatt direkt in Safari zu gehen?

Ich fand eine schnelle/schmutzige Abhilfe. Entfernen Sie openURL und verwenden Sie es jedes Mal, wenn meine App openURL verwendet:

NSUserActivity * userActivity = [[NSUserActivityTypeBrowsingWeb]; insertWithActivityType: NSUserActivityTypeBrowsingWeb]; userActivity.webpageURL = URL; [[UIApplication sharedApplication] .delegate-Anwendung: [UIApplication sharedApplication] continueUserActivity: userActivity restorationHandler: nil];

Beachten Sie, dass meine appdelegate Anwendung: continueUserActivity: WiederherstellungHandler: URLURL jede URL, die nicht einen bestimmten Bildschirm in meiner App hat, weiterleiten, so funktioniert es vollkommen in Ordnung, aber ich denke, das ist eine schreckliche Lösung. Haben Sie eine Idee oder einen Vorschlag?

+0

Können Sie das genauer erklären? Sie müssen mit einigen URLs umgehen und öffnen Sie es in Ihrer App, und überspringen Sie einige Links und öffnen Sie es in Safari? –

Antwort

2

Ihre Lösung scheint vernünftig. Warum ist das schrecklich?

Wahrscheinlich können Sie eine schönere Lösung implementieren, wie die Standalone-Klasse LinkHandler. Die Klasse kann feststellen, ob der Link von Ihrer App gehandhabt werden kann (als dass sie die App-Handhabung verwenden würde). Andernfalls übergibt die Klasse diesen Link an iOS mit [UIApplication openURL:].

Viele Apps tun dies, stellen Sie sich vor, wie Google+ oder Facebook iOS Apps mit Links, die in diesen sozialen Netzwerken gepostet werden, umgehen würde.

+0

Danke für die Antwort. Kennst du bestimmte Beispiele, in denen so etwas verwendet wird? Vielen Dank. – Ricardo

+1

Ein wichtiger Hinweis: NSUserActivity/NSUserActivityTypeBrowsingWeb verarbeitet nur HTTP- und HTTPS-URLs. Wenn du auf einen Link wie mailto: ... klickst, stürzt die App ab, also in diesem Fall redirect auf openURL und Problem behoben. – Ricardo

Verwandte Themen