fix:1、添加项目
This commit is contained in:
@@ -0,0 +1,511 @@
|
||||
namespace FlowerPower
|
||||
{
|
||||
using System.Text;
|
||||
using UnityEngine.Events;
|
||||
using System.Collections;
|
||||
using UnityEngine.Networking;
|
||||
using System.Collections.Generic;
|
||||
using Newtonsoft.Json;
|
||||
using UnityEngine;
|
||||
using System;
|
||||
using DG.Tweening;
|
||||
using Unity.VisualScripting;
|
||||
|
||||
public class NetworkKit
|
||||
{
|
||||
public static string CDNUrl;
|
||||
|
||||
//打点需要的值-----began----
|
||||
public static string trace_id;
|
||||
public static string channel_id;
|
||||
public static long userId;
|
||||
//打点需要的值-----end----
|
||||
public static Dictionary<string, bool> statusDic = new Dictionary<string, bool>();
|
||||
public static Dictionary<string, Dictionary<string, bool>> statusDic2 = new Dictionary<string, Dictionary<string, bool>>();
|
||||
|
||||
public static string GetCacheToken()
|
||||
{
|
||||
|
||||
string token = null;
|
||||
if (PlayerPrefsKit.HasKey(PrefsKeyConst.JarvisToken))
|
||||
{
|
||||
token = PlayerPrefsKit.ReadString(PrefsKeyConst.JarvisToken);
|
||||
}
|
||||
|
||||
return token;
|
||||
}
|
||||
|
||||
public static void SetCacheToken(string token)
|
||||
{
|
||||
PlayerPrefsKit.WriteString(PrefsKeyConst.JarvisToken, token);
|
||||
}
|
||||
|
||||
private static IEnumerator PostInternal<T>(string url, object requestData, UnityAction<bool, T> onCompleted,
|
||||
Dictionary<string, string> header = null)
|
||||
{
|
||||
var requestJson = SerializeUtil.ToJsonIndented(requestData);
|
||||
|
||||
var url2 = url;
|
||||
#if FlowerPowerRelease
|
||||
url2 = Base64Kit.Encode(url);
|
||||
requestJson = Base64Kit.Encode(requestJson);
|
||||
#endif
|
||||
var bytes = Encoding.UTF8.GetBytes(requestJson);
|
||||
var url1 = NetworkManager.crazyUrl + url2;
|
||||
var loginRequest = new UnityWebRequest(url1, UnityWebRequest.kHttpVerbPOST)
|
||||
{
|
||||
uploadHandler = new UploadHandlerRaw(bytes),
|
||||
downloadHandler = new DownloadHandlerBuffer(),
|
||||
timeout = 10 // 设置超时时间为10秒
|
||||
};
|
||||
|
||||
if (header != null)
|
||||
{
|
||||
foreach (var keyValuePair in header)
|
||||
{
|
||||
loginRequest.SetRequestHeader(keyValuePair.Key, keyValuePair.Value);
|
||||
}
|
||||
}
|
||||
|
||||
SetRequestContentType(loginRequest);
|
||||
// Debug.Log($"request url1======= {url1}");
|
||||
yield return loginRequest.SendWebRequest();
|
||||
// Debug.Log($"requestData11111======={url1}=={requestJson}");
|
||||
// Debug.Log($"requestData22222====={url1}==={JsonConvert.SerializeObject(loginRequest)}");
|
||||
if (loginRequest.result is not UnityWebRequest.Result.Success)
|
||||
{
|
||||
onCompleted?.Invoke(false, default);
|
||||
}
|
||||
else
|
||||
{
|
||||
var receiveContent = loginRequest.downloadHandler.text;
|
||||
#if FlowerPowerRelease
|
||||
if (!receiveContent.IsNullOrWhiteSpace())
|
||||
{
|
||||
receiveContent = receiveContent.Substring(0, receiveContent.Length - 1);
|
||||
receiveContent = receiveContent.Substring(1);
|
||||
receiveContent = Base64Kit.Decode(receiveContent,NetworkManager.DomainRelease);
|
||||
}
|
||||
#endif
|
||||
var response = SerializeUtil.ToObject<ResponseData>(receiveContent);
|
||||
|
||||
var respJson = "";
|
||||
#if UNITY_EDITOR
|
||||
respJson = JsonConvert.SerializeObject(response);
|
||||
|
||||
Debug.Log($"requestData======={url1}=={requestJson}");
|
||||
Debug.Log($"response========={respJson}");
|
||||
#endif
|
||||
if (response?.code == 0)
|
||||
{
|
||||
var responseData = SerializeUtil.ToObject<T>(response.data.ToString());
|
||||
onCompleted?.Invoke(true, responseData);
|
||||
}
|
||||
else
|
||||
{
|
||||
if(response.code == 1005)
|
||||
{
|
||||
ReLoginGetToken();
|
||||
}
|
||||
|
||||
if (url == "shop/applePayCheck"){
|
||||
respJson = JsonConvert.SerializeObject(response);
|
||||
var responseData = SerializeUtil.ToObject<T>(respJson.ToString());
|
||||
onCompleted?.Invoke(false, responseData);
|
||||
}
|
||||
else
|
||||
{
|
||||
onCompleted?.Invoke(false, default);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
loginRequest.Dispose();
|
||||
}
|
||||
|
||||
public static void SetRequestContentType(UnityWebRequest request)
|
||||
{
|
||||
request.SetRequestHeader("Content-Type", "application/json;charset=utf-8");
|
||||
}
|
||||
|
||||
public static void Post<T>(string url, object requestData, UnityAction<bool, T> onCompleted)
|
||||
{
|
||||
|
||||
CrazyAsyKit.StartCoroutine(PostInternal(url, requestData, onCompleted));
|
||||
}
|
||||
|
||||
public static void PostWithHeader<T>(string url, object requestData = null,
|
||||
UnityAction<bool, T> onCompleted = null)
|
||||
{
|
||||
ReSetToken();
|
||||
|
||||
var headers = new Dictionary<string, string> { { "x-token", GetCacheToken() } };
|
||||
CrazyAsyKit.StartCoroutine(PostInternal(url, requestData, onCompleted, headers));
|
||||
}
|
||||
|
||||
public static void PostWithHeader<T>(string url, UnityAction<bool, T> onCompleted)
|
||||
{
|
||||
if (onCompleted != null)
|
||||
{
|
||||
PostWithHeader<T>(url, null, (isSuccess, obj) => { onCompleted.Invoke(isSuccess, obj); });
|
||||
}
|
||||
else
|
||||
{
|
||||
PostWithHeader<T>(url);
|
||||
}
|
||||
}
|
||||
|
||||
public static void PostWithHeader(string url, object requestData = null, UnityAction<bool> onCompleted = null)
|
||||
{
|
||||
if (onCompleted != null)
|
||||
{
|
||||
PostWithHeader<object>(url, requestData, (isSuccess, obj) => { onCompleted?.Invoke(isSuccess); });
|
||||
}
|
||||
else
|
||||
{
|
||||
PostWithHeader<object>(url, requestData);
|
||||
}
|
||||
}
|
||||
|
||||
public static void PostFunnelLogin(RespLoginFunnelData reqData = null)
|
||||
{
|
||||
|
||||
if (statusDic.TryGetValue(reqData.type, out var status))
|
||||
{
|
||||
if (status)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (reqData.type == "bootstrap")
|
||||
{
|
||||
long timestamp = DateTime.Now.ToUniversalTime().Ticks - 621355968000000000;
|
||||
trace_id = timestamp.ToString();
|
||||
}
|
||||
|
||||
var requestData = new RespLoginFunnelData
|
||||
{
|
||||
uid = userId,
|
||||
trace_id = trace_id,
|
||||
device_id = SystemInfo.deviceUniqueIdentifier,
|
||||
pack_name = NetworkManager.identifier,
|
||||
version = Application.version,
|
||||
channel = SuperApplication.Instance.attribution,
|
||||
type = reqData.type,
|
||||
payload = reqData.payload
|
||||
};
|
||||
|
||||
statusDic.Add(reqData.type, true);
|
||||
// Debug.Log($"PostFunnelLogin requestData1111========={reqData.type}");
|
||||
Post<RespLoginFunnelData>("event/funnelLogin", requestData, (isSuccess, data) =>
|
||||
{
|
||||
// Debug.Log($"PostFunnelLogin responseData2222========={isSuccess}{reqData.type}");
|
||||
});
|
||||
}
|
||||
public static void SendLogToServer(RespDebugData reqData)
|
||||
{
|
||||
// Debug.Log("SendLogToServer ====" + GameHelper.GetLoginModel().debug_log);
|
||||
if (!GameHelper.GetLoginModel().debug_log) return;
|
||||
|
||||
// 如果只需要日期部分,可以使用ToShortDateString()或ToString("yyyy-MM-dd")等进行格式化
|
||||
System.DateTime currentDate = System.DateTime.Now;
|
||||
var formattedDate = currentDate.ToString("yyyy_MM_dd_HH_mm");
|
||||
|
||||
var md5Str = MD5Kit.GetStringMD5(reqData.message + reqData.stacktrace);
|
||||
|
||||
if (!statusDic2.ContainsKey(formattedDate))
|
||||
{
|
||||
statusDic2.Add(formattedDate, new Dictionary<string, bool>());
|
||||
}
|
||||
|
||||
if (!statusDic2[formattedDate].ContainsKey(md5Str))
|
||||
{
|
||||
statusDic2[formattedDate].Add(md5Str, false);
|
||||
}
|
||||
|
||||
// Debug.Log($"SendLogToServer requestData========={formattedDate} \nmd5Str=== {md5Str}");
|
||||
if (statusDic2[formattedDate][md5Str])
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var requestData = new RespDebugData
|
||||
{
|
||||
uid = userId,
|
||||
device = SystemInfo.deviceModel,
|
||||
os_ver = SystemInfo.operatingSystem,
|
||||
network = GetNetworkType(),
|
||||
device_id = SystemInfo.deviceUniqueIdentifier,
|
||||
pack_name = NetworkManager.identifier,
|
||||
version = Application.version,
|
||||
level = reqData.level,
|
||||
message = reqData.message,
|
||||
stacktrace = reqData.stacktrace,
|
||||
channel = SuperApplication.Instance.attribution,
|
||||
|
||||
};
|
||||
|
||||
statusDic2[formattedDate][md5Str] = true;
|
||||
|
||||
//Debug.Log($"SendLogToServer requestData1========={JsonConvert.SerializeObject(requestData)}");
|
||||
Post<RespDebugData>("event/cliDebugLog", requestData, (isSuccess, data) =>
|
||||
{
|
||||
|
||||
});
|
||||
}
|
||||
public static string GetNetworkType()
|
||||
{
|
||||
|
||||
switch (Application.internetReachability)
|
||||
{
|
||||
case NetworkReachability.ReachableViaCarrierDataNetwork:
|
||||
return NetworkType.mobile;
|
||||
case NetworkReachability.ReachableViaLocalAreaNetwork:
|
||||
return NetworkType.wifi;
|
||||
case NetworkReachability.NotReachable:
|
||||
return NetworkType.notConnected;
|
||||
default:
|
||||
return NetworkType.notConnected;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static BuriedPointObject buriedPointObject = new BuriedPointObject();
|
||||
|
||||
/*
|
||||
* 打点
|
||||
*/
|
||||
public static void BuriedPoint(string eventname, string eventproperty, int integer)
|
||||
{
|
||||
if (eventname == BuriedPointEvent.Apple_AD_event || eventname == BuriedPointEvent.Apple_pay_event)
|
||||
{
|
||||
if (GameHelper.IsAdModelOfPay())
|
||||
{
|
||||
eventname = BuriedPointEvent.Apple_AD_event;
|
||||
}
|
||||
else
|
||||
{
|
||||
int rate = GameHelper.GetCommonModel().PayRate;
|
||||
if (!GameHelper.IsGiftSwitch() || GameHelper.GetCommonModel().PayRate == 100) {
|
||||
MaxPayManager.isIOSPay = true;
|
||||
}
|
||||
eventname = MaxPayManager.isIOSPay ? BuriedPointEvent.Apple_ios_pay_event : BuriedPointEvent.Apple_pay_event;
|
||||
}
|
||||
}
|
||||
if (eventproperty == BuriedPointEvent.afterRewardAdShow || eventproperty == BuriedPointEvent.afterRewardAdEnd)
|
||||
{
|
||||
eventname = BuriedPointEvent.Apple_AD_event;
|
||||
}
|
||||
|
||||
buriedPointObject.@event = eventname;
|
||||
buriedPointObject.property = eventproperty;
|
||||
buriedPointObject.n = integer;
|
||||
PostWithHeader<BuriedPointObject>("/event/incrN", buriedPointObject, (isSuccess, obj) =>
|
||||
{
|
||||
// Debug.Log(isSuccess);
|
||||
// Debug.Log(eventproperty);
|
||||
//Debug.Log(JsonUtility.ToJson(obj));
|
||||
});
|
||||
}
|
||||
|
||||
private static bool isReqToken = false;
|
||||
public static void ReSetToken()
|
||||
{
|
||||
if (isReqToken) return;
|
||||
|
||||
var nowTimes = GameHelper.GetNowTime();
|
||||
var passtime = GameHelper.GetLoginModel().expires_at;
|
||||
// Debug.Log($"ReSetToken nowTimes:{nowTimes} passtime:{passtime}");
|
||||
if (passtime == 0 || passtime - nowTimes > 3600) return;
|
||||
|
||||
isReqToken = true;
|
||||
|
||||
var headers = new Dictionary<string, string> { { "x-token", GetCacheToken() } };
|
||||
|
||||
CrazyAsyKit.StartCoroutine(PostInternal<ResquestTokenData>("tokenRefresh", null, (isSuccess, tokenData) =>
|
||||
{
|
||||
if (isSuccess)
|
||||
{
|
||||
LoginModel loginModel = GameHelper.GetLoginModel();
|
||||
loginModel.token = tokenData.token;
|
||||
loginModel.expires_at = tokenData.expires_at;
|
||||
|
||||
SetCacheToken(tokenData.token);
|
||||
}
|
||||
isReqToken = false;
|
||||
|
||||
}, headers));
|
||||
}
|
||||
|
||||
|
||||
private static bool isReqToken1 = false;
|
||||
|
||||
public static void ReLoginGetToken()
|
||||
{
|
||||
if (isReqToken1) return;
|
||||
|
||||
var requestLoginData = new RequestLoginData
|
||||
{
|
||||
device_id = SystemInfo.deviceUniqueIdentifier,
|
||||
pack_name = NetworkManager.identifier,
|
||||
app_version = Application.version,
|
||||
channel = SuperApplication.Instance.attribution,
|
||||
sim = NetworkManager.haveSimCard
|
||||
|
||||
};
|
||||
isReqToken1 = true;
|
||||
|
||||
|
||||
Post<LoginModel>("login", requestLoginData, (isSuccess, loginData) =>{
|
||||
if (isSuccess)
|
||||
{
|
||||
LoginModel loginModel = GameHelper.GetLoginModel();
|
||||
loginModel.token = loginData.token;
|
||||
loginModel.expires_at = loginData.expires_at;
|
||||
|
||||
SetCacheToken(loginData.token);
|
||||
}
|
||||
|
||||
isReqToken1 = false;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public class NetworkType{
|
||||
public static string mobile = "Mobile Data";
|
||||
public static string wifi = "Wi-Fi";
|
||||
public static string notConnected = "Not Connected";
|
||||
}
|
||||
|
||||
public class BuriedPointObject
|
||||
{
|
||||
public string @event;
|
||||
public string property;
|
||||
public int n;
|
||||
}
|
||||
public class BuriedPointEvent
|
||||
{
|
||||
public static string play_event = "Number_of_people_play";
|
||||
public static string play_property = "Number_of_people_playing";
|
||||
|
||||
public static string playing_event = "Playing_time";
|
||||
public static string playing_property = "Room_type";
|
||||
|
||||
public static string ad_task = "ad_task";
|
||||
public static string watch_ad_number = "watch_ad_number";
|
||||
public static string finish_ad_number = "finish_ad_number";
|
||||
|
||||
public static string h5_event = "H5_task";
|
||||
public static string h5_event_time = "H5_time";
|
||||
public static string h5_event_numbers = "finish_H5_number";
|
||||
|
||||
public static string withdraw_behavior = "withdraw_behavior";
|
||||
public static string withdraw_message = "withdraw_message";
|
||||
public static string ww_ch1 = "ww_ch1";
|
||||
public static string ww_ch2 = "ww_ch2";
|
||||
public static string ww_ch3 = "ww_ch3";
|
||||
|
||||
public static string Hall_behavior = "Hall_behavior";
|
||||
public static string open_hall_number = "open_hall_number";
|
||||
//public static string open_hall_people = "open_hall_people";
|
||||
public static string collect_fly_number = "collect_fly_number";
|
||||
//public static string collect_fly_people = "collect_fly_people";
|
||||
public static string fly_ct_number = "fly_ct_number";
|
||||
//public static string fly_ct_people = "fly_ct_people";
|
||||
public static string annular_finish_number = "annular_finish_number";
|
||||
public static string annular_get_number = "annular_get_number";
|
||||
public static string annular_ct_number = "annular_ct_number";
|
||||
//public static string annular_ct_people = "annular_ct_people";
|
||||
|
||||
public static string video_behavior = "video_behavior";
|
||||
public static string watch_ad_people = "watch_ad_people";
|
||||
public static string watch_success_ad_people = "watch_success_ad_people";
|
||||
|
||||
public static string video_type = "video_type";
|
||||
public static string Rewarded_videos_trigger_number = "Rewarded_videos_trigger_number";
|
||||
public static string Rewarded_videos_fill_number = "Rewarded_videos_fill_number";
|
||||
public static string Rewarded_videos_dinish_number = "Rewarded_videos_dinish_number";
|
||||
public static string Interstitial_videos_trigger_number = "Interstitial_videos_trigger_number";
|
||||
public static string Interstitial_videos_fill_number = "Interstitial_videos_fill_number";
|
||||
public static string Interstitial_videos_dinish_number = "Interstitial_videos_dinish_number";
|
||||
|
||||
public static string open_ad = "open_ad";
|
||||
public static string open_show = "open_show";
|
||||
public static string open_show_people = "open_show_people";
|
||||
|
||||
public static string Apple_pay_event = "Max_pay_Event";
|
||||
public static string Apple_AD_event = "AD_Event";
|
||||
public static string Apple_ios_pay_event = "IOS_Pay_Event";
|
||||
|
||||
|
||||
public static string pack_show = "pack_show";
|
||||
public static string pack_click = "pack_click";
|
||||
public static string pack_open = "pack_open";
|
||||
public static string pack_success = "pack_success";
|
||||
|
||||
public static string remove_ad_show = "remove_ad_show";
|
||||
public static string remove_ad_click = "remove_ad_click";
|
||||
|
||||
public static string remove_ad_open = "remove_ad_open";
|
||||
public static string remove_ad_success = "remove_ad_success";
|
||||
|
||||
public static string pass_show = "pass_show";
|
||||
public static string pass_click = "pass_click";
|
||||
public static string pass_open = "pass_open";
|
||||
public static string pass_success = "pass_success";
|
||||
|
||||
public static string buy_one_show = "buy_one_show";
|
||||
public static string buy_one_click = "buy_one_click";
|
||||
public static string buy_one_open = "buy_one_open";
|
||||
public static string buy_one_success = "buy_one_success";
|
||||
|
||||
public static string buy_super_show = "buy_one_show";
|
||||
public static string buy_super_click = "buy_one_click";
|
||||
public static string buy_super_open = "buy_one_open";
|
||||
public static string buy_super_success = "buy_one_success";
|
||||
|
||||
public static string BuyOneOffShow = "BuyOneOffShow";
|
||||
public static string BuyOneOffClick = "BuyOneOffClick";
|
||||
public static string BuyOneOffOpen = "BuyOneOffOpen";
|
||||
public static string BuyOneOffSuccess = "BuyOneOffSuccess";
|
||||
|
||||
public static string BuyOneNewShow = "BuyOneNewShow";
|
||||
public static string BuyOneNewClick = "BuyOneNewClick";
|
||||
public static string BuyOneNewSuccess = "BuyOneNewSuccess";
|
||||
|
||||
public static string makeupAdTaskClick = "makeupAdTaskClick";
|
||||
|
||||
public static string gold_show = "shop_show";
|
||||
public static string gold_click_ad = "gold_click_ad";
|
||||
public static string gold_click_1 = "gold_click_1";
|
||||
public static string gold_click_2 = "gold_click_2";
|
||||
public static string gold_click_3 = "gold_click_3";
|
||||
public static string gold_click_4 = "gold_click_4";
|
||||
public static string gold_open_1 = "gold_open_1";
|
||||
public static string gold_open_2 = "gold_open_2";
|
||||
public static string gold_open_3 = "gold_open_3";
|
||||
public static string gold_open_4 = "gold_open_4";
|
||||
public static string gold_success_1 = "gold_success_1";
|
||||
public static string gold_success_2 = "gold_success_2";
|
||||
public static string gold_success_3 = "gold_success_3";
|
||||
public static string gold_success_4 = "gold_success_4";
|
||||
public static string afterRewardAdShow = "afterRewardAdShow";
|
||||
public static string afterRewardAdEnd = "afterRewardAdEnd";
|
||||
public static string fail_show = "fail_show";
|
||||
public static string fail_click = "fail_click";
|
||||
public static string fail_buy_success = "fail_buy_success";
|
||||
public static string fail_open = "fail_open";
|
||||
public static string three_days_gift_show = "three_days_gift_show";
|
||||
public static string three_days_gift_click = "three_days_gift_click";
|
||||
public static string three_days_gift_buy_success = "three_days_gift_buy_success";
|
||||
public static string three_days_gift_open = "three_days_gift_open";
|
||||
public static string three_day1_success = "three_day1_success";
|
||||
public static string three_day2_success = "three_day2_success";
|
||||
public static string three_day3_success = "three_day3_success";
|
||||
public static string Three_days_gift_event = "Three_days_gift_event";
|
||||
public static string rank_event = "rank_event";
|
||||
public static string rank_show = "rank_show";
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user