# MTR上报

# 1.说明

用于进行APP的MTR网络数据收集上报,游戏需要主动调用MTR接口用于上报,可在游戏内提供MTR按钮供玩家主动点击上报。

# 2.代码调用

# 2.1 导入头文件

#import "DHLog.h"

# 2.2 初始化日志SDK(仅限单独接入日志SDK时需要)

TIP

该方法仅限单独接入日志SDK(DHLog)时需要接入,如果已经接入了官方集成SDK,比如DHUnionSDK,则不需要接入该方法

TIP

注意:以下示例参数仅供参考,具体接入时需要和官方SDK方沟通获取

在XCode工程 AppDelegate类的application:didFinishLaunchingWithOptions中初始化日志SDK

 - (BOOL)application:(UIApplication *)application didFishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    
    //日志SDK初始化和配置
    [DHLog startWithAppId:@"123456789"];//配置SDK APPID
    [DHLog sharedInstance].version =@"1.0";//APP版本号
    [DHLog sharedInstance].channelVersion = @"1.0";//APP渠道版本号,如果没有就填APP版本号
    [DHLog sharedInstance].logChannel = DHLogChannelDH; //默认普通SDK模式
    [DHLog sharedInstance].channel = @"1587";//游戏渠道id
    [DHLog sharedInstance].mainChannel = @"1000041";//主渠道ID
    [DHLog sharedInstance].secondChannel = @"1000042";//次渠道ID    
    //应用启动上传所有发送失败的日志
    [DHLog postAllLogs];
    
    return YES;
}

# 2.3 调用MTR接口

游戏内提供MTR上报按钮,用户点击按钮后,调用SDK的MTR收集上报流程,该流程是异步的,不影响游戏运行,不过需要一定时间来收集,可以提醒玩家等待

DHLogTraceRouteParam *param = [[DHLogTraceRouteParam alloc] init];
param.host = @"www.baidu.com"; //测试访问的域名,游戏传入
param.ttl = 0;//可以传0或者不传,会使用默认值
param.count = 0;//可以传0或者不传,会使用默认值
param.timeout = 0;//可以传0或者不传,会使用默认值
param.userId = @"11322123"; //SDK账号accountid
param.areaId = @"100"; //游戏大区id

[DHLog sharedInstance].chinaMode = NO; //国内上报,设置YES,海外上报,设置为NO

[DHLog startTraceRoute:param handler:^(DHTraceRouteType type, NSString *tracertRes, NSString *destIp, NSArray *result) {
    if(type == DHTraceRouteTypeChecking){
        //mtr中间路径每个域名节点的分析数据返回
        NSLog(@"traceroute信息:%@,最终目标ip:%@",tracertRes,destIp);
    }
    else if (type == DHTraceRouteTypeDone){
        //检查结束,输出最终记录,SDK会自行上报,游戏也可以拿来使用
        NSLog(@"traceroute输出结束");
        for(NSString *str in result){
            NSLog(@"==%@",str);
        }
    }
    else if (type == DHTraceRouteTypeError){
        NSLog(@"traceroute失败");
    }
}];

# 2.4 参数说明

# iOS MTR上报必传参数

名称 类型 含义 是否必须
param DHLogTraceRouteParam 上传参数model,详情如下
handler DHLogTraceRouteHandler MTR上传回调通知方法

# DHLogTraceRouteParam参数

名称 类型 含义 是否必须
host NSString MTR访问的域名,需要游戏传入指定域名去访问测试
ttl Int MTR最大尝试次数,太少可能无法访问到目标域名节点,不设置的话使用默认值
count Int MTR路径每个节点ping 毫秒的次数,越多的话越准确,但是耗时越长,不设置的话使用默认值
timeout Int MTR路径节点访问超时时间,单位毫秒,不设置的话使用默认值
userId NSString SDK账号ID
areaId NSString 游戏大区ID

# DHLogTraceRouteHandler参数

参数名称 参数类型 参数说明
type DHTraceRouteType MTR访问返回数据类型,DHTraceRouteTypeChecking:当mtr每次访问结束一个路径节点域名时会触发返回DHTraceRouteTypeDone:当MTR测试完全结束时返回DHTraceRouteTypeError:当MTR请求失败时返回
tracertRes NSString 当type为DHTraceRouteTypeChecking时有值,返回当前访问域名节点具体分析信
destIp NSString 当type为DHTraceRouteTypeChecking时有值,返回最终访问域名的ip
result NSArray 当type为DHTraceRouteTypeDone时有值,返回所有分析的数据
Last Updated: 2024/8/30 17:47:25