API功能
一、启动配置接口
BonreeSDK启动
bool BONREE_CALL StartWithAppIDA(const char* app_id);
bool BONREE_CALL StartWithAppIDW(const wchar_t* app_id);
- 参数说明
参数 | 描述 |
---|---|
app_id | 博睿SDK平台生成的应用唯一ID |
返回值
初始化 bonree SDK成功返回 true, 失败返回 false。示例
std::wstring appid = L"d3cf38d8-9cea-4db5-9712-14fe55038ae5"; bool ret = bonree_sdk::StartWithAppID(appid.c_str()); if (!ret) { //初始化SDK失败 }
BonreeSDK关闭
bool BONREE_CALL StopSDK();
请在应用进程关闭时调用此接口。
- 参数说明
参数 | 描述 |
---|---|
NONE |
返回值
注销成功返回 true,失败返回 false。示例
bool ret = bonree_sdk::StopSDK();
if (!ret) {
//结束SDK失败
}
设置config服务器地址
私有云客户设置私有部署的config地址时使用。公有云客户请勿调用。该接口需要在调用StartWithAppID前设置。
bool BONREE_CALL SetConfigAddressA(const char* url);
bool BONREE_CALL SetConfigAddressW(const wchar_t* url);
- 参数说明
参数 | 描述 |
---|---|
url | 私有云config地址 |
返回值
设置成功返回 true, 失败返回 false。示例
bool ret = bonree_sdk::SetConfigAddress(L"http://devtest.ibr.cc:20107/config"); if(!ret){ // 设置config 服务地址失败 }
设置app版本
设置的版本信息将会上报到用户信息中。
如果未在编译产出的PE文件中设置版本信息,请调用此接口设置。
bool BONREE_CALL SetAppVersionA(const char* app_version);
bool BONREE_CALL SetAppVersionW(const wchar_t* app_version);
- 参数说明
参数 | 描述 |
---|---|
app_version | app 版本号 |
返回值
设置成功返回 true, 失败返回 false。示例
bool ret = bonree_sdk::SetAppVersion(L"2.0.1"); if(!ret){ // 设置app 版本失败 }
设置下载渠道名称
区分应用发布的渠道, 渠道信息会在平台的性能数据中做展示。
bool BONREE_CALL SetChannelIDA(const char* channel_id);
bool BONREE_CALL SetChannelIDW(const wchar_t* channel_id);
- 参数说明
参数 | 描述 |
---|---|
channel_id | 需要设置的渠道名称 |
返回值
设置成功返回 true, 失败返回 false。示例
bool ret = bonree_sdk::SetChannelID(L"123456789"); if(!ret){ // 设置渠道商ID失败 }
设置自定义设备ID
默认为主板序列号。
BONREE_CALL SetDeviceIDA(const char* id);
BONREE_CALL SetDeviceIDW(const wchar_t* id);
- 参数说明
参数 | 描述 |
---|---|
id | 自定义设备ID |
返回值
设置成功返回 true, 失败返回 false。示例
bool ret = bonree_sdk::SetDeviceID(L"123456789"); if(!ret){ // 设置自定义设备ID失败 }
设置自定义业务头
配置原生网络请求中的关键Http Request Header的key, 当SDK采集到的实际请求数据中Request Header带有此key,对应的key和value将会被单独展示。
typedef struct CustomBusinessHeaderA {
char* header;
CustomBusinessHeaderA():header(nullptr) {}
} CUSTOMBUSINESSHEADERA, *PCUSTOMBUSINESSHEADERA;
typedef struct CustomBusinessHeaderW {
wchar_t* header;
CustomBusinessHeaderW() :header(nullptr) {}
} CUSTOMBUSINESSHEADERW, *PCUSTOMBUSINESSHEADERW;
BONREE_SDK_API bool BONREE_CALL SetCustomBusinessHeadersA(PCUSTOMBUSINESSHEADERA custom_headers,int size);
BONREE_SDK_API bool BONREE_CALL SetCustomBusinessHeadersW(PCUSTOMBUSINESSHEADERW custom_headers,int size);
- 参数说明
参数 | 描述 | 限制 |
---|---|---|
custom_header_keys | 自定义业务头 | set元素为长度大于0,小于等于256的字符串且不包含特殊字符(仅支持字母数字及-, _, *, #),否则本项无效 |
size | 数组长度 | 大于0,小于等于64,否则接口调用失败 |
返回值
设置成功返回 true, 失败返回 false。示例
bonree_sdk::CUSTOMBUSINESSHEADERW business_headers[3]; business_headers[0].header = L"business_headers1"; business_headers[1].header = L"business_headers2"; business_headers[2].header = L"business_headers3"; bool ret = bonree_sdk::SetCustomBusinessHeaders(business_headers, 3); if (!ret) { // 设置自定义业务头失败 }
二、 数据获取接口
获取设备ID
如果设置了自定义设备ID,则这里获取的是自定义设备ID,否则获取的是主板的序列号。
bool BONREE_CALL GetDeviceIDA(char* id,int len);
bool BONREE_CALL GetDeviceIDW(wchar_t* id, int len);
- 参数说明
参数 | 描述 |
---|---|
id | 获取设备id缓存 |
len | id缓存长度 |
返回值
获取成功返回 true, 失败返回 false。示例
wchar_t id_buf[16] = { 0 }; bool ret = bonree_sdk::GetDeviceID(id_buf, 16); if (!ret) { // 获取设备id失败 }
获取SDK版本
bool BONREE_CALL GetSDKVersionA(char* version,int len);
bool BONREE_CALL GetSDKVersionW(wchar_t* version, int len);
- 参数说明
参数 | 描述 |
---|---|
version | 获取版本信息缓存 |
len | 上述缓存长度 |
返回值
获取成功返回 true, 失败返回 false。示例
wchar_t version_buf[16] = { 0 }; bool ret = bonree_sdk::GetSDKVersion(version_buf, 16); if (!ret) { // 获取SDK版本信息失败 }
三、 自定义信息设置接口
自定义用户信息
BonreeSDK支持设置与用户相关的信息,从而完成性能数据与实际用户相关联的需求场景。
设置用户ID
bool BONREE_CALL SetUserIDA(const char* user_id);
bool BONREE_CALL SetUserIDW(const wchar_t* user_id);
- 参数说明
参数 | 描述 | 限制 |
---|---|---|
user_id | 用户ID | 长度大于0,小于等于256的字符串且不包含特殊字符(仅支持字母数字及-, _, *, #)。 长度限制为256。 |
返回值
设置成功返回 true, 失败返回 false。示例
bool ret = bonree_sdk::SetUserID(L"123456789"); if(!ret){ // 设置用户ID失败 }
设置用户扩展信息
typedef struct ExtraInfoA {
char* key;
char* value;
ExtraInfoA() :key(nullptr), value(nullptr) {}
} EXTRAINFOA, *PEXTRAINFOA;
typedef struct ExtraInfoW {
wchar_t* key;
wchar_t* value;
ExtraInfoW() :key(nullptr), value(nullptr) {}
} EXTRAINFOW, *PEXTRAINFOW;
bool BONREE_CALL SetExtraInfoA(PEXTRAINFOA extra_info, int size);
bool BONREE_CALL SetExtraInfoW(PEXTRAINFOW extra_info, int size);
- 参数说明
参数 | 描述 | 限制 |
---|---|---|
extra_info | 拓展信息键值对 | key长度限制为256,value长度限制为512 |
extra_info | 数组长度 | 大于0,小于等于64,否则接口调用失败。 |
返回值
设置成功返回 true, 失败返回 false。示例
```c++
bonree_sdk::ExtraInfoW extra_info[3];
extra_info[0].key = L"info1";
extra_info[0].value = L"info1";
extra_info[1].key = L"info2";
extra_info[1].value = L"info2";
extra_info[2].key = L"info3";
extra_info[2].value = L"info3";
bool ret = bonree_sdk::SetExtraInfo(extra_info, 3);
if (!ret) {
// 设置用户拓展信息失败。
}
#### 设置自定义事件数据
调用接口并传入相应参数,可完成自定义事件数据统计功能。
```c++
bool BONREE_CALL SetCustomEventA(const char* id, const char* name, const char* param = nullptr);
bool BONREE_CALL SetCustomEventW(const wchar_t* id, const wchar_t* name, const wchar_t* param = nullptr);
- 参数说明
参数 | 描述 | 限制 |
---|---|---|
id | 自定义事件ID | 必传,长度限制为256 |
name | 自定义事件名称 | 长度限制为256 |
param | 自定义事件参数 | 长度限制为512 |
返回值
设置成功返回 true, 失败返回 false。示例
bool ret = bonree_sdk::SetCustomEvent(L"custom_event_id", L"custom_name", L"custom_param"); if (!ret) { // 设置自定义事件数据失败 }
设置自定义日志数据
调用接口并传入相应参数,可完成自定义日志数据统计功能。
bool BONREE_CALL SetCustomLogA(const char* info, const char* param = nullptr);
bool BONREE_CALL SetCustomLogW(const wchar_t* info, const wchar_t* param = nullptr);
- 参数说明
参数 | 描述 | 限制 |
---|---|---|
info | 自定义日志信息 | 必传,长度限制为512 |
param | 自定义日志参数 | 长度限制为10000 |
返回值
设置成功返回 true, 失败返回 false。示例
bool ret = bonree_sdk::SetCustomLog(L"custom_log_info", L"custom_log_param"); if (!ret) { // 设置自定义日志数据失败 }
设置自定义指标事件数据
调用接口并传入相应参数,可完成自定义指标数据统计功能。
bool BONREE_CALL SetCustomMetricA(const char* name, int value, const char* param = nullptr);
bool BONREE_CALL SetCustomMetricW(const wchar_t* name, int value, const wchar_t* param = nullptr);
- 参数说明
参数 | 描述 | 限制 |
---|---|---|
name | 自定义指标名称 | 必传,长度限制为256 |
value | 自定义指标值 | |
param | 自定义指标参数 | 长度限制为512 |
返回值
设置成功返回 true, 失败返回 false。示例
bool ret = bonree_sdk::SetCustomMetric(L"custom_metric_name", 100, L"custom_metric_param"); if (!ret) { // 设置自定义指标数据失败 }
设置自定义崩溃事件
调用接口并传入相应参数,可完成自定义奔溃数据统计功能。
bool BONREE_CALL SetCustomExceptionA(const char* exception_type,const char* causeby,const char* error_dump = nullptr);
bool BONREE_CALL SetCustomExceptionW(const wchar_t* exception_type, const wchar_t* causeby, const wchar_t* error_dump = nullptr);
- 参数说明
参数 | 描述 | 限制 |
---|---|---|
exception_type | 异常类型 | 必传,长度限制为256 |
causeby | 导致崩溃代码 | 长度限制为512 |
error_dump | 自定义异常参数 | 长度限制为10000 |
返回值
设置成功返回 true, 失败返回 false。示例
bool ret = bonree_sdk::SetCustomException(L"custom_exception_name", L"main()", L"custom_exception_param"); if (!ret) { // 设置自定义奔溃数据失败 }
设置自定义视图事件
调用接口并传入相应参数,可完成自定义视图数据统计功能。
自定义事件视图开始
bool BONREE_CALL SetCustomPageStartA(const char* view_name,const char* param = nullptr);
bool BONREE_CALL SetCustomPageStartW(const wchar_t* view_name, const wchar_t* param = nullptr);
- 参数说明
参数 | 描述 | 限制 |
---|---|---|
view_name | 自定义视图名称 | 必传,长度限制为256 |
param | 自定义视图参数 | 长度限制为256 |
返回值
设置成功返回 true, 失败返回 false。示例
bool ret = bonree_sdk::SetCustomPageStart(L"custom_page_name", L""); if (!ret) { // 设置自定义视图数据失败 }
自定义事件视图结束
bool BONREE_CALL SetCustomPageEndA(const char* view_name, const char* param = nullptr);
bool BONREE_CALL SetCustomPageEndW(const wchar_t* view_name, const wchar_t* param = nullptr);
- 参数说明
参数 | 描述 | 限制 |
---|---|---|
view_name | 自定义视图名称 | 必传,长度限制为256 |
param | 自定义视图参数 | 长度限制为256 |
注:view_name需与之前设置的自定义开始视图名称对应。
返回值
设置成功返回 true, 失败返回 false。示例
bool ret = bonree_sdk::SetCustomPageEnd(L"custom_page_name", L""); if (!ret) { // 设置自定义视图数据失败 }
设置自定方法事件
调用接口并传入相应参数,可完成自定义方法数据统计功能。
设置自定义方法开始
bool BONREE_CALL SetCustomMethodStartA(const char* method_name, const char* param = nullptr);
bool BONREE_CALL SetCustomMethodStartW(const wchar_t* method_name, const wchar_t* param = nullptr);
- 参数说明
参数 | 描述 |
---|---|
method_name | 自定义方法名称 |
param | 自定义方法参数 |
返回值
设置成功返回 true, 失败返回 false。示例
bool ret = bonree_sdk::SetCustomMethodStart(L"custom_method_name", L""); if (!ret) { // 设置自定义方法数据失败 }
设置自定义方法结束
bool BONREE_CALL SetCustomMethodEndA(const char* method_name, const char* param = nullptr);
bool BONREE_CALL SetCustomMethodEndW(const wchar_t* method_name, const wchar_t* param = nullptr);
- 参数说明
参数 | 描述 |
---|---|
method_name | 自定义方法名称 |
param | 自定义方法参数 |
注:method_name需与之前设置的自定义开始方法名称对应。
返回值
设置成功返回 true, 失败返回 false。示例
bool ret = bonree_sdk::SetCustomMethodEnd(L"custom_method_name", L""); if (!ret) { // 设置自定义方法数据失败 }
设置onlinetrack相关
typedef void (__stdcall *OnlineTrackAuthorizeFunctionPtr)();
BONREE_SDK_API bool BONREE_CALL SetOnlineTrackingAuthorizationCallback(OnlineTrackAuthorizeFunctionPtr call_back_ptr);
BONREE_SDK_API bool BONREE_CALL AuthorizeOnlineTracking(bool authorize);
用户在使用onlinetrack功能之前需要设置一个OnlineTrackAuthorizeFunctionPtr类型的回调方法,在回调方法中进行相关的用户授权操作,例如弹窗提示,在得到用户的确认授权后,调用AuthorizeOnlineTracking方法将授权结果返回给sdk,如果授权失败,sdk将不允许在线调试功能。
- SetOnlineTrackingAuthorizationCallback参数说明
参数 | 描述 |
---|---|
OnlineTrackAuthorizeFunctionPtr | 授权回调方法 |
- AuthorizeOnlineTracking参数说明
参数 | 描述 |
---|---|
authorize | 授权结果 |
- 示例
//用户侧
void __stdcall AuthorizeUI(){
HWND hwnd = theApp.GetMainWnd()->GetSafeHwnd();
::PostMessage(hwnd, WM_QUERY_AUTHORITY, 0, 0);
}
BOOL CDemoDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: 在此添加专用代码和/或调用基类
if (pMsg->message == WM_QUERY_AUTHORITY) {
int ret = MessageBox(L"是否开启调试模式?", L"询问", MB_YESNO | MB_ICONQUESTION);
if (ret == IDYES) {
bonree_sdk::AuthorizeOnlineTracking(1);
}
else {
bonree_sdk::AuthorizeOnlineTracking(0);
}
}
return CDialogEx::PreTranslateMessage(pMsg);
}
//sdk侧
bool ret = bonree_sdk::SetOnlineTrackingAuthorizationCallback(AuthorizeUI);
四、 ini配置文件的参数
[SERVER_ADDR] -- 服务相关配置项
config_addr--config服务地址
1.设置config服务地址,可以在ini配置文件中设置config_addr,读取ini文件中的config_addr,设置config服务地址; 2.设置config服务地址,也可以通过SetConfigAddress()函数设置config服务地址; 3.如果在ini配置文件中设置了config_addr,探针启动先读取ini文件中的config_addr,作为config服务地址;如果客户通过函数设置config服务地址的函数再次设置config服务地址,使用新设置的作为config服务地址。
app_id--应用id
1.设置app_id,可以在ini配置文件中设置app_id,读取ini文件中的app_id,设置app_id; 2.设置app_id,也可以通过StartWithAppID()函数设置app_id; 3.如果在ini配置文件中设置了app_id,探针启动先读取ini文件中的app_id;如果客户通过函数设置app_id的函数再次设置app_id,使用新设置的作为app_id。
[LOG_CONFIG] -- 日志相关配置项
log_level--日志等级
1.日志等级分为:0-trace 1-debug 2-info 3-error 2.默认使用:0-trace 3.trace:所有日志都打印;debug:打印的日志包含debug、info、error;info:打印的日志包含debug、info;error:只打印error日志
file_path--winsdk日志路径
1.如果配置文件中日志路径为空,默认不存日志 2.如果配置文件中有文件名,但是没有文件路径,将文件生成到temp目录下 3.如果配置文件中有文件路径,将日志生成到对应的目录下
- 示例
[SERVER_ADDR]
config_addr=https://sdkupload.bonree.com/config
app_id=a9438cf5-71d2-4e02-8955-9eb3e9cb3eae
[LOG_CONFIG]
#log level:0-trace 1-debug 2-info 3-error
log_level=0
#file_path:path to write log,not contain filename,for ex: d:\projects\data
file_path=C:\1\projects\1.log