com.guru.unity.sdk.core/Runtime/GuruCore/Runtime/Data/StandardProperties.cs

206 lines
5.8 KiB
C#

namespace Guru
{
using System;
using System.Globalization;
using UnityEngine;
using System.IO;
/// <summary>
/// 应用的全局标准属性
/// </summary>
public static class StandardProperties
{
#region 初始化
/// <summary>
/// 全局属性初始化 需要在应用启动时调用一次
/// </summary>
public static void Init()
{
// 首次安装初始化各种参数
if (IsFirstInstall)
{
string key = "";
FirstInstallDate = DateTime.Now;
key = nameof(SoundEffectEnabled);
if (!HasKey(key)) SoundEffectEnabled = true;
key = nameof(VibrationEnabled);
if (!HasKey(key)) VibrationEnabled = true;
key = nameof(FirstInstallVersion);
if (!HasKey(key)) FirstInstallVersion = FullVersion;
Save();
}
}
private static bool IsFirstInstall => HasKey(nameof(FirstInstallDate));
private static bool HasKey(string key) => PlayerPrefs.HasKey(key);
private static void Save() => PlayerPrefs.Save();
#endregion
#region 标准属性值
/// <summary>
/// FirebaseId
/// </summary>
public static string FirebaseId
{
get => PlayerPrefs.GetString(nameof(FirebaseId), "");
set {
if (!string.IsNullOrEmpty(value))
{
PlayerPrefs.SetString(nameof(FirebaseId), value);
GuruAnalytics.SetFirebaseId(value);
}
}
}
/// <summary>
/// Adjust ADID
/// </summary>
public static string AdjustId
{
get => PlayerPrefs.GetString(nameof(AdjustId), "");
set {
if (!string.IsNullOrEmpty(value))
{
PlayerPrefs.SetString(nameof(AdjustId), value);
GuruAnalytics.SetAdjustId(value);
}
}
}
/// <summary>
/// Google ADID
/// </summary>
public static string GoogleAdId
{
get => PlayerPrefs.GetString(nameof(GoogleAdId), "");
set {
if (!string.IsNullOrEmpty(value))
{
PlayerPrefs.SetString(nameof(GoogleAdId), value);
GuruAnalytics.SetAdId(value);
}
}
}
/// <summary>
/// 免费金币资源
/// </summary>
public static int Coin
{
get => PlayerPrefs.GetInt(nameof(Coin), 0);
set => PlayerPrefs.SetInt(nameof(Coin), value);
}
/// <summary>
/// 付费金币资源
/// </summary>
public static int IAPCoin
{
get => PlayerPrefs.GetInt(nameof(IAPCoin), 0);
set => PlayerPrefs.SetInt(nameof(IAPCoin), value);
}
/// <summary>
/// 用户累计购买次数
/// </summary>
public static int PurchaseCount
{
get => PlayerPrefs.GetInt(nameof(PurchaseCount), 0);
set => PlayerPrefs.SetInt(nameof(PurchaseCount), value);
}
/// <summary>
/// 首次安装日期
/// </summary>
public static DateTime FirstInstallDate
{
get
{
var key = nameof(FirstInstallDate);
if (PlayerPrefs.HasKey(key))
{
var value = PlayerPrefs.GetString(key, "");
if (!string.IsNullOrEmpty(value)) return DateTime.Parse(value);
}
var now = DateTime.Now.ToUniversalTime();
FirstInstallDate = now;
return now;
}
set => PlayerPrefs.SetString(nameof(FirstInstallDate),
value.ToUniversalTime().ToString(CultureInfo.InvariantCulture));
}
/// <summary>
/// 首次安装版本号
/// </summary>
public static string FirstInstallVersion
{
get => PlayerPrefs.GetString(nameof(FirstInstallVersion), "");
set => PlayerPrefs.SetString(nameof(FirstInstallVersion), value);
}
/// <summary>
/// 当前应用的版本
/// </summary>
public static string AppVersion => Application.version;
/// <summary>
/// 当前应用的版本Code
/// </summary>
public static string VersionCode
{
get
{
var path = $"{Application.streamingAssetsPath}/{GuruCore.VERSION_CODE_FILE}";
if (File.Exists(path)) return File.ReadAllText(path);
return "";
}
}
/// <summary>
/// 完整版本号
/// </summary>
public static string FullVersion
{
get
{
var code = VersionCode;
if (string.IsNullOrEmpty(code)) code = "unknown";
return $"{AppVersion}-{code}";
}
}
/// <summary>
/// 音效开关
/// </summary>
public static bool SoundEffectEnabled
{
get => PlayerPrefs.GetInt(nameof(SoundEffectEnabled), 0) == 1;
set => PlayerPrefs.SetInt(nameof(SoundEffectEnabled), value? 1: 0);
}
/// <summary>
/// 震动开关
/// </summary>
public static bool VibrationEnabled
{
get => PlayerPrefs.GetInt(nameof(VibrationEnabled), 0) == 1;
set => PlayerPrefs.SetInt(nameof(VibrationEnabled), value? 1: 0);
}
#endregion
}
}