2015-04-27 28 views
6

Tôi biết rằng bộ nhớ cache ứng dụng ngoại tuyến không được hỗ trợ trong WKWebView trên iOS.Bật bộ nhớ cache của ứng dụng trong WKWebView

này được kích hoạt trong Safari, vì vậy tôi đã tìm kiếm dự án webkit cho mã chịu trách nhiệm & thấy điều này

WKPreferences

- (void)_setOfflineApplicationCacheIsEnabled:(BOOL)offlineApplicationCacheIsEnabled; 

Bất cứ ai quen thuộc với phương pháp này? có thể bật bộ nhớ cache ứng dụng trong iOS bằng cách truy cập các phương pháp riêng tư này không? (Tôi sẽ không xuất xưởng ứng dụng Appstore)

Trả lời

6

Vâng, chúng ta có thể cho phép ứng dụng bộ nhớ cache bằng cách truy cập API tin

Tạo một thể loại cho WKPreferences và thêm vào sau phương pháp chữ ký.

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

(Tôi cố gắng performSelector: withObject:. Nhưng nó đã không làm việc Không biết tại sao)

Sau khi khởi tạo WKWebView, cho phép appcache bằng cách gọi phương pháp trên trong đối tượng sau đây

[_wkWebView.configuration.preferences _setOfflineApplicationCacheIsEnabled:YES]; 

Nó sẽ tạo tệp ApplicationCache.db trong thư mục Bộ nhớ cache và cho phép ứng dụng web hoạt động ngoại tuyến.

Cảnh báo:

2,5. Ứng dụng sử dụng API ngoài công lập sẽ bị từ chối

+0

đang truy cập mã nguồn mở API tin vi phạm? –

+0

Nó không phải là họ không thể, tôi nghĩ rằng họ sẽ không. Tôi đoán là họ muốn chúng tôi xử lý ngoại tuyến thay vì sử dụng appcache. –

+0

Bạn đã yêu Apple vì điều này! – Elad

1

Theo tweet này từ tại Apple, tính đến iOS 10, App Cache là hiện nay hỗ trợ trong WKWebView:

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

... như thực hiện điều này báo cáo WebKit lỗi:

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

tôi đã thử nghiệm điều này trong WKWebView sử dụng trang web này:

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

và có thể xác nhận nó hoạt động như mong đợi ở cả iOS Simulator và trên các thiết bị chạy iOS 10

+0

như thế nào?làm thế nào để sử dụng mã mẫu WKWebview –

+1

Không cần thay đổi mã gốc để hỗ trợ App Cache, nhưng rõ ràng bạn cần thực hiện các thay đổi nội dung web cần thiết. Bạn có thể tìm thấy thông tin chung về điều này trong hướng dẫn Bộ nhớ cache ứng dụng ngoại tuyến HTML5 của Apple: https://developer.apple.com/library/content/documentation/iPhone/Conceptual/SafariJSDatabaseGuide/OfflineApplicationCache/OfflineApplicationCache.html –

+0

@AndrewEbling App cache có lưu mọi thứ mọi thứ không ? Ví dụ, nó có lưu trữ các yêu cầu và phản hồi AJAX không? – Cloud9999Strife

Các vấn đề liên quan