通过Unity Plugin接入数据
本文介绍如何通过Unity Plugin将Unity平台的移动端游戏App的崩溃数据、应用数据接入到日志服务移动运维监控中。移动运维监控用于实时监控游戏崩溃、ANR等问题,并且支持智能分析,帮助您低成本、高效率地发现App中的各类隐患。
前提条件
已创建移动运维监控应用。具体操作,请参见添加应用。
步骤一:集成SDK
下载最新版本Unity Plugin。
双击.unitypackge文件,将Plugin相关文件导入到您的Unity工程中。
.unitypackage文件中的目录说明如下表所示。
文件
说明
Assets/Plugins/Unity4SLS
Unity插件脚本。
Assets/Plugins/Unity4SLS/Android/libs
Android平台依赖的SDK和NDK。
Assets/Plugins/Unity4SLS/iOS/
iOS平台依赖的framework和静态库。
Assets/Scenes/
示例Scenes。实际集成时,可以删除。
Assets/Scripts/
示例Scripts。实际集成时,可以删除。
步骤二:SDK初始化
选择第一个或主场景(Scene),在任意脚本文件(建议选择较早加载的脚本)中调用如下代码进行初始化。
// 初始化凭证信息。
Credentials credentials = new Credentials();
#if UNITY_IPHONE || UNITY_IOS
credentials.instanceId = "移动运维监控应用(iOS)ID";
credentials.endpoint = "移动运维监控应用(iOS)所绑定的Project的访问域名";
credentials.project = "移动运维监控应用(iOS)所绑定的Project";
#elif UNITY_ANDROID
credentials.instanceId = "移动运维监控应用(Android)ID";
credentials.endpoint = "移动运维监控应用(Android)所绑定的Project的访问域名";
credentials.project = "移动运维监控应用(Android)所绑定的Project";
#endif
credentials.accessKeyId = "AccessKey ID";
credentials.accessKeySecret = "AccessKey Secret";
credentials.securityToken = "访问密钥Token"; // 仅在通过STS方式获取时需要设置。建议通过STS方式获取鉴权信息。
// 初始化Unity Plugin。
Unity4SLS.Initialize(credentials);
参数 |
示例 |
说明 |
|
sls-****d60f |
您在日志服务移动运维监控平台上所添加的应用ID。更多信息,请参见获取应用ID。 |
|
https://cn-hangzhou.log.aliyuncs.com |
日志服务Project的访问域名,此处必须添加
重要
只支持公网服务入口。 |
|
sls-ayasls-demo |
您在日志服务移动运维监控平台上添加应用时所绑定的日志服务Project。更多信息,请参见添加应用。 |
|
LTAI****eYDw |
具备日志服务Project访问权限的AccessKey ID。如何获取,请参见访问密钥。 |
|
lrRq****GOVM |
具备日志服务Project访问权限的AccessKey Secret。如何获取,请参见访问密钥。 |
|
124f****a369 |
具备日志服务Project访问权限的访问密钥Token。使用STS方式接入时,需要配置。如何获取,请参见AssumeRole - 获取扮演角色的临时身份凭证。 |
API列表
API名称 |
功能描述 |
SetLogLevel |
设置Debug日志等级,可选值:VERBOSE、DEBUG、INFO、WARN、ERROR。 当插件出现异常时,您可以通过调整日志等级打印更多的日志,进行排查。 |
SetCredentials |
更新凭证信息。 您可以通过该接口更新Credentials中的字段。 |
RegisterCredentialsCallback |
注册凭证回调接口。 当数据发送成功或凭证无效、过期时,系统将回调该接口。您可以通过注册该接口进行凭证信息的动态更新。 |
SetUserInfo |
设置用户信息,支持动态更新。 设置后,所有上报的数据都会携带该信息。 |
SetExtra |
设置扩展信息。 您可以通过该接口设置业务等各种定制信息。设置后,所有上报的数据都会携带该信息。 |
RemoveExtra |
移除扩展信息。 |
ClearExtra |
清空所有扩展信息。 |
ReportCustomLog |
上报自定义日志。 您可以通过该接口上报任何的自定义日志。 |
ReportError |
上报自定义错误日志。 您可以通过该接口上报自定义异常日志,例如捕获到的脚本异常信息等。 |
ReportLuaError |
上报Lua脚本错误日志。 |
ReportCSharpError |
上报C#错误日志。 |
常见问题
1. 如何通过STS方式获取访问凭证信息,并动态更新到SDK?
通过STS方式获取访问凭证信息,可以有效避免AccessKey固定写在代码中,从而避免造成数据泄露。具体操作,请参见采集-搭建移动端日志直传服务。
通过STS方式获取到访问凭证信息后,还需要把该信息更新到SDK,建议通过如下方式。
// 调用凭证回调函数,该函数会在数据写入、发送状态发生变化时,凭证无效、过期时被回调。
// feature: 插件名称,一般无需关注。
// result: 回调结果。
public void credentialsCallback(string feature, string result)
{
// 开发阶段,建议打印日志,便于排查问题。
Debug.Log("[Unity4SLS] <DEBUG> - credentialsCallback. feature: " + feature + ", result: " + result);
if ("LOG_PRODUCER_SEND_UNAUTHORIZED" == result ||
"LOG_PRODUCER_PARAMETERS_INVALID" == result) {
// LOG_PRODUCER_PARAMETERS_INVALID: 初始化凭证信息不合法。
// LOG_PRODUCER_SEND_UNAUTHORIZED: 访问凭证过期或无效。
// 当出现上面两个错误码时,建议通过STS重新获取访问凭证信息,并按照下面的方式进行更新。
// 1. 通过STS获取访问凭证,并在此处写入获取到的凭证代码。
// 2. 更新SDK的凭证信息。
Credentials credentials = new Credentials();
credentials.accessKeyId = "新的AccessKey ID";
credentials.accessKeySecret = "新的AccessKey Secret";
credentials.securityToken = "新的Token";
Unity4SLS.SetCredentials(credentials);
}
}
// 调用下面方法注册SDK的凭证回调接口。
public void setCredentialsCallback()
{
callback_delegate callback = new callback_delegate(credentialsCallback);
Unity4SLS.RegisterCredentialsCallback(callback);
}
2. 如何采集C#、Lua等脚本异常信息?
目前,日志服务SDK没有内置C#、Lua等脚本异常的自动采集,可参考其他产品的实现。采集到异常数据后,通过相关API进行上报,示例如下:
上报C#异常信息
Unity4SLS.ReportCSharpError("C# message", "C# stacktrace");
上报Lua异常信息
Unity4SLS.ReportLuaError("lua message", "lua stacktrace");
上报其他类型的异常信息
Unity4SLS.ReportError("stacktrace"); Unity4SLS.ReportError("custom type, 根据实际业务填写", "stacktrace"); Unity4SLS.ReportError("custom type, 根据实际业务填写", "message", "stacktrace");
3. 如何上报业务自定义的日志信息?
SDK支持上报业务定义日志信息,包含业务数据、日志信息等,示例如下:
Unity4SLS.ReportCustomLog("custom type, 根据实际业务填写", "custom log 1");