数据采集方法、装置、计算机可读介质及智能终端设备与流程

文档序号:18899592发布日期:2019-10-18 21:45阅读:110来源:国知局
数据采集方法、装置、计算机可读介质及智能终端设备与流程
本申请涉及计算机
技术领域
,具体而言,涉及一种数据采集方法、装置、计算机可读介质及智能终端设备。
背景技术
:随着智能终端设备的普及和进步,越来越多的应用运行于智能终端设备。这些应用包括但不限于web页面应用、h5轻应用、混合应用、客户端内嵌的html页面、小程序应用等。为了更好地服务客户,需要采集客户对智能终端设备和各种应用的使用等用户行为数据。在相关的技术方案中,用户行为数据的采集主要是基于浏览器的。但是,对于类似于小程序这样的子应用而言,基于浏览器的方案还不能很好地满足数据采集需求。例如,基于浏览器的方案不适合没有window、document等这些语法糖对象的环境。因此,仍然需要开发新的用户行为数据采集方案,满足新的数据采集需求。需要说明的是,在上述
背景技术
部分公开的信息仅用于加强对本发明的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。技术实现要素:本发明的实施例涉及一种数据采集方法、装置、计算机可读介质及智能终端设备,能够采集源自子应用的各种用户行为数据,从而为用户统计分析提供数据源。本发明的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本发明的实践而习得。根据本发明实施例的一方面,提供一种子应用的数据采集方法,用于智能终端设备,所述子应用基于子应用框架而运行于子应用容器中,其特征在于,所述数据采集方法包括:在所述子应用中集成数据采集工具集;在所述子应用的生命周期函数中植入所述数据采集工具集的初始化方法;通过所述子应用的上下文数据采集渠道数据;通过重写所述子应用框架的生命周期函数采集用户访问数据;通过所述子应用框架的系统接口采集所述智能终端设备的底层环境数据;将包括所述渠道数据、所述用户访问数据和所述底层环境数据中的至少一部分的已采集数据上报到服务器。根据本发明实施例的一方面,提供一种子应用的数据采集装置,用于智能终端设备,所述子应用基于子应用框架而运行于子应用容器中,其特征在于,所述数据采集装置包括:集成单元,用于在所述子应用中集成数据采集工具集;挂靠单元,用于在所述子应用的生命周期函数中植入所述数据采集工具集的初始化方法;渠道数据采集单元,用于通过所述子应用的上下文数据采集渠道数据;用户访问数据采集单元,用于通过重写所述子应用框架的生命周期函数采集用户访问数据;底层环境数据采集单元,用于通过所述子应用框架的系统接口采集所述智能终端设备的底层环境数据;上报单元,用于将包括所述渠道数据、所述用户访问数据和所述底层环境数据中的至少一部分的已采集数据上报到服务器。根据一些实施例,基于前述方案,用户访问数据采集单元包括:重写单元,用于重写所述子应用框架的生命周期函数,其中在重写的生命周期函数中注入自定义逻辑;返回单元,用于转回到所述子应用框架的生命周期函数的固有逻辑。根据一些实施例,基于前述方案,重写单元为配置化重写单元,用于通过配置化重写所述子应用框架的生命周期函数来采集用户访问数据。根据一些实施例,基于前述方案,重写单元可包括:页面重写单元,用于重写页面类生命周期函数以采集用户访问数据;和/或操作重写单元,用于重写页面操作类生命周期函数以采集用户使用数据。根据一些实施例,基于前述方案,所述数据采集工具集还包括标识生成单元,所述标识生成单元配置为:利用大于十亿的梅森素数作为生成所述唯一标识的第一因子;利用当前系统时间戳作为生成所述唯一标识的第二因子;利用随机数作为生成所述唯一标识的第三因子。根据一些实施例,基于前述方案,上报单元配置为:将所述已采集数据组包为键值对序列;将所述键值对序列以查询字符串的方式通过所述子应用框架的系统接口上报到服务器。根据一些实施例,基于前述方案,数据采集装置还包括自定义事件采集单元,用于通过采集接口上报自定义事件数据。根据本发明实施例的一方面,提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现如上述实施例中所述的数据采集方法。。根据本发明实施例的一方面,提供了一种智能终端设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上述实施例中所述的数据采集方法。在本发明的一些实施例所提供的技术方案中,利用子应用框架的系统api与底层硬件通信,从而可以采集设备型号、操作系统等底层环境数据。在本发明的一些实施例所提供的技术方案中,通过挂靠及重写框架生命周期函数的方式来进行数据采集,可以实现大部分数据的自动或者配置化采集。在本发明的一些实施例所提供的技术方案中,利用子应用的上下文数据可以采集和还原诸如微信小程序的子应用的渠道场景和路径、参数等,可以为开发者和运营者做精细化运营提供数据支持。应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。附图说明此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:图1a示出了可以应用本发明实施例的数据采集方法或装置的示例性系统架构的示意图;图1b-1h示例性示出根据本发明实施例利用采集的数据进行统计分析的应用场景;图2示出了适于用来实现本发明实施例的智能终端设备和服务器的计算机系统的结构示意图;图3示意性示出根据本发明实施例的用于子应用的数据采集方法;图4示意性示出根据本发明实施例的生成用于访问人数数据和/或打开次数数据的唯一标识的方法;图5示意性示出了根据本发明示例实施例的用于子应用的数据采集装置的框图;图6示意性示出根据本发明实施例的数据采集系统前后端的整体架构。具体实施方式现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本发明将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本发明的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本发明的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本发明的各方面。附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。图1a示出了可以应用本发明实施例的数据采集方法或装置的示例性系统架构100的示意图。如图1a所示,系统架构100可以包括终端设备101、102、103中的一种或多种、以及网络104和服务器105。网络104用于在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如wifi、4g、5g等。应该理解,图1a中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。比如服务器105可以是多个服务器组成的服务器集群等。用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103可以是具有显示屏的各种电子设备,包括但不限于智能手机、平板电脑等。服务器105可以是提供各种服务的服务器。随着越来越多的应用运行于智能终端设备,为了提高应用的处理能力和便于应用的开发和管理,出现了各种模式的应用架构。一种模式可以称之为子应用模式(或者称为小程序模式),其中子应用(或者小程序)运行于父应用中,父应用也可称为子应用容器。在这种模式中,运行于容器中的子应用可基于规范的子应用框架,从而利于子应用的开发和管理。例如,子应用可以是微信小程序,微信小程序可运用于子应用容器微信中。另一方面,为了更好地服务客户,需要采集客户对智能终端设备和各种子应用的使用等用户行为数据,从而为用户统计分析提供数据源。子应用的数据采集是数据源的基础,对于统计分析至关重要。但是,在相关的技术方案中,用户行为数据的采集主要是基于浏览器的。强依赖于浏览器,window、document对象会在采集数据过程中频繁使用,而诸如小程序的子应用中没有浏览器的概念,没有window、document等这些语法糖对象,jssdk无法在小程序内运行。而且,jssdk有10kb以上,而子应用本身一般对程序大小有限制。此外,由于依赖于浏览器,而浏览器本身的安全限制,数据采集功能无法与底层的设备进行数据通信,导致无法准确获取(甚至无法获取)需要的机型、操作系统等数据。根据本发明实施例,提出一种子应用的数据采集方法,不依赖于浏览器的全局对象来进行数据采集,因此不需要加载jssdk,而是在子应用中集成数据采集工具集,通过挂靠生命周期函数或重写生命周期函数的方法来获取用户数据。另外,可充分利用子应用框架暴露的系统api,获取底层环境数据。根据一实施例,数据采集工具集sdk仅有4kb。图1b-1h示例性示出根据本发明实施例利用采集的数据进行统计分析的应用场景,这些统计分析应用可呈现于终端设备101、102、103和/或服务器105。图1b示出用户访问数据被应用到基础报表中。如图1b所示,基础报表可包括但不限于访问次数(pv,pageview)、访问人数(uniqueview)、打开次数(sessionview)、独立ip数(ipview)。例如,访问一个页面可计为一个访问次数,重复统计。访问人数,是访问子应用的人数,不重复统计。打开次数,是打开子应用的次数。独立ip数,是访问子应用的ip的数量。图1c和图1d示出底层环境数据应用在终端环境分析上。如图1c所示,网络连接环境4g、wifi和3g在访问次数中的比例分别为63.19%、20.08%和8.73%。图1d则示出来自四种型号终端的访问次数占比。图1e示出渠道来源数据使用在渠道分析模型中的产品场景截图,包括来自发现栏小程序入口、扫描二维码、顶部搜索框的搜索结果页、单人聊天会话、公众号profile页相关小程序列表等渠道的访问次数的占比。图1f和1g示出用户使用数据应用于使用分析报表中的产品场景截图,包括分享次数趋势图(图1f)和下拉刷新次数趋势图(图1g)。图1h示出针对页面路径和自定义来源参数做下钻分析的产品场景截图。图中示出在扫描二维码这个渠道场景下,不同的渠道入口页(或落地页面)对应的访问次数分布,以及不同渠道参数对应的访问次数分布。图2示出了适于用来实现本发明实施例的智能终端设备和服务器的计算机系统的结构示意图。需要说明的是,图2示出的电子设备的计算机系统200仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。如图2所示,计算机系统200包括中央处理单元(cpu)201,其可以根据存储在只读存储器(rom)202中的程序或者从储存部分208加载到随机访问存储器(ram)203中的程序而执行各种适当的动作和处理。在ram203中,还存储有系统操作所需的各种程序和数据。cpu201、rom202以及ram203通过总线204彼此相连。输入/输出(i/o)接口205也连接至总线204。以下部件连接至i/o接口205:包括触摸屏、键盘等的输入部分206;包括诸如液晶显示器(lcd)等以及扬声器等的输出部分207;包括闪存等的储存部分208;以及包括诸如无线网卡、高速网卡等的通信部分209。通信部分209经由诸如因特网的网络执行通信处理。驱动器210也根据需要连接至i/o接口205。可拆卸介质211,诸如半导体存储器、磁盘等,根据需要安装在驱动器210上,以便于从其上读出的计算机程序根据需要被安装入储存部分208。特别地,根据本发明的实施例,下文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分209从网络上被下载和安装,和/或从可拆卸介质211被安装。在该计算机程序被中央处理单元(cpu)201执行时,执行本申请的系统中限定的各种功能。需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。描述于本发明实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现如下述实施例中所述的方法。图3示意性示出根据本发明实施例的用于子应用的数据采集方法,该方法可用于前述的智能终端设备。如前所述,诸如小程序(例如,微信小程序)的子应用可基于子应用框架而运行于子应用容器(父应用)。子应用可包括生命周期函数,用于子应用的创建、活跃、后台活跃、销毁、以及相关页面的创建、渲染、活跃、后台活跃、销毁等。根据一实施例,子应用可包括类web应用,例如以html+js+css运行在子应用容器中。根据一实施例,类web子应用可包括一个应用线程和多个页面线程,这时,生命周期函数可包括应用线程生命周期函数和页面线程生命周期函数。参照图3,根据本发明实施例的子应用的数据采集方法可包括步骤s310至s360,下面进行详细说明。在步骤s310,在子应用中集成数据采集工具集,从而可以利用数据采集工具集提供的接口和功能进行数据采集操作。根据一用于微信小程序的示例实施例中,通过类似于下面的程序语句在微信小程序中集成数据采集工具集:varsdk=require('./vendor/analysis_sdk')。在步骤s320,在子应用的生命周期函数中植入数据采集工具集(sdk)的初始化方法。为了使子应用能够进行数据采集,可在子应用的生命周期函数中挂靠或主动调用数据采集工具集(sdk)的初始化入口,开启数据采集以及完成初始化工作。根据一实施例,分别在子应用的一个应用线程生命周期函数和一个页面线程生命周期函数中植入相应的数据采集工具集(sdk)的初始化方法。以微信小程序为例,微信小程序框架在前端js与底层操作系统之间搭建了一个桥(bridge),让之前前端js无法做到的、activity流畅的场景切换、硬件接口、网络接口,甚至是通讯录、拨电话这些只有原生用于(app)才能实现的特性,通过js可实现。在微信小程序定义的mvvm(model-view-viewmodel)前端的开发框架下,响应用户交互以及承载数据流转主要靠应用(app)线程和页面(page)线程,每一个小程序的启动和维持,都会有独立的app线程,包含多个page线程。小程序app线程整个生命周期会经历创建、活跃、后台活跃、销毁阶段,微信小程序框架提供了onlaunch、onshow、onhide等生命周期函数。同理,page线程在渲染页面内容的时候,会经历创建、渲染数据、活跃、压栈后台活跃、销毁等阶段,微信小程序框架提供了onload、onshow、onready、onhide、onunload等生命周期函数。对外暴露的这些生命周期函数作为钩子函数,允许开发者进行修改(hack)。例如app启动的生命周期函数onlauch会包含小程序启动相关的丰富参数,例如来源场景等,可以在这里挂靠(植入)初始化入口函数,做一些启动相关数据获取,并作统计的初始化等。例如:在上面的示例中,当微信小程序app线程初始化的时候,在app生命周期函数onlauch中植入(或主动调用)数据采集工具集中的初始化方法sdk.app.init({….}),传入参数,其中appid为分配的应用id号;eventid为分配的事件统计id;配置参数statpulldownfresh取值为true/false,用于确定是否要重写系统的下拉刷新方法,因为有些用户的小程序有下拉刷新出现特殊功能的场景,所以需要统计到底有多少次下拉刷新的触发操作;配置参数statshareapp取值为true/false,用于确定是否重写系统的分享操作,并提供具体分享的url以及分享的参数信息(title等);配置参数statreachbottom取值为true/false,用于确定是否重写系统的页面分页操作,用来统计具体分页操作触发次数;launchopts可用于传入微信小程序的上下文数据,用于统计app启动的场景值的参数,直接获取系统的值,可以帮助用户统计小程序打开的场景值及其对应的参数。在上面的示例中,在app初始化完成后,就会加载落地页面,在page的生命周期函数onload中主动调用数据采集工具集中的初始化方法sdk.page.init(),在其中重写page生命周期函数onshow,让page自动默认执行统计数据采集。每次小程序页面推到后台再唤起,都会唤起生命周期函数page.onshow,所以页面浏览统计依然会作用,去往其他页面,同样会执行数据采集的过程。在步骤s330,通过子应用的上下文数据采集渠道数据。渠道数据是子应用的上下文数据。在子应用启动时,能够以参数的形式带进来。根据一实施例,子应用的上下文数据可以参数的形式带入数据采集工具集的初始化入口,从而在数据采集工具集(sdk)中利用子应用框架api取出场景值、落地页面和用于下钻分析的自定义来源参数等。解析出的场景值、落地页面和用于下钻分析的自定义来源参数等可用于渠道下钻分析,如前面参照图1h所说明的。场景值是打开子应用(例如,微信小程序)的渠道场景值,例如二维码、公众号链接、群会话等,下表是场景值的一些示例。场景值说明1001发现栏小程序入口1005顶部搜索框的搜索结果页1006发现栏小程序主入口搜索框的搜索结果页1007单人聊天会话中的小程序消息卡片1008群聊会话中的小程序消息卡片1011扫描二维码1012长按图片识别二维码1013手机相册选取二维码1014小程序模板消息1019电子钱包1020公众号profile页相关小程序列表在步骤s340,通过重写子应用框架的生命周期函数采集用户访问数据。如前所述,子应用框架的生命周期函数可与子应用页面的生命周期相关。通过重写子应用框架的生命周期函数,可以获取子应用页面相关的用户数据。根据一实施例,通过重写子应用框架的生命周期函数采集用户访问数据可包括:重写子应用框架的生命周期函数,在子应用框架的生命周期函数中注入自定义逻辑,例如注入数据采集的自定义逻辑;然后,再转回到子应用框架的生命周期函数的固有逻辑。根据一实施例,通过配置化重写子应用框架的生命周期函数来采集用户访问数据。例如,如果设置相应配置参数为真(true),就重写子应用框架的生命周期函数;否则,就不重写子应用框架的生命周期函数。子应用框架的生命周期函数可包括页面类生命周期函数和页面操作类生命周期函数。根据一实施例,通过重写子应用框架的生命周期函数采集用户访问数据可包括重写页面类生命周期函数以采集用户访问数据和重写页面操作类生命周期函数以采集用户使用数据中的至少一种。页面类生命周期函数与页面访问相关,可对其重写以采集用户访问数据,例如访问次数、访问人数等。页面操作类生命周期函数与页面上的操作事件相关,如下拉刷新(通过向下拉页面,达到刷新页面数据的一种用户行为)、页面触底(页面向上滑动,到页面底部,如果有内容需要动态加载展示,则利用这一用户行为来展示)等。可对这些生命周期函数重写以采集用户使用数据,例如分享次数、下拉刷新事件次数、页面触底事件次数等。以微信小程序为例,根据本发明示例实施例,通过重写onshow、onshareappmessage、onpulldownrefresh等生命周期函数来采集用户访问页面相关的数据。例如:在上面的实现代码中,在如前所述的配置参数sdk_config.stat_pull_down_fresh为真(true)时,通过重写生命周期函数_page.onpulldownrefresh,在其中注入自定义逻辑,让小程序框架在下拉刷新时先执行自定义函数,然后再转回系统的原逻辑。类似地,可以对页面触底等其他生命周期函数进行配置化重写。在步骤s350,通过子应用框架的系统接口采集智能终端设备的底层环境数据。子应用框架能够与底层系统和硬件通信,通过子应用框架的系统接口可采集智能终端设备的底层环境数据,诸如终端型号、操作系统、网络类型、运营商等。以微信小程序为例,根据本发明示例实施例,通过使用微信小程序系统api可获取底层环境数据:其中,wx是小程序框架的超级对象,开发者可使用wx对象来调用微信小程序底层框架提供的能力;adt表示设备型号,scl表示像素比,scr表示屏幕宽度和高度,lg表示语言,fl表示版本号,jv表示操作系统版本,tz表示客户的平台。在步骤s360,将包括渠道数据、用户访问数据和底层环境数据中的至少一部分的已采集数据上报到服务器。根据实际需求,可将渠道数据、用户访问数据和底层环境数据中的部分或全部数据上报到服务器,从而构建用于统计分析的数据源。根据一实施例,将已采集数据上报到服务器可包括:将所述已采集数据组包为k-v键值对序列;将所述键值对序列以查询字符串(querystring)的方式通过所述子应用框架的系统接口上报到服务器。以微信小程序为例,可通过如下方式上报采集的数据:wx.request({url:sdk_config.api_base+'?'+pool.join('&').tolowercase()})其中,pool中保存有所采集数据的键值对,sdk_config.api_base表示配置的服务器url地址。当然,本公开的方案不限于此,也可以通过其他方式打包已采集数据,并将打包数据发送到服务器。如前所述,通过本发明实施例的数据采集方法,能够实现用户数据的自动或配置化采集,或者通过传递子应用的上下文数据,在数据采集工具集(sdk)中解析,实现某些数据的采集。但是,本公开不限于此。数据采集工具集(sdk)还可提供上报自定义事件数据的采集接口。利用数据采集工具集的采集接口,用户可以上报自定义事件数据,而不是局限于系统预设的事件。例如,根据一实施例,为了统计搜索按钮的点击次数,在搜索按钮上绑定自定义事件,用户每次点击搜索按钮时,将会触发自定义事件上报。具体实现过程可以是在搜索按钮的事件响应方法(例如,searchclickevent)中,主动调用统计数据采集方法(例如,sdk.event.stat(…)方法)。根据本发明示例实施例,通过重写子应用框架的生命周期函数采集用户访问数据包括生成用于采集访问人数数据和/或打开次数数据等的唯一标识,如下面参照图4所描述的。图4示意性示出根据本发明实施例的生成唯一标识的方法。访问人数是访问子应用的人数,不重复统计。打开次数是打开子应用的次数,重复统计。统计访问人数时,需要区别开不同的用户;对此,可为不同用户设置不同的标识。重复统计打开次数时,需要为同一终端设备上的各子应用设置唯一会话标识,但不同子应用或不同终端设备上的相同子应用需要不同的会话标识。参照图4,根据本发明实施例的生成唯一标识的方法可包括步骤s410至s430,下面进行详细说明。在步骤s410,利用大于十亿的梅森素数作为生成唯一标识的第一因子。例如,选择一梅森素数2147483647作为生成唯一标识的第一因子。在步骤s420,利用当前系统时间戳作为生成唯一标识的第二因子。例如,利用函数date()生成系统时间。在步骤s430,利用随机数作为生成唯一标识的第三因子,可以解决并发问题。例如,引入math.random()生成随机数。根据一实施例,生成唯一标识的js示例方法为:(math.round((math.random()||0.5)*2147483647)*(+newdate()))%10000000000即,用一个17位有效数字的随机小数与10位的梅森素数之积,取整后与当前系统时间戳相乘,并对10亿取余数,得到一个完全随机的10位数字,这个数字或这个数字与其他标识符的组合可作为唯一用户标识和/或唯一会话标识。在需要使用用户标识uid或会话标识sid时,可试着先从存储中获取。如果取到历史的uid或sid,则可设置用户类型标识为老用户;如果未取到,则可利用前述方法生成一个用户标识uid或会话标识sid,写入存储,并设置用户类型标识为新用户。图5示意性示出了根据本发明示例实施例的用于子应用的数据采集装置的框图。如图5所示,根据本发明示例实施例的用于子应用的数据采集装置500包括集成单元510、挂靠单元520、渠道数据采集单元530、用户访问数据采集单元540、底层环境数据采集单元550以及上报单元560。集成单元510用于在所述子应用中集成数据采集工具集;挂靠单元520用于在所述子应用的生命周期函数中植入所述数据采集工具集的初始化方法;渠道数据采集单元530用于通过所述子应用的上下文数据采集渠道数据;用户访问数据采集单元540用于通过重写所述子应用框架的生命周期函数采集用户访问数据;底层环境数据采集单元550用于通过所述子应用框架的系统接口采集所述智能终端设备的底层环境数据;上报单元560用于将包括所述渠道数据、所述用户访问数据和所述底层环境数据中的至少一部分的已采集数据上报到服务器。根据示例实施例,子应用的上下文数据以参数的形式传递给数据采集工具集的初始化方法。根据示例实施例,用户访问数据采集单元540包括:重写单元,用于重写所述子应用框架的生命周期函数,其中在重写的生命周期函数中注入自定义逻辑;返回单元,用于转回到所述子应用框架的生命周期函数的固有逻辑。根据示例实施例,重写单元为配置化重写单元,用于通过配置化重写所述子应用框架的生命周期函数来采集用户访问数据。根据示例实施例,重写单元可包括:页面重写单元,用于重写页面类生命周期函数以采集用户访问数据;和/或操作重写单元,用于重写页面操作类生命周期函数以采集用户使用数据。根据示例实施例,所述数据采集工具集还包括标识生成单元,所述标识生成单元配置为:利用大于十亿的梅森素数作为生成所述唯一标识的第一因子;利用当前系统时间戳作为生成所述唯一标识的第二因子;利用随机数作为生成所述唯一标识的第三因子。根据示例实施例,上报单元560配置为:将所述已采集数据组包为键值对序列;将所述键值对序列以查询字符串的方式通过所述子应用框架的系统接口上报到服务器。根据示例实施例,数据采集装置500还包括自定义事件采集单元,用于通过采集接口上报自定义事件数据。图6示意性示出根据本发明实施例的数据采集系统前后端的整体架构,适用于利用根据本发明实施例的用于子应用的数据采集方法建立统计数据源,并可进一步利用统计数据源进行应用场景统计分析等工作。如图6所示,整体架构包括小程序及数据采集工具集610、网关620、接入层630、实时指标处理层640、消息中间件650、分布式文件系统660、业务数据仓库670以及数据存储系统680。小程序及数据采集工具集610可执行如前所述的根据本发明实施例的用于子应用的数据采集方法。网关620用于域名解析和ssl加密等操作。接入层630用于解析上报的字段,包括querystring、http头部的解析。实时指标处理层640包括:配置中心,用于字符文本化配置转换;累加节点,用于累加指标计算;去重节点,用于去重指标计算。消息中间件650为数据接入平台,通过消息转发、文件、消息队列等方式上报数据。分布式文件系统660、业务数据仓库670及数据存储系统680用于存储各种业务数据、原始数据、派生数据和统计数据等。数据存储系统680支持实时存储和离线存储。以上描述了根据本发明实施例的用于子应用的数据采集方法和装置及系统架构。通过以上的详细描述,本领域的技术人员易于理解,根据本发明实施例的方法和装置具有以下优点中的一个或多个。根据本发明实施例,本公开的数据采集方法不依赖任何浏览器环境,通用性好。根据本发明实施例,本公开的数据采集方法不依赖浏览器的全局对象来进行数据采集,能够在诸如微信小程序的子应用内实现数据采集。根据本发明实施例,本公开的数据采集方法利用子应用框架的系统api与底层硬件通信,从而可以采集设备型号、操作系统等底层环境数据。根据本发明实施例,本公开的数据采集工具集仅有4kb左右,且数据采集全面。根据本发明实施例,本公开的数据采集方法利用子应用的上下文数据可以采集和还原诸如微信小程序的子应用的渠道场景和路径、参数等,可以为开发者和运营者做精细化运营提供数据支持。根据本发明实施例,通过挂靠及重写框架生命周期函数的方式来进行数据采集,可以实现大部分数据的自动或者配置化采集。易于理解,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本发明实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本发明实施方式的方法。本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本
技术领域
中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1