监听软件被卸载的方法及装置的制造方法_2

文档序号:9887420阅读:来源:国知局
述第一应用程序和所述第二应用程序来源于同一应用程序提供者,并且下载安装到同一终端设备。
[0042]在示例性实施例,所述终端设备可以是个人电脑(Personal Computer,PC)或者移动设备,移动设备包括手机或者平板电脑等。
[0043]在示例性实施例,其中所述第一应用程序和所述第二应用程序之间相互监听卸载事件包括:所述第一应用程序和所述第二应用程序之间相互保持心跳连接,监控所述卸载事件。
[0044]在示例性实施例,可以由所述应用程序在所述终端设备创建监控进程。用户新安装应用程序后,在应用程序启动后,该应用程序的主进程可以创建所述监控进程。所述监控进程用于监听所述应用程序的安装目录,当安装目录发生变化后,会主动将发生的变化通知给所述监控进程,例如,可以用Linux内核中的inotify机制进行通知。当用户退出所述应用程序或者第三方清理软件强制停止所述应用程序的主进程时,监控进程依然存在,可以继续监听软件是否被卸载。例如,可以通过java本地接口(Java Native Interface,JNI)方式直接在I inux下创建进程。
[0045]在示例性实施例,所述监控进程可以对位于所述终端设备桌面上的应用程序APP的快捷方式)进行监听,若任一APP被删除,则触发所述卸载事件。
[0046]在示例性实施例,所述监控进程可以监听所述应用程序的安装目录,采用所述监控进程接收删除通知,所述删除通知是系统在所述应用程序的安装目录被删除后发送的;根据所述删除通知触发所述卸载事件。
[0047]在步骤S120,若其中任一所述应用程序监听到另一所述应用程序触发所述卸载事件,则响应所述卸载事件。
[0048]在示例性实施例,其中所述响应所述卸载事件包括:监听到另一所述应用程序触发所述卸载事件的所述应用程序弹出用于收集反馈信息的对话框;将所述反馈信息发送到服务器端。
[0049]在示例性实施例,其中所述响应所述卸载事件包括:监听到另一所述应用程序触发所述卸载事件的所述应用程序启动包括预设URL的浏览器,根据所述预设URL,采用所述浏览器将所述卸载事件信息发送给服务器,其中所述预设URL指向所述服务器。通过所述包括预设URL的浏览器向用户展示调查页面,以使所述用户在所述调查页面中填写卸载原因。
[0050]所述卸载事件信息可以包括卸载原因,被卸载的所述应用程序所在的设备的标识信息等发送给所述服务器。例如,所述主进程将该应用程序的信息以及该应用程序所在终端设备的标识信息发送给所述监控进程,所述应用程序的标识信息例如软件的版本号,所在设备的标识信息例如设备ID和/或机型等。
[0051]在示例性实施例,还包括:安装第三应用程序和/或第四应用程序和/或至第η应用程序;预先设置所述第一应用程序、所述第二应用程序、所述第三应用程序、所述第四应用程序至所述第η应用程序之间相互监听卸载事件;若其中任一所述应用程序监听到另一所述应用程序触发所述卸载事件,则响应所述卸载事件。
[0052]在示例性实施例,其中所述响应所述卸载事件包括:监听到另一所述应用程序触发所述卸载事件的所述应用程序按照预设分配原则选定其中至少一所述应用程序用于响应所述卸载事件;所述选定的应用程序弹出用于收集反馈信息的对话框;将所述反馈信息发送到服务器端。
[0053]在示例性实施例,其中监听到另一所述应用程序触发所述卸载事件的所述应用程序按照预设分配原则选定其中至少一所述应用程序用于响应所述卸载事件包括:监听到另一所述应用程序触发所述卸载事件的所述应用程序将卸载事件信息发送至所述服务器端;所述服务器端按照所述预设分配原则选定其中至少一所述应用程序用于响应所述卸载事件。
[0054]在示例性实施例,其中所述卸载事件信息包括被卸载的所述应用程序的终端设备信息和所述被卸载的应用程序信息。
[0055]现有技术中采用调用操作系统的底层的本地方法,创建一个后台进程,在一个固定的间隔,进行轮询,不断的查询进程是否存在,如果进程存在,则不做任何操作,如果进程不存在了,则向服务器发送统计信息,提示应用程序已经被卸载。这种方式需要调用和用户操作系统相关的本地方法,平台不同实现的代码就有差异,不利于代码的发布和维护,一个功能需要多套实现,而且需要根据用户所使用的操作系统,选择具体的本地代码实现,开发和部署都存在很大的难度,维护成本也比较高。
[0056]此外,对于轮询的本地进程,由于只是在后台查询系统信息,可能会被防火墙等软件拦截,无法正常收集讯息,即使能够正常收集信息,和用户的交互能力也受到限制,无法使用图形界面,获得进一步的,如用户卸载原因等信息反馈,统计能力受到限制。
[0057]本发明的实现不依赖于操作系统的底层实现,不需要在应用程序中嵌入和操作系统相关的本地代码,也不会引起防火墙的误报,适用范围很广,维护上,只需要维护一套实现即可,不需要维护多套代码。
[0058]图2示意性示出根据本公开示例实施方式的监听软件被卸载的方法的流程图。
[0059]如图2所示,在步骤S210,第一应用程序和第二应用程序之间相互保持心跳连接,相互监听卸载事件。
[0060]在示例性实施例,其中所述第一应用程序和所述第二应用程序来源于同一应用程序提供者,并且下载安装到同一终端设备。
[0061]网络中的接收和发送数据都是使用操作系统中的SOCKET进行实现。通过在所述第一应用程序和所述第二应用程序之间创建心跳连接,TCP就会在一定的时间(比如预先设置的是3秒钟)内发送预先设置的次数的心跳(比如说2次)。所谓“心跳”就是定时发送一个自定义的结构体(例如,心跳包或心跳帧),以确保链接的有效性。
[0062]例如,可以让所述第一应用程序定时发送一个固定信息给所述第二应用程序,所述第二应用程序收到后回复一个固定信息给所述第一应用程序,如果所述第二应用程序超过预设时间没有收到所述第一应用程序发送的所述固定信息,则认为所述第一应用程序已经被卸载。
[0063]在步骤S220,若其中一所述应用程序监听到另一所述应用程序触发所述卸载事件,则弹出用于收集反馈信息的对话框。
[0064]在示例性实施例,需要用户安装应用程序提供商两个或以上不同类型的应用程序,应用程序之间互相保持心跳连接,监控卸载事件。例如用户同时安装了应用A和B,A和B之间互相监听卸载事件。用户无法在同一时间点同时卸载两个应用。一旦发现对方被卸载,则可以做出相应的操作,如弹出对话框,收集用户意见,反馈给服务器端进行信息收集。
[0065]在步骤S230,将所述反馈信息发送到服务器端。
[0066]在示例性实施例,可以通过即时通信方式将所述反馈信息发送到服务器端,可以是异步JavaScript和XML(Asynchronous Javascript+XML,ajax)方式。
[0067]即时通信可以及时将用户填写的信息上传给服务器,不用等待全部填写完毕才上传。例如,用户启动所述应用程序后的很短时间,由于对所述应用程序不满意或者出现闪退等现象,进行卸载操作,此时,可以通过弹出对话框,将卸载原因通知给服务器。有利于收集第一手数据。
[0068]例如,某一用户已经安装了应用A和应用B,用户卸载应用A,此时应用B监听到了卸载事件,应用B将应用A卸载事件汇报服务器端,服务器端安排应用B弹出反馈收集对话框,提示用户输入卸载原因。用户输入卸载原因后提交,服务器端得到统计数据,进行归档。
[0069]图3示意性示出根据本公开示例实施方式的监听软件被卸载的方法的流程图。
[0070]如图3所示,在步骤S310,在同一终端设备下载来自同一应用程序提供者的n(n23)个应用程序。
[0071]在步骤S320,预先设置所述η个应用程序之间相互监听卸载事件。
[0072]在步骤S330,若其中任一所述应用程序监听到另一所述应用程序触发所述卸载事件,按照预设分配原则选定其中至少一所述应用程序用于响应所述卸载事件。
[0073]在示例性实施例,所述预设分配原则可以是:这些应用程序的主进程当前是否被打开或者某一应用程序是否处于空闲状态或者用户使用应用程序的偏好等。
[0074]在示例性实施例,对于多个应用程序,可以共享一个监控卸载事件的列表,互相监听,一旦某个应用被卸载,其他应用在收到消息后,可以处理卸载事件并进行反馈。例如,在同一终端设备上下载安装来自小米的三个应用程序分别为应用Α、应用B和应用C,其中,所述应用A和所述应用B之间相互监控卸载事件,所述应用B和所述应用C之间相互监控卸载事件,所述应用A和所述应用C之间相互监控卸载事件。
[0075]在步骤S340,所述选定的应用程序弹出用于收集反馈信息的对话框。
[0076]
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1