HarmonyOS 鸿蒙Next怎么利用RouterPageInfo.pageId实现页面曝光和事件打点?
HarmonyOS 鸿蒙Next怎么利用RouterPageInfo.pageId实现页面曝光和事件打点? 之前在iOS中使用UIViewController+Log分类与objc_setAssociatedObject的形式。
将pageId和VC绑定,然后方法交换了viewDidAppear、viewDidDisappear。
实现每个VC实例持有一份pageId,然后曝光打点提取pageId。
extension UIViewController {
@objc
private func dxyer_logger_viewDidAppear(_ animated: Bool) {
dxyer_logger_viewDidAppear(animated)
dxy_logEnterPage()
}
@objc
private func dxyer_logger_viewDidDisappear(_ animated: Bool) {
dxyer_logger_viewDidDisappear(animated)
dxy_logExitPage()
}
fileprivate struct AssociatedKeys {
static var pageId = "dxy_pageId"
static let lazySwizzling: Void = {
Runtime.exchange(selector: #selector(UIViewController.viewDidAppear(_:)),
by: #selector(UIViewController.dxyer_logger_viewDidAppear(_:)),
class: UIViewController.self)
Runtime.exchange(selector: #selector(UIViewController.viewDidDisappear(_:)),
by: #selector(UIViewController.dxyer_logger_viewDidDisappear(_:)),
class: UIViewController.self)
}()
}
}
extension UIViewController {
// swiftlint:disable identifier_name
@objc open var dxy_pageId: String? {
get {
return objc_getAssociatedObject(self, &AssociatedKeys.pageId) as? String
}
set {
AssociatedKeys.lazySwizzling
dxy_logExitPage()
objc_setAssociatedObject(self, &AssociatedKeys.pageId, newValue, .OBJC_ASSOCIATION_COPY_NONATOMIC)
}
}
}
现在希望在鸿蒙上也实现一套打点方案。
鸿蒙OS Next API 12提供了RouterPageInfo.pageId,然鹅没有找到相关的使用案例。希望能提供一份,谢谢!!
但是呢~~
还是有一些问题:
这个pageId是否公开?
打点函数中提取pageId是否便捷?
使用this.constructor.name获取类名,进行map<类名,pageId>绑定,这套方案是否可行?
要考虑事件发生在其他页面,使用其他页面的pageId!!
跪求大佬提供思路或对应方案,膜拜感谢!!
更多关于HarmonyOS 鸿蒙Next怎么利用RouterPageInfo.pageId实现页面曝光和事件打点?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
没有提供pageId的案例,这个pageId是否公开?具体指的是什么,打点函数中提取pageId是否便捷?我觉得你可以先尝试之后提供Demo讨论讨论。
更多关于HarmonyOS 鸿蒙Next怎么利用RouterPageInfo.pageId实现页面曝光和事件打点?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙系统中,利用RouterPageInfo.pageId
实现页面曝光和事件打点,可以通过以下步骤进行:
-
获取Page ID: 在页面的生命周期方法(如
onPageStart
或onPageVisible
)中,通过系统提供的API获取当前页面的RouterPageInfo
对象,并从中提取pageId
。这个pageId
是系统为每个页面生成的唯一标识。 -
页面曝光: 当页面变为可见状态时(如在
onPageVisible
回调中),使用获取到的pageId
作为标识,将页面曝光事件上报到后端系统或数据分析平台。这通常涉及到发送一个包含pageId
和时间戳等信息的网络请求。 -
事件打点: 对于页面内的用户交互事件(如点击、滑动等),在事件触发时同样使用
pageId
作为上下文信息,将事件详情上报。这有助于后端系统准确追踪用户在特定页面上的行为路径。 -
数据处理: 后端系统接收到上报的页面曝光和事件数据后,可以进行相应的处理和分析,如计算页面停留时间、用户行为路径分析等。
请注意,具体的实现细节可能因项目需求和后端系统架构而异。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。