首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ios与js的交互

iOS 与 JS 的交互主要通过 WKWebView 实现。

基础概念: WKWebView 是苹果在 iOS 8 中引入的一个用于在 iOS 应用中显示网页内容的控件。

相关优势:

  • 性能较好,相比旧的 UIWebView 资源消耗更少。
  • 提供了更现代的网页渲染和交互能力。

类型:

  • JavaScript 调用 iOS 方法:通过 WKScriptMessageHandler 协议实现。
  • iOS 调用 JavaScript 方法:使用 evaluateJavaScript 方法。

应用场景:

  • 在 iOS 应用中嵌入网页,并实现网页与原生功能的交互,例如获取用户信息、调用支付功能等。

示例代码:

JavaScript 调用 iOS 方法:

代码语言:txt
复制
import WebKit

class ViewController: UIViewController, WKScriptMessageHandler {
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let webViewConfiguration = WKWebViewConfiguration()
        let userContentController = WKUserContentController()
        userContentController.add(self, name: "nativeHandler")
        webViewConfiguration.userContentController = userContentController
        
        let webView = WKWebView(frame: self.view.frame, configuration: webViewConfiguration)
        self.view.addSubview(webView)
        
        if let url = URL(string: "https://your-web-page.com") {
            let request = URLRequest(url: url)
            webView.load(request)
        }
    }
    
    func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
        if message.name == "nativeHandler", let messageBody = message.body as? String {
            print("Received message from JavaScript: \(messageBody)")
        }
    }
}

对应的 JavaScript 代码:

代码语言:txt
复制
window.webkit.messageHandlers.nativeHandler.postMessage('Hello from JavaScript');

iOS 调用 JavaScript 方法:

代码语言:txt
复制
webView.evaluateJavaScript("document.title") { (result, error) in
    if let title = result as? String {
        print("Page title: \(title)")
    }
}

常见问题及解决方法:

  • 交互不成功:检查 WKWebView 的配置是否正确,包括 WKScriptMessageHandler 的注册名称是否匹配。
  • 数据格式错误:确保 JavaScript 传递给 iOS 的数据格式和 iOS 期望的格式一致。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

1分8秒

005-与InfluxDB的交互方式

51分57秒

14. 尚硅谷_Zepto_实战练习JS交互功能实现.avi

2分1秒

轮式装载机与可变形地形交互的仿真与现实差距研究对比

11分26秒

第7章系统交互工具与编辑器2

16分56秒

第7章系统交互工具与编辑器1

1分39秒

二维组件与三维模型交互技巧

3分0秒

软件测试|安卓与iOS在APP测试有哪些区别

27分32秒

37_尚硅谷_HBaseAPI_与MR交互(官方案例)

11分40秒

Golang教程 智能合约 55 手动部署合约与交互 学习猿地

-

小米员工:iOS没做到的,我们做到了

1分30秒

iOS开发需要不同类型的证书

1分30秒

iOS开发需要不同类型的证书

领券