2014-10-06 21 views
6

Önbellek bildirimi iyi çalışıyor ve IOS 8'de safari ile ilgili etkinlikler başlatılıyor. WKWebView'da hiç çalışmayan hiç kimse bu sorunu çözemiyor mu?WKWebView Önbellek bildirimi çalışmıyor IOS8

ithalat UIKit

ithalat WebKit ben html5test.com

DÜZENLEME kullanmak olsaydı desteklenen uygulama önbelleği geri gelir}

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

:

pencere .applicationCache, ne zaman lo tanımsız döndürmez

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

WKWebView

den aktarıldı DÜZENLEME 2: bir girişimde olmayan bir nesneyi kullanmak için yapılmıştır, ya da: InvalidStateError: DOM özel durum 11

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() Hata atar Artık kullanılamaz.

+1

Neden birinin neden bunu reddedeceğini anlamıyorum. ApplicationCache önemli bir özelliktir ve WKWebView ile kullanamamak büyük bir geri dönüş. –

+0

Bu bana büyük baş ağrılarına neden oldu. Neden bir önbellek manifestosu değil localstorage'ı destekliyorlar? Bunun yerine yerel işlevselliği kullanarak nasıl elde edilebileceğine dair herhangi bir Fikir? Cihazın tüm html/css/js/images'lerini saklamak zorundayım gibi görünüyor ... neden Apple? – Fostah

cevap

2

Sadece kayıt için, bu soru Apple Developer Forums itibaren istendi ve bağlantılı gibi görünüyor. Apple'ın resmi yanıtı, HTML5 Uygulama Önbellek işlevselliğinin WKWebView'da bulunmamasıdır:

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

+1

'da desteklenmiyor gibi görünen HTML 5 Uygulama Önbelleği'ni kullanmak istiyorlar. Bu sorunu özel apis kullanarak çözebiliriz ... bir set geri Bu yaklaşıma göre ... biz appstore sürüm uygulamalarını kullanamıyoruz ... kurumsal uygulamalarını kullanabiliyorsak ... çözüm http://goo.gl/jnyX8T –

+0

Bu foruma ulaşamadım post, ama aynı şeyi söyleyerek Ağustos 2016'dan yeni bir [post] (https://forums.developer.apple.com/message/160199#160199) bulundu. – Amelia

1

Sanırım, benimle aynı sorunu çözmeye çalışıyorsunuz. Bu benim işim.

  1. Web uygulamanızın başlangıç ​​sayfasını, her şeyi (CSS, JS, görüntüleri temel 64, simge fontları) içine yerleştirerek bir HTML dosyasına (index.html) kaydedin. Ve bu dosyayı Xcode projenize ekleyin.
  2. Uygulamayı, HTML dosyasının içeriğini okuyarak başlatın ve WKWebView'unuza yükleyin. Tabanını, başlamanız gereken aynı URL olarak ayarlayabilirsiniz. Bu şekilde, web uygulamasının web sitenizde açılması gibi olacaktır.

Buradaki yarar, uygulamanızın, kullanıcının ağı iyi olmadığında bile her zaman başlayacağıdır. Kullandığım SWIFT kodu, Matt Neuberg'in izniyle (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). Tam kaynak kodunu istiyorsanız, lütfen bana bildirin ve Github'da yayınlayacağım.

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

Bunun, sorulan soruyla ilgisi yoktur. WKWebView (https://devforums.apple.com/message/1060452) –