mergemilitary/Assets/TKGSDK/UnitySDK/Scripts/Common/ToukaUtils.cs

353 lines
12 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.IO;
using System.Runtime.InteropServices;
using System.Security.Cryptography;
using System.Text;
using UnityEngine;
namespace Touka
{
/// <summary>
/// SDK 可供外部调用的一些工具方法
/// </summary>
public static class ToukaUtils
{
/// <summary>
/// 跳转隐私链接
/// </summary>
public static void OpenPrivacyURL()
{
Application.OpenURL(TKGBasicConfig.PrivacyURL);
}
public static void OpenUserPolicy()
{
Application.OpenURL(TKGBasicConfig.AgreementURL);
}
public static void OpenBrowserUrl(string _url)
{
Application.OpenURL(_url);
}
/// <summary>
/// 打开更多游戏 - 跳转appstore公司账号页面
/// </summary>
/// <param name="_withRedPotActive"></param>
public static void OpenMoreGames()
{
#if UNITY_IOS
Application.OpenURL(TKGBasicConfig.MoreGameURL);
#endif
}
/// <summary>
/// 打开URL
/// </summary>
/// <param name="_url"></param>
public static void OpenUrl(string _url)
{
Application.OpenURL(_url);
}
/// <summary>
/// 一键加入QQ群
/// </summary>
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);
}
/// <summary>
/// 打开评价链接 - 跳转游戏商店页
/// </summary>
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);
}
/// <summary>
/// iOS游戏内弹出系统评价窗口
/// </summary>
public static void OpenSystemReviewPop()
{
Debug.Log("游戏内跳出评价");
#if UNITY_IOS
TGTools.Instance.ShowReview();
#endif
}
/// <summary>
/// 需要延迟初始化tenjin时调用
/// </summary>
public static void InitTenjinFirst()
{
if (GetPlayerPrefsIntByKey(StaticStringsPlayerPrefs.HasInitTenjinFirst, 0) == 0)
{
ToukaAnalyticsManager.Instance.InitTenjinInner();
SavePlayerPrefsIntByKeyValue(StaticStringsPlayerPrefs.HasInitTenjinFirst, 1);
}
}
/// <summary>
/// 是否首次触达某个事件
/// </summary>
/// <param name="_key"></param>
/// <returns></returns>
public static bool IfFirstCheckPlayerPrefs(string _key)
{
var isFirstClick = GetPlayerPrefsIntByKey(_key) == 0;
SavePlayerPrefsIntByKeyValue(_key, 1);
return isFirstClick;
}
/// <summary>
/// 只首次触发某个事件进行打点
/// </summary>
/// <param name="_logType"></param>
/// <param name="_eventKey"></param>
/// <param name="_eventLabel"></param>
public static void LogFirstEvent(ToukaLogType _logType, string _eventKey)
{
var isFirstClick = IfFirstCheckPlayerPrefs(_eventKey);
if (isFirstClick)
{
ToukaAnalyticsManager.Instance.LogEvent(_logType, _eventKey);
}
}
/// <summary>
/// 是否是中文
/// </summary>
public static bool IsCN
{
get
{
var language = Application.systemLanguage.ToString().ToLower();
if (language.Contains("chinese"))
{
return true;
}
return false;
}
}
/// <summary>
/// 本地存int
///
/// key 内部拼接了前缀Touka_
/// </summary>
/// <param name="_key"></param>
/// <param name="_defaultValue"></param>
/// <returns></returns>
public static int GetPlayerPrefsIntByKey(string _key, int _defaultValue = 0)
{
int value = PlayerPrefs.GetInt(string.Format("{0}{1}", StaticStringsPlayerPrefs.TOUKA_PREFIX, _key), _defaultValue);
return value;
}
/// <summary>
/// 本地取int
///
/// key 内部拼接了前缀Touka_
/// </summary>
/// <param name="_key"></param>
/// <param name="_newValue"></param>
public static void SavePlayerPrefsIntByKeyValue(string _key, int _newValue)
{
PlayerPrefs.SetInt(string.Format("{0}{1}", StaticStringsPlayerPrefs.TOUKA_PREFIX, _key), _newValue);
PlayerPrefs.Save();
}
/// <summary>
/// 本地存string
///
/// key 内部拼接了前缀Touka_
/// </summary>
/// <param name="_key"></param>
/// <param name="_defaultValue"></param>
/// <returns></returns>
public static string GetPlayerPrefsStringByKey(string _key, string _defaultValue = "")
{
string value = PlayerPrefs.GetString(string.Format("{0}{1}", StaticStringsPlayerPrefs.TOUKA_PREFIX, _key), _defaultValue);
return value;
}
/// <summary>
/// 本地取string
///
/// key 内部拼接了前缀Touka_
/// </summary>
/// <param name="_key"></param>
/// <param name="_newValue"></param>
public static void SavePlayerPrefsStringByKeyValue(string _key, string _newValue)
{
PlayerPrefs.SetString(string.Format("{0}{1}", StaticStringsPlayerPrefs.TOUKA_PREFIX, _key), _newValue);
PlayerPrefs.Save();
}
/// <summary>
/// 缓存当前时间
/// </summary>
/// <param name="_key"></param>
public static void SaveCurrTime2PlayerPrefs(string _key)
{
DateTime date1 = DateTime.Now;
string s1 = date1.ToString();
SavePlayerPrefsStringByKeyValue(_key, s1);
}
/// <summary>
/// 缓存本地时间为string
/// </summary>
/// <param name="_key"></param>
/// <param name="_dateStr"></param>
public static void SaveCurrTime2PlayerPrefsWithStringDate(string _key, string _dateStr)
{
SavePlayerPrefsStringByKeyValue(_key, _dateStr);
}
/// <summary>
/// 取出缓存string时间为 DateTime
/// </summary>
/// <param name="_key"></param>
/// <returns></returns>
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;
}
/// <summary>
/// 判断是否为新用户
///
/// 距离首次登录时间间隔24h以内为新用户
/// </summary>
/// <returns></returns>
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;
}
/// <summary>
/// equal double
/// </summary>
/// <param name="a"></param>
/// <param name="b"></param>
/// <returns></returns>
public static bool equalDouble(double a, double b)
{
if ((a - b > -0.000001) && (a - b) < 0.000001)
return true;
else
return false;
}
/// <summary>
/// Floats the equal.
/// </summary>
/// <returns><c>true</c>, if equal was floated, <c>false</c> otherwise.</returns>
/// <param name="a">The alpha component.</param>
/// <param name="b">The blue component.</param>
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 >= TKGSDKManager.Instance.GetConfigInt(ToukaInnerParamKey.NewUserPassXLevel.ToString()))
{
string tPassLvKey = "PassLv_Log";
if (IfFirstCheckPlayerPrefs(tPassLvKey))
{
#if USE_FIREBASE
FirebaseTool.Instance.LogEvent(StaticStringsEvent.Event_Tenjin_TKInner_NewUserPassLevelX);
#endif
ToukaAnalyticsManager.Instance.LogEvent(ToukaLogType.Tenjin, StaticStringsEvent.Event_Tenjin_TKInner_NewUserPassLevelX);
ToukaAnalyticsManager.Instance.LogEventByUmeng(StaticStringsEvent.Event_Tenjin_TKInner_NewUserPassLevelX);
}
if (pWithAdCheck)
{
CheckAdCount();
}
}
#if UNITY_IOS
TGiOSAdManager.Instance.NewUserPassLevel();
#endif
}
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) >= TKGSDKManager.Instance.GetConfigInt(ToukaInnerParamKey.NewUserPvCount.ToString()))
{
if (IfFirstCheckPlayerPrefs(tLvAndAdKey))
{
#if USE_FIREBASE
FirebaseTool.Instance.LogEvent(tEvtPassLvAndAdCount);
#endif
ToukaAnalyticsManager.Instance.LogEvent(ToukaLogType.Tenjin, tEvtPassLvAndAdCount);
ToukaAnalyticsManager.Instance.LogEventByUmeng(tEvtPassLvAndAdCount);
}
}
}
}
}