数据发送的方法及装置技术领域
本发明涉及通信技术领域,特别是涉及一种数据发送的方法及装置。
背景技术
在进行网站分析及采集系统信息数据时,服务器将Tracker追踪器部署
于电脑中的浏览器中,实现采集访问者的访问行为数据及系统信息数据。
随着移动终端应用程序(Application,APP)的流行,在移动终端环境下实现采
集访问行为数据为及系统信息数据日渐重要;其中,基于Cordova开发平
台开发的APP可以在离线状态,即APP与服务器之间无网络通信连接时访
问网页。
目前,在服务器采集访问行为数据及系统信息数据时,APP中的Tracker
追踪器将采集到的数据进行序列化,并将序列化后的数据发送给服务器,
服务器接收并保存Tracker追踪器发送的数据。在将序列化后的数据发送给
服务器的过程中,若数据发送失败,则等待预定时间后再进行第二次向服
务器发送该序列化后的数据,若第二次发送数据也失败,则将该数据丢弃。
在实施采集访问行为数据及系统信息数据的过程中,发明人发现其存
在如下问题:虽然部分APP可以在离线状态下访问网页,但将访问行为数
据及系统信息数据发送给服务器时,需要确保APP与服务器之间能够进行
网络通信连接,即APP为在线状态时才能实现数据的发送;在APP为离线
状态时,Tracker追踪器两次发送数据失败之后,会将发送失败的数据丢弃,
导致离线状态下无法将访问行为数据及系统信息数据发送到服务器。
发明内容
有鉴于此,本发明提供的一种数据发送的方法及装置,实现了在APP
与服务器之间无网络通信连接时将访问行为数据及系统信息数据发送至服
务器。
为了解决上述问题,本发明主要提供如下技术方案:
一方面,本发明提供了一种数据发送的方法,该方法包括:
将离线数据保存到应用程序APP的本地存储空间;其中,所述离线数
据为未能成功发送至服务器的数据,所述本地存储空间用于存储所述离线
数据;
确定所述APP与所述服务器是否建立网络通信连接;
若确定所述APP与所述服务器建立所述网络通信连接,则从所述本地
存储空间中获取所述离线数据,并将所述离线数据发送到所述服务器。
另一方面,本发明还提供一种数据发送的装置,该装置包括:
保存单元,用于将离线数据保存到应用程序APP的本地存储空间;其
中,所述离线数据为未能成功发送至服务器的数据,所述本地存储空间用
于存储所述离线数据;
第一确定单元,用于在所述保存单元保存所述离线数据之后,确定所
述APP与所述服务器是否建立网络通信连接;
获取单元,用于当所述第一确定单元确定所述APP与所述服务器建立
所述网络通信连接时,从所述本地存储空间中获取所述离线数据;
发送单元,用于将所述获取单元获取的所述离线数据发送到所述服务
器。
借由上述技术方案,本发明提供的技术方案至少具有下列优点:
本发明提供的数据发送的方法及装置,将离线数据保存到应用程序
APP的本地存储空间,其中,离线数据为未能成功发送至服务器的数据,
确定APP与服务器是否建立网络通信连接,当确定APP与服务器建立网络
通信连接时从本地存储空间中获取离线数据,将该离线数据发送至服务器;
与现有技术相比,本发明能够将未能发送成功的数据进行存储,当确定APP
与服务器之间有网络通信连接时,将离线数据发送给服务器,实现了离线
数据的延迟发送。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的
技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和
其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于
本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目
的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符
号表示相同的部件。在附图中:
图1示出了本发明实施例提供的一种数据发送的方法的流程图;
图2示出了本发明实施例提供的一种数据发送的装置的组成框图;
图3示出了本发明实施例提供的另一种数据发送的装置的组成框图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显
示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开
而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更
透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术
人员。
本发明实施例提供了一种数据发送的方法,如图1所示,该方法包括:
101、将离线数据保存到应用程序APP的本地存储空间。
本发明实施例所述的应用程序(Application,APP)为基于开发平台
Cordova开发的移动终端APP,该APP能够在APP与服务器之间无网络通
信连接的情况下,浏览、访问APP中的网页,即离线状态下访问网页;离
线状态下访问的网页为APP中的本地网页。其中,Cordova为一个移动终
端App开发平台,开发者可以借助该平台使用传统网页开发技术完成跨平
台移动终端App的开发。
本发明实施例中,将Tracker追踪器部署于APP中,Tracker追踪器采
集访问者的访问行为数据及系统信息数据等,采集数据之后,Tracker追踪
器将数据发送给服务器,若数据发送失败,则等待预定时间2秒或者5秒
后将该数据进行第二次发送,若第二次发送数据仍然失败,则将该数据保
存到APP的本地存储空间内;本发明实施例中,本地存储空间用于存储未
能成功发送至服务器的数据,即本地存储空间用于存储离线数据。需要说
明的是,Tracker追踪器在采集数据时,与APP与服务器之间是否网络通信
连接无关,即Tracker追踪器可以在APP与服务器之间有网络通信连接时
采集数据,也可以在APP与服务器之间无网络通信连接时采集数据。
作为本发明实施例的一种实现方式,在将离线数据保存到本地存储空
间时,调用预设函数将离线数据存储到本地存储空间内,所述预设函数包
括但不局限于以下的内容,例如:调用LocalStorage类的appendFailed方法。
本发明实施例对存储离线数据的方式、存储离线数据调用的预设函数不进
行具体限定。
102、确定所述APP与所述服务器是否建立网络通信连接。
在本发明实施例中,APP与服务器之间的交互依赖于网络通信连接,
因此,实现APP与服务器的交互首先需要确定APP与服务器是否建立网络
通信连接。
103、若确定所述APP与所述服务器建立所述网络通信连接,则从所述
本地存储空间中获取所述离线数据,并将所述离线数据发送到所述服务器。
当步骤102确定APP与服务器建立网络通信连接时,Tracker追踪器从
本地存储空间中获取离线数据,并将该离线数据发送给服务器,以便服务
器能够通过接收到的数据进行分析,接收到的数据包括但不局限于以下内
容,例如:访问者的访问行为数据及系统信息数据。
作为本发明实施例的一种实现方式,Tracker追踪器从本地存储空间中
获取离线数据时,调用预设函数获取离线数据,所述预设函数包括但不局
限于以下内容,例如:调用LocalStorage类的popAllFailed方法,获取本地
存储空间内的所有离线数据。本发明实施例对获取离线数据时采用的预设
函数不进行具体限定。
本发明实施例提供的数据发送的方法,将离线数据保存到应用程序
APP的本地存储空间,其中,离线数据为未能成功发送至服务器的数据,
确定APP与服务器是否建立网络通信连接,当确定APP与服务器建立网络
通信连接时从本地存储空间中获取离线数据,将该离线数据发送至服务器;
与现有技术相比,本发明实施例能够将未能发送成功的数据进行存储,当
APP与服务器之间有网络通信连接时,将离线数据发送给服务器,实现了
离线数据的延迟发送。
进一步的,作为对上述实施例细化和扩展,上述步骤101在执行将离
线数据保存到应用程序APP的本地存储空间时,首先将离线数据转换为字
符串,将字符串保存到本地存储空间,其中,将离线数据转换为字符串的
目的在于,将离线数据转换成APP本地存储空间能够存储和识别的数据格
式。所述字符串中包含离线数据、编码标识以及发送离线数据对应的服务
器地址,其中,所述编码标识用于标识离线数据是否编码,在从本地存储
空间中获取离线数据时,根据该编码标识能够提高获取离线数据的效率。
本发明实施例中,在将离线数据进行编码标识时,可以采用现有技术中任
意一种数据标识的方法,本发明实施例在此不再进行赘述。
示例性的,离线数据中包含用户名{张三},用户名{张三}是离线数据
的其中一个数据对象,由于本地存储空间中不能存储和识别汉字,因此需
要将包含汉字的数据对象进行编码,转换为APP本地存储空间能够识别的
形式;其中,编码是从一种形式或格式转换为另一种形式的过程。在本发
明实施例在对离线数据进行编码时,可以通过调用预设编码函数进行编码,
也可以通过编码应用程序对离线数据进行编码,本发明实施例对编码的具
体实施方式不进行限定。
需要说明的是,在将离线数据转换为字符串时,基于预定转换规则将
离线数据转换为字符串,预定转换规则中包含三个属性参数,分别为:发
送失败的数据、是否不编码、目标统一资源定位符(Uniform Resource
Locator,URL),其中,是否不编码用以说明将离线数据转换为本地存储空
间能够存储的字符串时是否经过编码处理。
为了能够更详尽的说明如何将离线数据转换为字符串,以下将以示例
的形式进行说明。示例性的,假设,离线数据未转换字符串之前为:发送
失败的数据obj为{a:"b",c:"d"}、是否不编码noEncode为false、URL为{"
http://www.test.com"},离线数据转换后的字符串为"{obj:{a:"b",c:"d"},
noEncode:false,dest URL:"http://www.test.com"}"。以上仅为示例性的
举例,本发明实施例对离线数据的内容、转换字符串使用的名称等内容不
进行限定。
进一步的,当确定APP与服务器建立网络通信连接时,首先从本地存
储空间中获取字符串,对该字符串进行解析,并获取字符串中的编码标识,
根据编码标识判断离线数据是否编码,若离线数据未编码,则获取该离线
数据;若离线数据编码,则将该离线数据进行解码,并获取解码后的离线
数据,其中,解码是编码的逆过程。
作为本发明实施例的一种实现方式,若本地存储空间中存储的字符串
为:"{obj:{a:"b",c:"d"},noEncode:false,dest URL:"http://www.test.com
"}",获取的离线数据包含但不局限于以下方式,获取的离线数据格式为数
组,例如:[{obj:{a:"b",c:"d"},noEncode:false,dest URL:"
http://www.test.com"},{……},]。以上仅为示例性的具体,本发明实施例
对从本地存储空间中获取的离线数据格式不进行具体限定。
进一步的,本发明实施例中,在将离线数据发送给服务器时,首先获
取发送离线数据对应的服务器地址,根据该服务器地址将离线数据发送到
服务器地址对应的服务器上;在将数据发送至服务器时仅将离线数据发送
至服务器即可。例如,获取数据内容为[{obj:{a:"b",c:"d"},noEncode:false,
dest URL:"http://www.test.com"}],则服务器地址为:http://www.test.com,
根据该服务器地址将离线数据a:"b",c:"d"发送至服务器。
进一步的,为了确保本地存储空间有足够的内存空间存储离线数据,
在将离线数据保存到本地存储空间之前,判断本地存储空间是否达到存储
上限,若达到存储上限,则基于本地存储空间的存储顺序删除本地存储空
间中首个存储位置对应的离线数据,并将本发明实施例所述的离线数据保
存到本地存储空间;若未达到存储上限,则根据本地存储空间的存储顺序
将离线数据保存到本地存储空间。需要说明的是,在基于本地存储空间的
存储顺序删除本地存储空间中首个存储位置对应的离线数据时,需要确定
首个存储位置对应的离线数据是否为启动数据,该启动数据为启动APP时
所必须产生的数据,若确定首个存储位置对应的离线数据为启动数据,则
获取本地存储空间中第二个存储位置对应的离线数据,并确定第二个存储
位置对应的离线数据是否为启动数据,直到确认存储位置对应的离线数据
不为启动数据为止,在确认所述本地存储空间中存储位置对应的离线数据
不为所述启动数据之后,将确认后的所述存储位置对应的不为所述启动数
据的离线数据进行删除;若确定首个存储位置对应的离线数据不为启动数
据,则删除本地存储空间中首个存储位置对应的离线数据。
为了更清楚的说明本发明实施例所述的基于本地存储空间的存储顺序
删除本地存储空间中首个存储位置对应的离线数据,以下将以示例的形式
进行详细说明。示例性的,如表1所示,表1示出了本地存储空间中离线
数据存储的示意图,假设该本地存储空间的存储上限是6,在将本发明实施
例所述的离线数据存储于本地存储空间之前,确定该本地存储空间是否达
到存储上限,以存储本发明实施例所述的离线数据。如表1所示,Tracker
追踪器获取本地存储空间的首个存储位置对应的离线数据为离线数据1,若
该离线数据1为启动数据,则继续获取本地存储空间第二个存储位置对应
的离线数据2,若该离线数据2不为启动数据,则将该离线数据2删除,并
执行将离线数据3存储于第二存储位置上,将离线数据4存储于第三存储
位置上……,将本发明实施例所述的离线数据,存储于第六存储位置上;
若该离线数据2为启动数据,则继续获取本地存储空间第三个存储位置对
应的离线数据3,并确定该离线数据3是否为启动数据,以此类推,直到确
认本地存储空间中存储位置对应的离线数据不为启动数据为止,并将确认
的本地存储空间中存储位置对应的不为启动数据的离线数据进行删除。若
首个存储位置对应的离线数据1不为启动数据,则将该离线数据1删除,
并执行将离线数据2存储于首个存储位置上,离线数据3存储于第二存储
位置上,将离线数据4存储于第三存储位置上……,将本发明实施例所述
的离线数据,存储于第六存储位置上。以上仅为示例性的举例,本发明实
施例对本地存储空间的存储上限不进行限定。
表1
![]()
进一步的,在将离线数据发送到服务器之后,格式化本地存储空间。
需要说明的是,将本地存储空间进行格式化,无需判断存储于本地存储空
间的离线数据是否发送成功,若本地存储空间内的离线数据未能成功发送
至服务器,则会将未发送成功的离线数据再次保存到本地存储空间中。若
没有执行格式化本地存储空间,则可能会造成本地存储中有两个或者多个
相同数据内容的数据。
进一步的,作为对上述图1所示方法的实现,本发明实施例还提供一
种数据发送的装置,如图2所示,该装置包括:
保存单元21,用于将离线数据保存到应用程序APP的本地存储空间;
其中,所述离线数据为未能成功发送至服务器的数据,所述本地存储空间
用于存储所述离线数据;
第一确定单元22,用于在所述保存单元21保存所述离线数据之后,确
定所述APP与所述服务器是否建立网络通信连接;
获取单元23,用于当所述第一确定单元22确定所述APP与所述服务
器建立所述网络通信连接时,从所述本地存储空间中获取所述离线数据;
发送单元24,用于将所述获取单元23获取的所述离线数据发送到所述
服务器。
进一步的,如图3所示,所述保存单元21包括:
转换模块211,用于按照预定规则将所述离线数据转换为字符串,所述
字符串中包含所述离线数据、编码标识及发送所述离线数据对应的服务器
地址,其中,所述编码标识用于标识离线数据是否编码;
保存模块212,用于将所述转换模块211转化的所述字符串保存到所述
本地存储空间。
进一步的,如图3所示,所述获取单元23包括;
第一处理模块231,用于获取并解析所述字符串;
获取模块232,用于获取所述编码标识;
判断模块233,用于根据所述获取模块232获取的所述编码标识判断所
述离线数据是否编码;
第二处理模块234,用于当所述判断模块233判断所述离线数据编码时,
对所述离线数据进行解码,并获取所述离线数据;
所述获取模块232,还用于当所述判断模块233判断所述离线数据未编
码时,获取所述离线数据。
进一步的,如图3所示,所述发送单元24包括:
获取模块241,用于获取发送所述离线数据对应的服务器地址;
发送模块242,用于根据所述获取模块241获取的所述服务器地址将所
述离线数据发送到所述服务器地址对应的服务器。
进一步的,如图3所示,所述装置还包括:
判断单元25,在所述保存单元21将所述离线数据保存到应用程序APP
的本地存储空间之前,判断所述本地存储空间是否达到存储上限;
删除单元26,当所述判断单元25判断所述本地存储空间达到所述存储
上限时,基于所述本地存储空间的存储顺序删除本地存储空间中首个存储
位置对应的离线数据;
所述保存单元21,还用于当所述删除单元26删除本地存储空间中首个
存储位置对应的离线数据之后,将所述离线数据保存到所述本地存储空间;
所述保存单元21,还用于当所述判断单元25判断所述本地存储空间未
达到所述存储上限时,将所述离线数据保存到所述本地存储空间。
进一步的,如图3所示,所述删除单元26包括:
确定模块261,用于确定所述首个存储位置对应的离线数据是否为启动
数据,所述启动数据为启动APP所必须产生的数据;
处理模块262,用于当所述确定模块261确定所述首个存储位置对应的
离线数据为所述启动数据时,获取所述本地存储空间中第二个存储位置对
应的离线数据,确定所述第二个存储位置对应的离线数据是否为启动数据,
直到确认所述本地存储空间中存储位置对应的离线数据不为所述启动数据
为止,并执行删除确认后的所述存储位置对应的不为所述启动数据的离线
数据;
删除模块263,用于当所述确定模块261确定所述首个存储位置对应的
离线数据不为所述启动数据时,删除所述本地存储空间中首个存储位置对
应的所述离线数据。
进一步的,如图3所示,所述装置还包括:
格式化单元27,用于在所述发送单元24将所述离线数据发送到服务器
之后,格式化所述本地存储空间。
本发明实施例提供的数据发送的装置,将离线数据保存到应用程序
APP的本地存储空间,其中,离线数据为未能成功发送至服务器的数据,
确定APP与服务器是否建立网络通信连接,当确定APP与服务器建立网络
通信连接时从本地存储空间中获取离线数据,将该离线数据发送至服务器;
与现有技术相比,本发明实施例能够将未能发送成功的数据进行存储,当
APP与服务器之间有网络通信连接时,将离线数据发送给服务器,实现了
离线数据的延迟发送。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没
有详述的部分,可以参见其他实施例的相关描述。
可以理解的是,上述方法及装置中的相关特征可以相互参考。另外,
上述实施例中的“第一”、“第二”等是用于区分各实施例,而并不代表各实施
例的优劣。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述
描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的
对应过程,在此不再赘述。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备
固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的
描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对
任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本
发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实
施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,
本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,
并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一
个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征
有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将
该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个
权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要
求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特
征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方
式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行
自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。
可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及
此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或
过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明
书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开
的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本
说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提
供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括
其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征
的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下
面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合
方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处
理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员
应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现
根据本发明实施例的发明名称(如确定网站内链接等级的装置)中的一些
或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所
描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和
计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质
上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网
站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限
制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出
替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成
对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步
骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明
可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实
现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通
过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示
任何顺序。可将这些单词解释为名称。