Advertisement

iOS WKWebView兼容实战篇

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:PDF


简介:
本文详细介绍了如何在iOS开发中使用WKWebView,并提供了针对不同版本和需求的实际解决方案与代码示例。适合中级开发者阅读。 iOS WKWebView适配实战篇主要介绍了WKWebView在实际应用中的配置方法,并通过示例代码详细解释了相关知识点,对学习或工作有一定的参考价值。 1. Cookie同步问题 由于WKWebView使用独立存储控件,与传统的UIWebView不互通。从iOS 11开始,苹果开放了WKHTTPCookieStore接口供开发者进行cookie同步处理。然而,在低版本的系统中仍需寻找其他方法来实现这一功能。文中详细讨论了如何利用WKHTTPCookieStore和NSHTTPCookieStorage遍历设置的方法来进行cookie同步。 2. 同步cookie(从NSHTTPCookieStorage到WKHTTPCookieStore) 在iOS 11及以上版本,开发者可以直接使用WKHTTPCookieStore进行cookie的同步操作。文章中提供了详细的示例代码来展示如何实现这一过程: ```objectivec - (void)syncCookiesToWKCookieStore:(WKHTTPCookieStore *)cookieStore API_AVAILABLE(ios(11.0)) { NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]; if (cookies.count == 0) return; for (NSHTTPCookie *cookie in cookies) { [cookieStore setCookie:cookie completionHandler:^{ if ([cookies.lastObject isEqual:cookie]) { [self wkwebviewSetCookieSuccess]; } }]; } } ``` 3. WKWebView初始化时同步cookie 文中还探讨了在WKWebView初始化阶段进行cookie同步的重要性,确保页面请求能够携带正确的认证信息。 4. 在iOS 11及以下版本中前端执行JS注入cookie 对于低于iOS 11的系统环境,可以通过JavaScript脚本向WKWebView注入cookies。文章提供了如何使用WKUserScript来实现这一功能的具体代码示例: ```objectivec - (void)injectCookiesLT11 { WKUserScript *cookieScript = [[WKUserScript alloc] initWithSource:[self cookieString] injectionTime:WKUserScriptInjectionTimeAtDocumentStart forMainFrameOnly:NO]; [self.wkWebView.configuration.userContentController addUserScript:cookieScript]; } - (NSString *)cookieString { NSMutableString *script = [NSMutableString string]; [script appendString:@var cookieNames = document.cookie.split(; ).map(function(cookie) { return cookie.split(=)[0] } );n]; for (NSHTTPCookie *cookie in NSHTTPCookieStorage.sharedHTTPCookieStorage.cookies) { Skip cookies that will break our script if ([cookie.value rangeOfString:@].location != NSNotFound) { continue; } [script appendFormat:@if (cookieNames.indexOf(%@) == -1) { document.cookie=%@; };n, cookie.name, [self formatCookie:cookie]]; } return script; } ``` 综上所述,WKWebView适配实战篇深入探讨了WKWebView的Cookies同步问题,并提供了详尽的操作示例代码,帮助开发者更好地理解其工作原理并解决相关配置难题。

全部评论 (0)

