掌桥专利:专业的专利平台
掌桥专利
首页

一种消息推送的方法及系统

文献发布时间:2024-04-18 19:54:45


一种消息推送的方法及系统

技术领域

本发明涉及通信领域,尤其设计一种消息推送的方法及系统。

背景技术

消息推送作为客户端与服务端连接的重要桥梁,是用户感知信息,体验业务功能的重要交互方式,在系统中搭建消息推送机制使得业务操作可以稳定、及时将推送模块的应用信息传送至用户。当前,互联网大数据发展迅速,用户群体数量庞大,为保证广大用户群可实现功能体验,通常会选择基于第三方推送平台来支持推送服务,在实现信息传递高效的同时也引发了用户信息泄漏的问题。用户的个人数据不属于个人,数据被转手、信息被泄漏,隐私信息变成了各个平台实现商业利益的交易。

发明内容

为解决上述现有技术的问题,本发明提供了一种消息推送方法及系统。该系统在保证用户使用体验的同时保护用户数据安全,防范信息泄漏风险。

本发明的技术内容,包括:

一种消息推送方法,应用于与客户端建立信任关系的私有设备,所述方法包括:

获取客户端的ClientUUID,并基于所述客户端的包含欲推送消息的业务请求,生成主消息队列;

消费所述主消息队列,得到包含欲推送消息的消息推送通知和所述欲推送消息对应的Message ID与类型;

基于所述客户端的ClientUUID,判断所述客户端是否在线;

在所述客户端在线的情况下,将所述消息推送通知推送到客户端;

在所述客户端不在线的情况下,将所述客户端的ClientUUID、所述Message ID、所述类型以及所述私有设备ID发送至平台,以经由所述平台和第三方平台基于所述客户端的ClientUUID进行信息传递,且使所述客户端基于所述Message ID、所述类型以及所述私有设备ID在所述私有设备中获取所述欲推送消息。

进一步地,所述基于所述客户端的ClientUUID,判断所述客户端是否在线,包括:

与客户端建立长轮询;

当客户端请求poll接口携带加密访问令牌时,保存所述ClientUUID的时间戳;

在当前时间与所述时间戳的差值大于设定值,或发现预设标识符号的情况下,判定所述客户端不在线;其中,所述预设标识符号表示客户端主动断开连接;

在当前时间与所述时间戳的差值小于设定值,且未发现预设标识符号的情况下,判定所述客户端在线。

进一步地,所述将所述消息推送通知推送到客户端,包括:

基于所述消息推送通知,生成客户端消息队列;

将所述客户端消息队列推送至客户端,以使所述客户端通过加密poll接口,获取欲推送消息。

进一步地,在所述客户端不在线的情况下,将所述客户端的ClientUUID、所述MessageID、所述类型以及所述私有设备ID发送至平台,包括:

基于所述客户端的ClientUUID、所述消息推送通知的Message ID与类型以及所述私有设备ID,生成离线时消息队列;

设置一预设的时间范围;

将所述离线时消息队列对应的线程挂起;

在所述预设的时间范围内,判定所述客户端在线,则基于所述消息推送通知,生成客户端消息队列,并将所述客户端消息队列推送至客户端,以使所述客户端通过加密poll接口,获取欲推送消息;

在所述预设的时间范围内,判定所述客户端不在线,则将所述离线时消息队列发送至平台。

进一步地,所述平台基于所述客户端的ClientUUID,且通过第三方平台将所述Message ID传递给所述客户端之后,所述客户端基于所述Message ID、所述类型以及所述私有设备ID在所述私有设备中获取所述欲推送消息,包括:

所述平台通过客户端对第三方平台SDK接口的调取,获取所有客户端的deviceToken;

所述平台基于客户端的ClientUUID,获取该客户端对应的deviceToken,并生成包含所述Message ID、所述类型以及所述私有设备ID的Push消息之后,将所述deviceToken和所述Push消息发送给所述第三方平台;

