集成SDK插件到App后,您只需启动App,网络质量分析器就会自动进行网络探测。本文介绍SDK插件的使用说明。

iOS SDK接入

  1. 在Podfile文件中添加以下配置。
    source 'https://github.com/aliyun/aliyun-specs.git'
    pod 'AliyunLogProducer', '~> 3', :subspecs => ['Producer', 'Core', 'OT', 'NetworkDiagnosis']
  2. 在AppDelegate类中引入如下头文件。
    #import <AliyunLogProducer/AliyunLogProducer.h>
  3. 在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接入

  1. 在根build.gradle文件中添加以下配置。
    repositories {
    google()
    jcenter()
    mavenCentral()
    maven { url 'https://maven.aliyun.com/repository/public/' }
    }
  2. 添加如下依赖。
    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'
  3. 初始化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
    1. 引入头部文件。
      #import <AliyunLogProducer/AliyunLogProducer.h>
    2. 调用相关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);
        }];
    3. 更新扩展属性。
      升级iOS SDK至3.1.9及以上版本后,您可以调用如下方法更新扩展属性。
       [[SLSNetworkDiagnosis sharedInstance] updateExtensions: dictionary];
  • Android SDK
    1. 调用相关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");
    2. 更新扩展属性。
      升级依赖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));
          }
      });