CN106549937A - 一种适用于不同推送sdk的统一接入方法及系统 - Google Patents
一种适用于不同推送sdk的统一接入方法及系统 Download PDFInfo
- Publication number
- CN106549937A CN106549937A CN201610881283.4A CN201610881283A CN106549937A CN 106549937 A CN106549937 A CN 106549937A CN 201610881283 A CN201610881283 A CN 201610881283A CN 106549937 A CN106549937 A CN 106549937A
- Authority
- CN
- China
- Prior art keywords
- message
- msg
- structures
- push
- content
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0227—Filtering policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
- G06F8/22—Procedural
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/55—Push-based network services
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明涉及计算机技术领域,公开了一种适用于不同推送SDK的统一接入方法,包括:步骤S1:接收推送消息,并将每条推送消息封装成一单独的Msg结构体,所述推送消息包括消息唯一标示符、消息命令字、具体消息内容和消息额外携带内容;步骤S2:对所有的Msg结构体进行过滤,去除相同的Msg结构体;步骤S3:将经过过滤的Msg结构体广播给应用程序。本发明还公开了一种适用于不同推送SDK的统一接入系统。本发明用于对不同推送SDK的推送消息进行统一接入。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种适用于不同推送SDK的统一接入方法和一种适用于不同推送SDK的统一接入系统。
背景技术
随着科学技术的飞速发展,智能手机设备也随之高速发展,涌现出诸多的手机厂商。对于消息的推送收发,每个手机厂商均有自己的一套推送SDK(Software DevelopmentKit,软件开发工具包),即拥有一套自己的集成方案,对于应用程序的开发者来说,当应用程序安装于不同厂商的手机上时,均需要对应用程序进行相应修改,使得应用程序适配厂商的集成方案,极大地提高了开发者的工作量,且因需要开发者熟悉不同的集成方案,使得开发者在应用程序编写时极易出错。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种适用于不同推送SDK的统一接入方法和一种适用于不同推送SDK的统一接入系统,用于对不同推送SDK的推送消息进行统一接入。
为达到以上目的,本发明采取的技术方案是:包括:
步骤S1:接收推送消息,并将每条推送消息封装成一单独的Msg结构体,所述推送消息包括消息唯一标示符、消息命令字、具体消息内容和消息额外携带内容;
步骤S2:对所有的Msg结构体进行过滤,去除相同的Msg结构体;
步骤S3:将经过过滤的Msg结构体广播给应用程序。
在上述技术方案的基础上,内容相同的推送消息的Msg结构体相同,内容不同的推送消息的Msg结构体不同。
在上述技术方案的基础上,所述推送消息的封装步骤为:
步骤S1.1:对推送消息进行解析,获取推送消息的消息唯一标示符、消息命令字、具体消息内容和消息额外携带内容;
步骤S1.2:将推送消息的消息唯一标示符、消息命令字、具体消息内容和消息额外携带内容封装到一单独的Msg结构体中。
在上述技术方案的基础上,对所有Msg结构体的过滤步骤为:
步骤S2.1:将所有Msg结构体存入一集合中;
步骤S2.2:逐个读取集合中的Msg结构体,并将读取出的Msg结构体中的消息唯一标示符与还存在于集合中的Msg结构体的消息唯一标示符进行比对,若比对到相同的消息唯一标示符,则丢弃当前读取出的Msg结构体,若没比对到相同的消息唯一标示符,则将当前读取出的Msg结构体保存。
在上述技术方案的基础上,所述步骤S3中Msg结构体广播给应用程序的具体过程为:
步骤S3.1:获取Intent对象,并将Msg结构体的消息唯一标示符、消息命令字、具体消息内容和消息额外携带内容保存到Intent对象中;
步骤S3.2:通过API将Intent对象发送给应用程序。
本发明还提供一种适用于不同推送SDK的统一接入系统,包括:
推送模块,其用于接收推送消息,并将推送消息封装成一单独的Msg结构体;
消息过滤模块,其用于对所有的Msg结构体进行过滤,去除相同的Msg结构体;
广播模块,其用于将消息过滤模块过滤后的Msg结构体广播给应用程序。
在上述技术方案的基础上,所述推送消息包括消息唯一标示符、消息命令字、具体消息内容和消息额外携带内容,所述推送模块用于将推送消息的消息唯一标示符、消息命令字、具体消息内容和消息额外携带内容封装成一Msg结构体。
在上述技术方案的基础上,对于内容相同的推送消息,推送模块所封装成的Msg结构体相同,对于内容不同的推送消息,推送模块所封装成的Msg结构体不同。
在上述技术方案的基础上,当应用程序在广播模块上注册后,广播模块将推送消息广播给应用程序。
在上述技术方案的基础上,所述推送模块包括封装模块,所述封装模块用于将推送消息封装成一单独的Msg结构体。
与现有技术相比,本发明的一种适用于不同推送SDK的统一接入方法的优点在于:(1)对推送消息进行封装处理,仅保留应用程序所需要的消息唯一标示符、消息命令字、具体消息内容和消息额外携带内容,去掉各个厂商的推送SDK的推送消息的差异点,使得应该程序能够接受多个厂商的推送SDK的推送消息,避免应用程序的开发者为适配不同推送SDK而进行的编程工作量;(2)对推送消息封装后的Msg结构体进行过滤处理,保证推送消息的单一性。
本发明的一种适用于不同推送SDK的统一接入系统的优点在于:推送模块将推送消息封装处理成Msg结构体,去除各个厂商的推送SDK所推送消息的差异点,仅保留应用程序所需的消息唯一标示符、消息命令字、具体消息内容和消息额外携带内容,相当于一统一数据的处理接口,然后消息过滤模块对封装形成的Msg结构体进行过滤处理,保证推送消息的单一性,然后广播模块将Msg结构体广播给应用程序,完成应用程序对推送消息的接收。
附图说明
图1为本发明一种适用于不同推送SDK的统一接入方法的流程图。
具体实施方式
以下结合附图对本发明作进一步详细说明。
参见图1所示,本发明提供一种适用于不同推送SDK的统一接入方法,用于对不同推送SDK的推送消息进行处理后,将推送消息接入到智能手机设备的应用程序中,从而使得应用程序能够适配不同厂商的推送SDK的集成方案,该方法包括:
步骤S1:接收推送消息,并将每条推送消息封装成一单独的Msg结构体,其中,内容相同的推送消息的Msg结构体相同,内容不同的推送消息的Msg结构体不同,即内容相同的推送消息所封装成的Msg结构体相同,内容不同的推送消息所封装成的Msg结构体不同。推送消息主要包括消息唯一标示符、消息命令字、具体消息内容和消息额外携带内容,消息额外携带内容为当消息需要扩展时所需使用的内容,若消息无需扩展,则消息额外携带内容为空。对于不同厂商的推送SDK的推送消息,均包括消息唯一标示符、消息命令字、具体消息内容和消息额外携带内容,区别差异在于不同厂商对推送消息的内容所使用的集成方案、编码结构等其它结构,因此,对推送消息进行封装,仅保留应用程序所需要的消息唯一标示符、消息命令字、具体消息内容和消息额外携带内容,去掉各个厂商的推送SDK的推送消息的差异点,使得应该程序能够接受多个厂商的推送SDK的推送消息,避免应用程序的开发者为适配不同推送SDK而进行的编程工作量。推送消息的封装步骤具体为:
步骤S1.1:对推送消息进行解析,获取推送消息的消息唯一标示符、消息命令字、具体消息内容和消息额外携带内容。推送消息的结构体组成为:
即id表示消息唯一标示符,cmd表示消息命令字,msg表示具体消息内容,extr表示消息额外携带内容,id、cmd、msg和extr都属于推送消息的data数据,且id、cmd、msg和extr均采用Json(JavaScript对象表示法)格式进行编写,Json是一种轻量级的数据交换格式,具有易于机器解析和生成的特性。
步骤S1.2:将推送消息的消息唯一标示符、消息命令字、具体消息内容和消息额外携带内容的具体值封装到一单独的Msg结构体中,即将消息唯一标示符、消息命令字、具体消息内容和消息额外携带内容使用Msg结构进行封装起来。Msg结构的定义如下:
其中public class和private String为Msg结构的构造词,Msg结构为智能手机设备的系统或Windows操作系统中程序所使用一种结构体,即消息是由Msg结构来表示的。
步骤S2:对所有Msg结构体进行过滤,去除相同的Msg结构体。为了提高应用程序的消息接受率,保证推送SDK所推送的消息能够准确的被应用程序接受到,对于同一消息,推送SDK会进行多次推送,即会产生多个相同的推送消息,经过步骤S1处理后形成多个相同的Msg结构体,因此需要对所有Msg结构体进行过滤,去除相同的Msg结构体,即对于相同的Msg结构体,仅保留一个。对Msg结构体的过滤步骤为:
步骤S2.1:将所有Msg结构体存入一集合中。具体的可以存入到集合LinkedListBlockingQueue中,LinkedListBlockingQueue是Java中的一个同步队列,在多线程中主要用于同步处理数据集合,以免多线程造成数据读写异常。Java为一常见的计算机编程语言。
步骤S2.2:逐个读取集合中的Msg结构体,并将读取出的Msg结构体中的消息唯一标示符与还存在于集合中的Msg结构体的消息唯一标示符进行比对,若比对到相同的消息唯一标示符,则丢弃当前读取出的Msg结构体,若没比对到相同的消息唯一标示符,则将当前读取出的Msg结构体保存,从而使得保存下来的Msg结构体均是唯一的,同时也保证了所有推送消息的完整性,使得应用程序不会丢失推送消息。
步骤S3:将经过过滤的Msg结构体广播给应用程序,应用程序对Msg结构体进行解析处理,便可获取Msg结构体中推送消息的消息唯一标示符、消息命令字、具体消息内容和消息额外携带内容,从而完成对推送消息的接收。Msg结构体广播给应用程序的具体过程为:
步骤S3.1:获取Intent对象,并将Msg结构体的消息唯一标示符、消息命令字、具体消息内容和消息额外携带内容保存到Intent对象中,Intent(意图)主要是解决应用的各项组件之间的通讯,Intent相当于一个媒体中介的作用,专门提供组件相互调用的相关信息,实现调用者与被调者之间的解耦;
步骤S3.2:通过智能手机设备的API(Application Programming Interface,应用程序编程接口)将Intent对象发送给应用程序。
本发明还包括一种采用上述适用于不同推送SDK的统一接入方法的适用于不同推送SDK的统一接入系统,该系统包括推送模块、消息过滤模块和广播模块。
推送模块用于接收推送SDK的推送消息,并将推送消息封装成一单独的Msg结构体,对于内容相同的推送消息,推送模块所封装成的Msg结构体相同,对于内容不同的推送消息,推送模块所封装成的Msg结构体不同,推送消息主要包括消息唯一标示符、消息命令字、具体消息内容和消息额外携带内容,因此推送模块将推送消息的消息唯一标示符、消息命令字、具体消息内容和消息额外携带内容封装成一Msg结构体,相当于统一了推送消息数据的处理接口,去除各个推送SDK所推送消息中的差异点,仅保留应用程序所需的消息唯一标示符、消息命令字、具体消息内容和消息额外携带内容,大大减轻了编程人员编写应用程序时的工作量。具体的,推送模块包括封装模块,封装模块用于将推送消息封装成一单独的Msg结构体,封装模块对推送消息的封装步骤为:
步骤S1.1:对推送消息进行解析,获取推送消息的消息唯一标示符、消息命令字、具体消息内容和消息额外携带内容;
步骤S1.2:将推送消息的消息唯一标示符、消息命令字、具体消息内容和消息额外携带内容封装到一单独的Msg结构体中。
消息过滤模块用于对所有的Msg结构体进行过滤,去除相同的Msg结构体,保证推送消息的单一性,,消息过滤模块将过滤后的消息进行保存,然后发送给广播模块;广播模块用于将消息过滤模块过滤后的Msg结构体广播给应用程序,需要接收推送消息的应用程序均会在广播模块上进行注册,因此当应用程序在广播模块上注册后,广播模块才能将推送消息广播给应用程序。
本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。
Claims (10)
1.一种适用于不同推送SDK的统一接入方法,用于处理不同推送SDK的推送消息,其特征在于,包括:
步骤S1:接收推送消息,并将每条推送消息封装成一单独的Msg结构体,所述推送消息包括消息唯一标示符、消息命令字、具体消息内容和消息额外携带内容;
步骤S2:对所有的Msg结构体进行过滤,去除相同的Msg结构体;
步骤S3:将经过过滤的Msg结构体广播给应用程序。
2.如权利要求1所述的一种适用于不同推送SDK的统一接入系统,其特征在于:内容相同的推送消息的Msg结构体相同,内容不同的推送消息的Msg结构体不同。
3.如权利要求2所述的一种适用于不同推送SDK的统一接入方法,其特征在于,所述推送消息的封装步骤为:
步骤S1.1:对推送消息进行解析,获取推送消息的消息唯一标示符、消息命令字、具体消息内容和消息额外携带内容;
步骤S1.2:将推送消息的消息唯一标示符、消息命令字、具体消息内容和消息额外携带内容封装到一单独的Msg结构体中。
4.如权利要求3所述的一种适用于不同推送SDK的统一接入方法,其特征在于:对所有Msg结构体的过滤步骤为:
步骤S2.1:将所有Msg结构体存入一集合中;
步骤S2.2:逐个读取集合中的Msg结构体,并将读取出的Msg结构体中的消息唯一标示符与还存在于集合中的Msg结构体的消息唯一标示符进行比对,若比对到相同的消息唯一标示符,则丢弃当前读取出的Msg结构体,若没比对到相同的消息唯一标示符,则将当前读取出的Msg结构体保存。
5.如权利要求4所述的一种适用于不同推送SDK的统一接入方法,其特征在于,所述步骤S3中Msg结构体广播给应用程序的具体过程为:
步骤S3.1:获取Intent对象,并将Msg结构体的消息唯一标示符、消息命令字、具体消息内容和消息额外携带内容保存到Intent对象中;
步骤S3.2:通过API将Intent对象发送给应用程序。
6.一种基于权利要求1所述方法的适用于不同推送SDK的统一接入系统,其特征在于,包括:
推送模块,其用于接收推送消息,并将推送消息封装成一单独的Msg结构体;
消息过滤模块,其用于对所有的Msg结构体进行过滤,去除相同的Msg结构体;
广播模块,其用于将消息过滤模块过滤后的Msg结构体广播给应用程序。
7.如权利要求6所述的一种适用于不同推送SDK的统一接入系统,其特征在于:所述推送消息包括消息唯一标示符、消息命令字、具体消息内容和消息额外携带内容,所述推送模块用于将推送消息的消息唯一标示符、消息命令字、具体消息内容和消息额外携带内容封装成一Msg结构体。
8.如权利要求7所述的一种适用于不同推送SDK的统一接入系统,其特征在于:对于内容相同的推送消息,推送模块所封装成的Msg结构体相同,对于内容不同的推送消息,推送模块所封装成的Msg结构体不同。
9.如权利要求6所述的一种适用于不同推送SDK的统一接入系统,其特征在于:当应用程序在广播模块上注册后,广播模块将推送消息广播给应用程序。
10.如权利要求6所述的一种适用于不同推送SDK的统一接入系统,其特征在于:所述推送模块包括封装模块,所述封装模块用于将推送消息封装成一单独的Msg结构体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610881283.4A CN106549937B (zh) | 2016-10-09 | 2016-10-09 | 一种适用于不同推送sdk的统一接入方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610881283.4A CN106549937B (zh) | 2016-10-09 | 2016-10-09 | 一种适用于不同推送sdk的统一接入方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106549937A true CN106549937A (zh) | 2017-03-29 |
CN106549937B CN106549937B (zh) | 2020-03-17 |
Family
ID=58368572
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610881283.4A Active CN106549937B (zh) | 2016-10-09 | 2016-10-09 | 一种适用于不同推送sdk的统一接入方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106549937B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108462894A (zh) * | 2018-03-30 | 2018-08-28 | 武汉斗鱼网络科技有限公司 | 直播间广播处理方法、装置及可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102143444A (zh) * | 2010-09-02 | 2011-08-03 | 华为技术有限公司 | 一种业务分发平台消息推送方法、相关设备及系统 |
CN105516314A (zh) * | 2015-12-11 | 2016-04-20 | 中南大学 | 一种基于透明计算向智能终端推送消息的方法 |
CN105897814A (zh) * | 2015-07-08 | 2016-08-24 | 乐视致新电子科技(天津)有限公司 | 推送消息检测方法及装置 |
CN105933216A (zh) * | 2016-07-13 | 2016-09-07 | 北京农信互联科技有限公司 | 一种猪场消息管理系统 |
-
2016
- 2016-10-09 CN CN201610881283.4A patent/CN106549937B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102143444A (zh) * | 2010-09-02 | 2011-08-03 | 华为技术有限公司 | 一种业务分发平台消息推送方法、相关设备及系统 |
CN105897814A (zh) * | 2015-07-08 | 2016-08-24 | 乐视致新电子科技(天津)有限公司 | 推送消息检测方法及装置 |
CN105516314A (zh) * | 2015-12-11 | 2016-04-20 | 中南大学 | 一种基于透明计算向智能终端推送消息的方法 |
CN105933216A (zh) * | 2016-07-13 | 2016-09-07 | 北京农信互联科技有限公司 | 一种猪场消息管理系统 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108462894A (zh) * | 2018-03-30 | 2018-08-28 | 武汉斗鱼网络科技有限公司 | 直播间广播处理方法、装置及可读存储介质 |
CN108462894B (zh) * | 2018-03-30 | 2020-07-31 | 武汉斗鱼网络科技有限公司 | 直播间广播处理方法、装置及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN106549937B (zh) | 2020-03-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108093070B (zh) | 一种物联网数据服务中间件系统 | |
CN105934923B (zh) | 反恶意软件移动内容数据管理设备和方法 | |
JP2018533773A5 (zh) | ||
CN103870274A (zh) | 一种基于webservice技术下实现异构系统间数据交互的可视化开发组件 | |
CN109462502A (zh) | 配置信息保存指令的控制方法、装置及sdn控制器 | |
US20150085878A1 (en) | Protocol data unit interface | |
CN106713351B (zh) | 一种基于串口服务器的安全通讯方法及装置 | |
CN111935081B (zh) | 一种数据包脱敏方法和装置 | |
CN104657435A (zh) | 一种应用数据的存储管理方法和网络管理系统 | |
CN110955714A (zh) | 一种将非结构化文本转化为结构化文本的方法及装置 | |
CN111953805A (zh) | 传输数据的方法和装置 | |
CN109861998A (zh) | 一种基于北斗短报文协议的插件式动态解析系统及方法 | |
CN106549937A (zh) | 一种适用于不同推送sdk的统一接入方法及系统 | |
CN116225578A (zh) | 数据序列化方法、反序列化方法、进程间指令参数传递方法 | |
CN104156211B (zh) | 一种用于传感器的通用数据接口及数据调用方法 | |
CN108334392B (zh) | 安卓系统中启动页面的方法、存储介质、设备及系统 | |
CN108845995A (zh) | 数据处理方法、装置、存储介质和电子装置 | |
CN104331289A (zh) | 一种将插件式设计应用到流程处理的方法及装置 | |
WO2014146542A1 (zh) | 表项操作接口函数的生成方法、装置及计算机存储介质 | |
CN108197273B (zh) | 一种多用户数据同步的方法及装置 | |
CN101442539A (zh) | 实现字段过滤的方法和装置 | |
CN116662270B (zh) | 文件解析方法及相关装置 | |
CN103368944A (zh) | 一种内存共享网络架构及其协议规范 | |
CN103176891A (zh) | 一种linux下利用内核模块与应用模块结合完成软件日志的方法 | |
CN102521291B (zh) | 一种基于antlr的lin网络描述文件ldf的导入方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |