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

WKWebView是否可以调用主应用程序中的函数并获得返回值?

WKWebView是一种用于iOS应用程序中的Web浏览器控件,它可以加载和显示网页内容。它是苹果公司提供的一种基于WebKit引擎的控件,可以在应用程序中嵌入网页,并提供与网页交互的能力。

在WKWebView中,可以通过JavaScript与主应用程序进行交互,包括调用主应用程序中的函数并获取返回值。这种交互是通过WKWebView的WKScriptMessageHandler协议来实现的。具体步骤如下:

  1. 在主应用程序中,创建一个遵循WKScriptMessageHandler协议的对象,并将其注册到WKWebView中。这个对象将负责处理从网页发送过来的消息。
  2. 在网页中,通过JavaScript代码使用window.webkit.messageHandlers对象来调用主应用程序中的函数。可以通过这个对象的postMessage方法将消息发送给主应用程序。
  3. 在主应用程序中,实现WKScriptMessageHandler协议的方法,处理从网页发送过来的消息。可以在这个方法中调用主应用程序中的函数,并将返回值发送回网页。

通过这种方式,WKWebView可以与主应用程序进行双向通信,实现网页与应用程序的无缝集成。这在一些需要网页与应用程序交互的场景中非常有用,比如在网页中调用应用程序的特定功能,获取应用程序中的数据等。

腾讯云提供了一系列与移动开发相关的产品和服务,其中包括云服务器、云存储、云数据库等。这些产品可以帮助开发者构建稳定、高效的移动应用程序,并提供与移动开发相关的解决方案。具体推荐的腾讯云产品和产品介绍链接如下:

  1. 云服务器(CVM):提供可扩展的虚拟服务器,适用于移动应用程序的后端开发和部署。详情请参考:https://cloud.tencent.com/product/cvm
  2. 云存储(COS):提供安全可靠的对象存储服务,适用于移动应用程序的文件存储和管理。详情请参考:https://cloud.tencent.com/product/cos
  3. 云数据库MySQL版(CDB):提供高性能、可扩展的关系型数据库服务,适用于移动应用程序的数据存储和管理。详情请参考:https://cloud.tencent.com/product/cdb_mysql

请注意,以上推荐的腾讯云产品仅供参考,具体选择应根据实际需求进行评估和决策。

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

