集成SDK插件到App后,您只需启动App,网络质量分析器就会自动进行网络探测。本文介绍SDK插件的使用说明。
iOS SDK接入
- 在Podfile文件中添加以下配置。
source 'https://github.com/aliyun/aliyun-specs.git' pod 'AliyunLogProducer', '~> 3', :subspecs => ['Producer', 'Core', 'OT', 'NetworkDiagnosis']
- 在AppDelegate类中引入如下头文件。
#import <AliyunLogProducer/AliyunLogProducer.h>
- 在AppDelegate类的
application: didFinishLaunchingWithOptions:
方法中添加如下SDK初始化代码。SLSCredentials *credentials = [SLSCredentials credentials]; SLSNetworkDiagnosisCredentials *networkDiagnosisCredentials = [credentials createNetworkDiagnosisCredentials]; networkDiagnosisCredentials.secretKey = ""; [networkDiagnosisCredentials putExtension:@"value" forKey:@"key"]; networkDiagnosisCredentials.endpoint = @""; networkDiagnosisCredentials.project = @""; networkDiagnosisCredentials.accessKeyId = @""; networkDiagnosisCredentials.accessKeySecret = @""; // 通过STS方式获取AccessKey时,需要配置。 networkDiagnosisCredentials.securityToken = @""; [[SLSCocoa sharedInstance] initialize:credentials configuration:^(SLSConfiguration * _Nonnull configuration) { configuration.enableNetworkDiagnosis = YES; }]; // (选填)配置用户信息。 SLSUserInfo *userinfo = [SLSUserInfo userInfo]; // 用户UID。 userinfo.uid = @"test"; // 用户渠道。 userinfo.channel = @"pub"; // 扩展信息。 [userinfo addExt:@"ext_value" key:@"ext_key"]; // 更新用户信息。 [[SLSCocoa sharedInstance] setUserInfo:userinfo]; // (可选)设置全局自定义业务参数。 [[SLSCocoa sharedInstance] setExtra:@"key_e1" value:@"value_e1"]; [[SLSCocoa sharedInstance] setExtra:@"key_e2" dictValue:@{ @"e2_k1": @"e2_va1" }];
重要参数说明如下表所示。
字段 是否必填 说明 secretKey 是 接入端应用的密钥。更多信息,请参见创建接入端应用。 putExtension 否 设置自定义信息,支持设置多个键值对。设置后,探测数据中将附加这些信息。 endpoint 是 日志服务Project所属的Endpoint,必须以https://开头。如何获取,请参见公网服务入口。 project 是 您在创建接入端应用时指定的Project。更多信息,请参见创建接入端应用。 accessKeyId 是 具备访问日志服务Logstore权限的AccessKey ID。如何获取,请参见访问密钥。 accessKeySecret 是 具备访问日志服务Logstore权限的AccessKey Secret。如何获取,请参见访问密钥。 securityToken 否 访问密钥的Token。使用STS方式接入时,需要配置。如何获取,请参见AssumeRole - 获取扮演角色的临时身份凭证。
Android SDK接入
- 在根build.gradle文件中添加以下配置。
repositories { google() jcenter() mavenCentral() maven { url 'https://maven.aliyun.com/repository/public/' } }
- 添加如下依赖。
implementation 'com.aliyun.openservices:aliyun-log-android-sdk:latest.release' implementation 'com.aliyun.openservices:sls-android-core:latest.release' implementation 'com.aliyun.openservices:sls-android-ot:latest.release' implementation 'com.aliyun.openservices:sls-android-network-diagnosis:latest.release'
- 初始化SDK。
Credentials credentials = new Credentials(); NetworkDiagnosisCredentials networkDiagnosisCredentials = credentials.getNetworkDiagnosisCredentials(); networkDiagnosisCredentials.secretKey = ""; networkDiagnosisCredentials.extension.put("key", "value"); networkDiagnosisCredentials.endpoint = "https://cn-hangzhou.log.aliyuncs.com"; networkDiagnosisCredentials.project = ""; networkDiagnosisCredentials.accessKeyId = ""; networkDiagnosisCredentials.accessKeySecret = ""; // 使用STS方式获取AccessKey时,需要配置。 networkDiagnosisCredentials.securityToken = ""; SLSAndroid.initialize( this, credentials, configuration -> { configuration.enableNetworkDiagnosis = true; // (选填)配置用户信息。 UserInfo info = new UserInfo(); info.uid = "123321"; info.channel = "dev"; info.addExt("ext_key", "ext_value"); configuration.userInfo = info; } );
字段 是否必填 说明 secretKey 是 接入端应用的密钥。更多信息,请参见创建接入端应用。 extension.put 否 设置自定义信息,支持设置多个键值对。设置后,探测数据中将附加这些信息。 endpoint 是 日志服务Project所属的Endpoint,必须以https://开头。如何获取,请参见公网服务入口。 project 是 您在创建接入端应用时指定的Project。更多信息,请参见创建接入端应用。 accessKeyId 是 具备访问日志服务Logstore权限的AccessKey ID。如何获取,请参见访问密钥。 accessKeySecret 是 具备访问日志服务Logstore权限的AccessKey Secret。如何获取,请参见访问密钥。 securityToken 否 访问密钥的Token。使用STS方式接入时,需要配置。如何获取,请参见AssumeRole - 获取扮演角色的临时身份凭证。
参考信息
如果要在App侧主动发起网络探测,可直接调用如下SDK接口。
- iOS SDK
- 引入头部文件。
#import <AliyunLogProducer/AliyunLogProducer.h>
- 调用相关API。
- HTTP
[[SLSNetworkDiagnosis sharedInstance] http:@"https://www.aliyun.com" callback:^(NSString * _Nonnull result) { NSLog(@"http result: %@", result); }]
- PING
[[SLSNetworkDiagnosis sharedInstance] ping:@"www.aliyun.com" callback:^(NSString * _Nonnull result) { NSLog(@"ping result: %@", result); }];
- TCPPING
[[SLSNetworkDiagnosis sharedInstance] tcpPing:@"www.aliyun.com" port:80 callback:^(NSString * _Nonnull result) { NSLog(@"tcpping result: %@", result); }];
- MTR
[[SLSNetworkDiagnosis sharedInstance] mtr:@"www.aliyun.com" callback:^(NSString * _Nonnull result) { NSLog(@"mtr result: %@", result); }];
- DNS
nameServer支持传null,默认使用Local DNS。
[[SLSNetworkDiagnosis sharedInstance] dns:@"www.aliyun.com" callback:^(NSString * _Nonnull result) { NSLog(@"dns result: %@", result); }];
- HTTP
- 更新扩展属性。升级iOS SDK至3.1.9及以上版本后,您可以调用如下方法更新扩展属性。
[[SLSNetworkDiagnosis sharedInstance] updateExtensions: dictionary];
- 引入头部文件。
- Android SDK
- 调用相关API。
- HTTP
NetworkDiagnosis.getInstance().http("https://www.aliyun.com");
- PING
NetworkDiagnosis.getInstance().ping("www.aliyun.com");
- TCPPING
NetworkDiagnosis.getInstance().tcpPing("www.aliyun.com", 80);
- MTR
NetworkDiagnosis.getInstance().mtr("www.aliyun.com");
- DNS
nameServer支持传null,默认使用Local DNS。
NetworkDiagnosis.getInstance().dns("192.0.2.0", "www.aliyun.com");
- HTTP
- 更新扩展属性。升级依赖
implementation 'com.aliyun.openservices:sls-android-network-diagnosis:2.0.8'
后,您可以调用如下方法更新扩展属性。NetworkDiagnosis.getInstance().updateExtensions(new HashMap<String, String>() { { put("ext_key", "ext_value " + (extIndex += 1)); } });
- 调用相关API。