鷲田です。
タイトルの点でつまづいていまして、どなたかお教えいただければと思い投稿します。
パッケージアプリで、TEMPORARY領域は、問題なく確保できるのですが、
PERSISTENT領域が、いろいろやってみたのですが確保できません。
たとえば、以下のようにしてみます。(誰かのをお借りしています、感謝)
以下のはちょっと複雑ですが、もっと単純化しても動きません。
(単純化したバージョンもメールの最後につけておきます。)
//////////////// ここから
function setUpOfflineMode(availableSpace) {
requestFileSystem(PERSISTENT, availableSpace, function(filesystem) {
//requestFileSystem(TEMPORARY, 500*1024*1024, function(filesystem) {
NSFileSystem.fs = filesystem;
console.log("availableSpace byte = "+availableSpace);
});
}
function onOfflineEnabled(amountOfSpaceNeeded) {
navigator.webkitPersistentStorage.queryUsageAndQuota(
function(usage, quota) {
console.log("usage = "+usage+" quota = "+quota);
var availableSpace = quota - usage;
if (availableSpace >= amountOfSpaceNeeded) {
// We're fine; just continue to set up offline mode.
setUpOfflineMode(availableSpace);
return;
}
var requestingQuota = amountOfSpaceNeeded + usage;
navigator.webkitPersistentStorage.requestQuota(
requestingQuota,
function(grantedQuota) {
setUpOfflineMode(grantedQuota - usage);
},
onerror);
}, onerror);
}
/////////////////////////
// ここで実行
////////////////////////
onOfflineEnabled(500 * 1024 * 1024);
//////////////////// ここまで
これでは、
usage = 0 quota = 0
availableSpace byte = 0
Error: QUOTA_EXCEEDED_ERR
となってしまいます。
しかし、このパッケージを、通常のChromeブラウザの「ファイルを開く」
でひらくと、「パーシステント領域を確保しますが、いいですかというメッセージが出ます」
というようなメッセージを出し、確保できているように見えます。
(同じ領域を、TEMPORARYでは確保できます。HotalはTEMPORARYしか使っていません)
確かに、パッケージアップでは、そのメッセージがどこに出るかが予測できません。
(ですから、パッケージアプでは、PERSISTENTは無理なのではないかと思ってしまいます)
manifestにも、該当する項目は見つけられませんでした。(chromeのファイルシステムの設定はありますが)
MACでもWindowsでも同じでした。
なお、
window.webkitStorageInfo.requestQuota(PERSISTENT, 1024*1024, ・・・・
は古いからだめだと拒絶されます。
電子書籍を読むのは、TEMPORARYでもいいのですが、書くのは、勝手に消されては困りますから。
よろしく、ご指導願います。
///////単純化したもの
navigator.webkitPersistentStorage.requestQuota(500*1024*1024, function(grantedBytes) {
requestFileSystem(PERSISTENT, grantedBytes, function(filesystem) {
console.log("granted byte = "+grantedBytes);
});
}, function(e) {
onerror(e);
console.log('Error', e);
});
//////////////////// ここまで
出力は、
granted byte = 0
となります。要求サイズを小さくしても変わりません。なにしろ、quota可能性は、0なのですから。