华为分析服务目前已提供导入自定义用户属性和上报用户行为的API接口,为减小API接口的工作量,现提供NodeJS版本的SDK给开发者集成,用以快速的使用API接口能力。
npm install hw-hmscore-analytics-node-6.4.0-303.tgz
SDK目前提供了CommonJS和ESM的两种方式集成。
“CommonJS”
const HaNodeSDK = require('@hw-hmscore/analytics-node'); “ESM”
import { HuaweiApp, CachePolicy, HuaweiAnalyticsClient } from '@hw-hmscore/analytics-node'; 如果您需要捕获异常场景信息,可调用NodeJS SDK的initLogger接口,生成相关日志记录。
“CommonJS”
// 集成winston
const winston = require('winston');
const logger = winston.createLogger({
transports: [
new winston.transports.Console(),
new winston.transports.File({filename: 'combined.log'})
]
});
HaNodeSDK.HuaweiAnalyticsClient.initLogger(logger); “ESM”
// 集成winston
const winston = require('winston');
const logger = winston.createLogger({
transports: [
new winston.transports.Console(),
new winston.transports.File({filename: 'combined.log'})
]
});
HuaweiAnalyticsClient.initLogger(logger); 
“CommonJS” let apps = []; // 创建应用列表 let huaweiApp = new HaNodeSDK.HuaweiApp(Android, https://test.test.cn, https://oauth-login.cloud.huawei.com/oauth2/v3/authorize); // 创建HuaweiApp对象实例 // 添加App应用实例信息 huaweiApp.setAppID(123); huaweiApp.setClientID(123); huaweiApp.setProductID(123); huaweiApp.setPackageName(123.123); huaweiApp.setClientSecret(123); apps.push(huaweiApp); // 将应用添加到应用列表中
“ESM” let apps = []; // 创建应用列表 let huaweiApp = new HuaweiApp(Android, https://test.test.cn, https://oauth-login.cloud.huawei.com/oauth2/v3/authorize); // 创建HuaweiApp对象实例 // 添加App应用实例信息 huaweiApp.setAppID(123); huaweiApp.setClientID(123); huaweiApp.setProductID(123); huaweiApp.setPackageName(123.123); huaweiApp.setClientSecret(123); apps.push(huaweiApp); // 将应用添加到应用列表中
其中:
数据处理位置 | 存储地址 |
|---|---|
中国 |
|
新加坡 | |
俄罗斯 | |
德国 |
“CommonJS” let config = new HaNodeSDK.CachePolicy(); config.setCacheTime(10); // 设置缓存时间,单位:s config.setMaxRetry(2); // 设置上报重试次数 config.setUserSendSize(100); // 设置单次导入自定义用户属性的发送数量 config.setEventSendSize(100); // 设置单次上报用户行为的发送数量 config.setMaxCacheSize(10000); // 设置最大缓存数量 HaNodeSDK.HuaweiAnalyticsClient.init(apps, config);
“ESM” let config = new CachePolicy(); config.setCacheTime(10); // 设置缓存时间,单位:s config.setMaxRetry(2); // 设置上报重试次数 config.setUserSendSize(100); // 设置单次导入自定义用户属性的发送数量 config.setEventSendSize(100); // 设置单次上报用户行为的发送数量 config.setMaxCacheSize(10000); // 设置最大缓存数量 HuaweiAnalyticsClient.init(apps, config);
参数 | 参数说明 |
|---|---|
setCacheTime | 缓存上报的间隔时间,单位为s。 设置区间为1-1800s,默认为10s上报一次数据,类型为整数。 |
setMaxRetry | 上报重试次数,当服务端错误导致上报失败时,会进行重试处理;当达到配置的最大上报次数还是失败时,则会记录日志处理。 设置区间为 0-5次,默认重试2次,类型为整数。 |
setUserSendSize | 单次“导入自定义用户属性”的发送数量。 设置区间为1-100,默认100,表示单次上报的自定义用户属性为100条,类型为整数。 |
setEventSendSize | 单次“上报用户行为”的发送数量。 设置区间为1-100,默认100,表示单次上报的用户行为数据为100条,类型为整数。 |
setMaxCacheSize | 最大缓存数量,设置缓存中最大的数据量;当数量达到限制,会对最老的数据进行淘汰并记录日志。 设置区间为1-1000000,默认存放10000条数据,类型为整数。 |
“CommonJS”
let userData = {
"id": "123",
"properties": [
{
"id": "favorite_sport",
"value": "football"
},
{
"id": "vip_users",
"value": "true"
}
]
};
HaNodeSDK.HuaweiAnalyticsClient.addUser(`${appId}`, userData); “ESM”
let userData = {
"id": "123",
"properties": [
{
"id": "favorite_sport",
"value": "football"
},
{
"id": "vip_users",
"value": "true"
}
]
};
HuaweiAnalyticsClient.addUser(`${appId}`, userData); “CommonJS”
let eventData = {
"aaid":"76F752E9-D793-4321-975D-43DA9189B071",
"userid":"",
"androidid":"",
"pushtoken":"",
"eventtime":1587867045291,
"event_session_name":"e508bb99af7f41f5b1573690a0987b88_1587866781700",
"eventid":"$EnterScreen",
"first_session_event":"true",
"properties":{
"$PrevActivityName":"",
"$PrevActivityId":"",
"$CurActivityName":"https://localhost:30401/",
"$CurActivityId":"https://localhost:30401/"
}
};
HaNodeSDK.HuaweiAnalyticsClient.addEvent(`${appId}`, eventData); “ESM”
let eventData = {
"aaid":"76F752E9-D793-4321-975D-43DA9189B071",
"userid":"",
"androidid":"",
"pushtoken":"",
"eventtime":1587867045291,
"event_session_name":"e508bb99af7f41f5b1573690a0987b88_1587866781700",
"eventid":"$EnterScreen",
"first_session_event":"true",
"properties":{
"$PrevActivityName":"",
"$PrevActivityId":"",
"$CurActivityName":"https://localhost:30401/",
"$CurActivityId":"https://localhost:30401/"
}
};
HuaweiAnalyticsClient.addEvent(`${appId}`, eventData);
当服务升级、重启等导致进程关闭的场景时,可以调用flush方法,上报所有数据。
“CommonJS”
// 发送所有收集的信息
HaNodeSDK.HuaweiAnalyticsClient.flush(); “ESM”
// 发送所有收集的信息
HuaweiAnalyticsClient.flush();