h5 神策埋点_神策Android全埋点方案分析

神策Android全埋点方案

原理简单分析: Activity生命周期通过监听Application.ActivityLifecycleCallbacks,fragment的生命周期 及一些点击事件则编译时通过ASM对相应方法进行hook

神策Android SDK分析

Gradle 插件分析

image-20180916112522297.png

目录

sa-gradle.png

gradle plugin uml

SensorsAnalyticPlugin 插件入口

SensorsAnalyticsExtension 配置文件(debug 是否输出日日志,disableJar是否修改jar包,exclude不修改的包)

SensorsAnalyticsTransform 遍历jar 遍历目录满足条件调用SensorsAnalyticsClassVisitor

SensorsAnalyticsClassVisitor 扫描到SensorsAnalyticsHookConfig 中配置的方法时字节码修改调用sdk中com/sensorsdata/analytics/android/sdk/SensorsDataAutoTrackHelper的方法

SDK 分析

org.aspectj:aspectjrt:1.8.10 实际上并没用到 其实用的是上面的ASM 所以可以去除这个依赖以及 com.sensorsdata.analytics.android.sdk.aop这个包

AnalyticsMessages 类用于上报。逻辑简单看了下 开了个Work线程。直接上报 或者间隔一端时间去上报。

TrackTaskManager 任务列表(每次track都是个任务)对应TrackTaskManagerThread

TrackTaskManagerThread 这是个Runable 里面开了个单线程线程池每个3秒去 任务列表拉任务并执行

关键的类和方法

SensorsDataAutoTrackHelper 用于v4/Fragment生命周期和各种视图事件的track 和插件 SensorsAnalyticsHookConfig中相对应

SensorsDataActivityLifecycleCallbacks Activity生命周期track

SensorsDataAPI如下方法(主要附加了一些当前环境数据的track 每次track都需要走到这里这个可能比较耗时)

private void trackEvent(final EventType eventType, final String eventName, final JSONObject properties, final String

originalDistinctId)

总结

涉及的业务的还是需要额外写入代码 比如点击按钮也只能获取到当前页面和按钮上的文字

对于B端比较关注一些业务数据的不合适 还需要寻找新的解决方法

每次页面操作和点击事件都会去额外执行的方法需要 测下耗时 还有打点前后对app性能的影响

sdk采集数据可以参考上面的关键方法和类。 打包插件可以参考fork一份 方便自己配置需要Hook哪些方法

额外知识

handle是否提交了相应任务可以用这个方法判断

/**

* Check if there are any pending posts of messages with code 'what' in

* the message queue.

*/

public final boolean hasMessages(int what) {

return mQueue.hasMessages(this, what, null);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很抱歉,根据您提供的引用内容,我无法直接回答您的问题。但是,我可以为您提供有关Angular项目神策埋点的一些信息。 神策分析是一种数据分析工具,可以帮助您跟踪和分析用户在应用程序中的行为。在Angular项目中,您可以使用神策分析实现埋点,以便收集和分析用户的行为数据。 以下是一些实现Angular项目神策埋点的步骤: 1.安装神策分析SDK 您可以使用npm包管理器安装神策分析SDK。在终端中运行以下命令: ```shell npm install sa-sdk-javascript --save ``` 2.在Angular项目中引入SDK 在您的Angular项目中,您需要在index.html文件中引入神策分析SDK。您可以将以下代码添加到index.html文件的<head>标签中: ```html <script src="//static.sensorsdata.cn/sdk/1.15.16/sensorsdata.min.js"></script> ``` 3.初始化神策分析SDK 在您的Angular项目中,您需要初始化神策分析SDK。您可以在app.component.ts文件中添加以下代码: ```typescript import { Component } from '@angular/core'; import { Router, NavigationEnd } from '@angular/router'; declare var sensors: any; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) export class AppComponent { constructor(private router: Router) { this.router.events.subscribe(event => { if (event instanceof NavigationEnd) { sensors.track('PageView', { $url: event.urlAfterRedirects }); } }); sensors.init({ server_url: 'https://<your_server_url>.sensorsdata.cn/sa?project=<your_project>&token=<your_token>', heatmap: { clickmap: true, scroll_notice_map: true } }); } } ``` 在上面的代码中,您需要将<your_server_url>、<your_project>和<your_token>替换为您的神策分析服务器URL、项目名称和访问令牌。 4.实现埋点 在您的Angular项目中,您可以使用sensors.track()方法来实现埋点。例如,您可以在用户单击按钮时跟踪事件: ```typescript import { Component } from '@angular/core'; declare var sensors: any; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) export class AppComponent { onClick() { sensors.track('ButtonClicked', { button_name: 'my_button' }); } } ``` 在上面的代码中,当用户单击名为“my_button”的按钮时,将跟踪名为“ButtonClicked”的事件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值