跳到主要内容
版本:3.7.0

SDK API

一、启动配置接口

<#Config地址#><#AppID#> 请于平台上获取,获取方式参见《如何查询AppID和Config地址?》。如有问题请联系技术支持。

启动配置类的接口通过链式调用方式随Bonree.withAppID("<#AppID#>").start(getApplicationContext());一同配置,需要在调用start函数之前withAppID之后进行相关配置,可同时配置多项,start函数后配置无效。

设置config地址

One平台或私有化部署用户启动时需要设置私有部署的config地址。

  • 接口说明
Bonree withConfigAddress(java.lang.String configAddress)
参数说明参数限制失败结果
configAddress私有云config地址字符串长度大于0,小于等于2083,否则接口调用失败探针停止
  • 示例
Bonree.withAppID("<#AppID#>")
.withConfigAddress("<#Config地址#>")
.start(getApplicationContext());

配置自定义业务头

配置原生网络请求中的关键Http Request Header的key,当SDK采集到的实际请求数据中Request Header带有此key,对应的key和value将会被单独展示

Bonree withCustomBusinessHeaders(java.lang.String[]headers)
参数说明参数限制失败结果
headers要获取的请求头中自定义业务Header的key,可设置多个数组元素为长度大于0,小于等于256的字符串且不包含特殊字符,(只允许数字、字母、冒号、空格、斜杠、下划线、连字符、英文句号、@,空或空串无效),否则剔除
数组元素个数大于0,否则接口调用失败
数组元素个数小于等于64,超长截取
当次设置无效
  • 示例
  Bonree.withAppID("<#AppID#>")
.withCustomBusinessHeaders("User-Agent","Content-Type")
.start(getApplicationContext());

设置自定义设备ID

通过此方法设置了自定义设备ID,那么SDK将会上报此ID,不再使用默认获取的ID。

Bonree withDeviceID(java.lang.String deviceID)
参数说明参数限制失败结果
deviceID自定义的设备Id字符串长度大于0,小于等于256,且不包含特殊字符(仅支持字母数字下划线_连接符-),否则接口调用失败当次设置无效
  • 示例
  Bonree.withAppID("<#AppID#>")
.withCustomBusinessHeaders("User-Agent","Content-Type")
.withDeviceID("custom_device_id")
.start(getApplicationContext());

设置自定义APP版本

通过此方法设置了自定义设备App版本号,那么SDK将会上报此版本号,不再使用默认获取的版本号。

Bonree withAppVersion(java.lang.String version)
参数说明参数限制失败结果
version自定义的版本号字符串长度大于0,小于等于64,否则接口调用失败当次设置无效
  • 示例
  Bonree.withAppID("<#AppID#>")
.withCustomBusinessHeaders("User-Agent","Content-Type")
.withDeviceID("custom device id")
.withAppVersion("custom app version")
.start(getApplicationContext());

设置自定义应用环境

通过此方法设置应用环境字段

