其他数据相关接口测试

自定义App版本号

基调听云App SDK默认使用应用的「versionName」作为版本号上传,如需自定义版本号可以在初始化SDK时调用该接口进行配置。

  • 相关接口
/**
 *@param versionName 最多包含64个字符,支持中文、英文、数字、下划线
 */ 
NBSAppAgent.setVersionName(String versionName);
  • 代码示例
public class MyApplication extends Application {
    @Override
    public void onCreate() {  
        NBSAppAgent.setLicenseKey("AppKey")
        .setVersionName("v2.11.1")//在初始化SDK时调用接口设置版本号
        .start(this.getApplicationContext());
    }
}

自定义渠道

开发者可以在初始化基调听云App SDK时设置自定义的渠道名称。

  • 相关接口
/**
 * @param channelID 渠道ID。
 * 可以由英文字母、阿拉伯数字、下划线、中划线、空格、括号组成,可以含汉字以及其他明文字符,但是不建议使用中文命名,会出现乱码。
 * 首尾字符不可以为空格。不要使用纯数字作为渠道ID。最多256个字符。
 */
NBSAppAgent.setChannelID(String channelID);
  • 代码示例
public class MyApplication extends Application {
    @Override
    public void onCreate() {  
        NBSAppAgent.setLicenseKey("AppKey")
        .setChannelID("应用宝")//在初始化SDK时调用接口设置渠道
        .start(this.getApplicationContext());
    }
}

设置地理位置信息

可通过调用接口设置经纬度以便精准获取设备地理位置信息。

  • 相关接口
/**
 * @param lat 纬度
 * @param lng 经度
 */
NBSAppAgent.setLatLng(double lat, double lng);
  • 代码示例
public class MyApplication extends Application {
    @Override
    public void onCreate() {  
        NBSAppAgent.setLatLng(39.936846,116.39277);// 设置经纬度
    }
}

开启SDK Log

调用接口后,可以打印 SDK INFO日志。

  • 相关接口
/**
 * @param enable 默认 flase,设置为 true 输出日志
 */
NBSAppAgent.setLogEnable(boolean enable);
  • 代码示例
public class MyApplication extends Application {
    @Override
    public void onCreate() {  
        NBSAppAgent.setLicenseKey("AppKey")
        .start(this.getApplicationContext());

        NBSAppAgent.setLogEnable(true);//设置成 true,输出日志
    }
}

只主进程采集数据

App SDK 在 Application 初始化时,默认采集所有进程的数据,也支持设置只采集主进程的数据。

  • 相关接口
/**
 * @param enable 默认 flase,设置为 true 只采集主进程数据
 */
NBSAppAgent.withOnlyMainProcEnabled(boolean enable);
  • 代码示例
public class MyApplication extends Application {
    @Override
    public void onCreate() {  
        NBSAppAgent.setLicenseKey("AppKey")
        .withOnlyMainProcEnabled(true)//设置为 true,只采集主进程数据
        .start(this.getApplicationContext());
    }
}

首次启动开启模块功能开关

出于兼容性考虑, 首次启动 SDK 仅在调试模式下开启全部功能模块,非调试模式下仅开启崩溃模块,可通过以下接口开启 SDK 的模块开关 模块功能开关接口。

  • 相关接口
/**
 * @param option 开关的状态值
 * SDK 定义了以下开关
 * 网络数据采集
 * NBSAppAgent.HTTP_NETWORK_ENABLED = 1;
 * UI数据采集(启动、页面、操作数据)
 * NBSAppAgent.UI_ENABLED = 2;
 * 崩溃数据采集
 * NBSAppAgent.CRASH_ENABLED = 4;
 * WebView数据采集
 * NBSAppAgent.WEBVIEW_ENABLED = 8;
 * Socket Hook
 * NBSAppAgent.SOCKET_DATA_ENABLED = 16;
 * 跨应用功能
 * NBSAppAgent.CROSS_APP_ENABLED = 32;
 * 卡顿数据采集
 * NBSAppAgent.ANR_ENABLED = 64;
 * 行为数据采集
 * NBSAppAgent.USER_ACTION_ENABLED = 128;
 * CDN数据采集
 * NBSAppAgent.CDN_ENDBLED = 256;
 * 视频录制采集
 * NBSAppAgent.RECORD_ENDBLED = 512;
 * 全量Trace采集
 * NBSAppAgent.ALL_TRACE_COLLECT_ENDBLED = 1024;
 * 暴力点击采集
 * NBSAppAgent.VIOLENCE_ENDBLED = 2048;
 * 日志回捞
 * NBSAppAgent.LOG_MODULE_ENABLED = 4096;
 * OOM 采集
 * NBSAppAgent.OOM_MODULE_ENABLED = 8192;
 * 耗电采集
 * NBSAppAgent.BATTERY_MODULE_ENABLED  = 16384;
 * 耗电异常采集
 * NBSAppAgent.BATTERY_ERROR_ENABLED = 32768;
 * 网络内容采集
 * NBSAppAgent.RECORD_NETWORK_ENABLE = 65536;
 */  
NBSAppAgent.setStartOption(int option);
  • 代码示例
