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

消息处理程序在iOS 9的WKWebView中不起作用

是因为WKWebView在iOS 9中引入,相比于UIWebView,WKWebView具有更好的性能和功能。然而,WKWebView在处理JavaScript与原生代码之间的通信时,存在一些限制。

在WKWebView中,消息处理程序是通过WKScriptMessageHandler协议来实现的。但是,在iOS 9中,WKWebView的消息处理程序可能不起作用的原因可能有以下几点:

  1. JavaScript与原生代码的通信未正确设置:在iOS 9中,WKWebView的消息处理程序需要通过WKUserContentController对象来注册,并且需要在JavaScript代码中使用window.webkit.messageHandlers对象来发送消息。如果没有正确设置这些步骤,消息处理程序将无法起作用。
  2. iOS 9的App Transport Security(ATS)限制:iOS 9引入了App Transport Security(ATS)功能,要求应用程序使用HTTPS进行网络通信。如果WKWebView加载的网页内容不符合ATS的要求,例如使用了不安全的HTTP协议,那么消息处理程序可能会受到限制。
  3. JavaScript代码错误:如果JavaScript代码中存在语法错误或逻辑错误,可能会导致消息处理程序不起作用。在调试过程中,可以使用Safari开发者工具来检查JavaScript代码是否存在错误。

针对以上问题,可以采取以下解决方案:

  1. 确保正确设置消息处理程序:在iOS 9中,需要使用WKUserContentController对象的addScriptMessageHandler方法来注册消息处理程序,并在JavaScript代码中使用window.webkit.messageHandlers对象来发送消息。
  2. 遵守App Transport Security(ATS)要求:确保WKWebView加载的网页内容符合ATS的要求,使用HTTPS进行网络通信。如果需要加载不符合ATS要求的内容,可以在应用程序的Info.plist文件中添加相应的例外。
  3. 检查JavaScript代码:使用Safari开发者工具来检查JavaScript代码是否存在错误,并进行调试和修复。

腾讯云提供了一系列与云计算相关的产品,包括云服务器、云数据库、云存储等。具体推荐的产品和产品介绍链接地址如下:

  • 云服务器(CVM):提供灵活可扩展的云服务器实例,支持多种操作系统和应用场景。了解更多:https://cloud.tencent.com/product/cvm
  • 云数据库MySQL版(CDB):提供高性能、高可用的云数据库服务,适用于各种规模的应用。了解更多:https://cloud.tencent.com/product/cdb_mysql
  • 云对象存储(COS):提供安全可靠的云端存储服务,适用于存储和管理各种类型的数据。了解更多:https://cloud.tencent.com/product/cos

请注意,以上推荐的产品和链接仅作为示例,具体选择和使用产品时需要根据实际需求进行评估和决策。

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

相关·内容

iOS description与debugDescription调试程序应用

