消息推送方法、装置和消息推送服务器的制造方法
【专利摘要】本发明公开了一种消息推送方法、装置和消息推送服务器。其中,消息推送方法包括以下步骤:获取登录有同一用户的N个终端设备的当前状态,所述当前状态为工作状态或闲置状态,N≥2;判定所述N个终端设备中是否存在处于工作状态的终端设备;若存在处于工作状态的终端设备,向处于工作状态的终端设备中之一推送消息。本发明只向处于工作状态的终端设备推送消息,而不重复向其他终端设备推送消息,使其他终端设备不受打扰,就减少了其电量消耗,延长了其续航时间。
【专利说明】
消息推送方法、装置和消息推送服务器
技术领域
[0001]本发明涉及互联网技术领域,更具体地,涉及一种消息推送方法、装置和消息推送服务器。
【背景技术】
[0002]随着科学技术的发展,终端设备越来越普及,各类终端应用也层出不穷。终端用户在注册某一终端应用后,会获得指定的用户账号,终端应用的服务器端都会向用户账号推送各种消息。不管用户在何种终端设备上登录,推送的消息都会显示在终端设备上。这为终端用户的生活或工作带来了便捷。
[0003]然而,随着终端设备的种类不断增多,有时,同一用户账号会在多个终端设备上登录。现有技术中,终端应用的服务器直接向用户账号推送消息,因此在这多个终端设备上都会接收到同样的消息。而现有的终端设备普遍存在的问题就是电池的续航能力不足。如果这些登录有同一用户账号的多个终端设备中存在处于闲置状态的终端设备,在接收到重复的消息时,其会从闲置状态转变到工作状态,这一过程会消耗终端设备的电量,缩短其续航时间。
【发明内容】
[0004]鉴于上述问题,本发明提出了一种消息推送方法、装置和消息推送服务器,解决现有技术因重复推送消息而缩短了终端设备续航时间的问题。
[0005]第一方面,本发明实施例提供了一种消息推送方法,包括以下步骤:获取登录有同一用户的N个终端设备的当前状态,所述当前状态为工作状态或闲置状态,N多2;判定所述N个终端设备中是否存在处于工作状态的终端设备;若存在处于工作状态的终端设备,向处于工作状态的终端设备中之一推送消息。
[0006]在上述实施例中,所述向处于工作状态的终端设备中之一推送消息的步骤,具体为:向处于工作状态的终端设备中当前可续航时间最长的终端设备推送消息。
[0007]在上述实施例中,所述向处于工作状态的终端设备中之一推送消息的步骤,具体为:向处于工作状态的终端设备中所述用户的历史登录次数最多的终端设备推送消息。
[0008]在上述实施例中,所述向处于工作状态的终端设备中之一推送消息的步骤,具体为:向处于工作状态的终端设备中所述用户的历史在线时间最长的终端设备推送消息。
[0009]在上述实施例中,还包括以下步骤:若不存在处于工作状态的终端设备,向所述N个终端设备中之一推送消息。
[0010]在上述实施例中,所述向所述N个终端设备中之一推送消息的步骤,具体为:向所述N个终端设备中当前可续航时间最长的终端设备推送消息。
[0011]在上述实施例中,所述向所述N个终端设备中之一推送消息的步骤,具体为:向所述N个终端设备中所述用户的历史登录次数最多的终端设备推送消息。
[0012]在上述实施例中,所述工作状态为解锁状态,所述闲置状态为锁屏状态。
[0013]第二方面,本发明实施例提供了一种消息推送装置,该消息推送装置具有实现上述第一方面中消息推送行为的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述消息推送装置,包括:获取模块,用于获取登录有同一用户的N个终端设备的当前状态,所述当前状态为工作状态或闲置状态;判定模块,用于判定所述N个终端设备中是否存在处于工作状态的终端设备;推送模块,用于在判定模块判定到所述N个终端设备中存在处于工作状态的终端设备时,向处于工作状态的终端设备中之一推送消息。
[0014]第三方面,本发明实施例提供了一种消息推送服务器,包括:状态获取模块,用于获取登录有同一用户的N个终端设备的当前状态,所述当前状态为工作状态或闲置状态;状态判定模块,用于判定所述N个终端设备中是否存在处于工作状态的终端设备;消息推送模块,用于在状态判定模块判定到所述N个终端设备中存在处于工作状态的终端设备时,向处于工作状态的终端设备中之一推送消息。
[0015]相对于现有技术,基于本发明提供的方案,服务器获取登录有同一用户的N个终端设备的当前状态,所述当前状态为工作状态或闲置状态,判定所述N个终端设备中是否存在处于工作状态的终端设备,若存在处于工作状态的终端设备,向处于工作状态的终端设备中之一推送消息。因此,服务器只向处于工作状态的终端设备推送消息,而不重复向其他终端设备推送消息,使其他终端设备不受打扰,就减少了其电量消耗,延长了其续航时间。
[0016]本发明的这些方面或其他方面在以下实施例的描述中会更加简明易懂。
【附图说明】
[0017]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0018]图1为本发明一种实施例的消息推送方法的流程图。
[0019]图2为本发明另一种实施例的消息推送方法的流程图。
[0020]图3为本方面一种实施例的消息推送装置的结构示意图。
[0021 ]图4为本方面一种实施例的服务器的结构示意图。
【具体实施方式】
[0022]为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
[0023]在本发明的说明书和权利要求书及上述附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如101、102等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
[0024]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0025]图1为本发明某一种实施例的消息推送方法的流程图。
[0026]—种消息推送方法,该方法在应用程序的服务器上运行,应用程序包括但不限于社交应用、音影视听应用、购物应用、新闻资讯应用和游戏应用,例如QQ、微信、支付宝等等。应用程序的服务器管理有众多用户,这些用户已经经过注册并具有表征其唯一性的用户名。每个用户通过输入用户名和密码,经验证后进入应用程序。服务器根据需要向指定的用户推送消息,用户登录后的终端设备即接收到服务器推送的消息。本实施例中,终端设备包括但不限于手机、智能手表、个人电脑、手持计算机、电子阅读器或平板电脑。如图1所示,其包括以下步骤:
[0027]SlOl:获取登录有同一用户的N个终端设备的当前状态,所述当前状态为工作状态或闲置状态。
[0028]N个终端设备上均安装有相应的应用程序,同时N个终端设备上登录有该应用程序的同一用户。
[0029]在一种实现方式中,终端设备自身确定其当前状态。各终端设备会实时或定时获取表征自身当前状态的状态数据,依据状态数据确定自身的当前状态,再将自身的当前状态发送至服务器,服务器即获取到各终端设备的当前状态。或者,服务器向各终端设备发送当前状态获取请求,各终端设备响应该状态获取请求,获取自身的状态数据,依据状态数据确定自身的当前状态,再将自身的当前状态发送至服务器,服表征自身当前状态的务器即获取到各终端设备的当前状态。
[0030]在另一种实现方式中,终端设备的当前状态由服务器确定。各终端设备会实时或定时获取表征自身当前状态的状态数据,将状态数据发送至服务器,服务器依据该状态数据确定各终端设备的当前状态。或者,服务器向各终端设备发送当前状态获取请求,各终端设备响应该状态获取请求,获取自身的状态数据,将状态数据发送至服务器,服务器依据该状态数据确定各终端设备的当前状态。
[0031]其中,当前状态包括工作状态或闲置状态。工作状态是指终端设备处于电量消耗相对较高的状态,此时,终端设备的CPU使用率较高或者内存占用较多,例如亮屏状态或者解锁状态。闲置状态是指终端设备处于电量消耗相对较低的状态,此时,终端设备的CPU使用率较低或者内存占用较少,例如灭屏状态或者锁屏状态。
[0032]另外,状态数据包括硬件数据和/或软件数据。可依据硬件数据来确定终端设备的当前状态。例如,获取终端设备显示屏的亮度信息,依据显示屏的亮度信息确定终端设备的当前状态。也可依据软件数据来确定终端设备的当前状态,例如检测终端设备是否有特定进程启动、设备管理器的运行状况等。
[0033]在终端设备上也可预装相应的安全软件,这些安全软件可读取终端设备的硬件信息或软件信息,从而确定各终端设备的当前状态,再将各终端设备的当前状态发送至服务器。
[0034]S102:判定所述N个终端设备中是否存在处于工作状态的终端设备。
[0035]当前状态为工作状态和闲置状态,则各终端设备可能处于工作状态,也可能处于闲置状态。服务器根据获取到的各终端设备的当前状态,判定这些终端设备中是否存在处于工作状态的终端设备。
[0036]S103:若存在处于工作状态的终端设备,向处于工作状态的终端设备中之一推送消息。
[0037]如果N个终端设备中存在处于工作状态的终端设备,就向这些处于工作状态的终端设备中的一个推送消息,而不重复向处于闲置状态的终端设备推送消息,处于闲置状态的终端设备就不会被唤醒,从而减少了终端设备的电能消耗,提升其续航时间。
[0038]需要说明的是,本实施例中,N的取值为大于或等于2。例如,N取值为2,即有两个终端设备。如果存在处于工作状态的终端设备,则处于工作状态的终端设备的数量为I或2,如果仅有一个终端设备处于工作状态,就向仅有的处于工作状态的终端设备推送消息。如果处于工作状态的终端设备的数量至少为两个,则可以向其中之一推送消息,或者向其中的部分推送消息,或者向所有处于工作状态的终端设备推送消息。
[0039]在一种实施例中,步骤S103具体为:若存在处于工作状态的终端设备,向处于工作状态的终端设备中当前可续航时间最长的终端设备推送消息。具体而言,如果存在处于工作状态的终端设备,服务器获取处于工作状态的各终端设备的当前可续航时间,对比这些终端设备的当前可续航时间,确定当前可续航时间最长的终端设备,仅向处于工作状态的终端设备中当前可续航时间最长的终端设备推送消息,而不重复向其他终端设备推送消息,从而尽量减少其他终端设备的电能消耗,提升其他终端设备的续航时间。当然,也可以设定某一可续航时间阈值,服务器获取处于工作状态的各终端设备的当前可续航时间后,将这些终端设备的当前可续航时间与可续航时间阈值作对比,仅向处于工作状态的终端设备中当前可续航时间大于可续航时间阈值的终端设备推送消息,或者仅向当前可续航时间大于可续航时间阈值的终端设备中之一推送消息。
[0040]在一种实现方式中,终端设备自身可根据电池输出电压的变化,获取自身电池的剩余电量,将剩余电量发送至服务器,则服务器向剩余电量最多的终端设备推送消息。更进一步的,服务器存储有终端设备所对应的功耗信息,服务器获取终端设备的剩余电量,基于终端设备的功耗信息,计算出终端设备的当前可续航时间,仅向可续航时间最长的终端设备推送消息。
[0041]在另一种实现方式中,终端设备预装有相应的安全软件,这些安全软件可获取终端设备的功耗信息和剩余电量信息,从而预测出终端设备的当前可续航时间,将终端设备的当前可续航时间发送至服务器,服务器仅向可续航时间最长的终端设备推送消息。
[0042]在另一种实施例中,步骤S103具体为:若存在处于工作状态的终端设备,向处于工作状态的终端设备中所述用户的历史登录次数最多的终端设备推送消息。服务器会记录用户每次在终端设备上的登录信息,包括登录时间、登录地点和登录ID等信息,服务器计算用户在终端设备上的历史登录次数,比对各终端设备上用户的历史登录次数,仅向处于工作状态的终端设备中用户的历史登录次数最多的终端设备推送消息。
[0043]由于登录次数的多少往往表征用户的使用频率,用户在终端设备上登录次数多,一定程度上说明用户经常使用该终端设备。因此,向历史登录次数最多的终端设备推送消息,用户可通过该终端设备及时获取到推送的消息,从而提升用户体验。
[0044]在某些情况下,用户可能在多个终端设备上都具有经常登录的习惯。此时,可预先设定历史登录次数阈值,服务器获取处于工作状态的终端设备的用户历史登录次数,查找用户历史登录次数大于历史登录次数阈值的终端设备,向用户历史登录次数大于历史登录次数阈值的终端设备推送消息。则用户经常登录的终端设备均可接收到消息,用户可在任意一个经常登录的终端设备上获取到信息,可进一步提升用户体验。
[0045]在另一种实施例中,步骤S103具体为:若存在处于工作状态的终端设备,向处于工作状态的终端设备中所述用户的历史在线时间最长的终端设备推送消息。服务器会记录用户每次在终端设备上的登录信息,包括登录时间、登录地点、登录ID和下线时间等信息,用户的在线时间即为登录时间和下线时间之间的时间段。服务器统计用户每次的在线时长,计算用户在终端设备上的历史在线时间,比对各终端设备上用户的历史在线时间,仅向用户的历史在线时间最长的终端设备推送消息。
[0046]对于某些应用程序,用户一旦在终端设备上登录后,就不会经常下线,而是保持在线状态在后台运行。对于这类应用程序,用户的在线时间很长,但登录次数不多,例如QQ、微信等。因此,通过用户的历史登录次数来判定用户是否经常使用终端设备,在某些情况下并不准确。本实施例向用户历史在线时间最长的终端设备推送消息,用户可通过该终端设备及时获取到推送的消息,从而提升了用户体验。
[0047]在某些情况下,用户可能在多个终端设备上都具有经常在线的习惯。此时,可预先设定历史在线时间阈值,服务器获取处于工作状态的终端设备的用户历史在线时间,查找用户历史在线时间大于历史在线时间阈值的终端设备,向用户历史在线时间大于历史在线时间阈值的终端设备推送消息。则用户经常登录的终端设备均可接收到消息,用户可在任意一个经常在线的终端设备上获取到信息,可进一步提升用户体验。
[0048]图2为本发明另一种实施例的消息推送方法的流程图。
[0049]—种消息推送方法,该方法在应用程序的服务器上运行,如图2所示,其包括以下步骤:
[0050]S201:获取登录有同一用户的N个终端设备的当前状态,所述当前状态为工作状态或闲置状态。
[0051]S202:判定所述N个终端设备中是否存在处于工作状态的终端设备。
[0052]S203:若存在处于工作状态的终端设备,向处于工作状态的终端设备中之一推送消息。
[0053]S204:若不存在处于工作状态的终端设备,向所述N个终端设备中之一推送消息。
[0054]本实施例在上述实施例的基础上,增加了步骤S204:若不存在处于工作状态的终端设备,向所述N个终端设备中之一推送消息,因此,本实施例将针对步骤S204作详细说明。
[0055]如果N个终端设备中不存在处于工作状态的终端设备,说明所有的终端设备都处于闲置状态,此时,仅向这些终端设备中的一个或者部分推送消息,而不向其他终端设备推送消息。保证了至少有一个终端设备可接收到消息,不会出现信息的遗漏,同时,不重复向其他处于闲置状态的终端设备推送消息,其他处于闲置状态的终端设备就不会被唤醒,从而减少了这些终端设备的电能消耗,提升其续航时间。
[0056]在一种实施例中,步骤S204具体为:如果不存在处于工作状态的终端设备,向N个终端设备中预定的终端设备推送消息。这种预定可以基于用户的自定义,也可以由服务器预定。
[0057]—种实现方式中,应用程序提供自定义选项,供用户选择在所有终端设备均处于闲置状态时,向何终端设备推送消息。服务器基于应用程序可获取终端设备的类型,确定终端设备是手机还是平板电脑等。例如,用户可根据自身的使用习惯,选择只向手机推送消息。则服务器查找所有终端设备中的手机,仅向手机推送消息。
[0058]更进一步的,服务器基于应用程序获取终端设备的类型,还可获取终端设备的品牌和型号。服务器可记录每次用户登录的终端设备的类型、品牌和型号。应用程序在提供自定义选项时,将用户登录过的终端设备的类型、品牌和型号以列表形式呈现给用户,供用户选择。例如,用户可选择仅向360手机推送消息,则服务器会查找所有终端设备中是否有360手机,如果有,则只向该360手机推送消息。
[0059]在另一种实现方式中,可以任意指定一个终端设备,在所有终端设备均处于闲置状态时,仅向指定的终端设备推送消息。例如,服务器可获取各终端设备的网络制式,仅向网络制式较高的终端设备推送消息,保证消息推送的速度。
[0060]在另一种实施例中,步骤S204具体为:若不存在处于工作状态的终端设备,向所述N个终端设备中当前可续航时间最长的终端设备推送消息。具体而言,如果不存在处于工作状态的终端设备,服务器获取各终端设备的当前可续航时间,对比各终端设备的当前可续航时间,确定当前可续航时间最长的终端设备,仅向可续航时间最长的终端设备推送消息。不重复向其他终端设备推送消息,从而减少这些终端设备的电能消耗,进一步提升其续航时间。
[0061]当然,也可以设定某一可续航时间阈值,服务器获取各终端设备的当前可续航时间后,将这些终端设备的当前可续航时间与可续航时间阈值作对比,仅向当前可续航时间大于可续航时间阈值的终端设备推送消息,或者仅向当前可续航时间大于可续航时间阈值的终端设备中之一推送消息。
[0062]在一种实现方式中,终端设备自身可根据电池输出电压的变化,获取自身电池的剩余电量,将剩余电量发送至服务器,则服务器向剩余电量最多的终端设备推送消息。更进一步的,服务器存储有终端设备所对应的功耗信息,服务器获取终端设备的剩余电量,基于终端设备的功耗信息,计算出终端设备的当前可续航时间,仅向可续航时间最长的终端设备推送消息。
[0063]在另一种实现方式中,终端设备预装有相应的安全软件,这些安全软件可获取终端设备的功耗信息和剩余电量信息,从而预测出终端设备的当前可续航时间,将终端设备的当前可续航时间发送至服务器,服务器仅向可续航时间最长的终端设备推送消息。
[0064]在另一种实施例中,步骤S204具体为:若不存在处于工作状态的终端设备,向所述N个终端设备中所述用户的历史登录次数最多的终端设备推送消息。服务器会记录用户每次在终端设备上的登录信息,包括登录时间、登录地点和登录ID等信息,服务器计算用户在终端设备上的历史登录次数,比对各终端设备上用户的历史登录次数,仅向处于工作状态的终端设备中用户的历史登录次数最多的终端设备推送消息。
[0065]在某些情况下,用户可能在多个终端设备上都具有经常登录的习惯。此时,可预先设定历史登录次数阈值,服务器获取各终端设备的用户历史登录次数,查找用户历史登录次数大于历史登录次数阈值的终端设备,向用户历史登录次数大于历史登录次数阈值的终端设备推送消息。则用户经常登录的终端设备均可接收到消息,用户可在任意一个经常登录的终端设备上获知到消息,可进一步提升用户体验。在某些情况下,用户可能在多个终端设备上都具有经常在线的习惯。此时,可预先设定历史在线时间阈值,服务器获取处于工作状态的终端设备的用户历史在线时间,查找用户历史在线时间大于历史在线时间阈值的终端设备,向用户历史在线时间大于历史在线时间阈值的终端设备推送消息。则用户经常登录的终端设备均可接收到消息,用户可在任意一个经常登录的终端设备上获取到信息,可进一步提升用户体验。
[0066]在另一种实施例中,步骤S204具体为:若不存在处于工作状态的终端设备,向所述N个终端设备中所述用户的历史在线时间最长的终端设备推送消息。服务器会记录用户每次在终端设备上的登录信息,包括登录时间、登录地点、登录ID和下线时间等信息,用户的在线时间即为登录时间和下线时间之间的时间段。服务器计算用户在终端设备上的历史在线时间,比对各终端设备上用户的历史在线时间,仅向用户的历史在线时间最长的终端设备推送消息。
[0067]在某些情况下,用户可能在多个终端设备上都具有经常在线的习惯。此时,可预先设定历史在线时间阈值,服务器获取各终端设备的用户历史在线时间,查找用户历史在线时间大于历史在线时间阈值的终端设备,向用户历史在线时间大于历史在线时间阈值的终端设备推送消息。则用户经常登录的终端设备均可接收到消息,用户可在任意一个经常在线的终端设备上获取到信息,可进一步提升用户体验。
[0068]作为上述实施例的改进,在本实施例中,工作状态为解锁状态,闲置状态为锁屏状态。终端设备处于解锁状态时,往往说明用户正在使用终端设备,此时用户可及时获取到推送的消息,终端设备处于锁屏状态时,往往说明用户未使用终端设备。
[0069]具体而言,由于终端设备内都存有设备管理器,通过设备管理器可查看和更改设备属性、更新设备驱动程序、配置设备和卸载设备等信息,终端设备的锁屏或解锁都会激活终端设备的设备管理器。终端设备监听自身的设备管理器,获取屏幕锁定信息,依据屏幕锁定信息判定终端设备当前处于解锁状态还是锁屏状态,再将判定到的状态发送至服务器。或者,在终端设备上预装有相应的安全软件,这些安全软件实时监测终端设备的当前状态,服务器基于这些安全软件获取到终端设备的当前状态。
[0070]在另一个实施例中,工作状态为亮屏状态,闲置状态为灭屏状态。
[0071]—种实现方式中,终端设备的亮屏和灭屏都会激活设备管理器,终端设备从移动终端的设备管理器获得终端设备显示屏的相关数据,确定终端设备是处于亮屏状态,还是灭屏状态。
[0072]另一种实现方式中,部分终端设备在用户未使用时,会自动进入低亮度状态而不灭屏,此时,终端设备显示屏的亮度低于正常使用时的亮度。因此,终端设备获取其显示屏的亮度值,判定显示屏的亮度值是否高于某一预定亮度值,若高于,则确定终端设备处于工作状态,若低于,则确定终端设备处于闲置状态。
[0073]在另一种实施例中,终端设备根据自身的CPU数据,确定自身是否处于工作状态。对于多数终端设备而言,终端设备处于闲置状态时,其CPU使用率相对较低,在预定时间内,其CPU使用率会保持在相对平稳的范围,不会有较大的跳变。当终端设备处于工作状态时,其CPU使用率相对较高,随着用户打开或关闭某一应用程序,其CPU使用率在预定时间内会会有较大的跳变。
[0074]—种实现方式中,终端设备获取自身的CPU使用率,判定自身的CPU使用率是否大于预定使用率,如果大于预定使用率,确定终端设备处于工作状态,如果不大于预定使用率,确定终端设备处于闲置状态。
[0075]另一种实现方式中,终端设备获取自身的CPU使用率,判定自身的CPU使用率在预定时间内的跳变范围是否大于预定范围,如果大于预定范围,确定终端设备处于工作状态,如果不大于预定范围,确定终端设备处于闲置状态。
[0076]图3为本发明一种实施例的消息推送装置的结构示意图。
[0077]一种消息推送装置,包括:获取模块301、判定模块302和推送模块303。获取模块301用于获取登录有同一用户的N个终端设备的当前状态,所述当前状态为工作状态或闲置状态。判定模块302用于判定所述N个终端设备中是否存在处于工作状态的终端设备。推送模块303,用于在判定模块302判定到所述N个终端设备中存在处于工作状态的终端设备时,向处于工作状态的终端设备中之一推送消息。
[0078]N个终端设备上均安装有相应的应用程序,同时N个终端设备上登录有该应用程序的同一用户。在消息推送装置需要向用户推送消息时,获取模块301用于获取该N个终端设备的当前状态。
[0079]在一种实现方式中,终端设备自身确定其当前状态。各终端设备会实时或定时获取表征自身当前状态的状态数据,依据状态数据确定自身的当前状态,再将自身的当前状态发送至获取模块301,获取模块301即获取到各终端设备的当前状态。或者,获取模块301用于向各终端设备发送当前状态获取请求,各终端设备响应该状态获取请求,获取自身的状态数据,依据状态数据确定自身的当前状态,再将自身的当前状态发送获取模块301,获取模块301即获取到各终端设备的当前状态。
[0080]在另一种实现方式中,终端设备的当前状态由消息推送装置确定。各终端设备会实时或定时获取表征自身当前状态的状态数据,将状态数据发送至获取模块301,获取模块301用于依据该状态数据确定各终端设备的当前状态。或者,获取模块301用于向各终端设备发送当前状态获取请求,各终端设备响应该状态获取请求,获取自身的状态数据,将状态数据发送至获取模块301,判定模块302用于依据该状态数据确定各终端设备的当前状态。
[0081]其中,当前状态包括工作状态或闲置状态。工作状态是指终端设备处于电量消耗相对较高的状态,此时,终端设备的CPU使用率较高或者内存占用较多,例如亮屏状态或者解锁状态。闲置状态是指终端设备处于电量消耗相对较低的状态,此时,终端设备的CPU使用率较低或者内存占用较少,例如灭屏状态或者锁屏状态。
[0082]另外,状态数据包括硬件数据和/或软件数据。可依据硬件数据来确定终端设备的当前状态。例如,获取终端设备显示屏的亮度信息,依据显示屏的亮度信息确定终端设备的当前状态。也可依据软件数据来确定终端设备的当前状态,例如检测终端设备是否有特定进程启动、设备管理器的运行状况等。
[0083]在终端设备上也可预装相应的安全软件,这些安全软件可读取终端设备的硬件信息或软件信息,从而确定各终端设备的当前状态,再将各终端设备的当前状态发送至消息推送装置。
[0084]判定模块302用于判定N个终端设备中是否存在处于工作状态的终端设备。当前状态为工作状态和闲置状态,则各终端设备可能处于工作状态,也可能处于闲置状态。消息推送装置根据获取到的各终端设备的当前状态,判定这些终端设备中是否存在处于工作状态的终端设备。
[0085]推送模块303用于在判定模块302判定到N个终端设备中存在处于工作状态的终端设备时,向处于工作状态的终端设备中之一推送消息。
[0086]如果N个终端设备中存在处于工作状态的终端设备,推送模块303用于向这些处于工作状态的终端设备中的一个推送消息,而不重复向处于闲置状态的终端设备推送消息,处于闲置状态的终端设备就不会被唤醒,从而减少了终端设备的电能消耗,提升其续航时间。
[0087]需要说明的是,本实施例中,N的取值为大于或等于2。例如,N取值为2,即有两个终端设备。如果存在处于工作状态的终端设备,则处于工作状态的终端设备的数量为I或2,当仅有一个终端设备处于工作状态时,就向仅有的处于工作状态的终端设备推送消息。如果处于工作状态的终端设备的数量至少为两个,则可以向其中之一推送消息,或者向其中的部分推送消息,或者向所有处于工作状态的终端设备推送消息。
[0088]在一种实施例中,推送模块303用于在判定模块302判定到所述N个终端设备中存在处于工作状态的终端设备时,向处于工作状态的终端设备中当前可续航时间最长的终端设备推送消息。
[0089]具体而言,如果存在处于工作状态的终端设备,获取模块301用于获取处于工作状态的各终端设备的当前可续航时间,判定模块302用于对比这些终端设备的当前可续航时间,确定当前可续航时间最长的终端设备,推送模块303用于仅向处于工作状态的终端设备中当前可续航时间最长的终端设备推送消息,而不重复向其他终端设备推送消息,从而尽量减少其他终端设备的电能消耗,提升其他终端设备的续航时间。当然,也可以设定某一可续航时间阈值,获取模块301用于获取处于工作状态的各终端设备的当前可续航时间,判定模块302用于将这些终端设备的当前可续航时间与可续航时间阈值作对比,推送模块303用于仅向处于工作状态的终端设备中当前可续航时间大于可续航时间阈值的终端设备推送消息,或者仅向当前可续航时间大于可续航时间阈值的终端设备中之一推送消息。
[0090]在一种实现方式中,终端设备自身可根据电池输出电压的变化,获取自身电池的剩余电量,将剩余电量发送至获取模块301,判定模块302用于对比各终端设备的剩余电量,推送模块303用于向剩余电量最多的终端设备推送消息。更进一步的,消息推送装置中存储有终端设备所对应的功耗信息,获取模块301用于获取终端设备的剩余电量,判定模块302用于依据终端设备的功耗信息,计算出终端设备的当前可续航时间,推送模块303用于仅向可续航时间最长的终端设备推送消息。
[0091]在另一种实现方式中,终端设备预装有相应的安全软件,这些安全软件可获取终端设备的功耗信息和剩余电量信息,从而预测出终端设备的当前可续航时间,将终端设备的当前可续航时间发送至消息推送装置,消息推送装置仅向可续航时间最长的终端设备推送消息。
[0092]在另一种实施例中,推送模块303用于在判定模块302判定到所述N个终端设备中存在处于工作状态的终端设备时,向处于工作状态的终端设备中用户的历史登录次数最多的终端设备推送消息。
[0093]消息推送装置会记录用户每次在终端设备上的登录信息,包括登录时间、登录地点和登录ID等信息,消息推送装置计算用户在终端设备上的历史登录次数,比对各终端设备上用户的历史登录次数,仅向处于工作状态的终端设备中用户的历史登录次数最多的终端设备推送消息。
[0094]由于登录次数的多少往往表征用户的使用频率,用户在终端设备上登录次数多,一定程度上说明用户经常使用该终端设备。因此,向历史登录次数最多的终端设备推送消息,用户可通过该终端设备及时获取到推送的消息,从而提升用户体验。
[0095]在某些情况下,用户可能在多个终端设备上都具有经常登录的习惯。此时,可预先设定历史登录次数阈值,获取模块301用于获取处于工作状态的终端设备的用户历史登录次数,判定模块302用于查找用户历史登录次数大于历史登录次数阈值的终端设备,推送模块303用于向用户历史登录次数大于历史登录次数阈值的终端设备推送消息。则用户经常登录的终端设备均可接收到消息,用户可在任意一个经常登录的终端设备上获取到信息,可进一步提升用户体验。
[0096]在另一种实施例中,推送模块303用于在判定模块302判定到N个终端设备中存在处于工作状态的终端设备时,向处于工作状态的终端设备中所述用户的历史在线时间最长的终端设备推送消息。
[0097]消息推送装置会记录用户每次在终端设备上的登录信息,包括登录时间、登录地点、登录ID和下线时间等信息,用户的在线时间即为登录时间和下线时间之间的时间段。消息推送装置统计用户每次的在线时长,计算用户在终端设备上的历史在线时间,比对各终端设备上用户的历史在线时间,仅向用户的历史在线时间最长的终端设备推送消息。
[0098]对于某些应用程序,用户一旦在终端设备上登录后,就不会经常下线,而是保持在线状态在后台运行。本实施例向用户历史在线时间最长的终端设备推送消息,用户可通过该终端设备及时获取到推送的消息,从而提升用户体验。
[0099]在某些情况下,用户可能在多个终端设备上都具有经常在线的习惯。此时,可预先设定历史在线时间阈值,获取模块301用于获取处于工作状态的终端设备的用户历史在线时间,判定模块302用于查找用户历史在线时间大于历史在线时间阈值的终端设备,推送模块303用于向用户历史在线时间大于历史在线时间阈值的终端设备推送消息。则用户经常登录的终端设备均可接收到消息,用户可在任意一个经常在线的终端设备上获取到信息,可进一步提升用户体验。
[0100]作为上述实施例的改进,本实施例中,推送模块303还用于在判定模块302判定到N个终端设备中不存在处于工作状态的终端设备时,向N个终端设备中之一推送消息。
[0101]如果N个终端设备中不存在处于工作状态的终端设备,说明所有的终端设备都处于闲置状态,此时,推送模块303用于仅向这些终端设备中的一个或者部分推送消息,而不向其他终端设备推送消息。保证了至少有一个终端设备可接收到消息,不会出现信息的遗漏,同时,不重复向其他处于闲置状态的终端设备推送消息,其他处于闲置状态的终端设备就不会被唤醒,从而减少了这些终端设备的电能消耗,提升其续航时间。
[0?02]在一种实施例中,推送模块303还用于在判定模块302判定到所述N个终端设备中不存在处于工作状态的终端设备时,向所述N个终端设备中之一推送消息。
[0103]—种实现方式中,应用程序提供自定义选项,供用户选择在所有终端设备均处于闲置状态时,向何终端设备推送消息。消息推送装置基于应用程序可获取终端设备的类型,确定终端设备是手机还是平板电脑等。例如,用户可根据自身的使用习惯,选择只向手机推送消息。则消息推送装置查找所有终端设备中的手机,仅向手机推送消息。
[0104]更进一步的,获取模块用于基于应用程序获取终端设备的类型,还可获取终端设备的品牌和型号。消息推送装置可记录每次用户登录的终端设备的类型、品牌和型号。应用程序在提供自定义选项时,将用户登录过的终端设备的类型、品牌和型号以列表形式呈现给用户,供用户选择。例如,用户可选择仅向360手机推送消息,则消息推送装置会查找所有终端设备中是否有360手机,如果有,则只向该360手机推送消息。
[0105]在另一种实现方式中,消息推送装置可以任意指定一个终端设备,在所有终端设备均处于闲置状态时,仅向指定的终端设备推送消息。例如,消息推送装置可获取各终端设备的网络制式,仅向网络制式较高的终端设备推送消息,保证消息推送的速度。
[Ο?Ο?]在另一种实施例中,推送模块303用于在判定模块302判定到所述N个终端设备中不存在处于工作状态的终端设备时,向所述N个终端设备中当前可续航时间最长的终端设备推送消息。
[0107]具体而言,如果不存在处于工作状态的终端设备,获取模块301用于获取各终端设备的当前可续航时间,判定模块302用于对比各终端设备的当前可续航时间,确定当前可续航时间最长的终端设备,推送模块303用于仅向可续航时间最长的终端设备推送消息。不重复向其他终端设备推送消息,从而减少这些终端设备的电能消耗,进一步提升其续航时间。
[0108]当然,也可以设定某一可续航时间阈值,获取模块301用于获取各终端设备的当前可续航时间后,判定模块302用于将这些终端设备的当前可续航时间与可续航时间阈值作对比,推送模块303用于仅向当前可续航时间大于可续航时间阈值的终端设备推送消息,或者仅向当前可续航时间大于可续航时间阈值的终端设备中之一推送消息。
[0109]在一种实现方式中,终端设备自身可根据电池输出电压的变化,获取自身电池的剩余电量,将剩余电量发送至消息推送装置,则消息推送装置向剩余电量最多的终端设备推送消息。更进一步的,消息推送装置存储有终端设备所对应的功耗信息,获取模块301用于获取终端设备的剩余电量,判定模块302基于终端设备的功耗信息,计算出终端设备的当前可续航时间,推送模块303用于仅向可续航时间最长的终端设备推送消息。
[0110]在另一种实现方式中,终端设备预装有相应的安全软件,这些安全软件可获取终端设备的功耗信息和剩余电量信息,从而预测出终端设备的当前可续航时间,将终端设备的当前可续航时间发送至消息推送装置,消息推送装置仅向可续航时间最长的终端设备推送消息。
[0111]在另一种实施例中,推送模块303用于在判定模块302判定到N个终端设备中不存在处于工作状态的终端设备时,向所述N个终端设备中所述用户的历史登录次数最多的终端设备推送消息。
[0112]消息推送装置会记录用户每次在终端设备上的登录信息,包括登录时间、登录地点和登录ID等信息,消息推送装置计算用户在终端设备上的历史登录次数,比对各终端设备上用户的历史登录次数,仅向处于工作状态的终端设备中用户的历史登录次数最多的终端设备推送消息。
[0113]在某些情况下,用户可能在多个终端设备上都具有经常登录的习惯。此时,可预先设定历史登录次数阈值,获取模块302用于获取各终端设备的用户历史登录次数,判定模块302用于查找用户历史登录次数大于历史登录次数阈值的终端设备,推送模块303用于向用户历史登录次数大于历史登录次数阈值的终端设备推送消息。则用户经常登录的终端设备均可接收到消息,用户可在任意一个经常登录的终端设备上获知到消息,可进一步提升用户体验。
[0114]在另一种实施例中,所述推送模块303用于在判定模块302判定到所述N个终端设备中不存在处于工作状态的终端设备时,向所述N个终端设备中所述用户的历史在线时间最长的终端设备推送消息。
[0115]消息推送装置会记录用户每次在终端设备上的登录信息,包括登录时间、登录地点、登录ID和下线时间等信息,用户的在线时间即为登录时间和下线时间之间的时间段。消息推送装置计算用户在终端设备上的历史在线时间,比对各终端设备上用户的历史在线时间,仅向用户的历史在线时间最长的终端设备推送消息。
[0116]在某些情况下,用户可能在多个终端设备上都具有经常在线的习惯。此时,可预先设定历史在线时间阈值,获取模块301用于获取各终端设备的用户历史在线时间,判定模块302用于查找用户历史在线时间大于历史在线时间阈值的终端设备,推送模块303用于向用户历史在线时间大于历史在线时间阈值的终端设备推送消息。则用户经常登录的终端设备均可接收到消息,用户可在任意一个经常在线的终端设备上获取到信息,可进一步提升用户体验。
[0117]作为上述实施例的改进,在本实施例中,工作状态为解锁状态,闲置状态为锁屏状态。终端设备处于解锁状态时,往往说明用户正在使用终端设备,此时用户可及时获取到推送的消息,终端设备处于锁屏状态时,往往说明用户未使用终端设备。
[0118]具体而言,由于终端设备内都存有设备管理器,终端设备的锁屏或解锁都会激活终端设备的设备管理器。终端设备监听自身的设备管理器,获取表征屏幕是否锁定的屏幕锁定信息,依据屏幕锁定信息判定终端设备当前处于解锁状态还是锁屏状态,再将判定到的状态发送至消息推送装置。或者,在终端设备上预装有相应的安全软件,这些安全软件实时监测终端设备的当前状态,消息推送装置基于这些安全软件获取到终端设备的当前状
??τ O
[0119]在另一个实施例中,工作状态为亮屏状态,闲置状态为灭屏状态。
[0120]—种实现方式中,终端设备的亮屏和灭屏都会激活设备管理器,终端设备从移动终端的设备管理器获得终端设备屏幕的相关数据,确定终端设备是处于亮屏状态,还是灭屏状态。或者,终端设备从移动终端的设备管理器获得终端设备屏幕的相关数据并发送至消息推送装置,消息推送装置依据终端设备屏幕的相关数据确定终端设备是处于亮屏状态,还是灭屏状态。
[0121]另一种实现方式中,部分终端设备在用户未使用时,会自动进入低亮度状态而不灭屏,此时,终端设备显示屏的亮度低于正常使用时的亮度。因此,终端设备获取其显示屏的亮度值,判定显示屏的亮度值是否高于某一预定亮度值,若高于,则确定终端设备处于工作状态,若低于,则确定终端设备处于闲置状态。
[0122]在另一种实施例中,终端设备根据自身的CPU数据,确定自身是否处于工作状态。对于多数终端设备而言,终端设备处于闲置状态时,其CPU使用率相对较低,在预定时间内,其CPU使用率会保持在相对平稳的范围,不会有较大的跳变。当终端设备处于工作状态时,其CPU使用率相对较高,随着用户打开或关闭某一应用程序,其CPU使用率在预定时间内会会有较大的跳变。
[0123]一种实现方式中,终端设备获取自身的CPU使用率,判定自身的CPU使用率是否大于预定使用率,如果大于预定使用率,确定终端设备处于工作状态,如果不大于预定使用率,确定终端设备处于闲置状态。
[0124]另一种实现方式中,终端设备获取自身的CPU使用率,判定自身的CPU使用率在预定时间内的跳变范围是否大于预定范围,如果大于预定范围,确定终端设备处于工作状态,如果不大于预定范围,确定终端设备处于闲置状态。
[0125]图4为本发明一种实施例的消息推送服务器的结构示意图。
[0126]一种消息推送服务器,包括:状态获取模块401、状态判定模块402和消息推送模块403。状态获取模块401用于获取登录有同一用户的N个终端设备的当前状态,所述当前状态为工作状态或闲置状态。状态判定模块402用于判定所述N个终端设备中是否存在处于工作状态的终端设备。消息推送模块403,用于在状态判定模块402判定到所述N个终端设备中存在处于工作状态的终端设备时,向处于工作状态的终端设备中之一推送消息。
[0127]N个终端设备上均安装有相应的应用程序,同时N个终端设备上登录有该应用程序的同一用户。在服务器需要向用户推送消息时,状态获取模块401用于获取该N个终端设备的当前状态。
[0128]在一种实现方式中,终端设备自身确定其当前状态。各终端设备会实时或定时获取表征自身当前状态的状态数据,依据状态数据确定自身的当前状态,再将自身的当前状态发送至状态获取模块401,状态获取模块401即获取到各终端设备的当前状态。或者,状态获取模块401用于向各终端设备发送当前状态获取请求,各终端设备响应该状态获取请求,获取自身的状态数据,依据状态数据确定自身的当前状态,再将自身的当前状态发送状态获取模块401,状态获取模块401即获取到各终端设备的当前状态。
[0129]在另一种实现方式中,终端设备的当前状态由服务器确定。各终端设备会实时或定时获取表征自身当前状态的状态数据,将状态数据发送至状态获取模块401,状态获取模块401用于依据该状态数据确定各终端设备的当前状态。或者,状态获取模块401用于向各终端设备发送当前状态获取请求,各终端设备响应该状态获取请求,获取自身的状态数据,将状态数据发送至状态获取模块401,状态判定模块402用于依据该状态数据确定各终端设备的当前状态。
[0130]其中,当前状态包括工作状态或闲置状态。工作状态是指终端设备处于电量消耗相对较高的状态,此时,终端设备的CPU使用率较高或者内存占用较多,例如亮屏状态或者解锁状态。闲置状态是指终端设备处于电量消耗相对较低的状态,此时,终端设备的CPU使用率较低或者内存占用较少,例如灭屏状态或者锁屏状态。
[0131]另外,状态数据包括硬件数据和/或软件数据。可依据硬件数据来确定终端设备的当前状态。例如,获取终端设备显示屏的亮度信息,依据显示屏的亮度信息确定终端设备的当前状态。也可依据软件数据来确定终端设备的当前状态,例如检测终端设备是否有特定进程启动、设备管理器的运行状况等。
[0132]在终端设备上也可预装相应的安全软件,这些安全软件可读取终端设备的硬件信息或软件信息,从而确定各终端设备的当前状态,再将各终端设备的当前状态发送至服务器。
[0133]状态判定模块402用于判定N个终端设备中是否存在处于工作状态的终端设备。当前状态为工作状态和闲置状态,则各终端设备可能处于工作状态,也可能处于闲置状态。月艮务器根据获取到的各终端设备的当前状态,判定这些终端设备中是否存在处于工作状态的终端设备。
[0134]消息推送模块403用于在状态判定模块402判定到N个终端设备中存在处于工作状态的终端设备时,向处于工作状态的终端设备中之一推送消息。
[0135]如果N个终端设备中存在处于工作状态的终端设备,消息推送模块403用于向这些处于工作状态的终端设备中的一个推送消息,而不重复向处于闲置状态的终端设备推送消息,处于闲置状态的终端设备就不会被唤醒,从而减少了终端设备的电能消耗,提升其续航时间。
[0136]需要说明的是,本实施例中,N的取值为大于或等于2。例如,N取值为2,即有两个终端设备。如果存在处于工作状态的终端设备,则处于工作状态的终端设备的数量为I或2,当仅有一个终端设备处于工作状态时,就向仅有的处于工作状态的终端设备推送消息。如果处于工作状态的终端设备的数量至少为两个,则可以向其中之一推送消息,或者向其中的部分推送消息,或者向所有处于工作状态的终端设备推送消息。
[0137]在一种实施例中,消息推送模块403用于在状态判定模块402判定到所述N个终端设备中存在处于工作状态的终端设备时,向处于工作状态的终端设备中当前可续航时间最长的终端设备推送消息。
[0138]具体而言,如果存在处于工作状态的终端设备,状态获取模块401用于获取处于工作状态的各终端设备的当前可续航时间,状态判定模块402用于对比这些终端设备的当前可续航时间,确定当前可续航时间最长的终端设备,消息推送模块403用于仅向处于工作状态的终端设备中当前可续航时间最长的终端设备推送消息,而不重复向其他终端设备推送消息,从而尽量减少其他终端设备的电能消耗,提升其他终端设备的续航时间。当然,也可以设定某一可续航时间阈值,状态获取模块401用于获取处于工作状态的各终端设备的当前可续航时间,状态判定模块402用于将这些终端设备的当前可续航时间与可续航时间阈值作对比,消息推送模块403用于仅向处于工作状态的终端设备中当前可续航时间大于可续航时间阈值的终端设备推送消息,或者仅向当前可续航时间大于可续航时间阈值的终端设备中之一推送消息。
[0139]在一种实现方式中,终端设备自身可根据电池输出电压的变化,获取自身电池的剩余电量,将剩余电量发送至状态获取模块401,状态判定模块402用于对比各终端设备的剩余电量,消息推送模块403用于向剩余电量最多的终端设备推送消息。更进一步的,服务器中存储有终端设备所对应的功耗信息,状态获取模块401用于获取终端设备的剩余电量,状态判定模块402用于依据终端设备的功耗信息,计算出终端设备的当前可续航时间,消息推送模块403用于仅向可续航时间最长的终端设备推送消息。
[0140]在另一种实现方式中,终端设备预装有相应的安全软件,这些安全软件可获取终端设备的功耗信息和剩余电量信息,从而预测出终端设备的当前可续航时间,将终端设备的当前可续航时间发送至服务器,服务器仅向可续航时间最长的终端设备推送消息。
[0141]在另一种实施例中,消息推送模块403用于在状态判定模块402判定到所述N个终端设备中存在处于工作状态的终端设备时,向处于工作状态的终端设备中用户的历史登录次数最多的终端设备推送消息。
[0142]服务器会记录用户每次在终端设备上的登录信息,包括登录时间、登录地点和登录ID等信息,服务器计算用户在终端设备上的历史登录次数,比对各终端设备上用户的历史登录次数,仅向处于工作状态的终端设备中用户的历史登录次数最多的终端设备推送消息。
[0143]由于登录次数的多少往往表征用户的使用频率,用户在终端设备上登录次数多,一定程度上说明用户经常使用该终端设备。因此,向历史登录次数最多的终端设备推送消息,用户可通过该终端设备及时获取到推送的消息,从而提升用户体验。
[0144]在某些情况下,用户可能在多个终端设备上都具有经常登录的习惯。此时,可预先设定历史登录次数阈值,状态获取模块401用于获取处于工作状态的终端设备的用户历史登录次数,状态判定模块402用于查找用户历史登录次数大于历史登录次数阈值的终端设备,消息推送模块403用于向用户历史登录次数大于历史登录次数阈值的终端设备推送消息。则用户经常登录的终端设备均可接收到消息,用户可在任意一个经常登录的终端设备上获取到信息,可进一步提升用户体验。
[OH5]在另一种实施例中,消息推送模块403用于在状态判定模块402判定到N个终端设备中存在处于工作状态的终端设备时,向处于工作状态的终端设备中所述用户的历史在线时间最长的终端设备推送消息。
[0146]服务器会记录用户每次在终端设备上的登录信息,包括登录时间、登录地点、登录ID和下线时间等信息,用户的在线时间即为登录时间和下线时间之间的时间段。服务器统计用户每次的在线时长,计算用户在终端设备上的历史在线时间,比对各终端设备上用户的历史在线时间,仅向用户的历史在线时间最长的终端设备推送消息。
[0147]对于某些应用程序,用户一旦在终端设备上登录后,就不会经常下线,而是保持在线状态在后台运行。本实施例向用户历史在线时间最长的终端设备推送消息,用户可通过该终端设备及时获取到推送的消息,从而提升用户体验。
[0148]在某些情况下,用户可能在多个终端设备上都具有经常在线的习惯。此时,可预先设定历史在线时间阈值,状态获取模块401用于获取处于工作状态的终端设备的用户历史在线时间,状态判定模块402用于查找用户历史在线时间大于历史在线时间阈值的终端设备,消息推送模块403用于向用户历史在线时间大于历史在线时间阈值的终端设备推送消息。则用户经常登录的终端设备均可接收到消息,用户可在任意一个经常在线的终端设备上获取到信息,可进一步提升用户体验。
[0149]作为上述实施例的改进,本实施例中,消息推送模块403还用于在状态判定模块402判定到N个终端设备中不存在处于工作状态的终端设备时,向N个终端设备中之一推送消息。
[0150]如果N个终端设备中不存在处于工作状态的终端设备,说明所有的终端设备都处于闲置状态,此时,消息推送模块403用于仅向这些终端设备中的一个或者部分推送消息,而不向其他终端设备推送消息。保证了至少有一个终端设备可接收到消息,不会出现信息的遗漏,同时,不重复向其他处于闲置状态的终端设备推送消息,其他处于闲置状态的终端设备就不会被唤醒,从而减少了这些终端设备的电能消耗,提升其续航时间。
[0151]在一种实施例中,消息推送模块403还用于在状态判定模块402判定到所述N个终端设备中不存在处于工作状态的终端设备时,向所述N个终端设备中之一推送消息。
[0152]—种实现方式中,应用程序提供自定义选项,供用户选择在所有终端设备均处于闲置状态时,向何终端设备推送消息。服务器基于应用程序可获取终端设备的类型,确定终端设备是手机还是平板电脑等。例如,用户可根据自身的使用习惯,选择只向手机推送消息。则服务器查找所有终端设备中的手机,仅向手机推送消息。
[0153]更进一步的,状态获取模块用于基于应用程序获取终端设备的类型,还可获取终端设备的品牌和型号。服务器可记录每次用户登录的终端设备的类型、品牌和型号。应用程序在提供自定义选项时,将用户登录过的终端设备的类型、品牌和型号以列表形式呈现给用户,供用户选择。例如,用户可选择仅向360手机推送消息,则服务器会查找所有终端设备中是否有360手机,如果有,则只向该360手机推送消息。
[0154]在另一种实现方式中,服务器可以任意指定一个终端设备,在所有终端设备均处于闲置状态时,仅向指定的终端设备推送消息。例如,服务器可获取各终端设备的网络制式,仅向网络制式较高的终端设备推送消息,保证消息推送的速度。
[0155]在另一种实施例中,消息推送模块403用于在状态判定模块402判定到所述N个终端设备中不存在处于工作状态的终端设备时,向所述N个终端设备中当前可续航时间最长的终端设备推送消息。
[0156]具体而言,如果不存在处于工作状态的终端设备,状态获取模块401用于获取各终端设备的当前可续航时间,状态判定模块402用于对比各终端设备的当前可续航时间,确定当前可续航时间最长的终端设备,消息推送模块403用于仅向可续航时间最长的终端设备推送消息。不重复向其他终端设备推送消息,从而减少这些终端设备的电能消耗,进一步提升其续航时间。
[0157]当然,也可以设定某一可续航时间阈值,状态获取模块401用于获取各终端设备的当前可续航时间后,状态判定模块402用于将这些终端设备的当前可续航时间与可续航时间阈值作对比,消息推送模块403用于仅向当前可续航时间大于可续航时间阈值的终端设备推送消息,或者仅向当前可续航时间大于可续航时间阈值的终端设备中之一推送消息。
[0158]在一种实现方式中,终端设备自身可根据电池输出电压的变化,获取自身电池的剩余电量,将剩余电量发送至服务器,则服务器向剩余电量最多的终端设备推送消息。更进一步的,服务器存储有终端设备所对应的功耗信息,状态获取模块401用于获取终端设备的剩余电量,状态判定模块402基于终端设备的功耗信息,计算出终端设备的当前可续航时间,消息推送模块403用于仅向可续航时间最长的终端设备推送消息。
[0159]在另一种实现方式中,终端设备预装有相应的安全软件,这些安全软件可获取终端设备的功耗信息和剩余电量信息,从而预测出终端设备的当前可续航时间,将终端设备的当前可续航时间发送至服务器,服务器仅向可续航时间最长的终端设备推送消息。
[Ο??Ο]在另一种实施例中,消息推送模块403用于在状态判定模块402判定到N个终端设备中不存在处于工作状态的终端设备时,向所述N个终端设备中所述用户的历史登录次数最多的终端设备推送消息。
[0161]服务器会记录用户每次在终端设备上的登录信息,包括登录时间、登录地点和登录ID等信息,服务器计算用户在终端设备上的历史登录次数,比对各终端设备上用户的历史登录次数,仅向处于工作状态的终端设备中用户的历史登录次数最多的终端设备推送消息。
[0162]在某些情况下,用户可能在多个终端设备上都具有经常登录的习惯。此时,可预先设定历史登录次数阈值,状态获取模块402用于获取各终端设备的用户历史登录次数,状态判定模块402用于查找用户历史登录次数大于历史登录次数阈值的终端设备,消息推送模块403用于向用户历史登录次数大于历史登录次数阈值的终端设备推送消息。则用户经常登录的终端设备均可接收到消息,用户可在任意一个经常登录的终端设备上获知到消息,可进一步提升用户体验。
[0163]在另一种实施例中,所述消息推送模块403用于在状态判定模块402判定到所述N个终端设备中不存在处于工作状态的终端设备时,向所述N个终端设备中所述用户的历史在线时间最长的终端设备推送消息。
[0164]服务器会记录用户每次在终端设备上的登录信息,包括登录时间、登录地点、登录ID和下线时间等信息,用户的在线时间即为登录时间和下线时间之间的时间段。服务器计算用户在终端设备上的历史在线时间,比对各终端设备上用户的历史在线时间,仅向用户的历史在线时间最长的终端设备推送消息。
[0165]在某些情况下,用户可能在多个终端设备上都具有经常在线的习惯。此时,可预先设定历史在线时间阈值,状态获取模块401用于获取各终端设备的用户历史在线时间,状态判定模块402用于查找用户历史在线时间大于历史在线时间阈值的终端设备,消息推送模块403用于向用户历史在线时间大于历史在线时间阈值的终端设备推送消息。则用户经常登录的终端设备均可接收到消息,用户可在任意一个经常在线的终端设备上获取到信息,可进一步提升用户体验。
[0166]作为上述实施例的改进,在本实施例中,工作状态为解锁状态,闲置状态为锁屏状态。终端设备处于解锁状态时,往往说明用户正在使用终端设备,此时用户可及时获取到推送的消息,终端设备处于锁屏状态时,往往说明用户未使用终端设备。
[0167]具体而言,由于终端设备内都存有设备管理器,终端设备的锁屏或解锁都会激活终端设备的设备管理器。终端设备监听自身的设备管理器,获取表征屏幕是否锁定的屏幕锁定信息,依据屏幕锁定信息判定终端设备当前处于解锁状态还是锁屏状态,再将判定到的状态发送至服务器。或者,在终端设备上预装有相应的安全软件,这些安全软件实时监测终端设备的当前状态,服务器基于这些安全软件获取到终端设备的当前状态。
[0168]在另一个实施例中,工作状态为亮屏状态,闲置状态为灭屏状态。
[0169]—种实现方式中,终端设备的亮屏和灭屏都会激活设备管理器,终端设备从移动终端的设备管理器获得终端设备屏幕的相关数据,确定终端设备是处于亮屏状态,还是灭屏状态。或者,终端设备从移动终端的设备管理器获得终端设备屏幕的相关数据并发送至服务器,服务器依据终端设备屏幕的相关数据确定终端设备是处于亮屏状态,还是灭屏状
??τ O
[0170]另一种实现方式中,部分终端设备在用户未使用时,会自动进入低亮度状态而不灭屏,此时,终端设备显示屏的亮度低于正常使用时的亮度。因此,终端设备获取其显示屏的亮度值,判定显示屏的亮度值是否高于某一预定亮度值,若高于,则确定终端设备处于工作状态,若低于,则确定终端设备处于闲置状态。
[0171]在另一种实施例中,终端设备根据自身的CPU数据,确定自身是否处于工作状态。对于多数终端设备而言,终端设备处于闲置状态时,其CPU使用率相对较低,在预定时间内,其CPU使用率会保持在相对平稳的范围,不会有较大的跳变。当终端设备处于工作状态时,其CPU使用率相对较高,随着用户打开或关闭某一应用程序,其CPU使用率在预定时间内会会有较大的跳变。
[0172]—种实现方式中,终端设备获取自身的CPU使用率,判定自身的CPU使用率是否大于预定使用率,如果大于预定使用率,确定终端设备处于工作状态,如果不大于预定使用率,确定终端设备处于闲置状态。
[0173]另一种实现方式中,终端设备获取自身的CPU使用率,判定自身的CPU使用率在预定时间内的跳变范围是否大于预定范围,如果大于预定范围,确定终端设备处于工作状态,如果不大于预定范围,确定终端设备处于闲置状态。
[0174]所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0175]在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0176]所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
[0177]另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
[0178]本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(R0M,Read Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁盘或光盘等。
[0179]本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0180]以上对本发明所提供的一种服务器进行了详细介绍,对于本领域的一般技术人员,依据本发明实施例的思想,在【具体实施方式】及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
【主权项】
1.一种消息推送方法,其特征在于:包括以下步骤: 获取登录有同一用户的N个终端设备的当前状态,所述当前状态为工作状态或闲置状态,N彡2; 判定所述N个终端设备中是否存在处于工作状态的终端设备; 若存在处于工作状态的终端设备,向处于工作状态的终端设备中之一推送消息。2.根据权利要求1所述的方法,其特征在于: 所述向处于工作状态的终端设备中之一推送消息的步骤,具体为: 向处于工作状态的终端设备中当前可续航时间最长的终端设备推送消息。3.根据权利要求1所述的方法,其特征在于: 所述向处于工作状态的终端设备中之一推送消息的步骤,具体为: 向处于工作状态的终端设备中所述用户的历史登录次数最多的终端设备推送消息。4.根据权利要求1所述的方法,其特征在于: 所述向处于工作状态的终端设备中之一推送消息的步骤,具体为: 向处于工作状态的终端设备中所述用户的历史在线时间最长的终端设备推送消息。5.根据权利要求1-4所述的任意一项所述的方法,其特征在于:还包括以下步骤: 若不存在处于工作状态的终端设备,向所述N个终端设备中之一推送消息。6.根据权利要求5所述的方法,其特征在于: 所述向所述N个终端设备中之一推送消息的步骤,具体为: 向所述N个终端设备中当前可续航时间最长的终端设备推送消息。7.根据权利要求5所述的方法,其特征在于: 所述向所述N个终端设备中之一推送消息的步骤,具体为: 向所述N个终端设备中所述用户的历史登录次数最多的终端设备推送消息。8.根据权利要求1-4任意一项所述的方法,其特征在于: 所述工作状态为解锁状态,所述闲置状态为锁屏状态。9.一种消息推送装置,其特征在于:包括: 获取模块,用于获取登录有同一用户的N个终端设备的当前状态,所述当前状态为工作状态或闲置状态; 判定模块,用于判定所述N个终端设备中是否存在处于工作状态的终端设备; 推送模块,用于在判定模块判定到所述N个终端设备中存在处于工作状态的终端设备时,向处于工作状态的终端设备中之一推送消息。10.一种消息推送服务器,其特征在于:包括: 状态获取模块,用于获取登录有同一用户的N个终端设备的当前状态,所述当前状态为工作状态或闲置状态; 状态判定模块,用于判定所述N个终端设备中是否存在处于工作状态的终端设备;消息推送模块,用于在状态判定模块判定到所述N个终端设备中存在处于工作状态的终端设备时,向处于工作状态的终端设备中之一推送消息。
【文档编号】H04W52/02GK105978971SQ201610312558
【公开日】2016年9月28日
【申请日】2016年5月11日
【发明人】周振华
【申请人】北京奇虎科技有限公司, 奇酷互联网络科技(深圳)有限公司