using System;
using System.IO;
using System.Runtime.InteropServices;
using System.Security.Cryptography;
using System.Text;
using UnityEngine;
///
/// SDK 可供外部调用的一些工具方法
///
public static class ToukaUtils
{
///
/// 跳转隐私链接
///
public static void OpenPrivacyURL()
{
Application.OpenURL("http://www.toukagame.com/PrivacyPolicy.html");
}
public static void OpenUserPolicy()
{
Application.OpenURL("https://www.toukagame.com/agreement.html");
}
///
/// 打开更多游戏 - 跳转appstore公司账号页面
///
///
public static void OpenMoreGames()
{
#if UNITY_IOS
Application.OpenURL("https://apps.apple.com/cn/developer/toukagames/id1544391713");
#endif
}
///
/// 打开URL
///
///
public static void OpenUrl(string _url)
{
Application.OpenURL(_url);
}
///
/// 一键加入QQ群
///
public static void JoinQQGroup()
{
string qqUrl = "mqqapi://card/show_pslcard?src_type=internal&version=1&uin=916827975&key=ed38055c01233796a17ff0a800c9967cdf1c2b82dfc98d287130dfe1324b411d&card_type=group&source=external&jump_from=webapi";
Application.OpenURL(qqUrl);
}
///
/// 打开评价链接 - 跳转游戏商店页
///
public static void OpenReviewURL()
{
#if UNITY_ANDROID
Debug.Log("Review url = " + StaticStringsKey.REVIEW_URL + Application.identifier);
Application.OpenURL(StaticStringsKey.REVIEW_URL+Application.identifier);
return;
#endif
Application.OpenURL(StaticStringsKey.REVIEW_URL);
}
///
/// iOS游戏内弹出系统评价窗口
///
public static void OpenSystemReviewPop()
{
Debug.Log("游戏内跳出评价");
#if UNITY_IOS
TGTools.Instance.ShowReview();
#endif
}
///
/// 需要延迟初始化tenjin时调用
///
public static void InitTenjinFirst()
{
ToukaAnalyticsManager.Instance.InitTenjinInner();
SavePlayerPrefsIntByKeyValue(StaticStringsPlayerPrefs.HasInitTenjinFirst, 1);
}
///
/// 是否首次触达某个事件
///
///
///
public static bool IfFirstCheckPlayerPrefs (string _key) {
var isFirstClick = GetPlayerPrefsIntByKey(_key) == 0;
SavePlayerPrefsIntByKeyValue(_key, 1);
return isFirstClick;
}
///
/// 只首次触发某个事件进行打点
///
///
///
///
public static void LogFirstEvent (ToukaLogType _logType, string _eventKey) {
var isFirstClick = IfFirstCheckPlayerPrefs (_eventKey);
if (isFirstClick) {
ToukaAnalyticsManager.Instance.LogEvent(_logType, _eventKey);
}
}
///
/// 是否是中文
///
public static bool IsCN {
get
{
var language = Application.systemLanguage.ToString().ToLower();
if (language.Contains("chinese"))
{
return true;
}
return false;
}
}
///
/// 本地存int
///
/// key 内部拼接了前缀:Touka_
///
///
///
///
public static int GetPlayerPrefsIntByKey(string _key, int _defaultValue = 0)
{
int value = PlayerPrefs.GetInt(string.Format("{0}{1}", StaticStringsPlayerPrefs.TOUKA_PREFIX, _key), _defaultValue);
return value;
}
///
/// 本地取int
///
/// key 内部拼接了前缀:Touka_
///
///
///
public static void SavePlayerPrefsIntByKeyValue(string _key, int _newValue)
{
PlayerPrefs.SetInt(string.Format("{0}{1}", StaticStringsPlayerPrefs.TOUKA_PREFIX, _key), _newValue);
PlayerPrefs.Save();
}
///
/// 本地存string
///
/// key 内部拼接了前缀:Touka_
///
///
///
///
public static string GetPlayerPrefsStringByKey(string _key, string _defaultValue = "")
{
string value = PlayerPrefs.GetString(string.Format("{0}{1}", StaticStringsPlayerPrefs.TOUKA_PREFIX, _key), _defaultValue);
return value;
}
///
/// 本地取string
///
/// key 内部拼接了前缀:Touka_
///
///
///
public static void SavePlayerPrefsStringByKeyValue(string _key, string _newValue)
{
PlayerPrefs.SetString(string.Format("{0}{1}", StaticStringsPlayerPrefs.TOUKA_PREFIX, _key), _newValue);
PlayerPrefs.Save();
}
///
/// 缓存当前时间
///
///
public static void SaveCurrTime2PlayerPrefs(string _key)
{
DateTime date1 = DateTime.Now;
string s1 = date1.ToString();
SavePlayerPrefsStringByKeyValue(_key, s1);
}
///
/// 缓存本地时间为string
///
///
///
public static void SaveCurrTime2PlayerPrefsWithStringDate(string _key, string _dateStr)
{
SavePlayerPrefsStringByKeyValue(_key, _dateStr);
}
///
/// 取出缓存string时间为 DateTime
///
///
///
public static DateTime GetDateTimeFromPlayerPrefs(string _key)
{
string firstDateValue = GetPlayerPrefsStringByKey(_key);
if (string.IsNullOrEmpty(firstDateValue))
{
return new DateTime(1990, 1, 1, 0, 0, 0);
}
DateTime dateOld = Convert.ToDateTime(firstDateValue);
return dateOld;
}
///
/// 判断是否为新用户
///
/// 距离首次登录时间间隔24h以内为新用户
///
///
public static bool isNewUser()
{
DateTime dateCurr = DateTime.Now;
string firstDateValue = GetPlayerPrefsStringByKey(StaticStringsPlayerPrefs.FirstLoginTime);
if (string.IsNullOrEmpty(firstDateValue))
{
Debug.Log("存的值为空,为新用户");
return true;
}
Debug.Log("读取出来的值: " + firstDateValue + " , 现在的时间值:" + dateCurr.ToString()); // 06/16/2019 19:46:57
DateTime dateOld = Convert.ToDateTime(firstDateValue);
TimeSpan timeSpan = dateCurr - dateOld;
Debug.Log("timeSpan.Seconds : " + timeSpan.TotalMinutes);
if(timeSpan.TotalMinutes >= 24 * 60)
{
Debug.Log("不是新用户了");
return false;
}
Debug.Log("是新用户");
return true;
}
///
/// equal double
///
///
///
///
public static bool equalDouble(double a, double b)
{
if ((a - b > -0.000001) && (a - b) < 0.000001)
return true;
else
return false;
}
///
/// Floats the equal.
///
/// true, if equal was floated, false otherwise.
/// The alpha component.
/// The blue component.
public static bool FloatEqual(float a, float b)
{
if ((a - b > -0.000001) && (a - b) < 0.000001)
{
return true;
}
else
{
return false;
}
}
public static string GetTodayDataStr()
{
string timeStr = DateTime.Now.ToString("yyyy-MM-dd");
return timeStr;
}
public static void CheckPassLvAndAdEvent(int pLvNum, bool pWithAdCheck = false)
{
//Debug.Log("is first day ==: " + ToukaUtilsInner.Instance.isFirstDayLogin);
//Debug.Log("pass lv count ==: " + pLvNum);
if (ToukaUtilsInner.Instance.isFirstDayLogin && pLvNum >= int.Parse(StaticOnlineParams.NewUserPassXLevelOnlineParams.DefaultValue))
{
string tPassLvKey = "PassLv_Log";
if (IfFirstCheckPlayerPrefs(tPassLvKey))
{
ToukaAnalyticsManager.Instance.LogEvent(ToukaLogType.Tenjin, StaticStringsEvent.Event_Tenjin_TKInner_NewUserPassLevelX);
ToukaAnalyticsManager.Instance.LogEventByUmeng(StaticStringsEvent.Event_Tenjin_TKInner_NewUserPassLevelX);
}
if (pWithAdCheck)
{
CheckAdCount();
}
}
}
private static void CheckAdCount()
{
var videoCount = GetPlayerPrefsIntByKey(StaticStringsPlayerPrefs.VideoShowCount);
var intersitialCount = GetPlayerPrefsIntByKey(StaticStringsPlayerPrefs.IntersitialShowCount);
string tLvAndAdKey = "PassLv&AdCount_Log";
string tEvtPassLvAndAdCount = "Passlevel&Count_Video";
//Debug.Log("watch ad count ==: " + (videoCount + intersitialCount));
if ((videoCount + intersitialCount) >= int.Parse(StaticOnlineParams.NewUserAdsCountOnlineParams.DefaultValue))
{
if (IfFirstCheckPlayerPrefs(tLvAndAdKey))
{
ToukaAnalyticsManager.Instance.LogEvent(ToukaLogType.Tenjin, tEvtPassLvAndAdCount);
ToukaSDKManager.Instance.LogEventByUmeng(tEvtPassLvAndAdCount);
}
}
}
}