iOS 打印函数description与debugDescription应用 一、description和debugDescription是什么         description和debugDescription...首先,这两个方法适用于程序代码调试,当我们调用打印Log时,会向对象发送一个这样消息。...],&self]; } 三、重写description方法 通过上面的介绍,我们大致知道description方法原理了,程序调试时,我们可以充分利用这个方法带来便利,大大缩减我们调试程序所需要时间...description是我们程序打Log会调用方法,debugDescription则是我们断点调试时,控制台使用po命令打印会调用方法,比如我们重写Test类这个方法: -(NSString...,程序断掉之后,我们调试区输入:po text,回车之后,会出现如下信息: ?

1.4K10
  • Thunk程序实现原理以及iOS应用(二)

    本文导读:虚拟内存以及虚拟内存remap机制,以及通过remap机制来实现通过静态指令来构造thunk代码块。 ?Thunk程序实现原理以及iOS应用 入口处。...也就是说iOS系统不支持将某段内存保护机制先设置为读写以便填充好数据后再设置为可执行保护机制来实现动态指令构造(也就是所谓JIT技术)。...这种内存映射支持其实也可以用来实现进程之间通信处理,当然iOS系统是无法实现跨进程内存映射,因此目标进程和原进程必须具有相同port。...静态构造thunk程序 上一篇文章实现了通过在内存动态构造机器指令来实现一段thunk代码,但是这种机制iOS系统是无法发布版证书打包程序运行。...thunk程序缺陷问题,整个过程不需要我们构造指令,而是借用现有已经存在指令来构造thunk程序,而且这样代码不存在签名问题,也可以iOS任何签名下被安全运行。

    1.1K20

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

    不过苹果在 iOS8 以后推出了 WKWebView 来加载 Web,并应用于 iOS 和 OSX ,它取代了 UIWebView 和 WebView ,两个平台上支持同一套 API。...: 大多数App需要支持 iOS7 以上版本,而 WKWebView iOS8 后才能用,所以需要一个兼容性方案,既 iOS7 下用 UIWebView , iOS8 后用 WKWebView...但是目前 IOS10 以下系统以及很少了, 小结: WKWebView 相较于 UIWebView 整体上有较大提升,满足 iOS 上面使用同一套控件功能,同时对整个内存开销以及滚动刷新率和...WKWebView 没有做缓存处理,所以对网页需要缓存加载性能要求没那么高还是可以考虑 UIWebView 。 二、WKWebView 有哪一些坑?...实践发现 WKWebView 实例其实也会将 Cookie 存储于 NSHTTPCookieStorage ,但存储时机有延迟, iOS8上,当页面跳转时候,当前页面的 Cookie 会写入 NSHTTPCookieStorage

    2.3K20

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

    不过苹果在 iOS8 以后推出了 WKWebView 来加载 Web,并应用于 iOS 和 OSX ,它取代了 UIWebView 和 WebView ,两个平台上支持同一套 API。...js 交互; 注意: 大多数App需要支持 iOS7 以上版本,而 WKWebView iOS8 后才能用,所以需要一个兼容性方案,既 iOS7 下用 UIWebView , iOS8...但是目前 IOS10 以下系统以及很少了, 小结: WKWebView 相较于 UIWebView 整体上有较大提升,满足 iOS 上面使用同一套控件功能,同时对整个内存开销以及滚动刷新率和...实践发现 WKWebView 实例其实也会将 Cookie 存储于 NSHTTPCookieStorage ,但存储时机有延迟, iOS8上,当页面跳转时候,当前页面的 Cookie 会写入 NSHTTPCookieStorage...更强大 WebView 界面调试功能需要 Chrome31 或更高版本。 Android 应用程序 WebView 配置为可调试模式。

    2.7K20

    iOSWebKit框架应用与解析 原

    iOSWebKit框架应用与解析 一、引言         iOS8之前,应用嵌入网页通常需要使用UIWebView这样一个类,这个类通过URL或者HTML文件来加载网页视图,功能十分有限,只能作为辅助嵌入原生应用程序...二、WebKit框架概览         WebKit框架涉及类很多,框架设计十分面向对象和模块化,开发者使用时可以轻松写出结构清晰代码。...()方法来像native发送消息,支持OC字典,数组,NSNumber等原生数据类型,JavaScript代码name要和上面注册相同。...native代理回调方法,会获取到JavaScript传递进来消息,如下: -(void)userContentController:(WKUserContentController *)userContentController...信息应用程序名称 iOS9后可用 config.applicationNameForUserAgent = @"HS"; 四、WKWebView属性和方法解析         下面列举了WKWebView

    1.9K40

    iOS小技能:WKWebView与JS交互

    前言 由于目前UIWebView 已经被抛弃了,因此推荐使用WKWebViewWKScriptMessageHandler实现iOS与JS交互 WKWebView是AppleiOS8推出Webkit...:-viewWillAppear:方法执行add 监听,-viewWillDisappear:方法执行remove 监听。.../article/details/115077471 主要功能:进入查看器之后,可左右滑动查看上/下张,并支持下滑视图退出查看器 「同层渲染」原理 微信小程序 iOS 端使用 WKWebView 进行渲染...小程序 iOS「同层渲染」也正是基于 WKChildScrollView 实现,原生组件 attached 之后会直接挂载到预先创建好 WKChildScrollView 容器下,大致流程如下...UIProcess进程:主要负责与 WebContent 进行交互,与 APP 同一进程,可以进行 WebView 功能配置,并接收来自 WebContent 进程各类消息,配合业务代码执行任务决策

    6.7K30

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

    不过苹果在 iOS8 以后推出了 WKWebView 来加载 Web,并应用于 iOS 和 OSX ,它取代了 UIWebView 和 WebView ,两个平台上支持同一套 API。...: 大多数App需要支持 iOS7 以上版本,而 WKWebView iOS8 后才能用,所以需要一个兼容性方案,既 iOS7 下用 UIWebView , iOS8 后用 WKWebView...但是目前 IOS10 以下系统以及很少了, 小结: WKWebView 相较于 UIWebView 整体上有较大提升,满足 iOS 上面使用同一套控件功能,同时对整个内存开销以及滚动刷新率和...WKWebView 没有做缓存处理,所以对网页需要缓存加载性能要求没那么高还是可以考虑 UIWebView 。 二、WKWebView 有哪一些坑?...实践发现 WKWebView 实例其实也会将 Cookie 存储于 NSHTTPCookieStorage ,但存储时机有延迟, iOS8上,当页面跳转时候,当前页面的 Cookie 会写入 NSHTTPCookieStorage

    2.3K30

    iOS小技能:UIWebView 被拒解决方案(用更安全WKWebView替代UIWebView)

    2、移除/升级含UIWebView第三方SDK(例:AFNetworking) 3、使用WKWebView替代UIWebView 4、WKWebView与JS交互案例(点击页面图片,调用iOS方法进行图片放大显示...) WKScriptMessageHandler协议必须实现函数,是APP与js交互,提供从网页消息回调方法- (void)userContentController:(WKUserContentController...、NSURLSession 和 UIWebView 请求; 对于 WKWebView 中发出网络请求也无能为力,如果真的要拦截来自 WKWebView 请求,还是需要实现 WKWebView...UIWebview to WKWebView #4441 #4.x iOS 9 macOS 10.10 watchOS 2.0 tvOS 9.0 Xcode 11+ is required...formdata请求形式4.0都有了调整,因此需要更改工程相应方法 例如 修改为: [manager GET:urlStr parameters:params headers

    3.2K20

    WKWebView 那些坑

    实践发现WKWebView实例其实也会将Cookie存储于NSHTTPCookieStorage,但存储时机有延迟,iOS8上,当页面跳转时候,当前页面的Cookie会写入NSHTTPCookieStorage...来触发Cookie同步到NSHTTPCookieStorage,实践发现不起作用,并可能会引发当前页面session cookie丢失等问题。...接入now直播时候,我们发现在ios9WKWebView会出现页面被拉伸变形情况,最后发现是window.innerHeight值不准确导致(WKWebView上返回了一个非常大值),而H5...通过查阅相关资料,这个bug只ios9几个系统版本上出现,苹果后来fix了这个bug。...这个crash只发生在IOS8系统上,参考apple open source,IOS9及以后系统苹果已经修复了这个bug,主要是对completionHandler block做了copy(refer

    17.3K21

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

    不过苹果在 iOS8 以后推出了 WKWebView 来加载 Web,并应用于 iOS 和 OSX ,它取代了 UIWebView 和 WebView ,两个平台上支持同一套 API。...js 交互; 注意: 大多数App需要支持 iOS7 以上版本,而 WKWebView iOS8 后才能用,所以需要一个兼容性方案,既 iOS7 下用 UIWebView ,iOS8 后用...但是目前 IOS10 以下系统以及很少了, 小结: WKWebView 相较于 UIWebView 整体上有较大提升,满足 iOS 上面使用同一套控件功能,同时对整个内存开销以及滚动刷新率和...实践发现 WKWebView 实例其实也会将 Cookie 存储于 NSHTTPCookieStorage ,但存储时机有延迟, iOS 8上,当页面跳转时候,当前页面的 Cookie 会写入 NSHTTPCookieStorage...详细可以参考:《NSURLProtocol处理WKWebViewhttp和https请求》 5.

    3.1K00

    WKWebView 那些坑

    实践发现 WKWebView 实例其实也会将 Cookie 存储于 NSHTTPCookieStorage ,但存储时机有延迟,iOS 8上,当页面跳转时候,当前页面的 Cookie 会写入 NSHTTPCookieStorage...3、WKWebView NSURLProtocol问题 WKWebView 独立于 app 进程之外进程执行网络请求,请求数据不经过主进程,因此, WKWebView 上直接使用 NSURLProtocol...接入 now 直播时候,我们发现在 iOS 9WKWebView 会出现页面被拉伸变形情况,最后发现是window.innerHeight值不准确导致(WKWebView上返回了一个非常大值...通过查阅相关资料发现,这个bug只 iOS 9 几个系统版本上出现,苹果后来fix了这个bug。...这个 crash 只发生在 iOS 8 系统上,参考Apple Open Source,iOS9及以后系统苹果已经修复了这个bug,主要是对completionHandler block做了copy(

    4.6K130

    iOS防止WKWebView打开Universal Link

    前言 wap唤起app应用最最广泛方式并不是Universal Link,而是直接Schema跳转 location.href = 'schema://公众号:iOS逆向' iOS9 之前...这种方式需要提前判断系统是否安装了能够响应此schemeApp,并且这种方式微信被禁用。...Universal Links 是标准 HTTP 或 HTTPS 链接,因此既适用于网站,也适用于应用程序。 如果未安装您应用程序,则系统会在 Safari 打开URL,以使您网站能够处理它。...当用户安装您应用程序时,iOS 会检查存储Web服务器上文件,以验证您网站是否允许您应用程序代表其处理URL 公众号:iOS逆向 https://developer.apple.com/library.../download/u011018979/21361507 1.1 防止WKWebView打开Universal Link原理: 防止WKWebView打开Universal Link原理:

    3K30

    技术 | Hybrid载体变化(一)

    时至今日,我都在想“微信小程序”为什么不能做成Web式,而是要去加那么一层隔离,终归其原因,还是随着时间向前走,Hybrid载体也发生了变化,不然该卡还是一样卡一逼。...从iOS角度上来说载体从UIWebView变成了WKWebView,Android有着他们自研X5当然原生内核,如果你用着Android7.0也不见得会卡,这才是小程序能出来根本原因,没有载体,...今天,我们谈一谈iOS载体“WKWebView”,有兴趣朋友可以直接阅读:https://developer.apple.com/reference/webkit/wkwebview ,当然你也可以接着往下看...,我对于他理解,苹果在iOS8推出新框架“Webkit”,其中WKWebView就是用来替换原来UIWebView,一句话,你用它原来UIWebView出现各种问题都被解决了。...初始化WKWebView时你还需要配置一个Conf,这个Conf你可以添加一个属性,这个属性JavaScript这一边你可以通过window.webkit.messageHandlers.icepyApp

    86630

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

    废话开篇:小程序下有这样一个概念,就是双引擎,意思就是 UI绘制 跟 JS 执行是多线程环境下进行,有人会质疑,JS 不是有异步方法吗?...那么实现类似小程序双引擎下执行任务思路就是下面例子要体现。...二、思路概括 步骤一、 WKWebView 加载本地一个 H5 页面,然后,在按钮点击事件里将需要做耗时事情告诉 iOS 原生 步骤二、iOS 原生收到消息后,创建一个原生下 JSContext...步骤四、执行完 JS 文件下对应 function 后进行返回 iOS 主线程,用 WkWebview 对象执行 H5 页面里一个固定回调方法,将数据结果返回至前端页面。...doNework:模拟耗时操作 sleep:休眠固定时常(这里写是5秒) 3、iOS 原生部分 WKWebView 初始化方式省略,这里需要注意WKWebView 代理循环引用问题,可以创建一个中间件避免循环引用

    2.6K00
    领券