首页
学习
活动
专区
工具
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】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 页面...更强大 WebView 界面调试功能需要 Chrome31 或更高版本。 Android 应用程序 WebView 配置为可调试模式。...Stepovernextfunctioncall:执行到下一步函数调用(跳到下一行)。 Stepintonextfunctioncall:进入当前函数

    2.7K20

    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

    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

    分享超详细 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

    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
    领券