本文档介绍如何通过 GNA Android SDK 实现网络分析。网络分析分为玩家自助网络分析和游戏对局网络分析。
您可以参见 工作原理 了解火山引擎游戏网络加速(GNA)如何对玩家的网络进行分析。
您已经导入和初始化了 GNA Android SDK。
参见以下步骤实现玩家自助分析。您可以参见 SDK 参考 了解 SDK 的详细信息。
导入以下类。
import com.bytedance.gsdk.ttnet.diagnosis.IDiagnosisCallback;
import com.bytedance.gsdk.ttnet.diagnosis.IDiagnosisRequest;
import com.bytedance.gsdk.ttnet.diagnosis.TTNetDiagnosisService;
调用 createRequest
方法创建自助分析请求。
// 设置请求参数
TTNetDiagnosisService.RequestParams requestParams = new TTNetDiagnosisService.RequestParams();
// 把请求类型设置为网络分析
requestParams.requestType = TTNetDiagnosisService.DIAGNOSE_TARGET;
// 指定分析目标地址。可以是域名或 IPv4 地址
requestParams.targets = new ArrayList<>();
requestParams.targets.add("www.volcengine.com");
// 地址特征,用于网络分析的地址调度功能。您需要联系我们使用该功能。如果您不需要使用地址调度功能,可设置为 ""。
requestParams.dispatchFeature = "";
// 一般情况下,您可以设置为 0
requestParams.detectType = 0;
// 一般情况下,您可以设置为 ACTION_UNSPECIFIED,表示分析数据包由系统默认网络发出
requestParams.multiNetAction = TTNetDiagnosisService.ACTION_UNSPECIFIED;
// 超时时间。您可以设置为 15 秒
requestParams.timeoutMs = 15000;
IDiagnosisRequest request = null;
try {
// 创建分析请求
request = TTNetDiagnosisService.createRequest(requestParams);
// 您还可以为分析请求添加附加信息,例如玩家的用户 ID。
// 这样您在查看分析结果时,就可以按玩家的用户 ID 对分析结果进行分类统计
String info = "uid:1234";
request.setUserExtraInfo(info);
}
catch (Exception e) {
e.printStackTrace();
}
调用 start
方法开始自助分析。开始之后,SDK 会向您设置的目标地址发送网络分析请求。您还可以通过 setUserExtraInfo
方法为分析请求添加附加信息。自助分析结束后,您可以通过 onDiagnosisComplete
回调获取分析结果。另外,您也可以在控制台 查看统计数据。
// 开始分析
IDiagnosisRequest request = null;
request.start(new IDiagnosisCallback() {
// 网络分析结束回调。当网络分析完成、取消、因网络切换中止、超时、失败时,
// 都会触发该回调
@Override
public void onDiagnosisComplete(String report) {
System.out.println("\"onDiagnosisComplete: \" + report)");
}
});
自助分析会在完成后自动结束。如果,自助分析页面需要支持玩家取消自助分析。您可以调用 cancel
取消自助分析。
// 取消分析
request.cancel();
玩家开始游戏对局时,如果网络发生跳变,SDK 会自动进行网络分析并向玩家或游戏运维人员返回分析结果。
您可以参见以下步骤实现游戏对局网络分析。
导入以下类。
import com.bytedance.gsdk.ttnet.diagnosis.TTGameDiagnosisService;
游戏对局开始时,调用 monitorBegin
方法开启游戏对局网络分析。当网络发生跳变时,SDK 会自动向您设置的目标地址发送网络分析请求。您可以在控制台 查看统计数据。
TTGameDiagnosisService.MonitorBeginParams monitorBeginParams = new TTGameDiagnosisService.MonitorBeginParams();
// 指定分析目标地址。可以是域名或 IPv4 地址
monitorBeginParams.target = "www.volcengine.com";
// 地址特征,用于网络分析的地址调度功能。您需要联系我们使用该功能。如果您不需要使用地址调度功能,可设置为 ""。
monitorBeginParams.dispatchFeature = "";
// 您还可以为分析请求添加附加信息,例如玩家的用户 ID。无使用可不配置
monitorBeginParams.extraInfo = "1234567890abc";
// 获取诊断报告的回调
monitorBeginParams.reportCallback = report -> Log.d("tag", "diagnosis v2 report: " + report);
try {
TTGameDiagnosisService.inst().monitorBegin(monitorBeginParams);
} catch (Exception e) {
e.printStackTrace();
}
在游戏对局过程中,您也可以主动调用 doDiagnosisDuringGaming
方法向您在 monitorBegin
方法中设置的目标地址发送网络分析请求。您可以在控制台 查看统计数据。
// 发起网络分析的原因描述
String reason = "movelag";
TTGameDiagnosisService.inst().doDiagnosisDuringGaming(reason);
对局游戏结束时,调用 monitorEnd
方法关闭对局分析。
TTGameDiagnosisService.inst().monitorEnd();