LoginSignup
0
1

More than 5 years have passed since last update.

【Egret無料ご相談室】ブラウザを閉じてもデータをセーブしたい

Posted at

今日のご質問

image.png
変数のセーブってどうすればいいんだろ。
ブラウザ閉じたたらデータ消えますよね?

回答

egret.localStorage のグローバル関数を使うといいですよ

APIリファレンス:
http://developer.egret.com/cn/apidoc/index/name/egret.localStorage.globalFunction#methodSummary

使いかた

/// 簡単なデータの読み込みと保存
const userName = egret.localStorage.getItem("userName");
userName = "New Name";
egret.localStorage.setItem("userName", userName);

/// ちょっと複雑なデータの読み込み・保存
const savedJson = egret.localStorage.getItem("savedData");
const data = JSON.parse(savedJson);
const newData = { ... data, newProp: "New Value" } ;
const toSaveJson = JSON.stringfy(newData);
egret.localStorage.setItem("savedData",toSaveJson );

解説

インターフェースの定義
https://github.com/egret-labs/egret-core/blob/de70bf2cc9e04b674a2897f907e97f887f897c7a/src/egret/localStorage/localStorage.ts

ブラウザ向けの実装
https://github.com/egret-labs/egret-core/blob/de70bf2cc9e04b674a2897f907e97f887f897c7a/src/egret/localStorage/web/WebLocalStorage.ts

EgretEngineのLocalStorageha,ブラウザが実装しているLocalStorageへのラッパーです。

/src/egret/localStorage/web/WebLocalStorage.ts
    function getItem(key:string):string {
        return window.localStorage.getItem(key);
    }

    function setItem(key:string, value:string):boolean {
        try{
            window.localStorage.setItem(key, value);
            return true;
        }
        catch(e){
            egret.$warn(1047, key, value);
            return false;
        }
    }

    function removeItem(key:string):void {
        window.localStorage.removeItem(key);
    }


    function clear():void {
        window.localStorage.clear();
    }

LocalStorageとはWebStorageと呼ばれるものの一つで、javascriptを用いてクライアント側にデータを保存する仕組みです。ユーザのローカル(ブラウザ)にデータを保存することができるので、半永久的にデータを保持することができます。データの読み込み・更新も比較的簡単に行うことができます。
引用:http://wp.tech-style.info/archives/742

各ブラウザーの実装状況は?

おおむね実装されているようです

いつものごとく、iOSにはいろいろ制限があるようです

注記: iOS 5.1 より Safari Mobile は localStorage データを cache フォルダに保存しており、概して空き容量が少ない場合に OS の要求により、時々クリーンアップを受けます。

image.png

参考:
https://developer.mozilla.org/ja/docs/Web/API/Web_Storage_API
https://bbs.egret.com/forum.php?mod=viewthread&tid=11824&highlight=localstorage

iOS11未満のSafariはシークレットモードではLocalStorageにアクセスできなかったようです

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1