2014-10-06 12 views
6

Il manifest della cache funziona correttamente e gli eventi attivati ​​in Safari in IOS 8. Non funziona affatto in WKWebView qualcun altro risolve questo problema?WKWebView manifest della cache non funzionante IOS8

importazione UIKit

importazione 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() 
} 

}

La cache di applicazione ritorna come sostenuto se dovessi usare html5test.com

EDIT:

finestra .applicationCache non restituisce undefined quando lo ADED da 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() genera Errore: InvalidStateError: DOM eccezione 11: Si è tentato di utilizzare un oggetto che non è, o è non più, utilizzabile.

+1

Non vedo perché qualcuno lo sottovaluti. ApplicationCache è una funzionalità importante e non essere in grado di usarlo con WKWebView è un grande ritorno al passato. –

+0

Questo mi ha causato grossi grattacapi. Perché supportano lo spazio locale e non un manifest di cache? Qualche idea su come aggirare questo usando invece la funzionalità nativa? Sembra che dovrò memorizzare tutte le html/css/js/images tutte sul dispositivo ... perché Apple perché! – Fostah

risposta

2

Per la cronaca, questa domanda sembra essere stato chiesto su e collegato dalla Apple Developer Forums. La risposta ufficiale di Apple è che la funzionalità Cache dell'applicazione HTML5 non è disponibile in 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

Siamo in grado di risolvere questo problema utilizzando apis privati ​​... uno indietro a questo approccio è ... non possiamo usare le app della versione appstore ... se le sue app aziendali possiamo usarlo..qualcosa è la soluzione http://goo.gl/jnyX8T –

+0

Non sono riuscito ad arrivare a quel forum pubblicare, ma trovato un nuovo [post] (https://forums.developer.apple.com/message/160199#160199) da agosto 2016 fondamentalmente dicendo la stessa cosa. – Amelia

1

Penso che tu stia cercando di risolvere lo stesso problema di me. Questo è ciò che faccio.

  1. Salvare la pagina iniziale della propria app Web in un file HTML (index.html), incorporando tutto (CSS, JS, immagini come base 64, caratteri dell'icona). E aggiungi quel file nel tuo progetto Xcode.
  2. Avvia l'app leggendo il contenuto del file HTML e caricandolo in WKWebView. Puoi impostare la base come lo stesso url con cui dovresti iniziare. In questo modo, sarà come se l'app web fosse aperta sul tuo sito web.

Il vantaggio è che l'app verrà sempre avviata anche quando la rete dell'utente non è buona. Ecco il codice SWIFT che uso, per gentile concessione di 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). Se vuoi il codice sorgente completo, faccelo sapere e lo posterò su 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

Questo non ha nulla a che fare con la domanda posta. Stanno cercando di utilizzare la cache dell'applicazione HTML 5, che non sembra essere supportata in WKWebView (https://devforums.apple.com/message/1060452) –

Problemi correlati