using UnityEngine;
using System.Collections;
#if !UNITY_STANDALONE_WIN
using com.xsj.Crasheye.U3D;
#endif
using System.Runtime.InteropServices;
using System;
public class CrasheyeForIOS : MonoBehaviour
{
#if UNITY_IOS && !UNITY_STANDALONE_WIN
[DllImport("__Internal")]
private static extern void crasheyeInit(string appkey);
[DllImport("__Internal")]
private static extern void crasheyeInitWithChannel(string appkey, string channel);
[DllImport("__Internal")]
private static extern void crasheyeAddExtraData(string key, string value);
[DllImport("__Internal")]
private static extern void crasheyeRemoveExtraData(string key);
[DllImport("__Internal")]
private static extern void crasheyeClearExtraData();
[DllImport("__Internal")]
private static extern void crasheyeLeaveBreadcrumb(string breadcrumb);
[DllImport("__Internal")]
private static extern void crasheyeSetUserid(string userid);
[DllImport("__Internal")]
private static extern void crasheyeSetAppVersion(string version);
[DllImport("__Internal")]
private static extern void crasheyeSetFlushOnlyOverWiFi (int enabled);
[DllImport("__Internal")]
private static extern void crasheyeAddLog(string log);
[DllImport("__Internal")]
private static extern void crasheyeSetURL(string url);
[DllImport("__Internal")]
private static extern void crasheyeRemoveLog();
[DllImport("__Internal")]
private static extern void crasheyeSetBeta (int enabled);
///
/// 最大保存log日志数量
///
private static int MAX_LOG_COUNT = 300;
private static Queue m_saveLog = new Queue();
///
/// iOS系统的初始
///
///
///
public static void Init(string appKeyForIOS, string channIdForIOS)
{
if (string.IsNullOrEmpty(appKeyForIOS))
{
Debug.LogError("app key is null or empty!");
return;
}
crasheyeInitWithChannel(appKeyForIOS, channIdForIOS);
Crasheye.crasheyeLib.InitCrasheyeLib();
Crasheye.crasheyeLib.SetExceptionCallback();
}
///
/// 设置是否打印调试日志
///
/// 默认为False为不打印日志;True为打印日志
public static void SetDebugLog(bool debugLog)
{
// 暂时未实现
}
///
/// 设置版本号信息
///
///
public static void SetAppVersion(string appVersion)
{
if (string.IsNullOrEmpty(appVersion))
{
Debug.LogError("appVersion is null or empty!");
return;
}
try
{
crasheyeSetAppVersion(appVersion);
}
catch (Exception ex)
{
Debug.LogError(ex.Message);
}
}
public static void SetUserIdentifier(string userIdentifier)
{
if (string.IsNullOrEmpty(userIdentifier))
{
Debug.LogError("user identifier is null or empty!");
return;
}
try
{
crasheyeSetUserid(userIdentifier);
}
catch (Exception ex)
{
Debug.LogError(ex.Message);
}
}
private static int m_lines = -1;
/// 指定获取应用程序log日志的行数
///
/// 设置获取行号
public static void SetLogging(int lines)
{
if (lines < 0)
{
return;
}
if (lines > MAX_LOG_COUNT)
{
m_lines = MAX_LOG_COUNT;
}
else
{
m_lines = lines;
}
}
///
/// 返回设置log行数
///
///
public static int GetLoggingLines()
{
return m_lines;
}
private static string m_filter = "";
/// 获取应用程序log日志关键字过滤
///
/// 设置获取关键字
public static void SetLogging(string filter)
{
if (string.IsNullOrEmpty(filter))
{
return;
}
m_filter = filter;
}
///
/// 返回log过虑
///
///
public static string GetLoggingFilter()
{
return m_filter;
}
/// 获取应用程序log日志(过滤条件:关键字过滤+行数)
///
/// 设置获取行数
/// 设置获取关键字
public static void SetLogging(int lines, string filter)
{
if (lines < 0 || string.IsNullOrEmpty(filter))
{
return;
}
SetLogging(lines);
SetLogging(filter);
}
public static void SetFlushOnlyOverWiFi(bool enabled)
{
if(enabled)
crasheyeSetFlushOnlyOverWiFi (1);
else
crasheyeSetFlushOnlyOverWiFi (0);
}
public static void SetBeta(bool enabled)
{
if(enabled)
crasheyeSetBeta (1);
else
crasheyeSetBeta (0);
}
///
/// 添加自定义数据
///
/// Key.
/// Value.
public static void AddExtraData(string key, string value)
{
if (string.IsNullOrEmpty(key) || string.IsNullOrEmpty(value))
{
Debug.LogError("add extra data err: key or value IsNullOrEmpty!");
return;
}
crasheyeAddExtraData(key, value);
}
///
/// 获取自定义数据
///
/// Key
public static string GetExtraData(string key)
{
// 暂时未实现
return "";
}
///
/// 移除自定义数据
///
/// Key.
public static void RemoveExtraData(string key)
{
if (string.IsNullOrEmpty(key))
{
return;
}
crasheyeRemoveExtraData(key);
}
///
/// 添除数据
///
public static void ClearExtraData()
{
crasheyeClearExtraData();
}
///
/// 打点数据
///
/// Breadcrumb.
public static void LeaveBreadcrumb(string breadcrumb)
{
if (string.IsNullOrEmpty(breadcrumb))
{
return;
}
crasheyeLeaveBreadcrumb(breadcrumb);
}
/// 获取SDK版本信息
///
/// 返回sdk版本号
public static string GetAppVersion()
{
// 此功能暂未实现
string sdkVersion = "NA";
return sdkVersion;
}
public static void SaveLogger(string logMsg)
{
if (CrasheyeForIOS.GetLoggingLines() <= 0)
{
return;
}
if (logMsg.IndexOf(CrasheyeForIOS.GetLoggingFilter()) < 0)
{
return;
}
if (m_saveLog.Count >= CrasheyeForIOS.GetLoggingLines() && m_saveLog.Count > 0)
{
m_saveLog.Dequeue();
}
m_saveLog.Enqueue(logMsg);
}
public static string GetLogger()
{
string allLogger = "";
foreach (string strTemp in m_saveLog)
{
allLogger += strTemp + "\n";
}
return allLogger;
}
public static void addLog(string log)
{
crasheyeAddLog(log);
}
public static void removeLog()
{
crasheyeRemoveLog();
}
/// SetURL
///
///
public static void SetURL(string url)
{
if (String.IsNullOrEmpty(url))
{
Debug.LogError("set url is null or empty!");
return;
}
crasheyeSetURL(url);
}
#endif
}