Non sono sicuro di comprendere appieno la tua domanda.
Proprio ai principi fondamentali di copertura, mi permetto di Apple per spiegare what a Universal Link is: link
universali consentono agli utenti di aprire la tua app quando si tocca link al tuo sito web entro viste WKWebView e UIWebView e le pagine di Safari, oltre a collegamenti che risultano in una chiamata a openURL :, come quelli che si verificano in Mail, Messaggi e altre app.
Quindi, in pratica, immaginate che si sta lavorando su un client Twitter, e passando attraverso la timeline, si incontra un tweet con il seguente link del video su YouTube: https://youtu.be/ejQod8liXm0
Se si tocca, dal momento che è un HTTP URL, ti aspetteresti che Safari apra il link. Tuttavia, penso che tutti gli sviluppatori iOS possano essere tutti d'accordo sul fatto che le app native sono migliori, quindi un'esperienza utente migliore sarebbe per l'app YouTube ufficiale per aprire il video, anche dal client di terze parti .
Questo è ciò che consentono i "collegamenti universali"; se l'app YouTube si registra su iOS come l'app responsabile della gestione dei collegamenti https://www.youtube.com (*), , tutti gli ecosistemi iOS beneficiano se seguiamo le regole API. La stessa cosa accade se si esegue un sito Web e si desidera che i propri contenuti attivino l'app iOS ufficiale da aprire se l'utente lo ha installato o se l'utente deve essere richiesto se desidera installarlo per un utente migliore esperienza (e per aiutare la tua attività, ovviamente).
Quindi, con tutto questo fuori del modo, torniamo al testo originale:
Se si crea un'istanza di un oggetto SFSafariViewController, WKWebView, o UIWebView di gestire un collegamento universale, iOS apre tuo sito web in Safari invece di aprire la tua app. Tuttavia, se l'utente tocca un collegamento universale da un oggetto SFSafariViewController, WKWebView o UIWebView incorporato, iOS apre l'app.
Ciò significa che, se dalla tua app, il tuo utente tocca su un collegamento universale al contenuto (ad esempio: http://www.your-company.com/foo), e non si rilevano questo nel codice dell'app tramite un'espressione regolare, ad esempio, e invece istanziare un SFSafariViewController
, WKWebView
o UIWebView
per aprirlo come se fosse un normale collegamento a The New York Times o qualcosa del genere, il sistema operativo capirà che invece di aprire questo nella tua app, vuoi che Safari gestisca questo per te. Ricorda: l'intero scopo di Universal Links è che l'utente ottenga un'esperienza migliore avendo l'URL gestito da un'app nativa, non dal browser.
Questo è quello che dice la prima frase. Per quanto riguarda il secondo, viene chiarita una potenziale domanda di follow-up: cosa succede se l'utente tocca un collegamento universale al mio contenuto da un browser incorporato da un'altra app che non è mia? Quindi, la frase dice, il sistema operativo si comporterà normalmente: aprirà la tua app, rispettando le regole di Universal Link.
TL; DR: È necessario rilevare anche i collegamenti universali per i contenuti dall'app, nel codice e gestirli. iOS non gestirà questo per voi. Invece, se comunichi al sistema operativo di aprire un link universale al contenuto della tua app in un browser incorporato dalla tua app, ciò avverrà esattamente come detto.
EDIT: Se hai bisogno di aiuto per decidere tra chiedere SFSafariViewController
oi -openURL:options:completitionHandler:
API per aprire un URL, this link should help you; la mia raccomandazione sarebbe quella di utilizzare -openURL:options:completitionHandler:
prima, e se non è successo, quindi utilizzare SFSafariViewController
o simile.
Spero che questo aiuti e che ho capito correttamente la tua domanda.
Cheers! E felice programmazione iOS 11! :)
> Se si tocca, dal momento che è un URL HTTP, ci si aspetterebbe di Safari per aprire il link Se il link di YouTube è in una normale 'UITableViewCell', avrei dovuto "gestire" il link youtube in qualche modo, con '- [UIApplication openURL: options: completionHandler:]' o con 'UIWebView',' WKWebView', o 'SFSafariViewController'. Suppongo che se io "gestisco" il link di youtube con una web view, il sistema non aprirebbe l'app di youtube, ma '-openURL: options: completionHandler:' would. Come faccio a sapere cosa fare? –
Il seguente link fornisce le risposte che stai cercando, penso: https://useyourloaf.com/blog/openurl-deprecated-in-ios10/ L'idea è che puoi usare '-openURL: options: completitionHandler : 'prima, e se non ha successo (** successo' boolean' è 'false' **), puoi usare' SFSafariViewController' o simile. – dinesharjani
Si prega di aggiornare la risposta per includerla direttamente e contrassegnare l'utente come corretto. Grazie! –