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

ios与js交互 demo

在iOS开发中,与JavaScript交互通常是通过WKWebView来实现的。以下是一个简单的iOS与JavaScript交互的示例:

1. 创建一个简单的iOS应用

首先,创建一个新的iOS项目,并确保选择Swift作为编程语言。

2. 添加WKWebView

在你的ViewController中添加一个WKWebView

代码语言:txt
复制
import UIKit
import WebKit

class ViewController: UIViewController, WKScriptMessageHandler {
    var webView: WKWebView!

    override func viewDidLoad() {
        super.viewDidLoad()

        let config = WKWebViewConfiguration()
        config.userContentController.add(self, name: "nativeApp")

        webView = WKWebView(frame: self.view.frame, configuration: config)
        self.view.addSubview(webView)

        if let url = Bundle.main.url(forResource: "index", withExtension: "html") {
            webView.loadFileURL(url, allowingReadAccessTo: url)
        }
    }

    func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
        if message.name == "nativeApp", let messageBody = message.body as? String {
            print("Received message from JavaScript: \(messageBody)")
            // 这里可以处理从JavaScript发送过来的消息
        }
    }
}

3. 创建一个HTML文件

在项目的Bundle中添加一个index.html文件,并添加以下内容:

代码语言:txt
复制
<!DOCTYPE html>
<html>
<head>
    <title>JavaScript to iOS</title>
    <script type="text/javascript">
        function sendMessageToNativeApp() {
            window.webkit.messageHandlers.nativeApp.postMessage("Hello from JavaScript!");
        }
    </script>
</head>
<body>
    <h1>JavaScript to iOS Communication Demo</h1>
    <button onclick="sendMessageToNativeApp()">Send Message to Native App</button>
</body>
</html>

4. 运行应用

运行你的iOS应用,你应该会看到一个按钮。当你点击按钮时,JavaScript会发送一条消息到iOS应用,iOS应用会在控制台中打印出这条消息。

解释

  1. WKWebView: WKWebView是iOS中用于显示网页内容的视图。
  2. WKWebViewConfiguration: 用于配置WKWebView,包括设置WKUserContentController
  3. WKUserContentController: 用于管理JavaScript与iOS之间的消息传递。
  4. WKScriptMessageHandler: 这是一个协议,用于处理从JavaScript发送过来的消息。
  5. window.webkit.messageHandlers: 在JavaScript中,通过这个对象可以发送消息到iOS应用。

优势

  • 实时交互: JavaScript和iOS应用可以实时交互,适用于需要动态更新内容的场景。
  • 灵活性: 可以在iOS应用中嵌入复杂的网页内容,并与之交互。
  • 跨平台: 使用标准的Web技术,可以更容易地在不同平台上实现类似的功能。

应用场景

  • 混合应用: 在iOS应用中嵌入网页内容,并实现与原生功能的交互。
  • 动态内容更新: 通过JavaScript动态更新网页内容,而不需要重新加载整个页面。
  • 表单验证: 在客户端进行初步的表单验证,并将结果发送到iOS应用进行进一步处理。

常见问题及解决方法

  1. 消息无法传递:
    • 确保WKWebViewConfiguration中的userContentController已经添加了消息处理器。
    • 确保JavaScript中的window.webkit.messageHandlers名称与iOS中的名称一致。
  • 安全性问题:
    • 确保只加载可信的网页内容,避免跨站脚本攻击(XSS)。
    • 使用WKWebViewallowsReadAccessTo方法限制JavaScript可以访问的文件路径。

