Fix: 修复中台数据存储的 BUG。 调整写入策略

main
胡宇飞 2024-08-09 14:29:21 +08:00
parent 49774c3281
commit 7214c447a6
1 changed files with 22 additions and 11 deletions

View File

@ -35,7 +35,8 @@ namespace Guru
{ {
private const float SaveInterval = 3; private const float SaveInterval = 3;
private const string SaveKey = "com.guru.sdk.model.save"; private const string SaveKey = "com.guru.sdk.model.save";
private float _lastSavedTime = 0; private DateTime _lastSavedTime = new DateTime(1970,1,1);
private bool _noAds = false; private bool _noAds = false;
private readonly BindableProperty<int> _bLevel; private readonly BindableProperty<int> _bLevel;
private readonly BindableProperty<int> _bPlay; private readonly BindableProperty<int> _bPlay;
@ -55,8 +56,8 @@ namespace Guru
public GuruSDKModel() public GuruSDKModel()
{ {
// 读取内存值
GuruSDKSerializedModel model = LoadModel(); GuruSDKSerializedModel model = LoadModel();
_uid = model.uid; _uid = model.uid;
_noAds = model.no_ads; _noAds = model.no_ads;
_bLevel = new BindableProperty<int>(model.b_level); _bLevel = new BindableProperty<int>(model.b_level);
@ -64,6 +65,7 @@ namespace Guru
_purchased = model.purchased; _purchased = model.purchased;
} }
public int BLevel public int BLevel
{ {
get => _bLevel.Value; get => _bLevel.Value;
@ -150,9 +152,10 @@ namespace Guru
} }
/// <summary> /// <summary>
/// 保存至数据 /// 保存至 PlayerPrefs 数据
/// </summary> /// </summary>
private void SaveToPlayerPrefs() /// <param name="writeToDisk"></param>
private void SaveToPlayerPrefs(bool writeToDisk = false)
{ {
var model = new GuruSDKSerializedModel() var model = new GuruSDKSerializedModel()
{ {
@ -164,21 +167,29 @@ namespace Guru
}; };
var json = JsonUtility.ToJson(model); var json = JsonUtility.ToJson(model);
PlayerPrefs.SetString(SaveKey, json); if (!string.IsNullOrEmpty(json))
{
PlayerPrefs.SetString(SaveKey, json);
}
if(writeToDisk)
{
PlayerPrefs.Save(); // 写入到磁盘
}
} }
/// <summary> /// <summary>
/// 保存数据 /// 保存数据
/// </summary> /// </summary>
/// <param name="force"></param> /// <param name="forceSave"></param>
public void Save(bool force = false) public void Save(bool forceSave = false)
{ {
bool save = force || (Time.realtimeSinceStartup - _lastSavedTime>= SaveInterval); bool writeToDisk = forceSave || (DateTime.Now - _lastSavedTime)>= TimeSpan.FromSeconds(SaveInterval);
if (save) if (writeToDisk)
{ {
_lastSavedTime = Time.realtimeSinceStartup; _lastSavedTime = DateTime.Now; // 超过间隔需要强制写入
SaveToPlayerPrefs();
} }
SaveToPlayerPrefs(writeToDisk); // 每次保存都要设置到 PlayerPrefs 内
} }
#endregion #endregion