目录

NodeJS SDK

华为分析服务目前已提供导入自定义用户属性和上报用户行为的API接口,为减小API接口的工作量,现提供NodeJS版本的SDK给开发者集成,用以快速的使用API接口能力。

开发环境

Node.js 10及以上

操作步骤

  1. 下载NodeJS SDK安装包到本地,下载链接请参见NodeJS SDK下载。
  2. 本地解压以后执行如下命令安装SDK。
    npm install hw-hmscore-analytics-node-6.4.0-303.tgz
  3. 集成SDK。

    SDK目前提供了CommonJS和ESM的两种方式集成。

    “CommonJS”
    const HaNodeSDK = require('@hw-hmscore/analytics-node');
    “ESM”
    import { HuaweiApp, CachePolicy, HuaweiAnalyticsClient } from '@hw-hmscore/analytics-node';
  4. 配置日志。

    如果您需要捕获异常场景信息,可调用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);
  5. 获取应用信息。
    1. 登录AppGallery Connect 网站 ,选择“我的项目”。
    2. 在项目列表中找到您的项目,在项目列表中点击需要集成SDK的应用。
    3. 在“项目设置”页面中,获取App相关信息。

  6. 创建应用列表,创建“HuaweiApp”对象实例,添加App应用实例信息,如果您的服务端接收多个App的请求,可以初始化多个App应用实例信息。
    “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); // 将应用添加到应用列表中

    其中:

    • 当应用类型为iOS时,进入“华为分析 > 管理 > 应用管理”菜单,获取“应用ID”和“应用包名”。 “setAppID”配置为“应用ID”,“setPackageName”配置为“应用包名”。
    • 当应用类型为WEB时,“setPackageName”配置为“APP ID”。
    • huaweiApp中必须包含实例化参数。
      • Android:需要添加的App的应用类型,如Android、iOS、HarmonyOS、WEB、Quick App。
      • https://test.test.cn:表示App的数据处理位置的存储地址。

        数据处理位置

        存储地址

        中国

        1. 选择需要配置分析数据的应用。
        2. 点击“华为分析 > 管理 > 分析设置 > API管理”,在“API管理”处获取存储地址。

        新加坡

        俄罗斯

        德国

      • https://oauth-login.cloud.huawei.com/oauth2/v3/authorize:当前NodeJS SDK的鉴权请求地址,详情请参见基于OAuth 2.0开放鉴权。
    • setAppID:配置为“项目设置”页面中“应用”下的“APP ID”。
    • setClientID:配置为“项目设置”页面中“应用”下的“Client ID”。
    • setProductID:配置为“项目设置”页面中“项目”下的“项目ID”。
    • setPackageName:配置为“项目设置”页面中“应用”下的“包名”。
    • setClientSecret:配置为“项目设置”页面中“应用”下的“Client Secret”。
  7. 初始化上报策略配置。
    • 使用默认配置。
      “CommonJS”
      HaNodeSDK.HuaweiAnalyticsClient.init(apps); 
      “ESM”
      HuaweiAnalyticsClient.init(apps);
    • 使用自定义配置。
      “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条数据,类型为整数。

  8. 发送数据,数据接口参数请参考导入自定义用户属性和上报用户行为。
    • 上报用户属性
      “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);
  9. 刷新数据,将所有数据立即发送到服务器。

    当服务升级、重启等导致进程关闭的场景时,可以调用flush方法,上报所有数据。

    “CommonJS”
    // 发送所有收集的信息
    HaNodeSDK.HuaweiAnalyticsClient.flush();
    “ESM”
    // 发送所有收集的信息
    HuaweiAnalyticsClient.flush();