web-dev-qa-db-ja.com

FT Webアプリのように、iPadでHTML5 localstorageサイズの増加をリクエストするにはどうすればよいですか?

http://app.ft.com (Financial TimesモバイルWebアプリ)を開くと、アプリを「ホーム」に追加するように求められます。

これを行った後、アプリを開くと、localstoreageデータベースのサイズを最大50MBに増やすことを再度許可するように求められます。

  • これはどのように行うことができますか? JavaScript API呼び出しはありますか?許可または何か?
  • このiPad(iOS?)は特定のものですか、それとも他のWebkitブラウザで動作しますか?
31
FrancescoR

私はたまたまこれについて知っています;)

既存のデータベースのストレージサイズの増加をリクエストするAPIはありません。増加を強制する1つの方法があります。増加が必要なサイズでデータベースにデータを書き込み、ユーザーにプロンプ​​トを表示します。ただし、これは低速になりますおよび現在割り当てられているスペースを確認する方法がないため、お勧めしません。

Black Frogはこの正しい部分を持っています。これを行う唯一の適切な方法は、開かれたときに非常に大きなデータベースを要求することです。たとえば、

openDatabase('databaseName', '1.0', 'My Database', 50*1024*1024, …

…50MBのスペースを要求します。

ただし、ユーザーが最初にサイトにアクセスするときに、一度に50MBの制限についてプロンプトを表示したくない場合があります。それで、最初は5MBを要求し、後で50MBで再び開くことができると思いますか?残念ながら、これは機能しません。2番目のオープンの試みは、量を増やして、サイレントに成功し、サイズの増加を促したり、実際に使用可能なサイズを増やしたりすることはありません。

したがって、FTアプリは5MBの「プレビュー」データベースから開始するため、ユーザーは最初のロード時にプロンプ​​トが表示されません。割り当てられたスペースはすべてのデータベース間で共有される必要があるため、この5MBの制限を超えないようにします。

ユーザーがより多くのコンテンツの保存を許可することを選択した場合、アプリは次に40MBのスペースを持つ別の名前でデータベースを開こうとします(ユーザーは50MBを承認するように求められます)。これにより、そのデータベースで40MB、元のプレビューデータベースで5MBが許可されるため、行の挿入時にどちらも失敗しないはずです。現在、iOSでは合計50MBが上限です。

現在、すべてのブラウザーはデータベース領域の制限を異なる方法で処理しているため、クロスプラットフォームを計画している場合は、慎重にテストしてください。デスクトップサファリはかなりうまく処理し、はるかに大きなサイズを許可します。 Chromeはまったく増加を許可していません;など。すべての "HTML5"実装が奇妙な方法で異なることを期待してください:)

37
Rowan

このデータベースは Web SQL Database APIの一部であり、HTML5の一部ではありません。以下を使用して、データベースのサイズを設定します

function prepareDatabase(ready, error) {
    return openDatabase('documents', '1.0', 'Offline document storage', 50*1024*1024, function (db) {
        db.changeVersion('', '1.0', function (t) {
            t.executeSql('CREATE TABLE docids (id, name)');
        }, error);
    });
}

Web SQLデータベースの紹介 HTML5のDoctorには、これがどのように機能するかについての非常に簡単なチュートリアルがあります。

7
Black Frog

IPad 2(iOS 5.1.1)でオフラインアプリをテストしたところ、アプリ内で特別なことを行う必要はありません。たとえば、私のアプリには約18 MBのオフラインデータがあります。ブラウザーがURLにヒットすると、ブラウザーはサイズを25 MBに増やすように要求するメッセージをポップアップし、それを受け入れましたが、すべて問題ありません。ありがとう

1
user1258024

これはブラウザ固有です。ほとんどは5MBに設定しており、どこかで設定を増やしていくオプションもあります。ただし、すべてのブラウザがこれを提供しているわけではありません。

0
Ian Devlin