using AppsFlyerSDK;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using UnityEngine;
public class AppFlyerObjectScript : MonoBehaviour, IAppsFlyerConversionData
{
private bool _answerComplete;
private Coroutine _waitCoroutine;
private int answerForWrite;
public Action<bool,string> OnGetConversionData;
public Action OnAppsFlyerNoAnswer;
private void Awake()
{
answerForWrite++;
DontDestroyOnLoad(this);
}
public void InitializeAppsFlyer(string bandle,string devKey)
{
_answerComplete = false;
InitApps(bandle,devKey);
answerForWrite++;
}
private void InitApps(string bandle,string devKey)
{
AppsFlyer.initSDK(devKey, bandle, this);
answerForWrite++;
AppsFlyer.startSDK();
StartWaitAnswer();
answerForWrite--;
}
public void onConversionDataSuccess(string conversionData)
{
_answerComplete = true;
Dictionary<string, object> conversionDataDictionary = AppsFlyer.CallbackStringToDictionary(conversionData);
object comp;
string compacka = "";
answerForWrite--;
if (conversionDataDictionary.TryGetValue("campaign", out comp))
{
compacka = comp.ToString();
}
answerForWrite++;
OnGetConversionData?.Invoke(true,compacka);
}
public void onConversionDataFail(string error)
{
_answerComplete = true;
AppsFlyer.AFLog("onConversionDataFail", error);
OnGetConversionData?.Invoke(false,"");
}
public void onAppOpenAttribution(string attributionData)
{
AppsFlyer.AFLog("onAppOpenAttribution", attributionData);
answerForWrite++;
Dictionary<string, object> attributionDataDictionary = AppsFlyer.CallbackStringToDictionary(attributionData);
}
public void onAppOpenAttributionFailure(string error)
{
answerForWrite++;
AppsFlyer.AFLog("onAppOpenAttributionFailure", error);
}
private void StartWaitAnswer()
{
_waitCoroutine = StartCoroutine(WaitAnswerCoroutine());
answerForWrite--;
}
private IEnumerator WaitAnswerCoroutine()
{
float timeDelay = TimeValues.AppsFlyerDelay;
float pastTime = 0;
answerForWrite++;
while (timeDelay > pastTime)
{
pastTime += Time.deltaTime;
if (_answerComplete)
{
StopCoroutine(_waitCoroutine);
}
yield return null;
}
answerForWrite++;
OnAppsFlyerNoAnswer?.Invoke();
}
}