跳转到主要内容
PRODUCT DOCUMENTS

快速找到所需文档,高效完成接入与排障

浏览产品文档与友盟 Skill,展开目录并阅读正文。

基础功能

系统API要求

鸿蒙NEXT API12 以上,仅支持普通应用stage模式,暂不支持元服务

快速开始

安装sdk

  1. 在项目的跟目录下执行如下命令

ohpm install @umeng/common --registry=https://ohpm.openharmony.cn/ohpm
ohpm install @umeng/analytics --registry=https://ohpm.openharmony.cn/ohpm

集成

  1. 在项目的AppScope/resources/rawfile目录下新增一个配置文件umconfig.json

image

{
  "appKey": "你的apppkey",
  "channel": "你的渠道"
}
  1. 在应用模块目录下,添加abilityStage工程文件,例如entry/src/main/ets/abilityStage/MyAbilityStage.ets,具体位置如截图截图1

参考代码如下:

import AbilityStage from '@ohos.app.ability.AbilityStage';
import { preInit, InternalPlugin, setLogEnabled, init, onEventObject } from '@umeng/analytics';

setLogEnabled(true); // 开发时,打开调试日志,可观察sdk是否集成成功
export default class MyAbilityStage extends AbilityStage {
  onCreate() {
    preInit({
      context: this.context.getApplicationContext(),
      plugins: [new InternalPlugin()]
    });
    init(); // 在用户同意隐私政策后再调用此方法
    onEventObject("eventA", {
      "key": "value"
    }); // 埋个点
  }
}
  1. 在模块的的module.json5文件中添加 srcEntry ,指向abilityStage文件的地址截图2

  2. 在模块的module.json5文件中添加权限声明

"requestPermissions": [
  {
    "name": "ohos.permission.APP_TRACKING_CONSENT",
    "reason": "$string:reason", // 如果IDE提示错误,需自行在entry/src/main/resources/base/element/string.json,中添加对应信息
    "usedScene": {}
  },
  {
    "name": "ohos.permission.INTERNET"
  },
  {
    "name": "ohos.permission.GET_NETWORK_INFO"
  },
],

注意上述代码中,"$string:reason"为用户自定义内容,如果IDE提示"$string:reason",错误,需自行在entry/src/main/resources/base/element/string.json,中添加对应信息,一个简单的示范如下

{
  "string": [
    {
      "name": "reason",
      "value": "采集oaid信息用于统计分析"
    },

  ]
}

image

5. 注意!!!!在适当位置(preInit方法调用之后),经用户授权同意隐私政策后调用init方法,才会开始日志的采集和传输。

方法说明

  • preInit(context:common.ApplicationContext,plugins:[internalPlugin])

    • 预初始化,需要在abilityStage的onCreate方法内调用

  • init()

    • 用户同意隐私政策后调用,方法调用后才会进行采集和日志传输,需要开发者自行记录用户是否同意了隐私政策,并在判断用户同意隐私政策时才可调用init方法

  • onEventObject(eventID: string, params?: Record<string, string | number>)

    • 自定义事件,可在用户同意init之前调用,最多缓存1000事件

    • eventID,事件id,字符串128位以内的非空字符串

    • params, 事件属性,可选参数,属性key,128位以内的非空字符串,value为256位以内的数值或字符串

    • 特别的,事件id和属性key不能为一下保留关键字[“id”, “ts”, “du”, “ds”, “duration”, “pn”, “token”, “device_name”, “device_model”, “device_brand”, “country”, “city”, “channel”, “province”, “appkey”, “app_version”, “access”, “launch”, “pre_app_version”, “terminate”, “no_first_pay”, “is_newpayer”, “first_pay_at”, “first_pay_level”, “first_pay_source”, “first_pay_user_level”, “first_pay_version”, “type”];

  • onProfileSignIn(provider:string,puid:string)

    • 账号登入,用户同意隐私政策后调用

    • provider 开发者自定义的账号类型,非空字符串,且长度不超过32

    • puid 开发者自定义的账号,非空字符串,且长度不超过64

  • onProfileSignOff()

    • 账号登出,用户同意隐私政策后调用

  • setLogEnabled(enable:boolean)

    • 日志开关,默认关闭

自定义事件

  • 在UI线程中埋点,以下代码演示了如何在某个页面的某个按钮的点击事件埋点

import { onEventObject } from '@umeng/analytics';
Button('自定义事件X1').onClick(() => {
      onEventObject("eventid", {
        param: "value"
      });
});
  • 在worker线程中, 以下代码演示了如何在worker线程中埋点

import worker, { ThreadWorkerGlobalScope, MessageEvents, ErrorEvent } from '@ohos.worker';
import { onEventObject } from '@umeng/analytics';



const workerPort: ThreadWorkerGlobalScope = worker.workerPort;

/**
 * Defines the event handler to be called when the worker thread receives a message sent by the host thread.
 * The event handler is executed in the worker thread.
 *
 * @param e message data
 */
workerPort.onmessage = function (e: MessageEvents) {
 onEventObject("workerevent4", {
 a: 1
 })
}

/**
 * Defines the event handler to be called when the worker receives a message that cannot be deserialized.
 * The event handler is executed in the worker thread.
 *
 * @param e message data
 */
workerPort.onmessageerror = function (e: MessageEvents) {
}

/**
 * Defines the event handler to be called when an exception occurs during worker execution.
 * The event handler is executed in the worker thread.
 *
 * @param e error message
 */
workerPort.onerror = function (e: ErrorEvent) {
}
  • 暂未提供c++中直接调用的方法,需要参考鸿蒙官网c++和arkts互通的知识,通过NAPI的方式来调onEventObject方法实现埋点

合规设置示范(默认采集,可通过设置关闭采集)

- disableScreen 禁用屏幕分辨率信息
import AbilityStage from '@ohos.app.ability.AbilityStage';
import { preInit, InternalPlugin, setLogEnabled, init, onEventObject } from '@umeng/analytics';

setLogEnabled(true); // 开发时,打开调试日志,可观察sdk是否集成成功
export default class MyAbilityStage extends AbilityStage {
  onCreate() {
    preInit({
      context: this.context.getApplicationContext(),
      plugins: [new InternalPlugin()],
      disableScreen: true,// 禁用屏幕分辨率信息
    });
    init(); // 在用户同意隐私政策后再调用此方法
    onEventObject("eventA", {
      "key": "value"
    }); // 埋个点
  }
}