Javascript appel à Swift de UIWebView
Je suis en train de faire un appel à partir d'une fonction javascript dans une UIWebView à Swift dans iOS 10. J'ai mis un très de base du projet, juste pour essayer et obtenir de ce travail, le code est ci-dessous.
import UIKit
class ViewController: UIViewController, UIWebViewDelegate {
@IBOutlet var webView: UIWebView!
override func viewDidLoad() {
super.viewDidLoad()
let url = Bundle.main.url(forResource: "products", withExtension: "html")
let request = NSURLRequest(url: url! as URL)
webView.loadRequest(request as URLRequest)
}
@IBAction func closeDocumentViewer() {
displayView.isHidden = true;
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
Si je viens à recevoir une chaîne de caractères à partir d'une fonction javascript qu'aurais-je à ajouter à ce qui précède?
Vous devez vous connecter pour publier un commentaire.
Vous devez personnalisé
URL Scheme
commemyawesomeapp
et d'intercepter les requêtes à l'aide de:Feu un appel à du code natif à l'aide de
window.location=myawesomeapp://hello=world
, et obtenez la requête paramètres que vous avez passer derequest.URL.query
dans le code natif.Pour plus d'informations, voir ma question sur
UIWebView
s ici: JavaScript native communication synchrone à WKWebViewJe suggère de regarder dans l'aide de
WKWebView
au lieuUIWebView
. Ensuite, vous n'aurez pas besoin de vous inscrire personnalisé schéma d'URL. En outre, UIWebView est obsolète et WKWebView a beaucoup d'avantages, notamment la performance et le rendu qu'il s'exécute dans un processus séparé.Lien vers la documentation d'Apple et de la recommandation de l'utilisation de WKWebView
https://developer.apple.com/reference/webkit/wkwebview/
Cela dit, il est très simple d'installation natif javascript pont:
Ensuite dans votre code javascript, appeler:
J'ai écrit une bibliothèque qui tire parti de ce et ajoute un peu de fantaisie à la syntaxe javascript.
https://github.com/tmarkovski/BridgeCommander
Pour l'utiliser il suffit de référence du projet (ou ajouter de la swift et les fichiers javascript de votre projet Xcode) et d'appeler
Vous serez alors en mesure d'utiliser de rappel de la syntaxe du javascript comme ceci
BridgeCommander
@TomislavMarkovski!;)