public void onCreate() {  
    NBSAppAgent.setLicenseKey("AppKey")
    .setStartOption(NBSAppAgent.HTTP_NETWORK_ENABLED | NBSAppAgent.UI_ENABLED | NBSAppAgent.CRASH_ENABLED)
    //首次启动开启网络、UI、崩溃数据采集
    .start(this.getApplicationContext());
}

获取基调听云设备 ID

应用首次启动时,基调听云服务器会下发 deviceId 用以标识设备。用户可以通过接口获取基调听云的 deviceId 值。

  • 相关接口
/**
 * @return 返回基调听云设备 ID
 */
NBSAppAgent.getTingyunDeviceId()
  • 代码示例
public void onCreate() {  
  String tingYunDid = NBSAppAgent.getTingyunDeviceId();
  if(!TextUtils.isEmpty(tingYunDid)){//若不存在 deviceId,返回 null。建议判空后使用
      ...
  }
}

忽略基调听云 Scheme 配置

基调听云 Scheme 适用于应用开发及运营人员,对 SDK 采集的页面及操作数据进行可视化命名,可能会触发弹窗申请悬浮窗权限。对于 Scheme 拉活,我们建议您另外定义 Scheme。若其他应用,已经用了基调听云 Scheme 来唤起您的应用,可以使用 setIngoreScheme() 方法指定 Scheme,SDK 对该 Scheme 将不再开启可视化配置功能 。

  • 相关接口
/**
 * @param scheme 传入忽略的 scheme 值
 */
NBSAppAgent.setIngoreScheme(String scheme);
  • 代码示例
public class MyApplication extends Application {
    @Override
    public void onCreate() {  
        NBSAppAgent.setLicenseKey("AppKey")
        .setIngoreScheme("tingyun.1234")//在初始化 SDK 时调用接口设置要忽略的 scheme 值
        .start(this.getApplicationContext());
    }
}

设置 okhttp3.EventListener 开关

若项目集成了 OkHttp3.11.0 或以上版本,基调听云 SDK 会通过 EventListener 来采集数据,若您的项目也设置了 EventListener,基调听云 SDK 会在提替换成时记录之前的 EventListener。基调听云 SDK 在收到相关回调方法时,会回调给项目的 EventListener,就不会影响项目自身的 EventListener 接收到回调。若不希望基调听云 SDK 设置 EventListener,可以通过 setOkhttpTcpListener() 方法关闭基调听云设置 EventListener。

  • 相关接口
/**
 * @param isSetListener 默认为 true,设置成 false 设置 EventListener
 */
NBSAppAgent.setOkhttpTcpListener(boolean isSetListener);
  • 代码示例
public class MyApplication extends Application {
    @Override
    public void onCreate() {  
        NBSAppAgent.setLicenseKey("AppKey")
        .setOkhttpTcpListener(false)// 在初始化 SDK 时调用接口,SDK 不设置 EventListener
        .start(this.getApplicationContext());
    }
}

获取项目的 EventListener

若项目集成了 OkHttp3.11.0 或以上版本,基调听云 SDK 会通过 EventListener 来采集数据,若您的项目也设置了 EventListener,基调听云 SDK 会在提替换成时记录之前的 EventListener。若您在代码中通过反射获取 EventListener 时,会返回基调听云的 EventListener,可以通过 NBSHttpTcpListener.getListener() 方法获取项目自身的 EventListener。

  • 相关接口
/**
 * @return 返回 SDK 替换的 EventListener
 */
NBSHttpTcpListener.getListener()
  • 代码示例
// HttpEventListener 表示项目自身的 EventListener
HttpEventListener listener = null;
try {
    if (mEventListenerField == null) {
        synchronized (this) {
            if (mEventListenerField == null) {
                Class<?> realCallClass = call.getClass();
                mEventListenerField = realCallClass.getDeclaredField("eventListener");
                mEventListenerField.setAccessible(true);
            }
        }
    }
//     listener = (HttpEventListener) mEventListenerField.get(call);// 嵌码听云后直接强转为自己的 listener 会报异常
    EventListener eventListener = (EventListener) mEventListenerField.get(call);// 反射获取 EventListener
    if (eventListener instanceof HttpEventListener) { // 判断 eventListener 是自己的还是听云的
        listener = (HttpEventListener) eventListener;// 如果是自己的 listener,强转为自己
    }else if (eventListener instanceof NBSHttpTcpListener){
        NBSHttpTcpListener nbsHttpTcpListener = (NBSHttpTcpListener) eventListener;// 如果是听云的 listener,强转为听云
        listener = (HttpEventListener) nbsHttpTcpListener.getListener();// 通过听云的 getListener() 返回自己的 listener
    }
} catch (Exception e) {
}

设置 OAID

若项目集成了 OAID SDK,可以将获取到的 OAID 传给基调听云 SDK 用以生成设备 ID。

注意:部分设备由于隐私问题,OAID 可能返回固定的值,如 00000000-0000-0000-0000-0000000000000000000000000000000000000000000000000000000000000000000000000000。请勿将固定的值传给 SDK。

  • 相关接口
/**
 * @param oaid 传入的 OAID
 */
