我们正在将Cordova的应用程序移植到Xamarin.forms。现在,恢复旧版本在localStorage中保留的数据至关重要。
我试图在Xamarin中创建一个WebView,然后显示我需要的localStorage字段,但它似乎完全是空的。但是,如果我重新安装旧的cordova应用程序,它仍然可以访问数据,因此它肯定会存储并在安装Xamarin版本后继续存在。
Cordova文档提到了在某些平台上拥有自己的localStorage实现的一些内容,但对于哪些以及如何实现并不清楚。
基本上我正在寻找一种可靠地恢复android和iOS上的localStorage数据的方法。
我现在可以想到两个方向:
答案 0 :(得分:1)
对于iOS,我最终发现本地存储数据实际上仍在Library / WebKit / LocalStorage / file__0.localstorage中。但由于某些原因,Xamarin的webview无法提供数据。可能有一些摆弄你可以得到它(我认为它与基本网址的差异有关)。
由于我只需要数据,我已经用sqlite.NET直接打开了localstorage文件并以这种方式获取了数据。 (注意:它存储为Unicode的blob,因此不像你期望的那样存储UTF-8)
在Android上工作非常相似,但在某些情况下,数据是UTF-8,因此需要进行一些检测。 (在我的例子中:将它转换为两种方式并检查结果值是否看起来有点像有效的JSON)
答案 1 :(得分:0)
iOS上的一些细节FYI,LocalStorage在数据库中保存哪条路径
Library/WebKit/LocalStorage/
(UIWebView中)Library/Caches/
(UIWebView中)Library/WebKit/WebsiteData/LocalStorage/
(WKWebView)然后打开数据库,执行查询SELECT key,value FROM ItemTable
可以得到key
和value
。关键是NSString,值是NSData,用NSUTF16LittleEndianStringEncoding
编码({{1}在Android上),使用代码转换为NSString:
UTF-16LE
答案 2 :(得分:-1)
无法完成。不同app不同的元数据。这样做是不可能的。它基于每个本地存储的应用ID。