答:且对应环境需要集成特定 SDK,否则会有问题。
环境 | 是否支持 | 备注 |
---|---|---|
火山云 / 私有化 4.9.2 及之后版本 | 已支持 | 环境已完成适配,platform 以 openHarmony 上报。 |
字节云 | 不支持 | 环境未完成适配,如果想提早集成,SDK 的 platform 会以 Android 上报。 |
私有化 4.9.2 之前版本 | 不支持 |
答:API12(Developer Beta3)以上
答:支持
答:鸿蒙官方推荐的 gzip 工具,目前系统没有现成的 gzip 接口,推荐使用 pako 依赖。SDK 内部有请求加密,加密伴随着 gzip,所以是必要依赖
答:可以,找我要就行,在类比 pako 是需要在线依赖的,如果客户环境无法在线依赖,可以提供离线包。
Error Message: Failed to get a resolved OhmUrl for "pako" imported by "/Users/bytedance/Downloads/package/HarmonyAppLogTest/oh_modules/.ohpm/@volcengine+applog@dtz2fnlu+kogyshzrapysfd0wcm=/oh_modules/@volcengine/applog/src/main/ets/core/network/interceptor/CompressAndEncryptInterceptor.js".
答:pako 没有依赖。
答:已支持子窗口模式的全局悬浮窗
答:以对外文档为主,文档上写的就都支持。
答:1.2.0 以上版本已支持,但是产品定位为付费版内容。
答:鸿蒙 SDK 考虑逐步去掉端上维护 SSID 逻辑,端上后续也没有 SSID,事件的 SSID 上报由数据流补充。
补充:1.3.1 提供通过当前 uuid 请求 ssid 逻辑,请求 SSID
答:默认也是一分钟上报一次,但是没有具体上报条数,SDK 策略为新的按体积查询事件的上报策略(Android / iOS 为按条数查询), 每次上报查询 1M 左右数据进行上报,不再以 200 条为准(可以尽量多的上报)。
答:1.3.0 提供了对应开关。
答:暂不支持多线程 / 多进程,鸿蒙系统比较特殊,采取线程间进程隔离,需额外适配方案。
1 ERROR: ArkTS:ERROR Failed to resolve OhmUrl.
Error Message: Failed to get a resolved OhmUrl for "@volcengine/applog" imported by "/Users/bytedance/DevecostudioProjects/SDK50/oh_modules/.ohpm/@volcengine+applog_devtools@7hba3+yrkmv76lfmmoxyslxamstpksemeh++r+9qtz8=/oh_modules/@volcengine/applog_devtools/src/main/ets/plugin/DevTools.js".
情况一:AppLog 引入名称错误
答:遇到该问题,主要原因是依赖组件时,前面组件名字其实是可以任意写的,但是 applog 和 devtools 之间的协议是特定的,就是写成 @volcengine/applog 的方式引入,请检测 AppLog 依赖时的名称是否写对了,请严格按照文档集成。
// 严格按照该名称引入 AppLog
"@volcengine/applog": "file:../applogx/applogx.har",
"@volcengine/applog_devtools": "file:../applogx/applogx_devtools.har"
情况二:子模块中依赖 AppLog 同时子模块也被其他模块依赖后发现报错
答:由于鸿蒙不支持依赖传递,所以你在子模块中依赖的 SDK,无法被其他模块引用,请在对应模块添加依赖。
实例:子模块依赖 applog,entry 依赖子模块,请也在 entry 模块中添加 applog 完整依赖。
答:是初始化 SDK 的 context 不对。
答:可以去掉 Devtools 再试试 1.1.0-beta2 ~1.1.0-beta3 会有该问题,请后续升级到 1.3.0-xxx 的版本。
答:可能是老客户升级上来导致的,之前文档说明导入是 @ohos/applog,需要把导入名称调整下,参考最新文档。
答:由于适配了新功能,需要将 AppLog 与 devtools 都升级到 1.2.0-xx 版本,仅升级 Devtools 不行。
答:1.2.0 的新版本做了方案调整,无需手动在每个页面额外挂载,改成了 Android 的全局弹窗模式,所以去掉了老的集成方案,基本上新方案不用额外挂载并且打开 App 就能有悬浮窗,如果一进入没有看到切换到后台再进来就可以看到了(监听窗口活跃打开 Devtools 所以一开始进入没看到可能是初始化时机比较晚)。
答:原本最早文档是有两个方案的,另一个方案支持额外注入 Bridge,但是方案实施上可能会依赖客户自己决定。
方式一是华为官方提供的,能把特定一个对象注入进去,但也支持注入多个对象,也就是原本的方案二, registerJavaScriptProxy 确实可以注入多个,我们也提供了 API,但是给客户自己找时机注入了,我们目前并没有合适的时机推荐了。
官方介绍如果想要用第二种注入多个对象的方式就需要触发 refresh 才能生效,之前方案二在老版本验证是可行的,5.0 之后 refresh 后导致再次回调 onPageBegin 就会陷入死循环,
官方自己的 demo 是通过按钮注入 按钮刷新,所以这个时机给客户自己控制了,不要放在 onPageBegin 里调用我们的 registerJsBridge
所以结论是针对客户本身没有 Bridge 的推荐方式一直接注入即可,如果客户有自己的 Bridge 就需要自己找合适的时机做注入了,我们目前没有合适的时机推荐,我们也询问过华为的人,也没有合适的时机,如果实在没有合适的时机,就只能参考官网文档了:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-webview-V5#registerjavascriptproxy
方案二下掉的原因: 原本方案二为啥下掉上面也解释了 注入多个对象的 registerJavaScriptProxy 一定要 refresh 才能生效,refresh 会导致 onPageBegin 重新回调,从而陷入死循环,但是目前也没有其他合适的已有的生命周期合适处理。
比较 low 的方案(通过标识位判断是否加载过):
可能存在的副作用:当然了 如果实在是客户也不好处理 我只能推荐这个比较 low 的方案了 但是可能会由于 refresh 导致 web 的 pageview 多采集一次,之前的版本有遇到过,新版本好像又没有了
答:25.3 月已支持,对应版本 1.3.1。
答:可能是客户获取 window 对象出问题了,lastWindow 不区分主窗口子窗口,建议把 window.getLastWindow 改为 context.windowStage.getMainWindowSync()。
答:只记录了最新的两个包
答:在根目录添加这个配置,并 compatibleSdkVersion 调整至 12。
添加该配置的原因(https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-hvigor-build-har-V5#section179161312181613):
答:25.3 月后已支持
答:添加下 overrides 配置,强制指定为离线版或者特定版本(比如民生的私仓版本)。
答:事件自定义属性为 EventRecord 类型,为自定义类型,不支持其他类型,因为 SDK 需要做类型校验,避免接收到不能解析的类型,所以 SDK 限制了接收类型。
1.1.0 EventRecord = Record<string, number | string | boolean>
1.2.0 EventRecord = Record<string, number | string | boolean | string[]>
答:
查看一下具体内容挂载到哪个 Window 上了,比如系统 window.getLastWindow 不区分子窗口主窗口,如果需要正确将内容挂载到主窗口建议直接获取主窗口。
如果需要挂载到某个特定子窗口,建议通过窗口名称获取。
如果方案一不好解决可以升级到 130-rc1 版本,关闭子窗口模式,使用页面挂载方式。
答:请 sync 一下。
答:新版本编译产物变了,需要提供基于新版本编译的产物。
答:记得 override applog,并且 override 要写到根结点的 oh-package.json5。
更多关于数据接入的FAQ请参见SDK集成&数据上报。