一种基于缓存的消息推送方法、装置和计算机设备与流程
- 国知局
- 2024-12-06 12:20:23
本说明书实施例涉及数据传输,尤其是一种基于缓存的消息推送方法、装置和计算机设备。
背景技术:
1、随着android系统升级,android9.0开始实行省电策略和后台运行权限限制,使得app自有的推送功能只能在app打开时使用;而app切换到后台在等待一段时间后也将暂停运行。在app切换至后台至暂停运行的期间,若有新的待推送消息,则将被系统写入缓冲区,且系统的服务器会记录该消息推送成功;但由于此时app处于后台状态,无法获取cpu的使用权,不会读取缓冲区中的消息。因此,如果此时切换至后台的app被直接杀死,则消息不会再被app读取,造成丢失。
2、针对以上问题,现有的解决方案分为两类:第一种方案是手机厂商提供官方的消息推送渠道,并内置于手机的操作系统中,推送消息直接由厂商手机系统处理从而规避限制,从而app开发方无需自建推送系统。但这种解决方案存在着消息推送成功率的问题,当消息涉及有限额度、敏感词和敏感符号时,容易出现推送失败的情况。且不同手机厂商的推送系统相互独立,app需根据手机厂商的不同进行接入,适配性接入的工作量较大;若使用成熟的第三方整合不同厂商的接入渠道,又将带来较高的成本问题。第二种方案是其他搭载android系统的嵌入式设备,如车机、医疗设备等等,这类设备一般为行业专用设备,开发商多数具备对系统的修改能力,可以直接在系统中对使用推送系统的app授予后台运行权限,使app可以后台运行。这种方案存在的问题是手机厂商的其他搭载android系统的特种嵌入式设备,对系统开发能力较高,一些小公司并没有系统二次开发能力,所以很难采用该方案。
3、有鉴于此,本说明书实施例旨在提供一种基于缓存的消息推送方法、装置和计算机设备。
技术实现思路
1、针对现有技术的上述问题,本说明书实施例的目的在于,提供一种基于缓存的消息推送方法、装置和计算机设备,以解决现有技术中在应用切换至后台被直接杀死时存在的消息丢失的问题。
2、为了解决上述技术问题,本说明书实施例的具体技术方案如下:
3、第一方面,本说明书实施例提供一种基于缓存的消息推送方法,包括:
4、发送登录成功信息至服务器以使所述服务器发送消息查询请求至推送任务存储队列;
5、接收所述推送任务存储队列经所述服务器转发的各待推送消息;
6、根据各所述待推送消息更新本地缓存的状态队列,所述状态队列包括所述待推送消息的id信息和状态标识;
7、根据所述id信息和所述状态标识,对各所述待推送消息进行推送;
8、生成推送成功的各所述待推送消息的推送回执;
9、将所述推送回执经所述服务器反馈至所述推送任务存储队列,以使所述推送任务存储队列将所述推送回执对应的待推送消息删除。
10、具体地,根据所述id信息和所述状态标识,对各所述待推送消息进行推送,包括:
11、根据所述id信息,判断所述待推送消息是否为首次收到;
12、若所述待推送消息是首次收到,则将所述状态队列中所述待推送消息的状态标识初始化为确收标识;
13、推送所述待推送消息并在所述待推送消息推送完成后将所述状态标识由确收标识更新为推送完成标识。
14、进一步地,所述方法还包括:
15、若所述待推送消息非首次收到,则确定所述待推送消息为重复收到消息和确定状态队列中与所述重复收到消息相对应的消息为首次收到消息;
16、判断所述首次收到消息的状态标识是否为确收标识;
17、若是,则推送所述首次收到消息,并在推送成功后生成所述首次收到消息的推送回执,将所述推送回执经所述服务器转发至所述推送任务存储队列,以使所述推送任务存储队列将所述推送回执对应的待推送消息删除;
18、若否,则生成所述待推送消息的重复回执,并将所述重复回执经所述服务器反馈至所述推送任务存储队列,以使所述推送任务存储队列将所述待推送消息删除。
19、优选地,所述状态队列还包括所述待推送消息的到达时间,所述方法还包括:
20、根据所述待推送消息的到达时间和当前时间节点,判断各所述待推送消息在所述状态队列中的存储时长是否达到预设的时长阈值;
21、若是,则从所述状态队列中删除所述待推送消息。
22、具体地,所述待推送消息的id信息与所述待推送消息唯一对应,根据所述id信息,判断所述待推送消息是否为首次收到,进一步为:
23、判断所述状态队列中是否存在与所述待推送消息的信息id相同的消息;
24、若存在,则判断所述待推送消息非首次收到;
25、若不存在,则判断所述待推送消息为首次收到。
26、更进一步地,所述待推送消息的id信息与所述待推送消息唯一对应,且根据在所述推送任务存储队列中的存入时间顺序递增;
27、根据所述id信息,判断所述待推送消息是否为首次收到,进一步为:
28、判断所述状态队列中是否存在与所述待推送消息的信息id相同的消息;
29、若不存在,则判断所述待推送消息的id信息是否为所述状态队列中所有消息的id信息中的最大值;
30、若所述待推送消息的id信息是所有消息的id信息中的最大值,则判定所述待推送消息为首次收到。
31、具体地,所述方法还包括:
32、若所述待推送消息的id信息不是各消息的id信息中的最大值,则判断所述待推送消息的id信息与所述状态队列中所有消息的id信息中的最大值之间的差值是否在预设的差值范围内;
33、若是,则判断所述待推送消息为首次收到;
34、若否,则判断所述待推送消息非首次收到。
35、第二方面,本说明书实施例提供一种基于缓存的消息推送装置,包括:
36、发送模块,用于发送登录成功信息至服务器以使所述服务器发送消息查询请求至推送任务存储队列;
37、接收模块,用于接收所述推送任务存储队列经所述服务器转发的各待推送消息;
38、更新模块,用于根据各所述待推送消息更新本地缓存的状态队列,所述状态队列包括所述待推送消息的id信息和状态标识;
39、推送模块,用于根据所述id信息和所述状态标识,对各所述待推送消息进行推送;
40、生成模块,用于生成推送成功的各所述待推送消息的推送回执;
41、反馈模块,用于将所述推送回执经所述服务器反馈至所述推送任务存储队列,以使所述推送任务存储队列将所述推送回执对应的待推送消息删除。
42、第三方面,本说明书实施例提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述技术方案提供的方法。
43、第四方面,本说明书实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上述技术方案提供的方法。
44、第五方面,本说明书实施例提供一种计算机程序产品,包括至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由处理器加载并执行以实现如上述技术方案提供的方法。
45、采用上述技术方案,本说明书实施例提供的一种基于缓存的消息推送方法、装置和计算机设备,使得在应用成功推送待推送消息且服务器接收到应用反馈的推送回执后,才将推送任务存储队列中与id信息的相对应消息删除,避免了在服务器将待推送消息反馈至应用后便将推送任务存储队列的消息删除,而若此时应用未能成功接收到该推送消息,从而存在的消息丢失的问题。
46、为让本说明书实施例的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。
本文地址:https://www.jishuxx.com/zhuanli/20241204/340728.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表