相关·内容

  • WKWebView

    其他区别如下: 1,UIWebView是UIKit框架一部分,可以应用程序内使用,无需导入任何内容;而WKWebView使用是WebKit.framework,使用时候需要导入到应用程序。...WKWebView用法 ? WKWebView API WKWebView对象可以显示交互式Web内容,例如应用内浏览器。你可以使用WKWebView类将web内容嵌入到你应用程序。...默认情况下,Web视图会自动将出现在Web内容电话号码转换成电话链接。当电话链接被点击时,电话应用程序就会启动拨打该号码。...布尔值,用于确定是否按下连接可以显示链接目标的预览。 - goBack。导航到后退列表后腿项。 - goForward。导航到后退列表前进项。...内容进程终止时调用,可在该函数重新创建新WKWebView,然后自动重新加载页面。

    6K20

    Hybrid App 应用 开发 9 个必备知识点复习(WebView 调试 等)

    库加载使用, UIWebView 限制了; WKWebView 目前缺少关于页码相关 API; WKWebView 提供加载网页进度属性; WKWebView 使用 Safari 相同 JavaScript...解决办法: 借助 WKNavigtionDelegate 当 WKWebView 总体内存占用过大,页面即将白屏时候,系统会调用上面的回调函数,我们在该函数里执行[webView reload]...检测 webView.title 是否为空 并不是所有 H5 页面白屏时候都会调用上面的回调函数,比如,最近遇到在一个高内存消耗 H5 页面上 present 系统相机,拍照完毕后返回原来页面的时候出现白屏现象...在 WKWebView 白屏时候,另一种现象是 webView.titile 会被置空, 因此,可以在 viewWillAppear 时候检测 webView.title 是否为空来 reload...Step over next function call:执行到下一步函数调用(跳到下一行)。 Step into next function call:进入当前函数

    3.1K00

    Hybrid App 应用开发 9 个必备知识点复习

    解决办法: 借助 WKNavigtionDelegate 当 WKWebView 总体内存占用过大,页面即将白屏时候,系统会调用上面的回调函数,我们在该函数里执行 [webView reload]...检测 webView.title 是否为空 并不是所有 H5 页面白屏时候都会调用上面的回调函数,比如,最近遇到在一个高内存消耗 H5 页面上 present 系统相机,拍照完毕后返回原来页面的时候出现白屏现象...在 WKWebView 白屏时候,另一种现象是 webView.titile 会被置空, 因此,可以在 viewWillAppear时候检测 webView.title 是否为空来 reload 页面...更强大 WebView 界面调试功能需要 Chrome31 或更高版本。 Android 应用程序 WebView 配置为可调试模式。...Stepovernextfunctioncall:执行到下一步函数调用(跳到下一行)。 Stepintonextfunctioncall:进入当前函数

    2.7K20

    【Hybrid】288- Hybrid App 应用开发 9 个必备知识点复习

    解决办法: 借助 WKNavigtionDelegate 当 WKWebView 总体内存占用过大,页面即将白屏时候,系统会调用上面的回调函数,我们在该函数里执行 [webView reload](这个时候...检测 webView.title 是否为空 并不是所有 H5 页面白屏时候都会调用上面的回调函数,比如,最近遇到在一个高内存消耗 H5 页面上 present 系统相机,拍照完毕后返回原来页面的时候出现白屏现象...在 WKWebView 白屏时候,另一种现象是 webView.titile 会被置空, 因此,可以在 viewWillAppear时候检测 webView.title 是否为空来 reload 页面...9. goBack API问题 WKWebView调用 -[WKWebViewgoBack], 回退到上一个页面后不会触发 window.onload() 函数、不会执行JS。 10....Stepovernextfunctioncall:执行到下一步函数调用(跳到下一行)。 Stepintonextfunctioncall:进入当前函数

    2.3K20

    Hybrid App 应用开发 9 个必备知识点复习

    解决办法: 借助 WKNavigtionDelegate 当 WKWebView 总体内存占用过大,页面即将白屏时候,系统会调用上面的回调函数,我们在该函数里执行 [webView reload](这个时候...检测 webView.title 是否为空 并不是所有 H5 页面白屏时候都会调用上面的回调函数,比如,最近遇到在一个高内存消耗 H5 页面上 present 系统相机,拍照完毕后返回原来页面的时候出现白屏现象...在 WKWebView 白屏时候,另一种现象是 webView.titile 会被置空, 因此,可以在 viewWillAppear时候检测 webView.title 是否为空来 reload 页面...9. goBack API问题 WKWebView调用 -[WKWebViewgoBack], 回退到上一个页面后不会触发 window.onload() 函数、不会执行JS。 10....Stepovernextfunctioncall:执行到下一步函数调用(跳到下一行)。 Stepintonextfunctioncall:进入当前函数

    2.3K30

    iOSWebKit框架应用与解析 原

    iOSWebKit框架应用与解析 一、引言         在iOS8之前,在应用嵌入网页通常需要使用UIWebView这样一个类,这个类通过URL或者HTML文件来加载网页视图,功能十分有限,只能作为辅助嵌入原生应用程序...虽然UIWebView也可以做原生与JavaScript交互相关处理,然而也有很大局限性,JavaScript要调用原生方法通常需要约定好协议之后通过Request来传递。...WebKit框架添加了一些原生与JavaScript交互方法,增强了网页视图与原生交互能力。并且WebKit框架采用导航堆栈模型来管理网页跳转,开发者也可以更加容易控制和管理网页渲染。...二、WebKit框架概览         WebKit框架涉及类很多,框架设计十分面向对象和模块化,开发者在使用时可以轻松写出结构清晰代码。...信息应用程序名称 iOS9后可用 config.applicationNameForUserAgent = @"HS"; 四、WKWebView属性和方法解析         下面列举了WKWebView

    1.9K40

    macOS webview编程

    在swift调用网页callFromSwift函数获取其返回值可以这样做: let s=webView.windowScriptObject.evaluateWebScript(...String) //s是js函数返回结果,可以是多种类型,本例要求是string 4.从js调用swift 前面的3部分都比较容易,跟WKWebview也大同小异。...js对象,供其调用 //这里示例了两个,一个是callFromJS1,另一个是quit //注意swift函数名跟js函数可以不一样, //#selector中指明是...} 也有些程序为了简化从js调用swift工作量,会用链接方式,在链接地址传入一些指令,就可以用这个函数截获网址并且处理,被处理网址通常使用listener.ignore()来禁止本次浏览器转向...6.响应js警告窗 通常webview都是不允许jsalert警告窗,一方面是为了应用程序整体效果;另一方面,webview作为一个空间,自己没有UI控制权,所以类似的工作,是要有应用程序自己实现警告框窗口

    5.2K50

    技术 | Hybrid载体变化(一)

    在初始化WKWebView时你还需要配置一个Conf,这个Conf可以添加一个属性,这个属性在JavaScript这一边你可以通过window.webkit.messageHandlers.icepyApp...获得。...= WKWebView(frame: self.view.frame, configuration: config) 最终当你需要向Native发送消息时就需要使用这个属性调用其postMessage...“evaluateJavaScript”方法注入就好,唯一优势是在于,发送消息可以先转成JSON,然后字符串化当参数传入到一个函数里,而你函数真实接收到是一个对象,而不是字符串,这就是WKWebView...对于页面的跳转是否运行,你也可以进行监控,当然在这里只需要实现另外三个协议,比如: func webView(_ webView: WKWebView, decidePolicyFor navigationAction

    86630

    分享超详细 WKWebView 开发和使用经验

    WKWebView 几个不常用特性 WKWebview 加载过程性能指标图解 WKWebview 秒开实践及踩坑之路 今天分享这篇文章全面的介绍了 WKWebView,作者根据开发和使用经验从属性...,可以添加多个 实现 WKScriptMessageHandler 协议,实现 didReceiveScriptMessage 方法接受消息,通过 message.name 区分不通协议 - (void...Ajax 请求不会带上 Response Set-Cookie 值 302 跳转不会带上 Response Set-Cookie 可以使用 iOS11 新 API 对 WKWebView...decidePolicyForNavigationAction 首先决定网页是否继续访问 可以通过 decidePolicyForNavigationAction decisionHandler...afterScreenUpdates 设置为 YES 情况下,最后 频繁调用后会导致 H5 css 动画失效,原因不明。

    4.9K30

    App与WebView交互方式

    通过执行函数evaluateJavaScript:completionHandler:,我们可以传递app端数据给webview,触发html脚本函数调用,从而响应app行为。...2、webview如何调用app端函数呢? 在html脚本添加iframe对象,通过设置iframesrc属性,可成功触发WKWebview代理方法调用。..., 我们可以在代理方法拦截请求,首先iframesrc值也就是我们自定义scheme,通过对该scheme判断来得知我们想干什么,从而去调用app对应函数。...除了可以在自定义scheme传递我们需要参数外,我们可以在html脚本把数据储存好,通过evaluateJavaScript:completionHandler:来调用脚本函数来返回需要参数...具体如何通过WKWebview传递过来数据来判断该执行哪个函数,有一种实现方式: 用一个字典来储存对应函数地址,这样我们可以通过传递过来key来获得对应函数

    1.5K20

    WKWebView详解

    一个WKWebView对象显示交互式web内容,比如在应用程序浏览器。...您可以使用WKWebView类来在应用程序嵌入web内容,通过创建一个WKWebView对象,将其设置为视图,并发送一个请求来加载web内容。...从iOS 8.0和OS X 10.10开始,建议使WKWebView应用程序展示web内容,建议不要使用UIWebView或WebView。...该动作会将应用程序切换到Safari 如果您想在iOS中支持链接预览,但又想要在应用程序中保留用户,那么您可以WKWebView类转换为SFSafariViewController类 如果您使用WebView...调用 如果要使用默认预览操作,应用程序必须在返回视图控制器previewActionItems实现运行这些操作 iOS 10.0+预览时用户触发pop操作(继续按压)时调用 - (void)webView

    20.6K193

    iOS 下利用简单代码实现 JS 双引擎功能思路

    步骤三、JSContext 对象加载本地写好 JS 文件,然后通过步骤一传进来参数直接异步调用 JS 文件下对应 function。...在此之前又获得了当前执行 Function 名称,当然这里 id 就是 loadAction,为什么要获取方法名?...其实,可以往下看到了 callBack 标注为统一回调这个 JS 方法,它就是原生在执行完异步任务后要执行统一回调,这里为了区分是哪个异步方法调用结果,那么,就返回了之前 JS 获取到异步方法名...doNework:模拟耗时操作 sleep:休眠固定时常(这里写是5秒) 3、iOS 原生部分 WKWebView 初始化方式省略,这里需要注意WKWebView 代理循环引用问题,可以创建一个中间件避免循环引用...返回值就是 doNework 方法返回值,这里返回就是简单 “操作成功” 字符串。

    2.6K00

    WKWebView 那些坑

    :(WKWebView *)webView API_AVAILABLE(macosx(10.11), ios(9.0)); 当WKWebView总体内存占用过大,页面即将白屏时候,系统会调用上面的回调函数...1.2、检测webView.title是否为空 并不是所有页面白屏时候都会调用上面的回调函数,比如,最近遇到在一个高内存消耗H5页面上present系统相机,拍照完毕后返回原来页面的时候出现白屏现象...在WKWebView白屏时候,另一种现象是webView.titile会被置空, 因此可以在viewWillAppear时候检测webView.title是否为空来reload页面。...请求body丢失问题,封装在了QBWebView,也是强大!...window.alert()函数引起,从crash堆栈可以看出是WKWebView回调函数: + (void) presentAlertOnController:(nonnull UIViewController

    17.3K21
    领券