集成操作步骤:
重要
上线前测试阶段,请检查以下几项:
在控制台配置的网络探测规则是否成功触发,以在控制台中看到对应的探测数据为准。
检查客户端主动发起的探测是否成功上报,以在控制台中看到对应的探测数据为准,建议和控制台配置的探测规则的探测目标不同,以便区分。
针对步骤1、2分别检查不同平台,如Android、iOS等。
有条件的话,海外和中国内地不同终端都验证下是否能成功上报数据。
1、iOS SDK 接入
第一步:Podfile文件添加以下配置。
source 'https://github.com/aliyun/aliyun-specs.git'
pod 'AliNetworkDiagnosis', '~> 0.1'
第二步:AppDelegate类中引入以下头文件。
#import <AliNetworkDiagnosis/AliNetworkDiagnosis.h>
第三步:AppDelegate类的application: didFinishLaunchingWithOptions:
方法中添加以下SDK初始化代码。
// 应用的密钥,必填
NSString *secretKey = @"控制台获取的应用密钥";
// 设备唯一标识,选填,传入nil时SDK会自动生成
NSString *deviceId = nil;
// 两字母国家标识,选填,如中国是CN,传入nil,SDK会根据客户端出口公网IP确定所在国家
NSString *siteId = nil;
// 设置自定义信息,选填,会在探测结果数据中带上,可设置多组key-value;可以传入nil
NSDictionary *extension = [NSDictionary dictionaryWithObjectsAndKeys:
@"value1", @"key1",
@"value2", @"key2",
nil];
[AliNetworkDiagnosis init:secretKey deviceId:deviceId siteId:siteId extension:extension];
客户端如需发起主动探测,见文档附录。
2、Android SDK接入
第一步:根据build.gradle文件添加以下配置。
repositories {
google()
jcenter()
mavenCentral()
maven { url 'https://maven.aliyun.com/repository/public/' }
}
第二步:添加下面两个依赖。
implementation 'com.aliyun.ais:network-diagnosis:0.1+'
// 如需要 http 探测,需引入 okhttp 依赖
implementation 'com.squareup.okhttp3:okhttp:4+'
第三步:初始化SDK。
// 应用的密钥,必填
String secretKey = "控制台获取的应用密钥";
// 设备唯一标识,选填,传入null时SDK会自动生成
String deviceId = null;
// 两字母国家标识,选填,如中国是CN,传入null,SDK会根据客户端出口公网IP确定所在国家
String siteId = null;
// 设置自定义信息,选填,会在探测结果数据中带上,可设置多组key-value;可以传入null
Map<String,String> extension = new HashMap<>();
extension.put("key1", "value1");
extension.put("key2", "value2");
Diagnosis.init(secretKey, deviceId, siteId, extension);
附录
如App侧需主动发起探测,可直接调用SDK接口如下。
Android:
// http
HttpConfig httpConfig = new HttpConfig(null, "https://www.aliyun.com", null, null);
Diagnosis.startHttpPing(httpConfig);
// ping, 1000ms超时,ping 10次,目标地址:www.aliyun.com
PingConfig pingConfig = new PingConfig(null, "www.aliyun.com", 10, 1000,null,null);
Diagnosis.startPing(pingConfig);
// tcpping, 1000ms超时,ping 10次,目标地址:www.aliyun.com:443
PingConfig tcpPingConfig = new PingConfig(null, "www.aliyun.com", 443, 10, 1000,null,null);
Diagnosis.startTcpPing(tcpPingConfig);
// mtr,目标www.aliyun.com,路径最长长度30,探测1条路径,每个节点测试10次,超时时间1000ms
MtrConfig mtrConfig = new MtrConfig(null, "www.aliyun.com", 30,1, 10,1000,null,null);
Diagnosis.startMtr(mtrConfig);
// dns, nameServer可以传null,默认会用localdns,请求A记录,1000ms超时
DnsConfig dnsConfig = new DnsConfig(null, null, "www.aliyun.com", "A",1000,null,null);
Diagnosis.startDns(dnsConfig);
iOS:接口
// 引入以下头文件
#import <AliNetworkDiagnosis/AliNetworkDiagnosis.h>
// http
AliHttpPingConfig *httpPingConfig = [[AliHttpPingConfig alloc] init:@"www.aliyun.com" traceId:nil context:nil complete:nil];
[AliHttpPing execute:httpPingConfig];
// ping, 1000ms超时,ping 10次,报文大小20字节,目标地址:www.aliyun.com
AliPingConfig *pingConfig = [[AliPingConfig alloc] init:@"www.aliyun.com" timeout:1000 interfaceType:AliNetDiagNetworkInterfaceDefault prefer:1 context:nil traceID:nil size:20 count:10 interval:200 complete:nil combineComplete:nil];
[AliPing execute:pingConfig];
// tcpping,1000ms超时,ping 10次,端口443,每包间隔200ms
AliTcpPingConfig *tcpConfig = [[AliTcpPingConfig alloc] init:@"www.aliyun.com" timeout:1000 interfaceType:AliNetDiagNetworkInterfaceDefault prefer:0 context:nil traceID:nil port:443 count:10 interval:200 complete:nil combineComplete:nil];
[AliTcpPing execute:tcpConfig];
// mtr,目标www.aliyun.com,路径最长长度30,探测1条路径,每个节点测试10次,超时时间1000ms
AliMTRConfig *config = [[AliMTRConfig alloc] init:@"www.aliyun.com" maxTtl:30 maxPaths:1 maxTimeEachIP:10 timeout:1000 interfaceType:AliNetDiagNetworkInterfaceDefault prefer:1 context:nil traceID:nil complete:nil combineComplete:nil];
// dns, nameServer可以传null,默认会用localdns,请求A记录,1000ms超时
AliDnsConfig *dnsConfig = [[AliDnsConfig alloc] init:@"www.taobao.com" nameServer:nil type:@"A" timeout:2000 interfaceType:AliNetDiagNetworkInterfaceDefault traceID:nil complete:nil context:nil];
[AliDns execute:dnsConfig];
文档内容是否对您有帮助?