iOS 和 js 交互

js调用iOS代码

1、iOS定义方法

config.userContentController.add(self, name: "iOSSavePhoto")

2、实现方法

func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
        if message.name == "iOSSavePhoto" { // 保存图片
            guard let data = try? Data.init(contentsOf: URL.init(string: (message.body as! String))!)
                else { return }
            let img = UIImage.init(data: data)
            UIImageWriteToSavedPhotosAlbum(img!, self, #selector(image(image:didFinishSavingWithError:contextInfo:)), nil)
        }
    }

3、js端实现方法

window.webkit.messageHandlers.iOSSavePhoto.postMessage("url")

js给iOS传参数

1、单个参数

// js 端
window.webkit.messageHandlers.callbackHandle.postMessage("url")
// iOS端
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
      let url: String = message.body as String
    }

注意:如果js端定义的方法没有参数,也需要传postMessage(""),否则报错。提示缺少参数。

2、多个参数

// js 端
webkit.messageHandlers.callbackHandle2.postMessage({"name": "张三", "age": "12",})
// iOS端
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
      let dic = message.body as? Dictionary
      let name: String = (dic["name"] as AnyObject).description
      let age: String = (dic["age"] as AnyObject).description
    }

iOS调用js

1、iOS 端实现

webView.evaluateJavaScript("iOSSavePhotoCallback()", completionHandler: {
            (any, error) in

        })

示例:

// 保存图片完成
@objc func image(image:UIImage,didFinishSavingWithError error:NSError?,contextInfo:AnyObject) {
        let result = error == nil ? true : false
        let jsString = "iOSSavePhotoCallback('\(result)')"
        self.webView.evaluateJavaScript(jsString, completionHandler: nil)
    }

2、js端实现方法

function iOSSavePhotoCallback() {

}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,259评论 4 61
  • 随着国家教育部对教育考试的逐步改革,小学、中学语文教学方面涉及到古典文学、中国传统文化的比重越来越大,所谓"...
    小能能不能阅读 3,084评论 15 5
  • 思维是很奇怪的东西,对于新事物做选择时,犹豫不决,是早去候车室等待?还是半夜下车?当去做了时,才发现这也不是什么事...
    小伟小伟小伟阅读 104评论 0 0
  • “从读大二那年的七月起,直到次年一月,多崎作几乎只想着死这一件事。其间他迎来了二十岁生日,但那道刻痕没有任何意义。...
    roli八说阅读 1,011评论 3 8