Files
ft/Client/LocalPackages/BuglyPro_v1.7.1/Runtime/BuglyPlugins/BuglyCallback.cs
2026-06-29 21:18:33 +08:00

104 lines
3.8 KiB
C#

// ----------------------------------------
//
// BuglyCallbackDelegate.cs
//
// Author:
// bugly, <bugly@tencent.com>
//
// Copyright (c) 2023 Bugly, Tencent. All rights reserved.
//
// ----------------------------------------
//
using UnityEngine;
using System.Collections;
public class BuglyCallback {
#if UNITY_ANDROID && !UNITY_EDITOR
// 定义 C# 端的接口,对外隐藏 Java 相关代码
public interface ICrashHandleListener {
byte[] getCrashExtraData(bool isNativeCrashed, string crashType, string crashAddress, string crashStack,
int nativeSiCode, long crashTime);
string getCrashExtraMessage(bool isNativeCrashed, string crashType, string crashAddress, string crashStack,
int nativeSiCode, long crashTime);
void onCrashHandleStart(bool isNativeCrashed);
bool onCrashHandleEnd(bool isNativeCrashed);
bool onCrashSaving(bool isNativeCrashed, string crashType, string crashAddress, string crashStack,
int nativeSiCode, long crashTime, string userId, string deviceId, string crashUuid, string processName);
}
// 定义Adapter 来适配 AndroidJavaProxy 对象和 ICrashHandleListener
public class ListenerAdapter : AndroidJavaProxy {
private readonly ICrashHandleListener _listener;
public ListenerAdapter(ICrashHandleListener listener) : base("com.tencent.feedback.eup.CrashHandleListener") {
_listener = listener;
}
// 继承自 AndroidJavaProxy 的对象可以直接按照 Java 中的方法签名
// 写出对应的 C# 方法,参数类型遵循上文提到的数据类型转换规则。
// 当 Java 调用接口方法时,对应的 C# 方法会自动调用,非常方便。
byte[] getCrashExtraData(bool isNativeCrashed, string crashType, string crashAddress,
string crashStack, int nativeSiCode, long crashTime) {
return _listener.getCrashExtraData(isNativeCrashed, crashType, crashAddress,
crashStack, nativeSiCode, crashTime);
}
string getCrashExtraMessage(bool isNativeCrashed, string crashType, string crashAddress, string crashStack,
int nativeSiCode, long crashTime) {
return _listener.getCrashExtraMessage(isNativeCrashed, crashType, crashAddress, crashStack,
nativeSiCode, crashTime);
}
void onCrashHandleStart(bool isNativeCrashed) {
_listener.onCrashHandleStart(isNativeCrashed);
}
bool onCrashHandleEnd(bool isNativeCrashed) {
return _listener.onCrashHandleEnd(isNativeCrashed);
}
bool onCrashSaving(bool isNativeCrashed, string crashType, string crashAddress, string crashStack,
int nativeSiCode, long crashTime, string userId, string deviceId, string crashUuid, string processName) {
return _listener.onCrashSaving(isNativeCrashed, crashType, crashAddress, crashStack, nativeSiCode,
crashTime, userId, deviceId, crashUuid, processName);
}
}
public static ListenerAdapter GetCrashListenerAdapter(ICrashHandleListener listener) {
ListenerAdapter listenerAdapter = null;
if (listener != null) {
listenerAdapter = new ListenerAdapter(listener);
}
return listenerAdapter;
}
#else
// 定义 C# 端的接口
public interface ICrashHandleListener {
string OnBuglyCrashCallback(string name, string reason, string user_info);
}
public class ListenerAdapter {
private readonly ICrashHandleListener listener;
public ListenerAdapter(ICrashHandleListener listener) {
this.listener = listener;
}
public string OnBuglyCrashCallback(string name, string reason, string user_info) {
return listener.OnBuglyCrashCallback(name, reason, user_info);
}
}
public static ListenerAdapter GetCrashListenerAdapter(ICrashHandleListener listener) {
ListenerAdapter listenerAdapter = null;
if (listener != null) {
listenerAdapter = new ListenerAdapter(listener);
}
return listenerAdapter;
}
#endif
}