124 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			C#
		
	
	
			
		
		
	
	
			124 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			C#
		
	
	
| using System.Runtime.InteropServices;
 | |
| 
 | |
| namespace Guru
 | |
| {
 | |
|     public class AnalyticsAgentIOS: IAnalyticsAgent
 | |
|     {
 | |
| 
 | |
|         #region 属性定义
 | |
| 
 | |
|         private const string K_INTERNAL = "__Internal";
 | |
|         
 | |
| #if UNITY_IOS
 | |
|         // ------------- U3DAnalytics.mm Interface -----------------
 | |
|         [DllImport(K_INTERNAL)] private static extern void unityInitAnalytics(string appId, string deviceInfo, bool isDebug);
 | |
|         [DllImport(K_INTERNAL)] private static extern void unitySetUserID(string uid);
 | |
|         [DllImport(K_INTERNAL)] private static extern void unitySetScreen(string screenName);
 | |
|         [DllImport(K_INTERNAL)] private static extern void unitySetAdId(string adId);
 | |
|         [DllImport(K_INTERNAL)] private static extern void unitySetAdjustID(string adjustId);
 | |
|         [DllImport(K_INTERNAL)] private static extern void unitySetFirebaseId(string fid);
 | |
|         [DllImport(K_INTERNAL)] private static extern void unitySetDeviceId(string did);
 | |
|         [DllImport(K_INTERNAL)] private static extern void unitySetUserProperty(string key, string value);
 | |
|         [DllImport(K_INTERNAL)] private static extern void unityLogEvent(string key, string data);
 | |
|         [DllImport(K_INTERNAL)] private static extern void unityReportEventRate();
 | |
|         [DllImport(K_INTERNAL)] private static extern void unityInitException();
 | |
|         [DllImport(K_INTERNAL)] private static extern void unityTestUnrecognizedSelectorCrash();
 | |
|         [DllImport(K_INTERNAL)] private static extern void unitySetTch02Value(double value);
 | |
| #endif
 | |
|         
 | |
|         private static bool _isDebug = false;    
 | |
|             
 | |
|         #endregion
 | |
| 
 | |
|         #region 接口实现
 | |
| 
 | |
|         public void Init(string appId, string deviceInfo, bool isDebug = false)
 | |
|         {
 | |
|             _isDebug = isDebug;
 | |
| #if UNITY_IOS
 | |
|             unityInitAnalytics(appId, deviceInfo, isDebug);    
 | |
|             unityInitException(); // 初始化报错守护进程
 | |
| #endif
 | |
|         }
 | |
| 
 | |
|         public void SetScreen(string screenName)
 | |
|         {
 | |
| #if UNITY_IOS
 | |
|             unitySetScreen(screenName);
 | |
| #endif
 | |
|         }
 | |
| 
 | |
|         public void SetAdId(string id)
 | |
|         {
 | |
| #if UNITY_IOS
 | |
|             unitySetAdId(id);
 | |
| #endif
 | |
|         }
 | |
| 
 | |
|         public void SetUserProperty(string key, string value)
 | |
|         {
 | |
| #if UNITY_IOS
 | |
|             unitySetUserProperty(key, value);
 | |
| #endif
 | |
|         }
 | |
| 
 | |
|         public void SetFirebaseId(string fid)
 | |
|         {
 | |
| #if UNITY_IOS
 | |
|             unitySetFirebaseId(fid);
 | |
| #endif
 | |
|         }
 | |
| 
 | |
|         public void SetAdjustId(string id)
 | |
|         {
 | |
| #if UNITY_IOS
 | |
|             unitySetAdjustID(id);
 | |
| #endif
 | |
|         }
 | |
| 
 | |
|         public void SetDeviceId(string deviceId)
 | |
|         {
 | |
| #if UNITY_IOS
 | |
|             unitySetDeviceId(deviceId);
 | |
| #endif
 | |
|         }
 | |
| 
 | |
|         public void SetUid(string uid)
 | |
|         {
 | |
| #if UNITY_IOS
 | |
|             unitySetUserID(uid);
 | |
| #endif
 | |
|         }
 | |
| 
 | |
|         public bool IsDebug => _isDebug;
 | |
| 
 | |
|         public void LogEvent(string eventName, string data)
 | |
|         {
 | |
| #if UNITY_IOS
 | |
|             unityLogEvent(eventName, data);
 | |
| #endif
 | |
|         }
 | |
|         
 | |
|         public void ReportEventSuccessRate()
 | |
|         {
 | |
| #if UNITY_IOS
 | |
|             unityReportEventRate();
 | |
| #endif
 | |
|         }
 | |
|         
 | |
|         public void SetTch02Value(double value)
 | |
|         {
 | |
| #if UNITY_IOS
 | |
|             unitySetTch02Value(value);
 | |
| #endif
 | |
|         }
 | |
|         
 | |
| #if UNITY_IOS
 | |
|         // iOS 测试用事件
 | |
|         public static void TestCrashEvent()=> unityTestUnrecognizedSelectorCrash();
 | |
| #endif
 | |
|         
 | |
|         #endregion
 | |
|         
 | |
|     }
 | |
| } |