一种基于iOS系统的无埋点统计方法及系统技术方案

技术编号:37088318 阅读:10 留言:0更新日期:2023-03-29 20:03
本申请公开了一种基于iOS系统的无埋点统计方法及系统,本方法首先将iOS控制器和视图进行分类,建立不同类别的视图所对应的处理方案;将目标程序中不同类别的视图生成控件树;然后对目标程序中的事件进行检测,基于所述控件树所返回的hook消息通知判断用户的动作行为,进行数据组装上报;最后将组装好的数据结构体放入数据缓存池中,根据不同的策略上传。本方法可以在程序运行的时候,在代码中植入自己想执行方法的特性,并且可以通过hook的技术,将各类事件进行统计上报。将各类事件进行统计上报。将各类事件进行统计上报。

【技术实现步骤摘要】
一种基于iOS系统的无埋点统计方法及系统


[0001]本专利技术涉及数据处理领域,特别涉及一种基于iOS系统的无埋点统计方法及系统。

技术介绍

[0002]用户在使用app的时候,对于开发者和运营人员是一个黑盒,当用户遇到问题,如何能复现用户的操作路径成为了一个至关重要的事情。
[0003]为了增加用户的粘合性,那么个性化推荐就登上了历史舞台,为了能给用户提供更好的数据和内容那么用户的在app上的点击和浏览行为就至关重要了。
[0004]传统的统计是打点统计(有目的的统计),就是需要什么数据统计什么数据,但是一旦遗漏了相关的地方,可能会对个性化推荐成为致命的问题。

技术实现思路

