本发明涉及计算机技术领域,尤其涉及一种推送消息的推送方法及装置。
背景技术:
随着移动通信技术的法阵和终端技术的不断发展,在手机上集成的功能越来越多,手机已经不仅仅是传统意义上的用来发短信和打电话的通信终端了,而逐步发展成了用户的个人信息业务终端。
用户可以在终端上安装各种应用程序,例如聊天软件、游戏软件、支付软件等等,这些软件或应用均可以通过终端即时的接收网络侧发送的应用消息,即接收对应的应用服务器发送的消息推送,例如,新邮件消息通知、新qq消息通知等等。
在相关的技术方案中,为了实现每一个应用的消息的推送,在每一个应用中都内置了一个push服务,在终端中安装的客户端接收到应用服务器发送的推送消息时,启动该应用中内置的push服务进程,并通过该push服务进程来向终端发送推送消息并在终端上预设的推送消息展示区域进行展示。若某一个应用对应的push服务进程因为某一种原因被注销,就可能造成该应用所对应的推送消息不能成功推送或不能及时进行推送。
技术实现要素:
本发明实施例提出了一种推送消息的推送方法,可以解决因为推送消息的推送存在的容易出现漏推送从而导致的推送消息的推送的完整性不足的技术问题。
一种推送消息的推送方法,包括:
加载预定义的后台常驻的推送消息管理进程;
获取已启动的一个或一个以上的应用对应的应用进程;
通过所述推送消息管理进程接收所述一个或一个以上的应用各自对应的应用服务器下发的推送消息;
通过所述推送消息管理进程将所述推送消息发送给该推送消息对应的应用对应的应用进程,由该应用对应的应用进程处理所述接收到的推送消息。
在其中一个实施例中,所述通过所述推送消息管理进程接收所述一个或一个以上的应用各自对应的应用服务器下发的推送消息还包括:
通过所述推送消息管理进程定期询问所述一个或一个以上的应用对应的应用服务器,所述应用服务器用于在存在推送消息时将所述推送消息下发。
在其中一个实施例中,所述通过所述推送消息管理进程定期询问所述一个或一个以上的应用对应的应用服务器还包括:
确定所述已启动的一个或一个以上的应用的优先级;
根据所述优先级确定所述已启动的一个或一个以上的应用在轮询时的询问周期;
按照所述与每一个应用对应的询问周期,通过所述推送消息管理进程询问该应用对应的应用服务器。
在其中一个实施例中,所述方法还包括:
根据所述优先级确定所述已启动的一个或一个以上的应用对应的推送消息发送间隔;
根据所述与每一个应用对应的推送消息发送间隔,通过所述推送消息管理进程将与该应用对应的推送消息定期发送给该应用对应的应用进程。
在其中一个实施例中,所述通过所述推送消息管理进程将所述推送消息发送给该推送消息对应的应用对应的应用进程还包括:
若在通过所述推送消息管理进程将所述推送消息发送给该推送消息对应的应用对应的应用进程时,所述应用进程未启动或已关闭,则将该推送消息缓存,在该应用进程再次被启动时,通过所述推送消息管理进程将缓存的推送消息发送给该应用进程。
此外,在本发明实施例中,还提出了一种推送消息的推送装置。
一种推送消息的推送装置,包括:
推送消息管理进程加载模块,用于加载预定义的后台常驻的推送消息管理进程;
已启动应用进程确定模块,用于获取已启动的一个或一个以上的应用对应的应用进程;
推送消息接收模块,用于通过所述推送消息管理进程接收所述一个或一个以上的应用各自对应的应用服务器下发的推送消息;
推送消息下发模块,用于通过所述推送消息管理进程将所述推送消息发送给该推送消息对应的应用对应的应用进程,由该应用对应的应用进程处理所述接收到的推送消息。
在其中一个实施例中,所述推送消息接收模块还用于通过所述推送消息管理进程定期询问所述一个或一个以上的应用对应的应用服务器,所述应用服务器用于在存在推送消息时将所述推送消息下发。
在其中一个实施例中,所述推送消息接收模块还用于确定所述已启动的一个或一个以上的应用的优先级;根据所述优先级确定所述已启动的一个或一个以上的应用在轮询时的询问周期;按照所述与每一个应用对应的询问周期,通过所述推送消息管理进程询问该应用对应的应用服务器。
在其中一个实施例中,所述推送消息下发模块还用于根据所述优先级确定所述已启动的一个或一个以上的应用对应的推送消息发送间隔;根据所述与每一个应用对应的推送消息发送间隔,通过所述推送消息管理进程将与该应用对应的推送消息定期发送给该应用对应的应用进程。
在其中一个实施例中,所述推送消息下发模块还用于若在通过所述推送消息管理进程将所述推送消息发送给该推送消息对应的应用对应的应用进程时,所述应用进程未启动或已关闭,则将该推送消息缓存,在该应用进程再次被启动时,通过所述推送消息管理进程将缓存的推送消息发送给该应用进程。
采用了上述推送消息的推送方法和装置之后,对终端中接收推送消息的应用来讲,将所有的应用程序对应的相应的推送消息的接收以及推送由终端中定义的推送消息管理进程来完成,即由推送消息管理进程接收各个应用服务器下发的推送消息,并且,将接收到的推送消息下发给各个应用进程进行处理。相较于传统技术中由各个应用内置的推送服务进程分别处理本应用的推送消息的方案,由于推送消息的所有操作均是由同一的推送消息管理进程来完成的,避免了单个应用分别处理的情况下容易出现的推送服务进程加载失败或者被其他进程关闭的现象、以及导致的推送消息被漏推送或者推送不及时的现象,提高了推送消息在推送过程中的完整性和时效性,提高了用户体验。进一步的,因为所有的应用的推送消息可以由同一个进程来完成,减少了在终端中运行的进程数量,减少了对终端资源的占用,提高了资源利用率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
其中:
图1为一个实施例中一种推送消息的推送方法的流程示意图;
图2为一个实施例中一种推送消息的推送装置的结构示意图;
图3为一个实施例中运行前述推送消息的推送方法的计算机设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在相关技术的推送消息的推送过程中,每一个推送消息的推送均需要启动相应的应用中内置的push服务进程,也就是说,在终端中需要开启多个push服务进程,并且,每一个push服务进程负责一个相应的应用的推送消息的推送。发明人经研究发现,在上述推送消息的推送过程中,因为每一个推送消息的推送均需要启动相应的应用中内置的push服务进程,容易导致某一个应用对应的推送消息容易出现推送不成功而被漏掉的情况,用户可能不能及时接收到相应的推送消息,若刚好该推送消息是比较重要的消息,则可能对用户造成较大的影响,即存在容易出现漏推送导致了推送消息的推送存在不及时和不完整的现象。
在基于上述相关技术方案容易出现漏推送导致了推送消息的推送存在不及时和不完整的现象的基础上,在本实施例中,提出了一种推送消息的推送方法,该方法的实现可依赖于计算机程序,该计算机程序可运行于基于冯诺依曼体系的计算机系统之上,该计算机程序可以是终端中的应用程序对应的推送消息的推送管理程序。该计算机系统可以是运行上述计算机程序的例如智能手机、平板电脑、个人电脑等服务器或终端。
具体的,如图1所示,上述推送消息的推送方法包括如下步骤s102-s108:
步骤s102:加载预定义的后台常驻的推送消息管理进程。
在传统技术中,在智能手机等终端设备上安装的每一个应用在运行时或者后台运行时,都会单独开启一个后台推送进程,用来在对应的应用服务器有推送消息下发时,将接收到的推送消息推送给用户。也就是说,在终端上运行了多个后台推送进程。
在本发明中,在终端中定义了一个推送消息管理进程,用来管理所有的应用程序的推送消息的接收、下发及推送,相较于传统技术中的同时运行多个后台推送进程,减少了在后台中运行的进程,减少了对终端内存的占用。
在本实施例中,在终端中预定义有推送消息管理进程,该推送消息管理进程可以与终端中安装的所有的应用进行通信,并且,对每一个应用的推送消息进行接收和下发。需要说明的是,在本实施例中,该推送消息管理进程是在终端开启之后即在后台运行的,也就是说,推送消息管理进程是后台常驻的。
步骤s104:获取已启动的一个或一个以上的应用对应的应用进程。
在本实施例中,推送消息管理进程在当前需要进行推送消息的相关操作所对应的应用是当前正在前台或者后台运行的应用进程所对应的应用,或者,是在设置中设置了在当前需要进程推送消息的推送的应用。
因此,首先需要确定在终端中已启动的应用所对应的应用进程。
步骤s106:通过所述推送消息管理进程接收所述一个或一个以上的应用各自对应的应用服务器下发的推送消息。
在终端中运行的推送消息管理进程与上述应用之间建立通信关系,并且,每一个应用对应的应用服务器所下发的推送消息,是下发至终端中运行的推送消息管理进程,并由该推送消息管理进程进行推送消息的推送。
具体的,接收应用服务器下发的推送消息的过程,是通过推送消息管理进程向每一个应用对应的应用服务器进行轮询的过程,也就是说,在轮询的过程中,若在应用服务器中存在推送消息,则将该推送消息下发给涂松消息管理进程。
需要说明的是,在本实施例中,通过推送消息管理进程向应用服务器进行轮询或询问的频率,可以是实时的向应用服务器进行轮询或询问,或者,按照预设的周期或时间间隔,向应用服务器进行轮询或询问。
具体的,所述通过所述推送消息管理进程接收所述一个或一个以上的应用各自对应的应用服务器下发的推送消息还包括:通过所述推送消息管理进程定期询问所述一个或一个以上的应用对应的应用服务器,所述应用服务器用于在存在推送消息时将所述推送消息下发。
也就是说,为了避免推送消息管理进程需要不断的向各个应用服务器进行轮询,并且在存在推送消息时不断的向每一个应用进行推送消息的推送,占用终端资源,可以将推送消息管理进程向应用服务器进行轮询的时间设置为定时向各个应用服务进行轮询。
进一步的,用户对于不同的应用存在不同的推送消息推送的要求,例如,针对微信、qq等聊天软件,用户希望实时的接收消息,以免漏掉重要消息或者不能及时接收到相应的推送消息,而例如游戏、视频软件等应用,用户并不希望实时的接收消息,只在设定的时间或者定期接收推送消息即可。在此种情况下,针对所有的应用,均采用实时不断的向每一个应用服务器进行询问并接收下发的推送消息、或者采用同一周期或时间间隔向每一个应用服务器进行询问并接收下发的推送消息,是不符合用户预先的需求,或者,在用户并不急需的应用的推送消息上占用终端的相关资源,是对终端资源的一种浪费。
因此,可以根据不同的应用设置不同的询问周期或询问间隔。
具体的,在一个实施例中,所述通过所述推送消息管理进程定期询问所述一个或一个以上的应用对应的应用服务器还包括:确定所述已启动的一个或一个以上的应用的优先级;根据所述优先级确定所述已启动的一个或一个以上的应用在轮询时的询问周期;按照所述与每一个应用对应的询问周期,通过所述推送消息管理进程询问该应用对应的应用服务器。
也就是说,针对终端中安装的所有的应用程序,均设定其对应的优先级,并且,同一优先级下的应用对用户的中药程度或者推送消息的推送时间的需求是相同的,因此,同一优先级下的应用可以采用同一种推送消息的推送策略。
对于当前需要进行询问的应用所对应的应用进程,确定对应的优先级,并且根据优先级确定与每一个应用对应的在询问应用程序的过程中进行询问时的询问周期。在每一个应用对应的询问周期确定的情况下,对每一个应用分别进行处理,也就是说,按照每一个应用对应的询问周期,通过推送消息管理进程,分别向与该应用对应的应用服务器进行询问。
步骤s108:通过所述推送消息管理进程将所述推送消息发送给该推送消息对应的应用对应的应用进程,由该应用对应的应用进程处理所述接收到的推送消息。
推送消息管理进程在接收到各个应用服务器下发的推送消息之后,即可将接收到的每一个推送消息下发给与该推送消息对应的应用,应用进程在接收到推送消息管理进程发送的推送消息之后,按照预设的推送消息展示方式展示接收到的推送消息。
需要说明的是,并不是所有的推送消息在接收到之后即马上发送给对应的应用进程进行处理,可以根据该推送消息的重要程度来确定具体的发送时间。
具体的,在一个可选的实施例中,上述推送消息的推送方法还包括:根据所述优先级确定所述已启动的一个或一个以上的应用对应的推送消息发送间隔;根据所述与每一个应用对应的推送消息发送间隔,通过所述推送消息管理进程将与该应用对应的推送消息定期发送给该应用对应的应用进程。
也就是说,针对每一个应用或者每一个应用优先级,确定相应的推送消息放间隔。在某一个应用对应的推送消息发送间隔确定之后,在推送消息管理进程接收到与该应用对应的推送消息之后,按照该推送消息发送间隔来确定该推送消息的发送时间。例如,对于app1来讲,在1:00时刻发送了一则推送消息给app1对应的应用进程,在1:10分接收到app1对应的应用服务器下发的推送消息,因为与app1对应的推送消息发送间隔为30min,则该推送消息的发送时间为1:30。从而避免了应用被不停的唤醒来处理推送消息的相关操作,提高了对终端资源的有效利用率。
可选的,在一个实施例中,还可能存在下面这种情况,在推送消息管理进程接收到与某一个应用对应的推送消息之后,在将该推送消息下发时,该应用对应的应用进程却已经被关闭,在此种情况下,不能继续完成该推送消息的推送,需要重新启动该应用进程,而应用进程的关闭可能是用户主动的行为美丽如不想接收该应用对应的推送消息,因为,在此种情况下,处理的方式并不是重新启动该应用进程,而是待下一次该应用进程被启动时继续推送该推送消息,既避免了该应用进程被重新启动,也避免了对应的推送消息被漏推送。
具体的,通过所述推送消息管理进程将所述推送消息发送给该推送消息对应的应用对应的应用进程还包括:若在通过所述推送消息管理进程将所述推送消息发送给该推送消息对应的应用对应的应用进程时,所述应用进程未启动或已关闭,则将该推送消息缓存,在该应用进程再次被启动时,通过所述推送消息管理进程将缓存的推送消息发送给该应用进程。
也就是说,在因为某种原因导致推送消息在推送的过程中接收该推送消息的应用进程被关闭而导致推送消息的推送失败的情况下,推送消息管理进程将推送失败的推送消息进行缓存,在下一次该应用进程启动时再将该推送消息发送给该应用进程并由该应用进程进行推送。
此外,在一个实施例中,如图3所示,还提出了一种推送消息的推送装置,包括推送消息管理进程加载模块102、已启动应用进程确定模块104、推送消息接收模块106以及推送消息下发模块108,其中:
推送消息管理进程加载模块102,用于加载预定义的后台常驻的推送消息管理进程;
已启动应用进程确定模块104,用于获取已启动的一个或一个以上的应用对应的应用进程;
推送消息接收模块106,用于通过所述推送消息管理进程接收所述一个或一个以上的应用各自对应的应用服务器下发的推送消息;
推送消息下发模块108,用于通过所述推送消息管理进程将所述推送消息发送给该推送消息对应的应用对应的应用进程,由该应用对应的应用进程处理所述接收到的推送消息。
可选的,在一个实施例中,推送消息接收模块106还用于通过所述推送消息管理进程定期询问所述一个或一个以上的应用对应的应用服务器,所述应用服务器用于在存在推送消息时将所述推送消息下发。
可选的,在一个实施例中,推送消息接收模块106还用于确定所述已启动的一个或一个以上的应用的优先级;根据所述优先级确定所述已启动的一个或一个以上的应用在轮询时的询问周期;按照所述与每一个应用对应的询问周期,通过所述推送消息管理进程询问该应用对应的应用服务器。
可选的,在一个实施例中,推送消息下发模块108还用于根据所述优先级确定所述已启动的一个或一个以上的应用对应的推送消息发送间隔;根据所述与每一个应用对应的推送消息发送间隔,通过所述推送消息管理进程将与该应用对应的推送消息定期发送给该应用对应的应用进程。
可选的,在一个实施例中,推送消息下发模块108还用于若在通过所述推送消息管理进程将所述推送消息发送给该推送消息对应的应用对应的应用进程时,所述应用进程未启动或已关闭,则将该推送消息缓存,在该应用进程再次被启动时,通过所述推送消息管理进程将缓存的推送消息发送给该应用进程。
采用了上述推送消息的推送方法和装置之后,对终端中接收推送消息的应用来讲,将所有的应用程序对应的相应的推送消息的接收以及推送由终端中定义的推送消息管理进程来完成,即由推送消息管理进程接收各个应用服务器下发的推送消息,并且,将接收到的推送消息下发给各个应用进程进行处理。相较于传统技术中由各个应用内置的推送服务进程分别处理本应用的推送消息的方案,由于推送消息的所有操作均是由同一的推送消息管理进程来完成的,避免了单个应用分别处理的情况下容易出现的推送服务进程加载失败或者被其他进程关闭的现象、以及导致的推送消息被漏推送或者推送不及时的现象,提高了推送消息在推送过程中的完整性和时效性,提高了用户体验。进一步的,因为所有的应用的推送消息可以由同一个进程来完成,减少了在终端中运行的进程数量,减少了对终端资源的占用,提高了资源利用率。
在一个实施例中,如图3所示,图3展示了一种运行上述推送消息的推送方法的基于冯诺依曼体系的计算机系统的终端。该计算机系统可以是智能手机、平板电脑、掌上电脑等终端设备。具体的,可包括通过系统总线连接的外部输入接口1001、处理器1002、存储器1003和输出接口1004。其中,外部输入接口1001可选的可至少包括网络接口10012。存储器1003可包括外存储器10032(例如硬盘、光盘或软盘等)和内存储器10034。输出接口1004可至少包括显示屏10042等设备。
在本实施例中,本方法的运行基于计算机程序,该计算机程序的程序文件存储于前述基于冯诺依曼体系的计算机系统的外存储器10032中,在运行时被加载到内存储器10034中,然后被编译为机器码之后传递至处理器1002中执行,从而使得基于冯诺依曼体系的计算机系统中形成逻辑上的推送消息管理进程加载模块102、已启动应用进程确定模块104、推送消息接收模块106以及推送消息下发模块108。且在上述推送消息的推送方法执行过程中,输入的参数均通过外部输入接口1001接收,并传递至存储器1003中缓存,然后输入到处理器1002中进行处理,处理的结果数据或缓存于存储器1003中进行后续地处理,或被传递至输出接口1004进行输出。
具体的,在本实施例中,处理器1002用于加载预定义的后台常驻的推送消息管理进程;获取已启动的一个或一个以上的应用对应的应用进程;通过所述推送消息管理进程接收所述一个或一个以上的应用各自对应的应用服务器下发的推送消息;通过所述推送消息管理进程将所述推送消息发送给该推送消息对应的应用对应的应用进程,由该应用对应的应用进程处理所述接收到的推送消息。
在可选的实施例中,处理器1002还用于通过所述推送消息管理进程定期询问所述一个或一个以上的应用对应的应用服务器,所述应用服务器用于在存在推送消息时将所述推送消息下发。
在可选的实施例中,处理器1002还用于确定所述已启动的一个或一个以上的应用的优先级;根据所述优先级确定所述已启动的一个或一个以上的应用在轮询时的询问周期;按照所述与每一个应用对应的询问周期,通过所述推送消息管理进程询问该应用对应的应用服务器。
在可选的实施例中,处理器1002还用于根据所述优先级确定所述已启动的一个或一个以上的应用对应的推送消息发送间隔;根据所述与每一个应用对应的推送消息发送间隔,通过所述推送消息管理进程将与该应用对应的推送消息定期发送给该应用对应的应用进程。
在可选的实施例中,处理器1002还用于若在通过所述推送消息管理进程将所述推送消息发送给该推送消息对应的应用对应的应用进程时,所述应用进程未启动或已关闭,则将该推送消息缓存,在该应用进程再次被启动时,通过所述推送消息管理进程将缓存的推送消息发送给该应用进程。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。