【问题标题】:Enable Application cache in WKWebView在 WKWebView 中启用应用程序缓存
【发布时间】:2015-04-27 10:13:22
【问题描述】:

我知道 iOS WKWebView 不支持离线应用程序缓存。

这是在 Safari 中启用的,所以我在 webkit 项目中搜索了负责的代码并找到了这个

WKPreferences

- (void)_setOfflineApplicationCacheIsEnabled:(BOOL)offlineApplicationCacheIsEnabled;

有人熟悉这种方法吗?是否可以通过访问此私有方法在 iOS 中启用应用程序缓存? (我不会将应用程序发送到 Appstore)

【问题讨论】:

    标签: ios objective-c webkit wkwebview application-cache


    【解决方案1】:

    是的,我们可以通过访问私有 API 来启用 App 缓存

    WKPreferences 创建一个类别并添加到以下方法签名中。

    @interface WKPreferences (MyPreferences)
    - (void)_setOfflineApplicationCacheIsEnabled:(BOOL)offlineApplicationCacheIsEnabled;
    @end
    

    (我试过 performSelector:withObject: 但没用。不知道为什么)

    初始化WKWebView后,在如下对象中调用上述方法启用appcache

      [_wkWebView.configuration.preferences _setOfflineApplicationCacheIsEnabled:YES];
    

    它将在 Cache 目录中创建 ApplicationCache.db 文件,并允许 Web 应用脱机工作。

    警告:

    2.5。使用非公开 API 的应用将被拒绝

    【讨论】:

    • 访问开源私有 API 是否违规?
    • 不是他们不能,我认为他们只是不会。我的猜测是他们希望我们自己处理离线而不是使用 appcache。
    • 你必须为此爱上苹果!
    • 嗨克莱门特,我想知道你是否想出了一种方法来绕过(苹果公司?)施加的 25mb appcache 限制,如果我超过了,我永远不会收到警告对话框询问我是否要分配像在 safari 中的更多空间和 appcache 根本无法安装,也许有办法以编程方式定义它?,我查看了 Webkit 源代码,但找不到他们设置它的位置。
    • @dmm79 你好,你有没有发现限制是什么或定义在哪里?谢谢:)
    【解决方案2】:

    根据 Apple 的这条推文,从 iOS 10 开始,WKWebView 现已支持 App Cache:

    https://twitter.com/andersca/status/743259582252879872

    ...就像这个 WebKit 错误报告一样:

    https://bugs.webkit.org/show_bug.cgi?id=152490

    我已经在WKWebView 使用这个网站测试了这个:

    http://webdbg.com/test/appcache/

    并且可以确认它在 iOS 模拟器和运行 iOS 10 的设备上都按预期工作。

    【讨论】:

    • 支持 App Cache 不需要更改本机端代码,但显然您需要进行必要的 Web 内容更改。有关这方面的一般信息可以在 Apple 的 HTML5 离线应用程序缓存指南中找到:developer.apple.com/library/content/documentation/iPhone/…
    • @AndrewEbling 应用缓存是否缓存所有内容?例如,它是否缓存 AJAX 请求和响应?
    • AppCache 已被弃用多年,Safari 于 2018 年正式弃用。2022 年不要依赖它。bugs.webkit.org/show_bug.cgi?id=181764
    猜你喜欢
    • 2021-12-11
    • 2016-05-05
    • 1970-01-01
    • 2020-07-28
    • 1970-01-01
    • 2017-08-17
    • 2017-04-14
    • 1970-01-01
    • 2016-05-05
    相关资源
    最近更新 更多