通过以上步骤,你可以实现一个简单的iOS与JavaScript交互的示例。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • iOS与JS的交互

    iOS和JS的交互看似两个问题,其实要解决的问题只有一个,那就是JS如何调用native方法。...= NSNotFound) { /* 1.检测到链接中包含有特殊字段,客户端要接受响应并做后续处理这就相当于js调起了iOS, 2.在真实的使用时,客户端需要和...,JS可以直接用oc方法名来调用oc方法,这样就类似于安卓的addJavaScriptInterface方法,在使用此方法时仍然要导入JavaScriptCore //第一步:创建一个用与JS交互的类JSHandler...>问候2 4.使用第三方工具类:WebViewJavascriptBridge 还未使用过,暂时不做过多介绍 demo的github地址: https://github.com.../DreamcoffeeZS/OC-And-JS 参考链接: http://www.cocoachina.com/ios/20160127/15105.html http://www.jianshu.com

    4.1K70

    iOS开发中OC与JS交互(UIWebView)

    https://blog.csdn.net/u010105969/article/details/53189934 之前虽然做过OC与JS交互,但都是比较简单的效果:点击网页中的图片,然后进行图片浏览...现在对OC与JS交互这块也不是很清楚,今天只是把之前的代码贴过来以便今后更好地理解OC与JS的交互。 首先需要往网页中注入JS。注入JS的工作是后台做的。...可好像安卓和iOS还是有区别的,因为之前安卓那边可以实现与JS的交互,而我这边却不能。后台后台修改了代码,我这边也就可以进行交互了。...                                           } Objective-C和JavaScript交互的那些事...附上利用WKWebView加载网页OC与JS的交互的地址: http://mp.blog.csdn.net/postedit/53541088

    3.9K30

    iOS小技能:WKWebView与JS的交互

    前言 由于目前UIWebView 已经被抛弃了,因此推荐使用WKWebView的WKScriptMessageHandler实现iOS与JS交互 WKWebView是Apple在iOS8推出的Webkit...框架中的负责网页的渲染与展示的类,相比UIWebView速度更快,占用内存更少,支持更多的HTML特性 I JS调用iOS 使用例子:点击页面图片,调用iOS方法进行图片放大显示 1.1 JS代码: window.webkit.messageHandlers.openImage.postMessage...see also iOS利用JSExport协议实现与JS的交互 & android 和js的交互 https://blog.csdn.net/z929118967/article/details/77963082...因此,「同层渲染」的原生组件与普通的内置组件表现并无二致。 同层渲染不仅解决了原生组件的层级问题,同时也让原生组件有了更丰富的展示和交互的能力。...UIProcess进程:主要负责与 WebContent 进行交互,与 APP 在同一进程中,可以进行 WebView 的功能配置,并接收来自 WebContent 进程的各类消息,配合业务代码执行任务的决策

    7.3K30

    iOS_与H5界面JSBridge交互Demo

    iOS与H5界面JSBridge交互Demo 我用了一个library(GCWebviewJSBridge-iOS), github网址:github.com/wheying/GCWebviewJSBridge-iOS...他的Demo不太容易看得懂, 看得我一脸懵逼, 我写了一个简洁明了的Demo 首先做好准工作, 建立一些基本的视图 iOS的准备工作 // 1.新建WebView...注册方法提供给JS调用 iOS注册访问相册方法 [_bridge registerObjCHandler:@"openCamera" handler:^(id data, GCWVJSBResponseCallback...JS注册方法提供给iOS调用 iOS注册提供用户信息方法 /* JS给OC提供公开的API, 在OC中可以手动调用此API, 并且可以接收OC中传过来的参数,同时可回调OC */ // 获取用户信息...直接看代码:Demo下载地址 哎~ 这种方式实现,需要三方配合测试, 真的是很麻烦啊~

    79310

    iOS iOS与html进行交互

    然后点击下一页的按钮 通过js的响应显示另一个网页          最后通过下一页的按钮可以返回到首页。     本文仅仅是h5跟ios 的交互的入门 所以没有做细致的描述。...首先先说一下思路:我的项目中是那样的:首先h5从后台拿到数据,然后我请求h5的界面,然后通过h5的按钮进行选择,通过ios控制按钮到那个界面。 这个小demo不涉及数据传输,只是界面的交互。...简单的实现了交互。...2.允许js的Nitro库加载并使用(uivieqview中限制) 3.支持更多的html5特性 4.高达60fps的滚动刷新频率以及内置手势 5.将uiviewviewdelegate与uiwenview...developer.apple.com/reference/webkit) 下边开始讲使用了哦 准备工作: 1.设置oc代码 2.设置html代码 3.运行   oc代码: // // ViewController.m // OC与JS

    2.4K100

    Java与js的交互

    在android的开发过程中,有很多时候需要用到本地java代码和javascript进行交互。...android对交互进行了很好的封装,在开发中我们可以很简单的用java代码调用webview中的js,也可以用webview中的js来调用本地的java代码,这样我们可以实现很多原来做不了的功能,比如点击网页上的电话号码后...废话不多说,这次教程的目标如下 android 中的java代码调用webview里面的js脚本 webview中的js脚本调用本地的java代码 java调用js并传递参数 js调用java并传递参数...脚本就可以通过我们给的这个别名来调用我们的方法,在上面的代码中,this是实例化的对象,wst是这个对象在js中的别名 功能三 java代码调用js并传递参数 只需要在待用js函数的时候加入参数即可...的函数test()的参数 功能四 js调用java函数并传参,java函数正常书写,在js脚本中调用的时候稍加注意 然后在html页面中,利用如下代码,即可实现调用 <a

    5K90

    UIWebView与JS的交互

    Github上的WebViewJavascriptBridge 这个用于UIWebView/WebViews和JS交互的封装库。 看sample的时候我容易被各种回调搞晕,我们先看代码。...中,交互的方式只有两种:send 和 callHandle,JS和OC都有这两个方法,所以对应的四种关系是: ?...这个例子展现了一个完整的过程,基本涉及了JS和OC的各种交互包括OC调用JS、JS调用OC等。如果你有其它的业务需求,也基本按照这个流程就可以依样画葫芦了,唯一不同的也就是业务逻辑了。...选择控制台,你就可以看到久违的调试窗口以及JS的console.log了。 ? 以上就是使用 WebViewJavascriptBridge 进行UIWebView与JS的深度交互的例子。...Node.JS都可以写服务器了,React Native都可以开发iOS了。学无止境,iOS应该先搞定OC和Swift再去搞前端。 参考:UIWebView与JS的深度交互

    3.7K20
    领券