Quando eseguo una ricerca su google e faccio clic su Etsy.com per exmaple, WKWebView mi reindirizza all'app Etsy installata sul mio iPhone. Come posso disabilitare questo comportamento? Voglio WKWebView per reindirizzarmi al sito web etsy.com mobile. Sto usando swift.Disabilitare WKWebView per aprire i collegamenti al reindirizzamento alle app installate sul mio iPhone
risposta
ho installato l'app Etsy e ho confermato che cercare "etsy" in Safari e toccando il primo risultato (etsy.com) avvierà l'app Etsy.
ho creato un test "Single View Application" in Xcode e semplicemente aggiunte le linee di seguito per viewDidLoad ViewController
s':
override func viewDidLoad() {
super.viewDidLoad()
let webView = WKWebView(frame:view.bounds, configuration: WKWebViewConfiguration())
view.addSubview(webView)
webView.loadRequest(NSURLRequest(URL: NSURL(string: "https://www.google.com")!))
}
dopo la ricerca di etsy e cliccando sul primo risultato che mi porta a etsy. com nella mia app di test (non passa all'app Etsy).
hai fatto qualcos'altro nel codice che potrebbe causare WKWebView per consentire reindirizzamenti?
Sfortunatamente, WKWebView
non invia gli URL con schemi personalizzati alla tua app da gestire automaticamente.
Se ci provi senza una gestione speciale, sembrerà che la tua vista web si blocchi dopo che l'utente si è autenticato con il servizio di terze parti e non riceverai mai la tua richiamata. Potresti provare a utilizzare un URI di reindirizzamento con lo schema http o https standard, ma in tal caso, lo WKWebView
proverà semplicemente a caricarlo, anziché a dirigere dalla visualizzazione Web alla tua app nativa da gestire.
Al fine di gestire il reindirizzamento, è necessario implementare decidePolicyForNavigationAction
nel WebPolicyDelegate
del vostro WKWebView
per rilevare l'usanza URL schema e dirigerla per la vostra applicazione da trattare:
func webView(webView: WKWebView, decidePolicyForNavigationAction navigationAction: WKNavigationAction, decisionHandler: ((WKNavigationActionPolicy) -> Void)) {
print("webView:\(webView) decidePolicyForNavigationAction:\(navigationAction) decisionHandler:\(decisionHandler)")
let app = UIApplication.sharedApplication()
let url = navigationAction.request.URL
let myScheme: NSString = "https"
if (url!.scheme == myScheme) && app.canOpenURL(url!) {
print("redirect detected..")
// intercepting redirect, do whatever you want
app.openURL(url!) // open the original url
decisionHandler(.Cancel)
return
}
decisionHandler(.Allow)
}
Potete trovare Informazioni dettagliate here
Questo non funziona su iOS 9-10 ... Quando clicco su url schema personalizzato, decidePolicyForNavigationAction non viene mai chiamato. – Borzh
In circostanze normali WKWebView non deve aprire un'app di terze parti invece di accedere al sito Web, ma sono a conoscenza di 2 eccezioni
- Se è stato esplicitamente inserito un codice in un gestore di
WKNavigationDelegate
per aprire l'applicazione 3rd party - Se iOS non funziona perfettamente ragione (riavviare il dispositivo per fissare) - sembra esserci un bug, che di tanto in tanto crea il comportamento che stai descrivendo (Osservato in iOS10.2)
- 1. Ricerca dell'elenco di app installate su iphone
- 2. Dove installa le app installate sul dispositivo?
- 3. Aprire i collegamenti popup in UIWebView, possibile?
- 4. Intercettare i collegamenti dal browser per aprire la mia app per Android
- 5. WKWebView apre collegamenti da determinati domini in safari
- 6. Disabilitare i collegamenti all'accessibilità nell'applicazione .NET?
- 7. Collegamenti alle app Facebook e Twitter postare le pagine
- 8. Alphabatize elenco di app installate
- 9. Come sfogliare i dati di base nella mia app in esecuzione sul mio iPhone?
- 10. WKWebView si blocca sul deinit
- 11. Dove iPhone Simulator memorizza le applicazioni installate?
- 12. Come posso disabilitare il colore al passaggio del mouse di bootstrap per i collegamenti
- 13. WKWebView contenuto che salta sul carico
- 14. Come disabilitare completamente lo scorrimento in WKWebView?
- 15. Attività Android App installate come icone multiple
- 16. duplicati iPhone Simulatori apparso sul mio Xcode
- 17. Avvio di collegamenti telefono/email/mappa in WKWebView
- 18. Alternative al NSHost in iPhone app
- 19. Come disabilitare un pulsante utilizzando i collegamenti dati in Dart?
- 20. Collegamenti in WKWebView in modo casuale non selezionabili
- 21. Come aprire i collegamenti in Apple Maps o Google Maps?
- 22. come trasferisco la mia applicazione iPhone sul mio vero iPhone?
- 23. Apri Facebook Post in Facebook App Da iPhone App
- 24. URL di reindirizzamento al sito spyware
- 25. Linee blu sotto i collegamenti sul mio sito anche se ho disattivato tutti i CSS correlati?
- 26. aprire i collegamenti esterni in una nuova scheda senza jQuery
- 27. Cache per WKWebView
- 28. App private per iPhone?
- 29. Quando è possibile utilizzare un SFSafariViewController, WKWebView o UIWebView con collegamenti universali?
- 30. Xamarin Nessun profilo di provisioning installato corrisponde alle chiavi di firma del codice iOS installate
Si potrebbe provare a intercettare il collegamento in "WKNavigationDelegate' e mostrare il sito Web. –
Puoi spiegare di più per favore? – gal
Sicuro. Se si implementa 'WKNavigationDelegate', il metodo' webView (_ webView: WKWebView, decidePolicyForNavigationAction navigationAction: WKNavigationAction, decisionHandler decisionHandler: (WKNavigationActionPolicy) -> Void) 'dovrebbe essere chiamato ogni volta che si fa clic su un collegamento. Controlla la proprietà 'navigationAction.request.URL' per assicurarti che non sia Etsy, per esempio; se lo è, cancella la navigazione usando decisionHandler e vai sul sito web usando 'loadRequest()'. Speriamo che questo impedisca il Deep Linking. –