一种基于iOS系统的无埋点统计方法及系统与流程

文档序号:33649740发布日期:2023-03-29 07:10阅读:31来源:国知局
一种基于ios系统的无埋点统计方法及系统
技术领域
:1.本发明涉及数据处理领域,特别涉及一种基于ios系统的无埋点统计方法及系统。
背景技术
::2.用户在使用app的时候,对于开发者和运营人员是一个黑盒,当用户遇到问题,如何能复现用户的操作路径成为了一个至关重要的事情。3.为了增加用户的粘合性,那么个性化推荐就登上了历史舞台,为了能给用户提供更好的数据和内容那么用户的在app上的点击和浏览行为就至关重要了。4.传统的统计是打点统计(有目的的统计),就是需要什么数据统计什么数据,但是一旦遗漏了相关的地方,可能会对个性化推荐成为致命的问题。技术实现要素:5.基于此,本技术实施例提供了一种基于ios系统的无埋点统计方法及系统,鉴于ios的runtime运行机制,可以在程序运行的时候,在代码中植入自己想执行方法的特性,并且可以通过hook的技术,将点击、展示、生命周期和滑动等事件进行统计上报。6.第一方面,提供了一种基于ios系统的无埋点统计方法,该方法包括:7.将ios控制器和视图进行分类,建立不同类别的视图所对应的处理方案;其中,所述处理方案包括对不同类别的视图的构造函数采用不同的hook处理;8.将目标程序中不同类别的视图生成控件树;其中,将每一个视图的superview作为树的父节点,将subviews作为树的子节点;9.对目标程序中的事件进行检测,基于所述控件树所返回的hook消息通知判断用户的动作行为,进行数据组装上报;10.将组装好的数据结构体放入数据缓存池中,根据不同的策略上传。11.可选地,所述不同类别至少包括:12.点击类、展示类、滑动类和生命周期类;其中,所述点击类用于区分点击对象对控制层或代理层;所述展示类包括有预展示、展示和重复展示;所述滑动类包括有为上下左右滑动;所述生命周期类包括视图由生到销毁的过程。13.可选地,所述对不同类别的视图的构造函数采用不同的hook处理包括:14.将用户设备信息,生成用户uuid;生成hash为key、base64数据作为value字典;并将所述用户uuid和value字典进行hook处理。15.可选地,所述将目标程序中不同类别的视图生成控件树,包括:16.根据视图的类别和其他的特性区分相同层级的不同节点;其中,包括根据类别的不同进行区分,在类别相同时根据属性进行区分。17.可选地,基于所述控件树所返回的hook消息通知判断用户的动作行为,进行数据组装上报,包括:18.判断消息来源,判断来源的类型,根据不同的控制器的类型来组装数据。19.可选地,基于所述控件树所返回的hook消息通知判断用户的动作行为,包括:20.在点击类事件中,通过判断点击还是长按,添加不同的数据;21.在滑动类事件中,判断两次的偏移量决定滑动的方向。22.可选地,所述将组装好的数据结构体放入数据缓存池中,根据不同的策略上传,包括:23.当缓存池中的数据超过1000条之后,立马上传到服务器,服务器接收到数据后从缓存池中删除数据;和/或,在时间超过3分钟之后上传服务器,服务器接收到数据后从缓存池中删除数据。24.可选地,所述方法还包括:25.当接收到目标程序即将退出或者崩溃的消息时,上传数据到服务器,并且将数据存储到本地,如果数据上传服务器成功那么删除本地数据,如果没有上传成功那么依旧保存数据在本地。26.可选地,所述方法还包括:27.启动目标程序,判断本地是否有未上传到数据,如果有,那么进行数据上传。28.第二方面,提供了一种基于ios系统的无埋点统计系统,该系统包括:29.分类模块,用于将ios控制器和视图进行分类,建立不同类别的视图所对应的处理方案;其中,所述处理方案包括对不同类别的视图的构造函数采用不同的hook处理;30.生成模块,用于将目标程序中不同类别的视图生成控件树;其中,将每一个视图的superview作为树的父节点,将subviews作为树的子节点;31.检测模块,用于对目标程序中的事件进行检测,基于所述控件树所返回的hook消息通知判断用户的动作行为,进行数据组装上报;32.上传模块,用于将组装好的数据结构体放入数据缓存池中,根据不同的策略上传。33.本技术实施例提供的技术方案中首先将ios控制器和视图进行分类,建立不同类别的视图所对应的处理方案;将目标程序中不同类别的视图生成控件树;然后对目标程序中的事件进行检测,基于所述控件树所返回的hook消息通知判断用户的动作行为,进行数据组装上报;最后将组装好的数据结构体放入数据缓存池中,根据不同的策略上传。可以看出,本发明的有益效果在于:34.(1)无埋点统计做到了在不侵入代码的情况下增加对全局元素的用户行为的统计。35.(2)开发无需更改代码,减少了额外的bug。36.(3)增加新的功能,产品无需再对新的页面增加统计,就可以得到用户行为,为个性化提供有力的技术保障。37.(4)根据千人千面,将数据呈现到用户面前,在保证用户隐私的情况还避免用户反感。附图说明38.为了更清楚地说明本发明的实施方式或现有技术中的技术方案,下面将对实施方式或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是示例性的,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图引申获得其它的实施附图。39.图1为本技术实施例提供的一种基于ios系统的无埋点统计步骤流程图;40.图2为本技术可选的一种实施例中统计上传过程流程图;41.图3为本技术可选的一种实施例中控件树判断过程示意图;42.图4为本技术实施例提供的一种基于ios系统的无埋点统计系统框图。具体实施方式43.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。44.在本发明的描述中,术语“包括”、“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包括了一系列步骤或单元的过程、方法、系统、产品或设备不必限于已明确列出的那些步骤或单元,而是还可包含虽然并未明确列出的但对于这些过程、方法、产品或设备固有的其它步骤或单元,或者基于本发明构思进一步的优化方案所增加的步骤或单元。45.本技术目的在于解决手动统计的痛点,在不侵入代码的情况下进行用户行为的统计。减少侵入修改代码导致的bug。利用统计浮层还原统计内容,方便开发、运营和产品查看数据。具体地,请参考图1,其示出了本技术实施例提供的一种基于ios系统的无埋点统计方法的流程图,该方法可以包括以下步骤:46.步骤101,将ios控制器和视图(view)进行分类,建立不同类别的视图所对应的处理方案。47.其中,处理方案包括对不同类别的视图的构造函数采用不同的hook(钩子)处理。48.在本技术实施例中,不同类别至少包括点击类、展示类、滑动类和生命周期类;其中,点击类用于区分点击对象对控制层或代理层;展示类包括有预展示、展示和重复展示;滑动类包括有为上下左右滑动;生命周期类包括视图由生到销毁的过程。49.根据上面的四大类的的小类使用不同的hook方式处理。具体地,hook其中的数据,将用户设备信息,生成用户uuid(universallyuniqueidentifier,通用唯一识别码),然后生成hash(哈希值)为key、base64数据为value字典。记录用户的行为记录到如下的结构体中然后进行上报,例如:50.[0051][0052]步骤102,将目标程序中不同类别的视图生成控件树。[0053]其中,将每一个视图的superview作为树的父节点,将subviews作为树的子节点。[0054]在本步骤中,主要是生成用户deppath,其具体过程包括了:[0055]①层级结构deppath主要是基于页面的控件树构造而成,每个view都有superview与subviews的属性,将每一个view的superview作为树的父节点,将其subviews作为子节点,这样就能把整个app上的所有view组成一棵庞大的控件树,其中树的顶层是uiwindow,然后是每一个view节点依次向下展开。[0056]②因为一个层级上会有多个不同的view,但是上面生成的depath是相同,所以还要根据view的类别和其他的特性进行不同区分,目前主要是分为几种方法:类别不同的可以使用类别,类别相同的要根据其属性了。[0057]③类别不同的,可以使用其类别,例如uiview_uilabel和uiview_uibutton。[0058]④类别相同的,例如button和textview可以增加其lable的text进行区分,view可以使用其背景色,坐标的位置进行区分和其在父类中的位置。[0059]⑤其他类别的判断。[0060]基于此,如图2和图3所示,分别给出了本技术可选的一种实施例中统计上传过程流程图和控件树判断过程示意图,其特征包括有:[0061]1)uitableviewcell和uicollectionviewcell因为每个cell布局和depath树都是相同的,如果按照上面view方式那么就会出现混乱,那么就要根据其index进行唯一的区分。[0062]2)uicontrol绝大多数的情况下可以使用view的deppath确定,但是如果是uinavigationitem就必须使用新的获取路径方式了,此时则是需要增加action属性来区分,因为在同一个控制层不同的item触发的事件不同,通过这个可以确定唯一性。[0063]3)uialertcontroller最为一个单独的控制器,在使用时所获取的deppath都是唯一的,即使加入action属性也是很难避免的,对于此问题需要引入uialertcontroller的message和title信息。[0064]4)viewcontroller因为控制器在项目中都是唯一的,所以需要引入类的名字。[0065]步骤103,对目标程序中的事件进行检测,基于控件树所返回的hook消息通知判断用户的动作行为,进行数据组装上报。[0066]在本技术实施例中,本步骤具体判断用户的动作行为,进行数据组装上报,包括有:[0067]①hook消息通知,然后判断消息来源,判断来源的类型,根据不同的控制器的类型来组装数据。[0068]②click事件,判断是点击还是长按,添加不同的数据[0069]③滑动事件判断两次的偏移量决定滑动的方向。[0070]④uitableviewcell和uicollectionviewcell主要是找到点击和显示隐藏的事件,然后进行相关的数据组装,并且记录其indexpath的row,在展示之后要对当前的index进行记录,防止数据重新滑动回来多次走曝光的上报。[0071]步骤104,将组装好的数据结构体放入数据缓存池中,根据不同的策略上传。[0072]本步骤中将组装好的结构体放入数据缓存池pool中,根据不同的策略上传,具体包括了:[0073]①缓存池中的数据超过1000条之后,立马上传到服务器,服务器接收到数据后从缓存池中删除数据。[0074]②时间超过3分钟之后上传服务器,服务器接收到数据后从缓存池中删除数据。[0075]③当接收到目标程序即将退出的消息,或者崩溃的消息时,上传数据到服务器,并且将数据存储到本地,如果数据上传服务器成功那么删除本地数据,如果没有上传成功那么依旧保存数据在本地。[0076]④启动目标程序,判断本地是否有未上传到数据,如果有,那么进行数据上传。[0077]综上可以看出,本发明使用deppath保证app中的view都是唯一的,保证上传到服务端到数据是唯一的。uitableviewcell和uicollectionviewcell增加标识位,防止show方法多次上报,对统计数据产生重大的影响。[0078]同时,建立上传的缓存池,并且缓存池中有多种上报逻辑,保证数据能完全的上报到服务器。增加数据结构中useruuid,将说有的数据用此唯一标识进行贯穿,并且无法可逆出用户信息,保证用户隐私。[0079]如图4,本技术实施例还提供的一种基于ios系统的无埋点统计系统200。[0080]系统200包括:[0081]分类模块201,用于将ios控制器和视图进行分类,建立不同类别的视图所对应的处理方案;其中,所述处理方案包括对不同类别的视图的构造函数采用不同的hook处理;[0082]生成模块202,用于将目标程序中不同类别的视图生成控件树;其中,将每一个视图的superview作为树的父节点,将subviews作为树的子节点;[0083]检测模块203,用于对目标程序中的事件进行检测,基于所述控件树所返回的hook消息通知判断用户的动作行为,进行数据组装上报;[0084]上传模块204,用于将组装好的数据结构体放入数据缓存池中,根据不同的策略上传。[0085]本技术实施例提供的基于ios系统的无埋点统计系统用于实现上述基于ios系统的无埋点统计方法,关于基于ios系统的无埋点统计系统的具体限定可以参见上文中对于基于ios系统的无埋点统计方法的限定,在此不再赘述。上述基于ios系统的无埋点统计系统中的各个部分可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于设备中的处理器中,也可以以软件形式存储于设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。[0086]以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。[0087]以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1