Bonree withAppEnvironment(java.lang.String environment)
参数说明参数限制失败结果
environment应用环境字符字符串长度大于0,小于等于256,超过截取,不包含特殊字符(允许存在空格(不允许纯空格)、字母、中文、数字、-、_、.、@、/、:、*、#、!)当次设置无效
  • 示例
  Bonree.withAppID("<#AppID#>")
.withAppEnvironment("PROD")
.start(this.context.getApplicationContext());

设置用户渠道ID

区分应用发布的渠道,渠道信息会在平台的性能数据中做展示

Bonree withChannelID(java.lang.String channelID)
参数说明参数限制失败结果
channelId自定义的渠道号符串长度大于0,小于等于256,否则接口调用失败当次设置无效
  • 示例
  Bonree.withAppID("<#AppID#>")
.withCustomBusinessHeaders("User-Agent","Content-Type")
.withDeviceID("custom device id")
.withAppVersion("custom app version")
.withChannelID("华为商城")
.start(getApplicationContext());

多进程初始化sdk

是否在所有进程初始化SDK,不设置默认关闭

Bonree withAllLaunch(boolean enabled)
参数说明
enabledtrue 打开 false 关闭
  • 示例
  Bonree.withAppID("<#AppID#>")
.withCustomBusinessHeaders("User-Agent","Content-Type")
.withDeviceID("custom device id")
.withAppVersion("custom app version")
.withChannelID("华为商城")
.withAllLaunch(true)
.start(getApplicationContext());

Android Box数据采集模式

是否按照Box模式采集ANR指标数据,不设置默认关闭

 Bonree withAndroidBoxEnabled(boolean enabled)
参数说明
enabledtrue 打开 false 关闭
  • 示例
  Bonree.withAppID("<#AppID#>")
.withCustomBusinessHeaders("User-Agent","Content-Type")
.withDeviceID("custom device id")
.withAppVersion("custom app version")
.withChannelID("华为商城")
.withAndroidBoxEnabled(true)
.start(getApplicationContext());

设置同步初始化SDK

是否开启SDK的同步启动

Bonree withSyncStart(boolean isSync)
参数说明
isSynctrue 同步启动 false 异步启动
  • 示例
  Bonree.withAppID("<#AppID#>")
.withSyncStart(true)
.start(getApplicationContext());

使用自定义冷启动结束时间

是否使用自定义冷启动结束时间

Bonree withUseCustomLaunch(boolean used)
参数说明
usedtrue 使用自定义结束 false 不使用
  • 示例
  Bonree.withAppID("<#AppID#>")
.withUseCustomLaunch(true)
.start(getApplicationContext());

设置持续丢帧时间

判定卡顿时需要的持续丢帧时间

Bonree withDropFrameTime(int dropFrameTime)
参数说明
dropFrameTime持续丢帧时间(s),0< dropFrameTime <=30,不设置默认5s
  • 示例
  Bonree.withAppID("<#AppID#>")
.withDropFrameTime(5)
.start(getApplicationContext());

设置SDK自身请求Header

本接口用于设置对于SDK自身发起的网络请求中添加自定义请求头

Bonree withSDKRequestHeaders(Map<String, String> headers)
参数说明
headers要设置的请求头键值对(最多设置64个,key长度限制256个字符,value长度限制512个字符)
  • 示例
  Map<String, String> headers=new HashMap<>();
headers.put("headerKey1","headerValue1");
headers.put("headerKey2","headerValue2");
headers.put("headerKey3","headerValue3");

Bonree.withAppID("<#AppID#>")
.withSDKRequestHeaders(headers)
.start(getApplicationContext());

开启加密并设置加密信息

本接口用于设置是否使用国密加密SDK自身请求。

加密功能当前仅支持One平台。使用该功能前请务必先与技术支持或实施沟通获取加密Key,保证与平台配置一致,否则会导致SDK数据请求异常。

Bonree withEnableGMSM4Encrypt(byte[] secretKey,java.lang.String identifier)
参数说明参数限制失败结果
secretKey加密密钥必填,byte[] 类型,key长度必须完全等于16个字节加密功能失效
identifier密钥标识符必填,字符串不可为空或空串。
字符串小于等于256,且不包含特殊字符(仅支持字母数字下划线_连接符-)
加密功能失效
  • 示例
  byte[] secretKey = new byte[]{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
//assert secretKey.length == 16;
String identifier="v30";
Bonree.withAppID("<#AppID#>")
.withEnableGMSM4Encrypt(secretKey,identifier)
.start(getApplicationContext());

  String secretKeyStr ="1234567890123456";
byte[] secretKey = secretKeyStr.getBytes();
//assert secretKey.length == 16; 务必保证字符实际长度为16字节,请勿使用< > & ' " %特殊字符
String identifier ="v31";
Bonree.withAppID("<#AppID#>")
.withEnableGMSM4Encrypt(secretKey,identifier)
.start(getApplicationContext());

设置视图相关数据脱敏规则

本接口用于设置视图/控件脱敏规则,对于符合规则的控件进行脱敏处理

影响功能模块:

  1. Action(操作):符合脱敏规则的控件内容会设置为***.
  2. SessionReplay(会话回放):符合脱敏规则的控件会遮罩处理.
  3. Trace(轨迹):符合脱敏规则的控件内容会设置为***.
Bonree withViewSensitiveRules(List<SensitiveViewRule> sensitiveRules)
SensitiveViewRule的构造函数:
SensitiveViewRule(SensitiveType sensitiveType, String content)
SensitiveViewRule(SensitiveType sensitiveType, int id)
参数说明
sensitiveRules要设置的规则队列(最多设置200个,content长度限制256个字符)
  • 示例
ArrayList<SensitiveViewRule> SensitiveViewRules = new ArrayList<>();
SensitiveViewRule ruleA = new SensitiveViewRule(SensitiveViewRule.SensitiveType.VIEW, AppCompatTextView.class.getName());
SensitiveViewRule ruleB = new SensitiveViewRule(SensitiveViewRule.SensitiveType.ID, R.id.battery_wakeLock);
SensitiveViewRule ruleC = new SensitiveViewRule(SensitiveViewRule.SensitiveType.STRING_ID, "location");
SensitiveViewRules.add(ruleA);
SensitiveViewRules.add(ruleB);
SensitiveViewRules.add(ruleC);
Bonree.withAppID("<#AppID#>")
.withViewSensitiveRules(SensitiveViewRules)
.start(getApplicationContext());

二、数据获取接口

获取设备ID

如果在SDK启动时设置了 withDeviceID 接口,那么会返回自定义的ID

static java.lang.String getDeviceID()
  • 示例
  String deviceID=Bonree.getDeviceID();
Log.w("TAG","BRSDK: "+deviceID);

获取SDK当前版本

获取当前SDK的版本

static java.lang.String getSdkVersion();
  • 示例
  String sdkVersion=Bonree.getSdkVersion();
Log.w("TAG","BRSDK: "+sdkVersion);

三、自定义信息设置接口

自定义用户信息

BonreeSDK支持设置与用户相关的信息,从而完成性能数据与实际用户相关联的需求场景。

设置用户信息有两种方式:

  • 设置用户ID,以字符串形式给用户做标识
static void setUserID(java.lang.String userID);
参数说明参数限制失败结果
userID以字符串形式给用户做标识字符串可为空或空串。
字符串小于等于256,且不包含特殊字符(只允许数字、字母、中文、冒号、空格、斜杠、下划线、连字符、英文句号、星号、叹号、@、#,空或空串无效),否则接口调用失败
当次设置无效
  • 示例
 Bonree.setUserID("18988888888");

设置用户附加信息

  • 设置用户更加详细的附加信息。
static void setUserExtraInfo(java.util.Map<java.lang.String, java.lang.Object> extraInfo);
参数说明参数限制失败结果
extraInfo用户附加信息Map中kv最多64对 超过则保留其中64个,key长度小于256,超过则该key无效;value小于512,超过则截取当次设置无效
  • 示例
   HashMap<String, Object> userInfo=new HashMap<>(3);
userInfo.put("phoneNumber","18988888888");
userInfo.put("clientID","android device id");
userInfo.put("type","vip");
Bonree.setUserExtraInfo(userInfo);

追加用户附加信息

  • 追加用户附加信息
static void addUserExtraInfo(java.lang.String key, java.lang.Object value)
参数说明参数限制失败结果
key追加的keykey长度小于256,超过则该key无效;当次设置无效
valuekey对应的valuevalue小于512,超过则截取当次设置无效
  • 示例
   Bonree.addUserExtraInfo("age","18");

移除用户附加信息

  • 移除用户附加信息
static void removeUserExtraInfo(java.lang.String key)
参数说明参数限制失败结果
key追加的keykey长度小于256,超过则该key无效;当次设置无效
  • 示例
   Bonree.removeUserExtraInfo("age");

累加用户数值信息

  • 累加用户数值信息
static void increaseUserExtraInfo(java.lang.String key, java.lang.Number value)
参数说明参数限制失败结果
key追加的keykey长度小于256,超过则该key无效;当次设置无效
valuekey对应的valuevalue 仅支持Number类型当次设置无效
  • 示例
   Bonree.increaseUserExtraInfo("number",1);

用户附加信息(已废弃)

  • 该接口已废弃 请使用 setUserExtraInfo 接口。
 @Deprecated
static void setExtraInfo(java.util.Map<java.lang.String,java.lang.Object>extraInfo)
参数说明参数限制失败结果
extraInfokv存储更多的用户信息Map可为空或空集合。
转JSON后长度在7000字符以内,否则接口调用失败。
当次设置无效
  • 示例
   HashMap<String, Object> userInfo=new HashMap<>(3);
userInfo.put("phoneNumber","18988888888");
userInfo.put("clientID","android device id");
userInfo.put("type","vip");
Bonree.setExtraInfo(userInfo);

添加事件的公共属性

  • 添加事件的公共属性
static void addEventAttributes(java.util.Map<String, Object> attributes, boolean isSaveLocal)
参数说明参数限制失败结果
attributes要添加的信息,相同的key会覆盖之前的设置map中kv最多64对 超过则保留其中64个;当次设置无效
isSaveLocal是否持久化本地,true:公共属性会持久化到本地,下次打开应用还会带上公共属性。false:仅本次使用期间生效当次设置无效
  • 示例
   HashMap<String, Object> attributes=new HashMap<>(3);
attributes.put("onclick","1");
attributes.put("page","1");
attributes.put("type","vip");
Bonree.addEventAttributes(attributes,true);

添加单条事件的公共属性

  • 添加单条事件的公共属性
static void addEventAttributes(java.lang.String key, java.lang.Object value, boolean isSaveLocal)
参数说明参数限制失败结果
key要添加信息的keykey长度小于等于256,超过则该key无效;当次设置无效
value要添加信息的valuevalue长度小于等于512,超过则截取当次
isSaveLocal是否持久化本地,true:公共属性会持久化到本地,下次打开应用还会带上公共属性。false:仅本次使用期间生效当次设置无效
  • 示例
   Bonree.addEventAttributes("onclick",1,true);

移除事件公共属性

  • 移除事件公共属性
static void removeEventAttribute(java.lang.String[] keys)
参数说明参数限制失败结果
keys要删除key的数组key长度小于等于256,超过则该key无效;当次设置无效
  • 示例
   String [] removeKeys={"name","age"};
Bonree.removeEventAttribute(removeKeys);

移除所有事件公共属性

  • 移除所有事件公共属性
static void removeAllEventAttributes()
  • 示例
Bonree.removeAllEventAttributes();

自定义异常

调用接口并传入相应参数,可完成自定义异常数据的统计功能。

static void setCustomException(java.lang.Throwable throwable) //推荐使用,直接将Exception或Throwable对象传入即可
参数说明参数限制失败结果
throwable异常对象系统抛出的异常对象,非null当次设置无效
  • 示例
   try{
String userName=null;
Log.w("TAG","user name: "+userName.trim());
}catch(Exception e){
e.printStackTrace();
//推荐使用Throwable重载,直接将对象传入即可
Bonree.setCustomException(e);
}
//此重载配置更灵活,可用于业务型异常上报,有关参数可填充符合参数限制的任意内容,平台直接展示。
static void setCustomException(java.lang.String exceptionType,java.lang.String causeBy,java.lang.String errorDump)
参数说明参数限制失败结果
exceptionType异常类型(必要)字符串长度大于0,小于等于256,否则接口调用失败。当次设置无效
causeBy异常原因字符串可为空或空串。
字符串小于等于512,超长截取。
-
errorDump异常信息超出10000字符时会被切割字符串可为空或空串。
字符串小于等于10000,超长截取。
  • 示例
   try{
String userName=null;
Log.w("TAG","user name: "+userName.trim());
}catch(Exception e){
e.printStackTrace();
String errorDump=StringUtils.join(e.getStackTrace(),"\r\n");
Bonree.setCustomException(e.getClass().getName(),e.getMessage(),errorDump);
}

自定义视图

调用接口并传入相应参数,可完成自定义视图数据统计功能。

//自定义视图-页面开始,与页面结束需成对调用,一般调用位置:onResume name视图名称为必填字段,如果为空则调用失败。
static void setCustomPageStart(java.lang.String pageName,java.lang.String param);

//自定义视图-页面结束,与页面开始成对调用,一般调用位置:onPause
static void setCustomPageEnd(java.lang.String pageName,java.lang.String param);
参数说明参数限制失败结果
pageName视图名字(必要)字符串长度大于0,小于等于256,否则接口调用失败。当次设置无效
param附加信息,可设置为视图别名字符串可为空或空串。
字符串小于等于256,超长截取。
-
  • 示例
 @Override
protected void onResume(){
Bonree.setCustomPageStart(getClass().getName(),"首页");
super.onResume();
}

@Override
protected void onPause(){
Bonree.setCustomPageEnd(getClass().getName(),"首页");
super.onPause();
}

自定义事件(完整版)

分别调用开始与结束接口并传入相应参数,可完成自定义事件数据与事件持续时间的统计功能。

static void setCustomEventStart(String eventID, String name);
static void setCustomEventStart(String eventID,String name,String label);
static void setCustomEventStart(String eventID, String name, String label, String param);
static void setCustomEventStart(String eventID, String name, String label, String param,Map<String,String> info);
static void setCustomEventEnd(String eventID, String name);
static void setCustomEventEnd(String eventID,String name,String label);
static void setCustomEventEnd(String eventID, String name, String label, String param);
static void setCustomEventEnd(String eventID, String name, String label, String param,Map<String,String> info);
参数说明参数限制失败结果
eventID事件ID(必要)字符串长度大于0,小于等于256,否则接口调用失败。当次设置无效
name事件名称字符串可为空或空串。
字符串小于等于256,超长截取。
-
label事件标签字符串可为空或空串。
字符串小于等于256,超长截取。
-
param事件附加信息字符串可为空或空串。
字符串小于等于7000,超长截取。
-
info事件业务信息转JSON后长度在7000字符以内,否则接口调用失败。-
  • 示例
 Bonree.setCustomEventStart("vip-login","验证码发送","登录");
Bonree.setCustomEventEnd("vip-login","验证码发送","登录");

//带有info字段的调用
HashMap<String, String> info=new HashMap<>(3);
info.put("eventNumber","10001");
info.put("eventName","bonree");
info.put("eventXX","xx");
Bonree.setCustomEventStart("vip-login","登录失败","登录",null,info);
Bonree.setCustomEventEnd("vip-login","验证码发送","登录",null,info);

自定义事件(精简版)

调用接口并传入相应参数,可完成自定义事件数据统计功能。

static void setCustomEvent(String eventID,String name);
static void setCustomEvent(String eventID,String name,String param,Map<String,String> info);
static void setCustomEventWithLabel(String eventID, String name, String label);
static void setCustomEventWithLabel(String eventID, String name, String label, String param,Map<String,String> info);
参数说明参数限制失败结果
eventID事件ID(必要)字符串长度大于0,小于等于256,否则接口调用失败。当次设置无效
name事件名称字符串可为空或空串。
字符串小于等于256,超长截取。
-
label事件标签字符串可为空或空串。
字符串小于等于256,超长截取。
-
param事件附加信息字符串可为空或空串。
字符串小于等于7000,超长截取。
-
info事件业务信息转JSON后长度在7000字符以内,否则接口调用失败。-
  • 示例
  Bonree.setCustomEvent("001","注册");
Bonree.setCustomEventWithLabel("vip-login","登录失败","登录");

HashMap<String, String> info=new HashMap<>(3);
info.put("eventNumber","10001");
info.put("eventName","bonree");
info.put("eventXX","xx");
Bonree.setCustomEvent("vip-login","登录失败",null,info);
Bonree.setCustomEventWithLabel("vip-login","登录失败","登录",null,info);

自定义日志

调用接口并传入相应参数,可完成自定义日志数据统计功能。

static void setCustomLog(java.lang.String logInfo)
参数说明参数限制失败结果
logInfo日志信息(必要)字符串长度大于0,否则接口调用失败。
字符串小于等于10000,超长截取。
当次设置无效
  • 示例
 Bonree.setCustomLog("login successful...");

自定义指标

调用接口并传入相应参数,可完成自定义指标数据统计功能。

static void setCustomMetric(java.lang.String name,long value)
参数说明参数限制失败结果
name指标名称(必要)字符串长度大于0,小于等于256,否则接口调用失败。当次设置无效
value指标值(必要)Long.MAX_VALUE-
  • 示例
 Bonree.setCustomMetric("自定义指标",System.currentTimeMillis());

自定义方法

调用接口并传入相应参数,可完成自定义指标数据统计功能。自定义方法埋点多用于不在SDK自动采集范围内的业务方法或异步方法的手动埋点。

static void setCustomMethodStart(java.lang.String name);
static void setCustomMethodEnd(java.lang.String name);
参数说明参数限制失败结果
name方法名称(必要)字符串长度大于0,小于等于256,否则接口调用失败。当次设置无效
  • 示例
public void onNetworkLoad(){
Bonree.setCustomMethodStart("onNetworkLoad");
//do something
SystemClock.sleep(5000);
Bonree.setCustomMethodEnd("onNetworkLoad");
}

自定义网络

调用接口并传入相应参数,可完成自定义指标数据统计功能。自定义方法埋点多用于不在SDK自动采集范围内的业务方法或异步方法的手动埋点。

static void setCustomNetwork(NetworkCustomEventBean networkCustomEvent)
参数说明参数限制失败结果
networkCustomEvent实体结构(必要)指标结构对象。必传参数。当次设置无效
@param java.lang.String requestUrl                        //请求地址
@param NetworkCustomEventBean.HttpMethod method //请求方式
@param java.lang.String targetIp //目标IP
@param int targetPort //目标端口
@param int dnsTimeUs //dns查询时间
@param int connectTimeUs //tcp建连时间
@param int sslTimeUs //ssl时间
@param int requestTimeUs //请求时间
@param int responseTimeUs //响应时间
@param int downloadTimeUs //下载用时
@param int downloadSizeByte //响应数据大小
@param NetworkCustomEventBean.ProtocolType protocolType //协议类型
@param java.util.List cnameArray //cname的集合
@param int errorCode //错误码
@param java.lang.String errorMessage //错误描叙信息
@param NetworkCustomEventBean.ErrorOccurrentProcess //错误发生的过程阶段
@param int requestDataSize //请求大小的字段
@param java.lang.String resourceType //资源类型
@param Map<String, String> requestHeader //请求header
@param Map<String, String> responseHeader; //响应header
  • 示例
    Bonree.setCustomNetwork(new NetworkCustomEventBean("https://www.baidu.com",
NetworkCustomEventBean.HttpMethod.GET,
443,
20000,
10000,
50000,
20000,
500000,
10000,
55,
NetworkCustomEventBean.ProtocolType.HTTP1S
));

自定义冷启动结束

在启动配置中配置了withUseCustomLaunch 接口后,调用此自定义接口可以设置当前时刻为自定义冷启动事件的结束点

static void recordCustomLaunchEnd()
  • 示例
 Bonree.recordCustomLaunchEnd();

设置自定义请求信息接口

调用接口并传入相应参数,可以给匹配到的网络数据关联自定义的字符串信息。

static void setRequestExtraInfo(java.lang.String headerKey,java.lang.String headerValue,java.lang.String info)
  • 接口说明
参数名说明参数限制失败结果
headerKey需要匹配的key字符串长度大于0,小于等于256,否则接口调用失败。当次设置无效
value需要匹配的请求头Value字符串长度大于0,小于等于256,否则接口调用失败。当次设置无效
info关联的自定义信息字符串长度大于0,小于等于256,若为空则清除对应键值缓存的信息。超长部分会被截断
  • 示例

使用本接口前,需要保证目标请求的请求头中有唯一标识,比如,某请求的请求头如下:

POST /upload HTTP/1.1
Host: sdkupload.bonree.com
Content-Type: application/json
Content-Length: 781
Connection: keep-alive
Br-Content-Encoding: gzip
Operation-Type:vip-login

其中Operation-Type为该请求的唯一标识字段,若要给该请求关联信息

vip-id:8888

则需要在请求发出之前调用

 Bonree.setRequestExtraInfo("Operation-Type","vip-login","vip-id:8888");

自定义操作结束

调用该接口,结束根据调用栈匹配到的操作。该方法必须直接或间接地由操作相关的方法调用,否则接口调用无效。

static void recordCustomActionEnd()
  • 使用场景

以登录场景为例,

  1. 在LoginActivity点击登录按钮,触发 onClick(View view) 回调;
  2. onClick 回调中,发送 login 请求;
  3. login 请求成功后,持久化用户信息,并跳转到HomeActivity;
  4. 在HomeActivity中刷新首页展示数据;

如果我们定义登录操作的结束点为Home页面用户可见时,那么我们就可以在HomeActivity的 onResume() 函数中中调用自定义操作结束接口来停止上一个登录按钮的事件采集操作。

  • 示例
 @Override
protected void onResume() {
super.onResume();
Bonree.recordCustomActionEnd();
}

设置崩溃回调

调用该接口,并传入崩溃监听对象,SDK处理在处理Crash异常时可以回调业务,方便业务在回调时加入自定义的逻辑。

static void setCrashCallback(CrashCallback callback)
public interface CrashCallback {
/**
* Crash处理回调时,执行此接口
*
* @param isNativeCrashed 是否NativeCrash
* @param crashType Crash类型
* @param crashMsg Crash消息, 例如 “Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference”
* @param crashStack Crash堆栈
* @param crashUuid 这条异常的唯一标识
*/
void onCrash(boolean isNativeCrashed, String crashType, String crashMsg, String crashStack, String crashUuid);
}
参数说明参数限制失败结果
callback崩溃回调当次设置无效
  • 示例
CrashCallback crashCallback = new CrashCallback() {
@Override
public void onCrash(boolean isNativeCrashed, String crashType, String crashMsg, String crashStack, String crashUuid) {
Log.e(TAG, "onCrash isNativeCrashed: " + isNativeCrashed);
Log.e(TAG, "onCrash crashType: " + crashType);
Log.e(TAG, "onCrash crashMsg: " + crashMsg);
Log.e(TAG, "onCrash crashStack: " + crashStack);
Log.e(TAG, "onCrash crashUuid: " + crashUuid);

}
};
Bonree.setCrashCallback(crashCallback);

开启会话回放上报

在会话回放功能打开的前提下,SDK默认在产生问题时才会上报回放数据,若客户端主动调用该接口会立刻开启会话回放的持续上报能力。

static void startSessionReplayUpload()
  • 示例
public void onClick(View view){
Log.e("用户进入重点业务,需要留存操作");
Bonree.startSessionReplayUpload();
}

四、OnlineTracking

调试授权接口

调试授权接口,用于在任何时机对SDK后续的tracking调试行为授权或取消授权,只在当次运行生效,不做持久化存储。

static void authorizeOnlineTracking(boolean isAuthorized)
  • 接口说明
参数名说明参数限制失败结果
isAuthorized授权/取消授权truefalse
  • 示例
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
//可在APP运行初期就授予/取消权限
Bonree.authorizeOnlineTracking(true);
}
}

授权回调接口

授权回调接口用于被动式授权,在当次运行未主动调用Bonree.authorizeOnlineTracking(boolean isAuthorized)接口授权/取消授权的前提下,当SDK客户端收到服务端的调试请求时,会回调此接口传入的callback。

static void setOnlineTrackingAuthenticationCallBack(com.bonree.sdk.agent.Bonree.AuthenticationCallBack callback) 
  • 接口说明
参数名说明参数限制失败结果
callback回调实例必传非null当次设置无效
  • 示例
 Bonree.setOnlineTrackingAuthenticationCallBack(()->{
//务必在接收到SDK的授权请求回调30s之内调用此授权接口告知SDK是否允许调试,超时则认为当次调试被拒绝。
if(DEBUG){
//可根据自身业务灵活更改校验条件,如可以在此回调内弹出向用户询问授权的弹窗(*此回调为子线程,禁止直接更新UI),由用户决定授权与否再调用authorizeOnlineTracking授权接口。
Bonree.authorizeOnlineTracking(true);
}
});

五、协议扩展接口

本章节介绍基于协议扩展相关接口的使用及说明。

创建扩展协议实例

调用创建接口,返回实现了Span协议的实例对象。

    public static Span startSpan(java.lang.String name,java.lang.String type);
  • 接口说明
参数名说明参数限制失败结果
name协议扩展的名称(必要)字符串长度大于0,小于等于256,超过截取,只允许数字、字母、冒号、空格、斜杠、下划线、连字符、英文句号、@,空或空串无效接口调用无效
type协议扩展的类型(必要)字符串长度大于0,小于等于256,超过截取,只允许数字、字母、冒号、空格、斜杠、下划线、连字符、英文句号、@,空或空串无效接口调用无效
返回值类型说明
Span协议扩展的实例对象
  • 示例
 //...
//创建Span
Span mSpan=Bonree.startSpan("name","type");

注意:创建接口即startSpan需和完成接口即finish()或finish(Span.SpanStatus spanStatus)成对调用。

协议扩展完成

完成该协议扩展数据,完成后调用其他实例方法无效。

    public void finish(); 

public void finish(Span.SpanStatus spanStatus);
  • 接口说明
参数名说明参数限制失败结果
spanStatus协议扩展状态取值SPAN_STATUS_UNKNOWNSPAN_STATUS_OKSPAN_STATUS_ERROR-
  • 示例
    Span span=Bonree.startSpan("name","type");
//...
//完成该Span
span.finish();
//or
span.finish(Span.SpanStatus.SPAN_STATUS_OK);

创建子协议扩展实例

在一个协议扩展对象上创建一个子协议扩展对象,返回实现Span协议的实例。

    public Span startChild(java.lang.String name, java.lang.String type);
  • 接口说明
参数名说明参数限制失败结果
name协议扩展的名称(必要)字符串长度大于0,小于等于256,超过截取。只允许数字、字母、冒号、空格、斜杠、下划线、连字符、英文句号、@,空或空串无效接口调用无效
type协议扩展的类型(必要)字符串长度大于0,小于等于256,超过截取。只允许数字、字母、冒号、空格、斜杠、下划线、连字符、英文句号、@,空或空串无效(需与父span类型一致,否则沿用父span类型)接口调用无效
返回值类型说明
Span协议扩展的实例对象
  • 示例
    Span span=Bonree.startSpan("name","type");
//...
//创建子Span
Span childSpan=span.startChild("name","type");

注意:完成父协议扩展对象时会自动将其所有子协议扩展对象完成(若没设置过状态的默认为SPAN_STATUS_OK)

当前仅支持单层协议扩展,即顶层Span可以创建子Span,但是不支持子Span下的子Span。

当Span类型为socket或websocket两个预留类型之一时,暂不支持其下创建子Span。

设置Data数据

设置协议扩展内的Data数据

    public void setData(java.lang.String key, java.lang.String value);
  • 接口说明
参数名说明参数限制失败结果
keyData对应的key值(必要)字符串长度大于0,小于等于200,大小写不敏感, 允许字母、下划线、连字符、英文句号,且必须以字母开始、字母结束接口调用无效
valueData值(必要)字符串长度大于0,小于等于7000,超过截取-
  • 示例
    Span span=Bonree.startSpan("name","type");
//...
//添加Data数据
span.setData("key","value");

移除Data数据

移除协议扩展内的Data数据

    public void removeData(java.lang.String key);
  • 接口说明
参数名说明参数限制失败结果
key根据key值,移除对应的Data数据(必要)--
  • 示例
    Span span=Bonree.startSpan("name","type");
span.setData("key","value");
//...
//删除Data数据
span.removeData("key");

设置Tag数据

设置协议扩展内的Tag数据

    public void setTag(java.lang.String key, java.lang.String value);
  • 接口说明
参数名说明参数限制失败结果
keyTag对应的key值(必要)字符串长度大于0,小于等于200,大小写不敏感。允许字母、下划线、连字符、英文句号,且必须以字母开始、字母结束接口调用无效
valueTag值(必要)字符串长度大于0,小于等于7000,超过截取-
  • 示例
    Span span=Bonree.startSpan("name","type");
//...
//添加Tag数据
span.setTag("key","value");

移除Tag数据

移除协议扩展内的Tag数据

    public void removeTag(java.lang.String key);
  • 接口说明
参数名说明参数限制失败结果
key根据key值,移除对应的Tag数据(必要)--
  • 示例
    Span span=Bonree.startSpan("name","type");
span.setTag("key","value");
//...
//删除Tag数据
span.removeTag("key");

设置Metric数据

1.设置协议扩展内的Metric数据(无单位)

    public void setMetric(java.lang.String key, java.lang.String value);
  • 接口说明
参数名说明参数限制失败结果
keyMetric对应的key值(必要)字符串长度大于0,小于等于200,大小写不敏感。允许字母、下划线、连字符、英文句号,且必须以字母开始、字母结束接口调用无效
valueMetric值(必要)--
  • 示例
    Span span=Bonree.startSpan("name","type");
//...
//添加Metric数据
span.setMetric("key",1000);

2.设置协议扩展内的Metric数据(有单位)

    public void setMetric(java.lang.String key, long value, java.lang.String unit);
  • 接口说明
参数名说明参数限制失败结果
keyMetric对应的key值(必要)字符串长度大于0,小于等于200,大小写不敏感。允许字母、下划线、连字符、英文句号,且必须以字母开始、字母结束接口调用无效
valueMetric值(必要)--
unitMetric的单位名称(必要)字符串长度大于0,小于等于256。只允许数字、字母、冒号、空格、斜杠、下划线、连字符、英文句号、@ ,可使用预置枚举单位(Span.SpanMetricUnit)仅单位设置无效
  • 示例
    Span span=Bonree.startSpan("name","type");
//...
//添加Metric数据
span.setMetric("key",1000,"tcp");
//or
span.setMetric("key",1000,Span.SpanMetricUnit.Byte);

注意:SDK内部预置了unit单位,预置单位类型见Span.SpanMetricUnit枚举类,支持自定义单位。

移除Metric数据

移除协议扩展内的Metric数据

    public void removeMetric(java.lang.String key);
  • 接口说明
参数名说明参数限制失败结果
key根据key值,移除对应的Metric数据(必要)--
  • 示例
    Span span=Bonree.startSpan("name","type");
span.setMetric("key",1000,"ms");
//...
//删除Metric数据
span.removeMetric("key");

设置Status

设置协议扩展的状态。

    public void setStatus(Span.SpanStatus status);
  • 接口说明
参数名说明参数限制失败结果
status协议扩展实例状态,取值SPAN_STATUS_UNKNOWNSPAN_STATUS_OKSPAN_STATUS_ERROR(必要)--
  • 示例
    Span span=Bonree.startSpan("name","type");
//...
//设置Status状态
span.setStatus(Span.SpanStatus.SPAN_STATUS_OK);

设置StatusCode

设置协议扩展的状态码。

    public void setStatusCode(java.lang.String code);
  • 接口说明
参数名说明参数限制失败结果
statusCode状态码值(必要)字符串长度大于0,小于等于7000,超过接口调用无效接口调用无效
  • 示例
    Span span=Bonree.startSpan("name","type");
//...
//设置Status状态码
span.setStatusCode("200");

设置Duration

主动设置span耗时,如果未主动调用该方法,则span耗时为从start到finish的时长。

    public void setDuration(long duration);
  • 接口说明
参数名说明参数限制失败结果
duration协议扩展耗时,单位:微秒(us)(必要)--
  • 示例
    Span span=Bonree.startSpan("name","type");
//...
//设置持续时长
span.setDuration(100);