NBSAppAgent.setOaidData(String oaid)
  • 代码示例
NBSAppAgent.setOaidData("e6ee0f4b6b67cf8b")

过滤 okhttp3.ResponseBody 嵌码

基调听云 SDK 为了采集下载字节数,会替换 okhttp3.ResponseBody,若您项目中的代码在获取到 response.body() 后有类型转换操作,会触发异常,可以通过 setOkhttpResponseBodyFilter() 接口过滤 okhttp.ResponseBody 嵌码 。

  • 相关接口
/**
 * @param className 为需要过滤的 ResponseBody 的完整类名,该类不能被混淆
 */
NBSAppAgent.setOkhttpResponseBodyFilter(String className)
  • 代码示例
NBSAppAgent.setOkhttpResponseBodyFilter("com.xxx.okhttptest.util.ProgressResponseBody")// 传入过滤的 ResponseBody 的完整类名

禁用鸿蒙设备识别

在鸿蒙设备上,SDK 初始化时会将操作系统置为 “HarmonyOS”,可以通过此接口禁用 SDK 的鸿蒙设置识别,禁用后,SDK 会将操作系统置为 “Android”。

若您使用的是私有化平台,需确认平台是否支持鸿蒙设备识别,若平台不支持鸿蒙设备识别,需要调用 isHarmonyOs(false)。

  • 相关接口
/**
 * @param isHarmonyOS 是否启用鸿蒙设备识别,默认为 true
 */
NBSAppAgent.isHarmonyOs(boolean isHarmonyOS)
  • 代码示例
NBSAppAgent.setLicenseKey("AppKey").setRedirectHost("Host")
.isHarmonyOs(false)// 禁用鸿蒙设备识别
.start(getApplicationContext());

获取用户标识

通过添加「用户标识」可在基调听云报表平台通过该标识检索到具体用户的性能问题。

  • 相关接口
/**
 * @param userIdentifier 最多包含 256 个字符,支持中文、英文、数字、下划线,但不能包含空格或其他的转义字符
 */
NBSAppAgent.setUserIdentifier(String userIdentifier);
  • 代码示例
public class MainActivity extends Activity {  
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        String userIdentifier = getUserID();
          NBSAppAgent.setLicenseKey("AppKey")
          .start(this.getApplicationContext());
          //用户标识可为邮箱、手机号等能够标识用户身份的信息,如:xxx@tingyun.com
        NBSAppAgent.setUserIdentifier(userIdentifier);
      }
}

SDK传输数据使用国密加密

SDK传输数据支持国密加密,调用该接口开启国密加密。

注:

  • 国密加密只支持 Android 6.0 及以上版本,启用国密加密后,安卓 5.x 及以下版本 SDK 将不采集数据。

  • 启用国密需集成 bcpkix-jdk15to18-version.jar 和 bcprov-jdk15to18-version.jar 。

  • 服务端也需要同步开启国密加密功能。

  • 相关接口
/**
 * param isEncryptionRequired 默认 false,设置为 ture 启用国密加密
 */
NBSAppAgent.encryptionRequired(boolean isEncryptionRequired)
  • 代码示例
NBSAppAgent.setLicenseKey("AppKey").setRedirectHost("Host")
.encryptionRequired(true)// 启用国密加密
.start(this.getApplicationContext());

关闭移动运营商采集

SDK 通过 TelephonyManager.getSimOperator() 采集移动网络运营商信息,可以在初始化 SDK 时调用 isOperatorCollect() 接口控制是否采集。

  • 相关接口
/**
 * @param isCollect 默认 true,设置为 false 关闭运营商采集
 */
NBSAppAgent.isOperatorCollect(boolean isCollect)NBSAppAgent.isOperatorCollect(boolean isCollect)
  • 代码示例
NBSAppAgent.setLicenseKey("AppKey").setRedirectHost("Host")
.isOperatorCollect(false)// 关闭运营商采集
.start(this.getApplicationContext());

设置基站数据采集开关

可以通过 setCellCollectEnabled() 接口控制是否开启基站数据采集。本接口需在SDK初始化前调用。

2.17.4 版本 SDK 已默认关闭基站数据采集。

  • 相关接口
/**
 * @param enable 基站数据采集开关,默认 true,可以设置为 false 关闭采集
 */
NBSAppAgent.setCellCollectEnabled(boolean enable);
  • 代码示例
NBSAppAgent.setCellCollectEnabled(false);// 关闭基站数据采集

设置业务线名称

使⽤「设置业务线」接⼝可以将崩溃、卡顿、⽹络错误以业务线进⾏区分,以便查看具体业务的性能数据。

  • 相关接口
/**
 * @param key:固定为 bname 
 * @param value:即需要设置的业务名称
 */
NBSAppArent.setBusinessLine(String key, String value);
  • 代码示例
public class MyApplication extends Application {
    @Override
    public void onCreate() {
        NBSAppArent.setBusinessLine("bname", "购物车");
    }
}
© 2007-2024 北京基调网络股份有限公司 all right reserved,powered by Gitbook本文档更新于: 2024-04-23 13:43

results matching ""

    No results matching ""