所述第三方平台基于所述deviceToken,将所述Push消息推送给客户端;

所述客户端基于所述Push消息访问所述私有设备,以得到所述欲推送消息。

进一步地,所述第三方平台基于所述deviceToken,将所述Push消息推送给客户端,包括:

获取该客户端的所有Push消息;

对于所有Push消息,建立Push消息时序;

基于所述Push消息时序,依次将Push消息推送给客户端,

进一步地,所述第三方平台包括:友盟Push服务器或华为Push服务器。

一种消息推送系统,其特征在于,所述系统包括:

客户端,用于提供客户端的ClientUUID与包含欲推送消息的业务请求;

私有设备,用于获取客户端的ClientUUID,并基于所述客户端的包含欲推送消息的业务请求,生成主消息队列;消费所述主消息队列,得到包含欲推送消息的消息推送通知和所述欲推送消息对应的Message ID与类型;基于所述客户端的ClientUUID,判断所述客户端是否在线;在所述客户端在线的情况下,将所述消息推送通知推送到客户端;在所述客户端不在线的情况下,将所述客户端的ClientUUID、所述Message ID、所述类型以及所述私有设备ID发送至平台;

平台,用于基于所述客户端的ClientUUID,将所述客户端的ClientUUID、所述MessageID、所述类型以及所述私有设备ID发送至第三方平台;

第三方平台,用于基于所述客户端的ClientUUID,将所述Message ID、所述类型以及所述私有设备ID发送至客户端。

一种电子设备,包括:

处理器;

用于存储所述处理器可执行指令的存储器;

所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述可执行指令以实现上述任一所述方法。

一种计算机可读存储介质,其上存储有计算机程序指令,其特征在于,该程序指令被处理器执行时,以实现上述任一所述方法。

与现有技术相比,本发明至少具有如下优势:

本发明提供的一种消息推送方法及系统,依据客户端的状态设计区别的消息推送模式。当客户端在线状态时实现端对端加密应用内推送,从而可以实现用户及时、快速、高效、稳定、安全接收到消息通知。当客户端离线状态时虽依赖于第三方平台转发实现推送,但第三方无法获取到具体推送内容,从而保证用户数据安全,防止第三方获取数据信息。

附图说明

图1消息推送系统图。

图2消息推送流程图。

图3私有设备处理模块运行的具体步骤。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明的消息推送系统包括:客户端、私有设备、平台、第三方平台。所述客户端为用户可以接收到推送消息的终端程序,包括APP、Web、PC。所述平台为所述私有设备与所述客户端的中转调度管理台,用于管理客户端设备标识、中转消息,缓存数据等内容。所述私有设备用于存储、处理业务及推送消息,基于所述客户端状态选择是否接入外部第三方平台(友盟或其他厂商通道)等相关的内容,从而实现消息推送。其可以为包含处理器和存储器的硬件装置,所述存储器中存储有计算机程序,也可以为一种存储介质,所述存储介质中存储有计算机程序。

一.消息推送系统的搭建。

如图1所示,基于所述客户端的状态将消息推送分为应用内推送与系统推送。当所述客户端在线时,可实现应用内推送。当所述客户端离线时,则需要借助所述平台的转发消息推送至第三方厂商通道发送。

如图2所示。私有设备的消息推送模块参照客户端ClientUUID的时间戳判断客户端的状态,当客户端在线时,客户端与所述私有设备直接建立长轮询,消息推送模块将欲推送的消息内容发送至客户端clientuuid的单独队列,私有设备将消息内容推送至对应客户端,客户端通过加密poll接口,获取欲推送到该客户端的消息数据,实现应用内推送。所述私有设备属于用户个人的存储设备,所述客户端调用的poll接口采用公私钥加密协商后的对称密钥加密,所包含的消息数据不经平台读取或记录,以保证用户的数据安全。

