Moja aplikacja ładuje bardzo dużą aplikację internetową wewnątrz UIWebView
.WKWebView i NSURLCache do obsługi lokalnych treści
Napisałem rozszerzenie "NSURLCache
" LocalCache
".
Rozszerzenie LocalCache
przechwytuje moją ładowanie i ładuje wszystkie żądane pliki z lokalnego pakietu aplikacji, który jest zaszyfrowany. Ta logika jest implementowana w metodzie NSURLCache's
cachedResponseForRequest
. Więc aplikacja serwowane jest w 100% lokalnie:
class LocalCache:NSURLCache {
override func cachedResponseForRequest(request: NSURLRequest) -> NSCachedURLResponse? {
if (request points to my domain) {
get file from bundle
decrypt it
return local copy
} else {
return super.cachedResponseForRequest(request)
}
}
}
NSURLCache.setSharedURLCache(LocalCache());
Chciałbym portu tę funkcjonalność do WKWebkit
. Zastanawiam się, czy istnieje sposób na zaimplementowanie czegoś podobnego, ponieważ, niestety, jak zapewne wiesz, WKWebView
nie używa stosu kakao z NSProtocol, NSUrl, NSUrlCache .... sprawiając, że moje obecne podejście jest bezużyteczne.
Czy można coś podobnego osiągnąć za pomocą WkWebView
?
Uwaga: Fakt, że moja aplikacja pochodzi ze zdalnego serwera, jest kluczowy dla aplikacji: jeśli po prostu załaduję aplikację lokalnie, tj. file://
, jest wiele rzeczy, które nie działają, na przykład, YouTube Filmy, ponieważ youtube api skarży się, że "file://
" nie jest zatwierdzonym źródłem. Tak więc szukane rozwiązanie WkWebView
musi być powiązane z przechwytywaniem pamięci podręcznej, zamiast wstrzykiwania lokalnego javascriptu.
"WKWebView wysyła żądania i renderuje zawartość poza procesem, co oznacza, że aplikacja nie słyszy żądań, które wysyła." http://stackoverflow.com/a/24208322/23649 – jtbandes
@rupps czy znalazłeś jakieś rozwiązanie tego? Mam podobny problem. Myślę o próbie [WKUserScript] (https://developer.apple.com/library/ios/documentation/WebKit/Reference/WKUserScript_Ref/#//apple_ref/occ/instm/WKUserScript/initWithSource:injectionTime:forMainFrameOnly :) . – Alex