Crash 回调处理(GUACrashObserver)
设置崩溃时额外日志数据上报
[MSDK & Player Network SDK] 当程序崩溃时,可能需要将额外的自定义数据与崩溃日志一起报告给CrashSight平台。这将使用户能够更好地找到崩溃的原因。报告的数据可以在CrashSight平台的Trace Log > Attachment Information中找到。更多信息,请参见 MSDK文件。
这两个文件 Android/iOS 的命名方式不同。
注意
强烈建议游戏在应用启动函数中进行注册。
函数定义
- Unity
- Unreal Engine
event OnStringRetEventHandler<GUABaseResult> CrashBaseRetEvents;
class GUA_EXTERN GUACrashObserver
{
public:
virtual ~GUACrashObserver(){};
// virtual long OnCrashExtraDataNotify(const GUACrashRet &crash_ret){
// return 0;
// };
virtual const char* OnCrashExtraMessageNotify(){
return NULL;
};
};
代码示例
- Unity
- Unreal Engine
// 初始化
UnionAdapterAPI.GetCrashService().SetCrashCallback();
// 增加回调
UnionAdapterAPI.GetCrashService().CrashBaseRetEvents += OnCrashBaseResult;
// 移除回调
UnionAdapterAPI.GetCrashService().CrashBaseRetEvents -= OnCrashBaseResult;
// CrashBaseRetEvents 的回调处理
private string OnCrashBaseResult(GUABaseResult baseRet)
{
// this is not unity ui process, don't do anything about unity
return "this is Unity extra data when crash happened.";
}
// 1.在引擎层定义继承自 GUA_NAMESPACE::GUACrashObserver 的观察者类
// 2.实现方法名一样的回调接口(如:OnCrashExtraMessageNotify)
class FGUACrashObserver : public GUA_NAMESPACE::GUACrashObserver
{
public:
static FGUACrashObserver Instance;
public:
const char* OnCrashExtraMessageNotify()
{
char str[] = "this is extra message.";
char *retValue = SAFE_MALLOC(strlen(str) + 1, char);
strcpy(retValue, str);
return retValue;
}
};
FGUACrashObserver FGUACrashObserver::Instance;
// 设置回调
GUA_NAMESPACE::GUACrashService::SetCrashObserver(&FGUACrashObserver::Instance);