[0005]基于此,本申请实施例提供了一种基于iOS系统的无埋点统计方法及系统,鉴于iOS的runtime运行机制,可以在程序运行的时候,在代码中植入自己想执行方法的特性,并且可以通过hook的技术,将点击、展示、生命周期和滑动等事件进行统计上报。
[0006]第一方面,提供了一种基于iOS系统的无埋点统计方法,该方法包括:
[0007]将iOS控制器和视图进行分类,建立不同类别的视图所对应的处理方案;其中,所述处理方案包括对不同类别的视图的构造函数采用不同的hook处理;
[0008]将目标程序中不同类别的视图生成控件树;其中,将每一个视图的superview作为树的父节点,将subviews作为树的子节点;
[0009]对目标程序中的事件进行检测,基于所述控件树所返回的hook消息通知判断用户的动作行为,进行数据组装上报;
[0010]将组装好的数据结构体放入数据缓存池中,根据不同的策略上传。
[0011]可选地,所述不同类别至少包括:
[0012]点击类、展示类、滑动类和生命周期类;其中,所述点击类用于区分点击对象对控制层或代理层;所述展示类包括有预展示、展示和重复展示;所述滑动类包括有为上下左右滑动;所述生命周期类包括视图由生到销毁的过程。
[0013]可选地,所述对不同类别的视图的构造函数采用不同的hook处理包括:
[0014]将用户设备信息,生成用户UUID;生成hash为key、base64数据作为value字典;并将所述用户UUID和value字典进行hook处理。
[0015]可选地,所述将目标程序中不同类别的视图生成控件树,包括:
[0016]根据视图的类别和其他的特性区分相同层级的不同节点;其中,包括根据类别的不同进行区分,在类别相同时根据属性进行区分。
[0017]可选地,基于所述控件树所返回的hook消息通知判断用户的动作行为,进行数据组装上报,包括:
[0018]判断消息来源,判断来源的类型,根据不同的控制器的类型来组装数据。
[0019]可选地,基于所述控件树所返回的hook消息通知判断用户的动作行为,包括:
[0020]在点击类事件中,通过判断点击还是长按,添加不同的数据;
[0021]在滑动类事件中,判断两次的偏移量决定滑动的方向。
[0022]可选地,所述将组装好的数据结构体放入数据缓存池中,根据不同的策略上传,包括:
[0023]当缓存池中的数据超过1000条之后,立马上传到服务器,服务器接收到数据后从缓存池中删除数据;和/或,在时间超过3分钟之后上传服务器,服务器接收到数据后从缓存池中删除数据。
[0024]可选地,所述方法还包括:
[0025]当接收到目标程序即将退出或者崩溃的消息时,上传数据到服务器,并且将数据存储到本地,如果数据上传服务器成功那么删除本地数据,如果没有上传成功那么依旧保存数据在本地。
[0026]可选地,所述方法还包括:
[0027]启动目标程序,判断本地是否有未上传到数据,如果有,那么进行数据上传。
[0028]第二方面,提供了一种基于iOS系统的无埋点统计系统,该系统包括:
[0029]分类模块,用于将iOS控制器和视图进行分类,建立不同类别的视图所对应的处理方案;其中,所述处理方案包括对不同类别的视图的构造函数采用不同的hook处理;
[0030]生成模块,用于将目标程序中不同类别的视图生成控件树;其中,将每一个视图的superview作为树的父节点,将subviews作为树的子节点;
[0031]检测模块,用于对目标程序中的事件进行检测,基于所述控件树所返回的hook消息通知判断用户的动作行为,进行数据组装上报;
[0032]上传模块,用于将组装好的数据结构体放入数据缓存池中,根据不同的策略上传。
[0033]本申请实施例提供的技术方案中首先将iOS控制器和视图进行分类,建立不同类别的视图所对应的处理方案;将目标程序中不同类别的视图生成控件树;然后对目标程序中的事件进行检测,基于所述控件树所返回的hook消息通知判断用户的动作行为,进行数据组装上报;最后将组装好的数据结构体放入数据缓存池中,根据不同的策略上传。可以看出,本专利技术的有益效果在于:
[0034](1)无埋点统计做到了在不侵入代码的情况下增加对全局元素的用户行为的统计。
[0035](2)开发无需更改代码,减少了额外的bug。
[0036](3)增加新的功能,产品无需再对新的页面增加统计,就可以得到用户行为,为个性化提供有力的技术保障。
[0037](4)根据千人千面,将数据呈现到用户面前,在保证用户隐私的情况还避免用户反感。
附图说明
[0038]为了更清楚地说明本专利技术的实施方式或现有技术中的技术方案,下面将对实施方式或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是示例性的,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据
提供的附图引申获得其它的实施附图。
[0039]图1为本申请实施例提供的一种基于iOS系统的无埋点统计步骤流程图;
[0040]图2为本申请可选的一种实施例中统计上传过程流程图;
[0041]图3为本申请可选的一种实施例中控件树判断过程示意图;
[0042]图4为本申请实施例提供的一种基于iOS系统的无埋点统计系统框图。
具体实施方式
[0043]为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
[0044]在本专利技术的描述中,术语“包括”、“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包括了一系列步骤或单元的过程、方法、系统、产品或设备不必限于已明确列出的那些步骤或单元,而是还可包含虽然并未明确列出的但对于这些过程、方法、产品或设备固有的其它步骤或单元,或者基于本专利技术构思进一步的优化方案所增加的步骤或单元。
[0045]本申请目的在于解决手动统计的痛点,在不侵入代码的情况下进行本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于iOS系统的无埋点统计方法,其特征在于,所述方法包括:将iOS控制器和视图进行分类,建立不同类别的视图所对应的处理方案;其中,所述处理方案包括对不同类别的视图的构造函数采用不同的hook处理;将目标程序中不同类别的视图生成控件树;其中,将每一个视图的superview作为树的父节点,将subviews作为树的子节点;对目标程序中的事件进行检测,基于所述控件树所返回的hook消息通知判断用户的动作行为,进行数据组装上报;将组装好的数据结构体放入数据缓存池中,根据不同的策略上传。2.根据权利要求1所述的方法,其特征在于,所述不同类别至少包括:点击类、展示类、滑动类和生命周期类;其中,所述点击类用于区分点击对象对控制层或代理层;所述展示类包括有预展示、展示和重复展示;所述滑动类包括有为上下左右滑动;所述生命周期类包括视图由生到销毁的过程。3.根据权利要求1所述的方法,其特征在于,所述对不同类别的视图的构造函数采用不同的hook处理包括:将用户设备信息,生成用户UUID;生成hash为key、base64数据作为value字典;并将所述用户UUID和value字典进行hook处理。4.根据权利要求1所述的方法,其特征在于,所述将目标程序中不同类别的视图生成控件树,包括:根据视图的类别和其他的特性区分相同层级的不同节点;其中,包括根据类别的不同进行区分,在类别相同时根据属性进行区分。5.根据权利要求1所述的方法,其特征在于,基于所述控件树所返回的hook消息通知判断用户的动作行为,进行数据组装上报,包括:判断消息来源,判断来源的类型,根据不同的控制器的类型来组装数据。6.根据权...

【专利技术属性】
技术研发人员:郭玉乐胡云彤谭泽宇李建博田金涛庄乾柱王玉张峻玮江舟马天海
申请(专利权)人:北京香哈网络股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1