如图3所示,私有设备的消息推送模块参照客户端ClientUUID的时间戳判断客户端的状态,当客户端离线时,消息推送模块将欲推送的消息内容对应发送至push_notification_platform(离线时消息队列)队列,并将Message ID和类型及ClientUUID发送至平台及第三方厂商通道。在此转发过程中传递的为Message ID和类型及ClientUUID,而不包含消息的具体数据内容,其消息本身仍在所述私有设备中存储。所述第三方厂商通道将其返回至目标客户端后,所述客户端基于收到的Message ID向所述私有设备请求获取具体的消息内容。

具体地,所述客户端与所述私有设备的调用消息推送的poll接口预设了加密方案,建立信任关系,当客户端向私有设备发起访问请求时会携带accessToken进行认证,以此保证数据安全。

具体地,离线的推送方式会相比较于在线的应用内推送方式会存在稍小的延迟,但两种推送方式同时保证了用户的数据安全。

具体地,所述私有设备内包含消息推送模块、业务模块、数据存储模块。所述消息推送模块与发送请求的客户端建立消息长轮询,负责调度待推送的消息、加密推送消息数据、准确地推送至所述客户端侧或所述平台侧等内容;所述业务模块接收请求客户端的业务请求,转换生成需要通知的推送消息及消息对应的Message ID并将其全部存放至所述数据存储模块;所述数据存储模块用于记录存储消息推送通知或查询消息通知生成消息队列,且将接收到的消息推送通知发送至消息推送模块。

具体地,所述私有设备中的业务模块会将产生的需通知的消息,存储在数据存储模块的消息队列中;当消息推送模块获取到消息推送通知时,会依据判断对应将其推送至所述平台,可同时处理多条消息、多个客户端的推送需求。

具体地,所述平台包括管理模块、转发模块、缓存模块。所述转发模块用于校验私有设备身份、接收转发消息并将其发送至对应的第三方厂商通道;所述缓存模块用于缓存一定时效的消息数据,从而支持网络异常或第三方厂商通道系统异常的情况;所述管理模块用于协调管理所述客户端的设备标识(deviceToken)等内容。

具体地,所述消息推送的下发会遵循时序一致,按序推送以避免出现同一客户端多条消息混乱推送的结果。

二.平台的集成。

以客户端侧APP为实施例,所述客户端侧APP会生成一ClientUUID,作为对应用户设备的唯一识别码,用于后续消息推送在私有设备侧和平台侧的对接;集成其他可选择的第三方厂商通道,如友盟Push服务器、华为Push服务器等。所述平台面向所述私有设备设置消息推送接口,通过boxRegKey鉴权,校验所述私有设备的身份信息;根据客户端侧APP状态判定推送通道,通过使用ClientUUID标识目标推送设备定向推送消息。所述平台面向所述客户端的APP侧设置deviceToken注册接口,该deviceToken与App侧之前生成的ClientUUID一一对应,所述deviceToken为APP集成第三方厂商通道SDK时获取到的设备身份标识,且需向所述平台侧注册该身份凭证。具体的,所述平台对推送的消息进行中转,对推送消息数据不做读取和记录,只传递消息中的Message ID。通过平台转发至友盟或第三方厂商的通道,其消息时序不由所述平台决定,基于选择的友盟或第三方厂商而保证。

其中,以客户端侧APP形式为实施例,用户实现消息推送的具体步骤:

1.APP端预设如友盟、华为等第三方厂商的PushSDK。当用户客户端APP在线时,则通过应用内直接推送。当用户客户端离线时,则通过接入友盟或转为其他第三方厂商通道推送;APP端通过调用友盟SDK接口调取可以得到deviceToken;

2.APP端将所获取到的deviceToken上报至所述平台;

3.所述私有设备、所述平台管理模块使用保存的deviceToken调用友盟(Push服务端)提供的API推送Push消息。

4.友盟Push服务器将从平台获得的Push消息,通过其他第三方厂商Push服务器中转,将发送给deviceToken对应的用户设备,设备接收Push消息。

