Files
RedHotRoast-ios/Assets/Scripts/AppsFlyerObjectScript1.cs

153 lines
5.3 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using AppsFlyerSDK;
using RedHotRoast;
using DG.Tweening;
using SGModule.Common.Helper;
using SGModule.Net;
using SGModule.NetKit;
using Unity.Advertisement.IosSupport;
using UnityEngine;
namespace IgnoreOPS {
internal class AppsFlyerObjectScript1 : MonoBehaviour, IAppsFlyerConversionData {
public string appID;
public bool is_init;
public Coroutine m_Coroutine;
void Start() {
AddListener();
AppsFlyer.setIsDebug(true);
#if UNITY_IOS && !UNITY_EDITOR
appID = "6749253378";
m_Coroutine = CrazyAsyKit.StartCoroutine(loopWaitInitAf());
#endif
#if UNITY_EDITOR
NetworkDispatcher.Instance.Dispatch(NetworkMsg.Login);
#endif
}
private void AddListener() {
NetworkDispatcher.Instance.AddListener(NetworkMsg.NotNetwork, RequestLogin);
}
private void RemoveListener() {
NetworkDispatcher.Instance.RemoveListener(NetworkMsg.NotNetwork, RequestLogin);
}
void OnDestroy() {
RemoveListener();
}
void RequestLogin(object obj = null) {
if (GameHelper.IsConnect()) {
GameDispatcher.Instance.Dispatch(GameMsg.Network_reconnection);
}
CrazyAsyKit.StopCoroutine(m_Coroutine);
m_Coroutine = CrazyAsyKit.StartCoroutine(loopWaitInitAf());
}
private IEnumerator loopWaitInitAf() {
var isConnect = GameHelper.IsConnect();
if (!isConnect)
{
float retryTime = 0f;
const float maxRetryTime = 3f;
while (!GameHelper.IsConnect() && retryTime < maxRetryTime)
{
yield return new WaitForSeconds(0.2f);
retryTime += 0.2f;
}
// 再次确认网络状态
isConnect = GameHelper.IsConnect();
Log.Info("AF",$"[AF] loopWaitInitAf------1-- {isConnect}");
if (!isConnect)
{
// 超时且仍未连接,触发无网络提示
Action action = () => {
TimerHelper.mEasy.AddTimer(0.5f, () => {
NetworkDispatcher.Instance.Dispatch(NetworkMsg.NotNetwork);
});
};
UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.TipsViewUI_Open, action);
}
}
Log.Info("AF",$"[AF] loopWaitInitAf------2-- {isConnect}");
if (isConnect)
{
TrackKit.TrackLoginFunnel(LoginFunnelEventType.AfSend);
float a = 0;
if (ATTrackingStatusBinding.GetAuthorizationTrackingStatus() ==
ATTrackingStatusBinding.AuthorizationTrackingStatus.NOT_DETERMINED)
{
ATTrackingStatusBinding.RequestAuthorizationTracking();
}
while ((ATTrackingStatusBinding.GetAuthorizationTrackingStatus() ==
ATTrackingStatusBinding.AuthorizationTrackingStatus.NOT_DETERMINED) && (a < 5.0f))
{
a += 0.5f;
yield return new WaitForSeconds(0.5f);
}
AppsFlyer.initSDK("3e36AQrQTJWsVebUrLpexJ", appID, this);
AppsFlyer.startSDK();
AppsFlyer.AFLog("8888888888888888888",
ATTrackingStatusBinding.GetAuthorizationTrackingStatus().ToString());
}
}
public void onConversionDataSuccess(string conversionData) {
Log.Info("AF",$"[AF] onConversionDataSuccess-------- {is_init}");
if (is_init) return;
is_init = true;
AppsFlyer.AFLog("onConversionDataSuccess", conversionData);
var conversionDataDictionary = AppsFlyer.CallbackStringToDictionary(conversionData);
var json = SerializeUtil.ToJsonIndented(conversionDataDictionary);
SuperApplication.Instance.attribution =
conversionDataDictionary.TryGetValue("af_status", out var afStatus)
? afStatus.ToString().ToLower()
: "organic";
NetworkDispatcher.Instance.Dispatch(NetworkMsg.Login);
TrackKit.TrackLoginFunnel(LoginFunnelEventType.AfRecv, "success");
}
public void onConversionDataFail(string error) {
Log.Info("AF",$"[AF] onConversionDataFail-------- {is_init}");
if (is_init) return;
is_init = true;
AppsFlyer.AFLog("onConversionDataFail", error);
NetworkDispatcher.Instance.Dispatch(NetworkMsg.Login);
TrackKit.TrackLoginFunnel(LoginFunnelEventType.AfRecv, "fail");
}
public void onAppOpenAttribution(string attributionData) {
AppsFlyer.AFLog("onAppOpenAttribution", attributionData);
Dictionary<string, object> attributionDataDictionary =
AppsFlyer.CallbackStringToDictionary(attributionData);
}
public void onAppOpenAttributionFailure(string error) {
AppsFlyer.AFLog("onAppOpenAttributionFailure", error);
}
}
}