还没有任何评论哟~
客服
客服
  • iOS WKWebView
    优质
    本文详细介绍了如何在iOS开发中使用WKWebView,并提供了针对不同版本和需求的实际解决方案与代码示例。适合中级开发者阅读。 iOS WKWebView适配实战篇主要介绍了WKWebView在实际应用中的配置方法,并通过示例代码详细解释了相关知识点,对学习或工作有一定的参考价值。 1. Cookie同步问题 由于WKWebView使用独立存储控件,与传统的UIWebView不互通。从iOS 11开始,苹果开放了WKHTTPCookieStore接口供开发者进行cookie同步处理。然而,在低版本的系统中仍需寻找其他方法来实现这一功能。文中详细讨论了如何利用WKHTTPCookieStore和NSHTTPCookieStorage遍历设置的方法来进行cookie同步。 2. 同步cookie(从NSHTTPCookieStorage到WKHTTPCookieStore) 在iOS 11及以上版本,开发者可以直接使用WKHTTPCookieStore进行cookie的同步操作。文章中提供了详细的示例代码来展示如何实现这一过程: ```objectivec - (void)syncCookiesToWKCookieStore:(WKHTTPCookieStore *)cookieStore API_AVAILABLE(ios(11.0)) { NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]; if (cookies.count == 0) return; for (NSHTTPCookie *cookie in cookies) { [cookieStore setCookie:cookie completionHandler:^{ if ([cookies.lastObject isEqual:cookie]) { [self wkwebviewSetCookieSuccess]; } }]; } } ``` 3. WKWebView初始化时同步cookie 文中还探讨了在WKWebView初始化阶段进行cookie同步的重要性,确保页面请求能够携带正确的认证信息。 4. 在iOS 11及以下版本中前端执行JS注入cookie 对于低于iOS 11的系统环境,可以通过JavaScript脚本向WKWebView注入cookies。文章提供了如何使用WKUserScript来实现这一功能的具体代码示例: ```objectivec - (void)injectCookiesLT11 { WKUserScript *cookieScript = [[WKUserScript alloc] initWithSource:[self cookieString] injectionTime:WKUserScriptInjectionTimeAtDocumentStart forMainFrameOnly:NO]; [self.wkWebView.configuration.userContentController addUserScript:cookieScript]; } - (NSString *)cookieString { NSMutableString *script = [NSMutableString string]; [script appendString:@var cookieNames = document.cookie.split(; ).map(function(cookie) { return cookie.split(=)[0] } );n]; for (NSHTTPCookie *cookie in NSHTTPCookieStorage.sharedHTTPCookieStorage.cookies) { Skip cookies that will break our script if ([cookie.value rangeOfString:@].location != NSNotFound) { continue; } [script appendFormat:@if (cookieNames.indexOf(%@) == -1) { document.cookie=%@; };n, cookie.name, [self formatCookie:cookie]]; } return script; } ``` 综上所述,WKWebView适配实战篇深入探讨了WKWebView的Cookies同步问题,并提供了详尽的操作示例代码,帮助开发者更好地理解其工作原理并解决相关配置难题。
  • XcodeiOS 11.1版本
    优质
    本应用支持在搭载iOS 11.1操作系统的设备上使用Xcode进行开发工作,为开发者提供便捷的编程环境和功能。 要在Xcode中支持iOS 11.1版本而无需升级Xcode,只需在/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport文件夹下进行操作。
  • iOS OC拦截WKWebView中网页视频内的示例代码
    优质
    本示例代码展示了如何在iOS开发中使用Objective-C语言,通过重载WKWebView的方法来拦截并处理网页中的视频内容。适合希望自定义WebKit框架下媒体资源加载方式的开发者参考。 在使用iOS的Objective-C(OC)爬取视频网页资源时,遇到无法通过OC调用JavaScript获取数据的情况,可以尝试在请求过程中进行拦截并重新编写代码来解决这个问题。
  • SemiRestore9:iOS越狱平刷利器,iOS 5.0-9.1
    优质
    SemiRestore9是一款专为iOS设备设计的工具,支持从5.0到9.1版本系统的越狱设备进行无数据清理安装。它能够帮助用户轻松地重新安装操作系统,同时保留个人文件和设置,是越狱玩家的理想选择。 SemiRestore9是一款针对iOS设备的专业越狱恢复工具,特别适合那些希望在不丢失数据的情况下进行平刷的用户。这款工具支持广泛的系统版本,从iOS 5.0到9.1都有涵盖,使得许多老旧设备也能享受到越狱带来的便利。 在iOS越狱的世界里,“平刷”指的是重新安装系统固件的同时保留用户的个人数据和设置。通常情况下,当遇到越狱问题或系统故障时,用户可能需要进行平刷来修复这些问题。SemiRestore9就是为了应对这种情况而设计的,它简化了这个过程,并避免了常规恢复过程中可能导致的数据丢失。 SemiRestore9特别强调其Windows版本的支持,这意味着Windows用户可以在他们的电脑上方便地使用该工具,而不必依赖Mac或其他操作系统。这对于广大Windows用户来说是个好消息,因为许多iOS工具通常只支持Mac平台。 在使用SemiRestore9进行平刷时,需要注意几个关键点:确保你的设备已越狱且满足支持的iOS版本范围;备份重要数据总是个好习惯,尽管该工具声称能保留用户的数据,但为了以防万一,最好提前备份重要的信息和文件;以及保证设备电量充足以避免在过程中因电量不足导致的操作中断。 实际操作中,需要下载SemiRestore9的最新版本,并按照软件提供的步骤进行。这通常包括连接iOS设备到电脑上、启动SemiRestore9程序选择相应的恢复选项并等待过程完成。在整个过程中,设备可能会经历重启和进入恢复模式等现象,这是正常情况,请耐心等候。 对于熟悉iOS越狱操作的用户来说,SemiRestore9提供了高效便捷的选择方案;但对于初次接触这项技术的新手而言,在执行任何操作之前查阅相关教程或指南是很有帮助的,以确保整个过程顺利无误。同时由于涉及设备安全问题,在进行越狱和系统恢复时应谨慎行事并遵循最佳实践。 总之,SemiRestore9是一款强大的工具供iOS用户使用,尤其是那些希望在不丢失数据的情况下恢复越狱状态的人士来说是个值得信赖的选择。然而就像所有技术工具一样,在使用前充分了解和做好准备工作是确保安全有效利用该资源的关键。
  • iOS WKWebView离线加载H5资源方案
    优质
    本文介绍了一种利用WKWebView在iOS平台上实现H5页面离线加载的技术方案,旨在减少数据消耗并加快访问速度。 本段落主要介绍了iOS WKWebView离线化加载H5资源的解决方案。小编认为这个方法很不错,并推荐分享给其他人一起参考学习。
  • Web性测试的思路
    优质
    本文将深入探讨如何进行有效的Web兼容性测试,提供一系列实用技巧和策略,帮助开发者确保网站在各种浏览器和设备上正常运行。 这段文字的内容与博客中的网页兼容性内容一致,并且是图片中思路的源文件。
  • 电磁(EMC)——共模电感
    优质
    本篇专注于电磁兼容性中关键元件之一——共模电感,探讨其工作原理、设计要点及在抑制电磁干扰中的应用。 在滤波器的设计过程中,可以利用漏感来优化性能。例如,在常规的滤波器设计中,只需安装一个共模电感即可产生适量的差模电感,从而抑制差模电流的影响。有时还需要特意增加共模扼流圈的漏电感量以提高差模电感的效果,进而实现更佳的滤波效果。
  • C3600系列及C3725GNS3IOS文件
    优质
    本资源提供C3600系列和C3725型号设备所需的具体IOS版本文件,并支持GNSS3模拟环境,便于网络设备配置与测试。 3600系列有四个版本,3725有两个版本,它们都与GNS3测试兼容,并能自动生成IDEL PC值。如果CPU资源占用过高,请自行重新计算。
  • PDF在线查看,PC、Android和iOS
    优质
    这是一款功能强大的PDF阅读工具,支持在个人电脑及移动设备上流畅浏览文档。无论您使用Windows, Android还是iOS系统,都能轻松享受便捷的PDF文件查看体验。 支持PC、Android和iOS设备的PDF在线预览功能。
  • iOS项目
    优质
    《iOS项目实战》是一本针对iOS开发者的实践指南,通过具体项目的构建,帮助读者掌握Swift编程、UI设计及App Store发布等核心技能。 这段文字可以重新表述为:iOS开发项目实战教程中的字典项目包含了完整的内容素材及示例代码(Demo),适合即将进入实训项目的人员参考学习一个完整的应用程序。