可选地,当其他第三方厂商的Push服务器检测到设备回复消息响应时,将响应状态回执给友盟Push服务器,友盟Push服务器便可在APP上显示通知提示。

三.所述客户端与私有设备的消息推送模块的架构。

所述消息推送模块与发送请求的客户端建立消息长轮询,负责接收消息推送通知、加密推送数据、准确推送至所述平台侧等内容。所述消息推送模块接收来自所述客户端的需推送消息的业务请求后,会将其存储在主消息队列push_notification中。有多个客户端同时向所述私有设备发送推送消息的业务需求,不同的客户端会自形成一个单独的消息队列,以对应的ClientUUID为标识排列。

具体地,来自于业务模块的业务请求消息将会直接进入所述消息推送模块的主消息队列push_notification。根据客户端的状态,进行消息提取,拆分消息存入对应消息队列,同时进行自动化存储以支持后续查阅使用。若客户端(APP)在线时,将其对应发送至客户端ClientUUID的单独队列;若客户端(APP)离线时,发送push_notification_platform将其对应推送至所述平台,所述平台依据上述第二方面,将消息推送至对应设备。

具体地,所述客户端侧设置有接口轮询,用于读取判断当前的ClientUUID单独消息队列中是否有消息挤压,若有检测到存在消息挤压情况则直接将其返回至接口。

具体地,判断客户端状态以ClientUUID的时间戳为参照。当请求poll接口携带加密访问令牌(accestoken)时,所述私有设备会保存对应的ClientUUID和时间戳。若对应时间戳>1min,则认为此时的客户端状态默认为离线,若用户主动断开连接时间戳会显示预设的标识符号,此时也代表为离线。确定客户端离线后,会预设时间(如3s)定时任务检测push_notification_platform队列中是否有消息,避免出现消息漏转的可能。

其中,所述私有设备处理模块运行的具体步骤,见图2:

1.所述客户端发出消息推送需求启动线程,所述私有设备业务模块接收来自所述客户端的需推送消息的业务请求,所述数据存储模块记录存储消息推送通知或查询消息通知生成消息队列,且将接收到的消息推送通知发送至消息推送模块。

2.消息推送模块接收后,基于消息队列和客户端ClientUUID的时间戳判断客户端的在线状态。若客户端在线时,将其对应发送至客户端ClientUUID的单独队列;若客户端离线时,发送push_notification_platform将其转发推送至所述平台;

3.所述客户端在线时,携带accesToken访问poll接口。非阻塞时,所述消息推送模块从所述数据存储模块中读取消息,从获取到的accesToken中获取ClientUUID。所述消息推送模块读取到消息会作为历史记录自动存入数据库,形成包含对称密钥加密信息的消息体返回至客户端。若所述消息推送模块没有收到消息,会采用阻塞式,当前线程被挂起,若在预设的时间范围内,仍然没有消息,则超时返回空消息体;若在预设的时间范围内有消息,则和上述步骤相同,读取后直接返回至客户端,同样存入数据库。

4.所述客户端离线时,会设置时间段检测push_notification_platform队列中的消息。

尽管为说明目的公开了本发明的具体实施例和附图,其目的在于帮助理解本发明的内容并据以实施,但是本领域的技术人员可以理解:在不脱离本发明及所附的权利要求的精神和范围内,各种替换、变化和修改都是可能的。因此,本发明不应局限于最佳实施例和附图所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。

相关技术
  • 一种基于消息推送驱动工作流的方法及系统
  • 一种基于GIS系统的校园消息推送优化方法
  • 一种证券客服咨询的智能消息推送方法、系统及装置
  • 一种实时消息推送方法及系统
  • 一种基于智能推荐的消息推送方法、装置及终端设备
  • 消息推送方法、消息推送装置、消息推送系统、服务器和移动终端
  • 消息推送方法、消息推送装置及消息推送系统
技术分类

06120116381290