2014-10-06 14 views
6

Manifest pamięci podręcznej działa dobrze, a zdarzenia uruchamiane w Safari w IOS 8. Nie działa w ogóle w WKWebView ktoś inny rozwiązuje ten problem?WKWebView Manifest pamięci podręcznej nie działa IOS8

import UIKit

import WebKit

class ViewController: UIViewController { 
@IBOutlet var containterView : UIView! = nil 
var webView : WKWebView? 
override func loadView(){ 
    super.loadView() 
    self.webView = WKWebView() 
    self.view = self.webView! 
} 
override func viewDidLoad() { 
    super.viewDidLoad() 
    var url = NSURL(string:"http://html5demos.com/offlineapp") 
    var req = NSURLRequest(URL:url) 
    self.webView!.loadRequest(req) 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
} 

}

Pamięć podręczna aplikacja wraca jako obsługiwane gdybym używać html5test.com

EDIT:

okno .applicationCache nie zwraca undefined, gdy lo aded z WKWebView

console.log("Initializing Page");  
if (window.applicationCache == undefined){ 
    console.log("Application cache not suported!"); 
    updateSplash(); 
} 
console.log(window.applicationCache); returns: DOMApplicationCache 

EDIT 2:

if (typeof window.applicationCache.update === 'function'){ 
     console.log("Application has method update"); 
     console.log(window.applicationCache.update); //shows swapCache() and update() methods 
     window.applicationCache.update(); 
    } 

window.applicationCAche.update() zgłasza błąd: InvalidStateError DOM wyjątek 11: Próba użycie obiektu, który nie jest lub już nie, użyteczny.

+1

Nie widzę powodu, dla którego ktoś mógłby to zrobić. ApplicationCache to ważna cecha i niemożność korzystania z niego w WKWebView to wielki powrót. –

+0

To spowodowało mi poważne bóle głowy. Dlaczego mieliby obsługiwać localstorage, a nie manifest cache? Jakieś pomysły, jak obejść ten problem za pomocą natywnej funkcjonalności? Wygląda na to, że będę musiał przechowywać wszystkie pliki html/css/js/all na urządzeniu ... dlaczego jabłko dlaczego! – Fostah

Odpowiedz

2

Tylko dla rekordu, to pytanie wydaje się być zadawane na i związane z Apple Developer Forums. Oficjalną odpowiedzią firmy Apple jest to, że funkcja pamięci podręcznej aplikacji HTML5 nie jest dostępna w WKWebView:

The offline application cache is not enabled in WKWebView. Feel free to request that it be made available via https://bugreport.apple.com .

+1

Możemy rozwiązać ten problem, używając prywatnych apis ... jeden zestaw z powrotem do tego podejścia ... nie możemy używać aplikacji z aplikacjami do wersji aplikacji ... jeśli aplikacje dla przedsiębiorstw możemy z nich korzystać ... jest rozwiązanie http://goo.gl/jnyX8T –

+0

Nie mogę uzyskać dostępu do tego forum pocztą, ale od sierpnia 2016 r. znaleziono nowy [post] (https://forums.developer.apple.com/message/160199#160199) w zasadzie mówiąc to samo. – Amelia

1

Myślę, że próbujesz rozwiązać ten sam problem co ja. To jest to, co robie.

  1. Zapisz stronę początkową swojej aplikacji internetowej w jednym pliku HTML (index.html), osadzając wszystko (CSS, JS, obrazy jako podstawowe 64, czcionki ikon). I dodaj ten plik do projektu Xcode.
  2. Uruchom aplikację, odczytując zawartość pliku HTML i załaduj ją do swojego WKWebView. Możesz ustawić bazę jako ten sam URL, od którego powinieneś zacząć. W ten sposób będzie wyglądać, jakby aplikacja internetowa była otwierana w Twojej witrynie.

Zaletą jest to, że aplikacja zawsze się uruchamia, nawet jeśli sieć użytkownika nie jest dobra. Oto kod SWIFT, którego używam, dzięki uprzejmości Matt Neuberg (https://books.google.com/books?id=wLaVBQAAQBAJ&pg=PT669&lpg=PT669&dq=addConstraints+wkwebview&source=bl&ots=7trE7MR1zR&sig=VT6GDBGbDw9dh89wDb5Uajd4gUY&hl=en&sa=X&ei=cyyeVNH4MM3ToATukoDgAQ&ved=0CDkQ6AEwBA#v=onepage&q=addConstraints%20wkwebview&f=false). Jeśli potrzebujesz pełnego kodu źródłowego, daj mi znać, a opublikuję go na Github.

let templatepath = NSBundle.mainBundle().pathForResource("index", ofType: "html")! 
    let base = NSURL(string:"http://m.ftchinese.com/iphone-2014.html#iOSShare") 
    var s = NSString(contentsOfFile:templatepath, encoding:NSUTF8StringEncoding, error:nil)! 
    self.webView!.loadHTMLString(s, baseURL:base) 
+0

Nie ma to nic wspólnego z pytaniem. Chcą korzystać z pamięci podręcznej aplikacji HTML 5, która nie jest obsługiwana w WKWebView (https://devforums.apple.com/message/1060452) –

Powiązane problemy