# HarmonyOS SDK 鸿蒙原生应用易观方舟SDK ## 获取SDK HAR包 ### 本地包安装 下载har包到本地项目,通过如下两种方式安装 **方式一:通过命令行安装** ```ssh ohpm install ./asd_hm_sdk.har ``` **方式二:在工程的oh-package.json5中设置三方包依赖,配置示例如下:** ```json "dependencies": { "package": "file:./asd_hm_sdk.har" } ``` 依赖设置完成后,需要执行**ohpm install**命令安装依赖包,依赖包会存储在工程的oh\_modules目录下。 ```ssh ohpm install ``` ### ohpm安装 ```ssh ohpm install asd_hm_sdk ``` ## SDK初始化 创建一个AbilityStage类,在AbilityStage类里初始化,详情参考:[AbilityStage组件容器](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V2/application-package-structure-stage-0000001478061425-V2) ```js import AbilityStage from "@ohos.app.ability.AbilityStage" import AnalysysAgent from 'asd_hm_sdk' export default class MyAbilityStage extends AbilityStage { onCreate() { //初始化sdk AnalysysAgent.init(this.context, { appkey: "/*设置为实际APPKEY*/", uploadURL: '/*设置为方舟项目上报的地址*/', debugMode: 2, }) } } ``` <br> ***** <br> ## 初始化参数 | 参数名称 | 是否必填 | 默认值 | 类型 | 说明 | | --- | --- | --- | --- | --- | | appkey | 是 | - | string | 项目数据的唯一标识,在产品当中\_ 数据接入管理 \_模块获取的 AppKey | | uploadURL | 是 | - | string | 设置上传数据接口,在 \_数据接入管理-集成SDK接入数据 \_模块获取 | | debugMode | 否 | 0 | 0、 1、2 | 设置调试模式,0 - 关闭调试模式;1 - 开启调试模式,数据不入库; 2 - 开启调试模式,数据入库 | | autoStartUp | 否 | true | boolean | 是否自动上报启动事件 | | auto | 否 | true | boolean | 是否自动上报pageview事件 **(鸿蒙目前本身不支持全局路由拦截,需使用sdk提供的router方法替代)** | | autoProfile | 否 | true | boolean | 设置是否追踪新用户的首次属性 | | allowTimeCheck | 否 | false | boolean | 是否开启本地时间与服务器时间校准 | | maxDiffTimeInterval | 否 | 30 | number | 设置本地时间与服务器时间校准差异值(秒) | | autoPageViewDuration | 否 | false | boolean | 设置是否自动采集页面关闭事件 | | sendDataTimeout | 否 | 1000 | number | 设置上报数据超时时间(毫秒) | <br> ## 自动上报页面浏览事件 由于鸿蒙目前本身不支持全局路由拦截,需使用sdk提供的router方法替代,该方法继承于@ohos.router的官方router方法,官方router支持的,sdk的router都支持,使用方法一致 ```ts import { router } from 'asd_hm_sdk' router.pushUrl({ url: 'pages/new' }) ``` <br> ## 手动上报页面浏览事件 ```ts import { pageView } from 'asd_hm_sdk' @Entry @Component struct Index { @State message: string = 'new' @State isReady: boolean = false controller: web_webview.WebviewController = new web_webview.WebviewController() onPageShow(){ // 自定义属性 const attrs = { $title: '我是标题', pageName: 'home', } pageView(attrs) } build() { Column() { Flex() { } } } } ``` <br> ## 设置通用属性 通用属性是全局的自定义属性,设置后,每一次事件上报属性都会包含通用属性 ```ts import {registerSuperProperties, clearSuperProperties, unRegisterSuperProperty } from 'asd_hm_sdk' //注册通用属性 registerSuperProperties({ age: 12 }) // 删除单个通用属性 unRegisterSuperProperty('age') // 清空全部通用属性 clearSuperProperties() ``` <br> ## 自定义事件上报 自定义事件接口,可以设置自定义属性。接口如下: ```ts import { track } from 'asd_hm_sdk' interface EventInfo { [key:string]: string | number | boolean | string[] } track(eventName:string, eventInfo?: EventInfo) ``` * eventName:事件ID,以字母或 `$` 开头,包含字母、数字、下划线和 `$`,字母不区分大小写,`$` 开头为预置事件/属性,不支持乱码和中文,取值长度 1 - 99字符 * eventInfo:自定义属性,用于对事件描述。eventInfo 最多包含 100条,且 key 以字母或 `$` 开头,包含字母、数字、下划线和 `$`,字母不区分大小写,`$` 开头为预置事件/属性,不支持乱码和中文,取值长度 1 - 99字符,value 支持类型:String/Number/boolean/内部元素为String的Array,若为字符串,取值长度 1 - 255字符 示例: ```js import { track } from 'asd_hm_sdk' // 用户购买手机 var eventInfo = { "type":"Phone", "name":"Apple iPhone8", "money":4000, "count":1 } track("buy", eventInfo); ``` <br> ## 账号关联 用户关联的主要作用是打通用户登录前后的行为,做过用户关联的用户在登录前后的行为在方舟系统里面会被认为是一个用户。 **建议在用户注册成功或者登录成功后客户端需要调用 alias 接口。** ```javascript import { alias } from 'asd_hm_sdk' alias(aliasId) ``` * aliasId:需要关联的用户ID。 取值长度 1 - 255字符,支持类型:String 示例: ```javascript import { alias } from 'asd_hm_sdk' // 登陆账号时调用,只设置当前登陆账号即可和之前行为打通 alias("sanbo") ``` <br> ## 记录事件时长 如果您需要记录某个事件的持续时长,可以调用**timeEvent**来开始计时。配置您想要计时的事件名称,当您上传该事件时,将会自动在您的事件属性中加入**$duration**这一属性来表示记录的时长,单位为毫秒。需要注意的是,同一个事件名只能有一个在计时的任务。 ```ts import { timeEvent, track } from 'asd_hm_sdk' // 开始计时 timeEvent("buy"); // 触发buy事件后,这一事件会自动带上表示事件时长的$duration属性 track("buy", { name: "Apple iPhone8" }); ``` <br> ## 设置用户属性 给用户设置单个或多个属性,如果之前不存在,则新建,否则覆盖。接口如下: ```js import { profileSet } from 'asd_hm_sdk' //设置单个用户属性 profileSet(propertyName, propertyValue); //设置多个用户属性 profileSet(property); ``` * propertyName :属性名称,约束见属性名称 * propertyValue :属性值,约束见属性值 * property : 属性列表,约束见属性名称,属性值 示例: ```javascript import { profileSet } from 'asd_hm_sdk' //设置用户的邮箱地址为yonghu@163.com profileSet("Email", "yonghu@163.com"); ...... // 设置用户的邮箱和微信 var property = { "Email" : "yonghu@163.com", "WeChatID" : "weixinhao" } profileSet(property); ``` <br> ## 验证数据 开启Debug模式后,用户可以通过开发者工具中的控制台中查看tag为`[analysysdata]`的Log日志 ![](https://img.kancloud.cn/73/40/734034e2ffae673e986675c9a13eb84a_2832x546.png)