CN109150956A - 一种推送sdk的实现方法、装置、设备和计算机存储介质 - Google Patents

一种推送sdk的实现方法、装置、设备和计算机存储介质 Download PDF

Info

Publication number
CN109150956A
CN109150956A CN201810659905.8A CN201810659905A CN109150956A CN 109150956 A CN109150956 A CN 109150956A CN 201810659905 A CN201810659905 A CN 201810659905A CN 109150956 A CN109150956 A CN 109150956A
Authority
CN
China
Prior art keywords
push
module
host
service
application
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
Application number
CN201810659905.8A
Other languages
English (en)
Other versions
CN109150956B (zh
Inventor
龚正
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Baidu Online Network Technology Beijing Co Ltd
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN201810659905.8A priority Critical patent/CN109150956B/zh
Publication of CN109150956A publication Critical patent/CN109150956A/zh
Application granted granted Critical
Publication of CN109150956B publication Critical patent/CN109150956B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1073Registration or de-registration
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/55Push-based network services

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Multimedia (AREA)
  • Information Transfer Between Computers (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提供了一种推送SDK的实现方法、装置、设备和计算机存储介质,其中方法包括:宿主应用从推送服务端设备下载推送功能模块;加载所述推送功能模块中的启动模块,以启动推送SDK提供的服务Service模块;通过Service模块调用所述推送功能模块中的数据通道模块以与所述推送服务端设备建立长连接,并从所述推送服务端设备获取推送服务数据包。本发明能够降低推送SDK对宿主应用安装包大小的增加,以及降低宿主应用的开发和维护成本。

Description

一种推送SDK的实现方法、装置、设备和计算机存储介质
【技术领域】
本发明涉及计算机应用技术领域,特别涉及一种推送SDK的实现方法、装置、设备和计算机存储介质。
【背景技术】
目前推送服务一般采取SDK(Software Development Kit,软件开发工具包)方式发布,在SDK中通常包含dex文件、so文件和至少一个用于显示推送通知的布局文件。也就是说,现有推送SDK需要宿主应用整合与推送服务端设备建立长连接并下载推送服务数据包的功能,因此需要宿主应用整合的文件较大,从而导致宿主应用编译后的安装包大小增加较多。一些要求严格的宿主应用可能不允许过大的SDK整合入其应用。
另外,在推送SDK发布新版本时,一般推送供应商需要在其官网上发布新版本,宿主应用开发者需要主动去官网上检查,并将推送SDK的新版本整合到宿主应用程序中以形成宿主应用的新版本,再由终端用户下载和更新宿主应用。显然,推送SDK新版本更新到达宿主应用和终端用户的周期过长,宿主应用的开发和维护成本高。
【发明内容】
有鉴于此,本发明提供了一种推送SDK的实现方法和装置,以便于降低推送SDK对宿主应用安装包大小的增加。
本发明提供了一种推送SDK的实现方法,该方法包括:
宿主应用从推送服务端设备下载推送功能模块;
加载所述推送功能模块中的启动模块,以启动推送SDK提供的服务Service模块;
通过Service模块调用所述推送功能模块中的数据通道模块以与所述推送服务端设备建立长连接,并从所述推送服务端设备获取推送服务数据包。
根据本发明一优选实施方式,该方法还包括:
所述宿主应用预先对推送SDK提供的Service模块进行注册。
根据本发明一优选实施方式,宿主应用启动的初始化过程中,调用推送SDK提供的启动接口,以执行所述从推送服务端设备下载推送功能模块的步骤。
根据本发明一优选实施方式,所述推送功能模块为包括dex文件和so文件的压缩包。
根据本发明一优选实施方式,所述从推送服务端设备下载推送功能模块包括:
若所述宿主应用本地尚不存在对应的推送功能模块,则从推送服务端设备下载最新版本的推送功能模块;否则,将推送服务端设备的推送功能模块与宿主应用本地的推送功能模块进行版本比对,若推送服务端设备的推送功能模块版本高于宿主应用本地的推送功能模块版本,则从推送服务端设备下载最新版本的推送功能模块,否则结束流程。
根据本发明一优选实施方式,所述启动推送SDK提供的服务Service模块之前,还包括:
所述启动模块判断是否已经存在所述推送SDK可用的已启动Serive模块,如果否,则继续执行所述启动推送SDK提供的服务Service模块;否则,利用所述已启动Service模块建立的长连接从推送服务端设备获取推送服务数据包。
根据本发明一优选实施方式,所述调用推送SDK提供的启动接口由宿主应用中运行于主进程的推送管理模块执行;
所述Service模块运行于宿主应用指定的子进程。
根据本发明一优选实施方式,该方法还包括:
通过所述数据通道模块获取推送服务数据包的过程中,接收到推送事件,则通过所述推送功能模块中的消息事件分发模块将所述推送事件发送到宿主应用的广播接收者模块。
本发明还提供了一种推送SDK的实现方法,该方法包括:
推送服务端设备向宿主应用提供推送功能模块以供所述宿主应用下载;
在所述宿主应用加载所述推送功能模块中的启动模块以启动Service模块,并通过所述Service模块调用所述推送功能模块中的数据通道模块以与所述推送服务端设备建立长连接后,所述推送服务端设备向所述宿主应用提供推送服务数据包。
本发明还提供了一种推送SDK的实现方法,该方法包括:
推送SDK向宿主应用提供推送管理模块,所述推送管理模块从推送服务端设备下载推送功能模块;
推送SDK提供服务Service模块供宿主应用注册,所述Service模块被启动后,调用所述推送功能模块中的数据通道模块以与推送服务端设备建立长连接并获取推送服务数据包。
根据本发明一优选实施方式,所述推送管理模块运行于宿主应用的主程序;
所述Service模块运行于宿主应用指定的子程序。
本发明还提供了一种推送SDK的实现装置,设置于宿主应用,该装置包括:
推送管理模块,用于从推送服务端设备下载推送功能模块;加载所述推送功能模块中的启动模块;
所述启动模块,用于启动推送SDK提供的Service模块;
所述Service模块,用于调用所述推送功能模块中的数据通道模块;
所述数据通道模块,用于与所述推送服务端设备建立长连接,并从所述推送服务端设备获取推送服务数据包。
根据本发明一优选实施方式,所述推送管理模块从推送服务端设备下载推送功能模块时,具体执行:
若所述宿主应用本地尚不存在对应的推送功能模块,则从推送服务端设备下载最新版本的推送功能模块;否则,将推送服务端设备的推送功能模块与宿主应用本地的推送功能模块进行版本比对,若推送服务端设备的推送功能模块版本高于宿主应用本地的推送功能模块版本,则从推送服务端设备下载最新版本的推送功能模块,否则结束流程。
根据本发明一优选实施方式,所述推送管理模块运行于宿主应用的主进程;所述Service模块运行于宿主应用指定的子进程。
根据本发明一优选实施方式,所述数据通道模块,还用于在获取推送服务数据包的过程中,接收到推送事件,则将所述推送事件提供给所述推送功能模块中的消息事件分发模块;
所述消息事件分发模块,用于将所述推送事件发送到宿主应用的广播接收者模块。
本发明还提供了一种推送SDK的实现装置,设置于推送服务端设备,该装置包括:
功能模块提供单元,用于向宿主应用提供推送功能模块以供所述宿主应用下载;
数据包提供单元,用于在所述宿主应用加载所述推送功能模块中的启动模块以启动Service模块,并通过所述Service模块调用所述推送功能模块中的数据通道模块以与所述推送服务端设备建立长连接后,向所述宿主应用提供推送服务数据包。
本发明还提供了一种推送SDK的实现装置,该装置包括:
推送管理模块,用于从推送服务端设备下载推送功能模块;
Service模块,用于供宿主应用注册;被所述推送功能模块中的启动模块启动后,调用所述推送功能模块中的数据通道模块以与推送服务端设备建立长连接并获取推送服务数据包。
根据本发明一优选实施方式,所述推送管理模块运行于宿主应用的主进程,所述Service模块运行于宿主应用指定的子进程。
本发明还提供了一种设备,所述设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述的方法。
本发明还提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行上述的方法。
由以上技术方案可以看出,本发明提供的推送SDK中仅提供推送管理模块和Service模块以供宿主应用整合,Serive模块的启动以及与推送服务端设备建立长连接以获取推送服务数据包的功能采用动态加载的方式获取,有效降低了推送SDK对宿主应用安装包大小的增加。
更进一步地,当推送功能相关的版本更新时,不再需要宿主应用进行修改和重新发布新版本,只需要在推送服务端设备发布新版本即可,宿主应用采用动态加载的方式加载该新版本,从而缩短了版本更新的周期,对推送核心逻辑(即推送功能模块)的修改和完善也可以更快的到达终端用户。不需要宿主应用的开发者开发宿主应用的新版本,节约了宿主应用的开发和维护成本。
【附图说明】
图1为本发明实施例提供的在宿主应用端执行的流程示意图;
图2为本发明实施例提供的推送服务端设备执行的流程图;
图3为本发明实施例提供的一种推送SDK的实现装置;
图4为本发明实施例提供的另一种推送SDK的实现装置;
图5为本发明实施例提供的再一种推送SDK的实现装置;
图6示出了适于用来实现本发明实施方式的示例性计算机系统/服务器的框图。
【具体实施方式】
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
本发明的核心思想在于,将推送SDK的核心逻辑分离,相当于将推送SDK的功能分为强绑定部分和无关部分,在推送SDK中放置强绑定部分,核心逻辑作为无关部分通过动态加载的方式加载,其中强绑定部分负责对核心逻辑的启动和加载。
需要说明的是,在本发明所提供的实施例中,均以在Android(安卓)操作系统平台上实现为例,但在本申请的精神和原则之下,同样适用于其他操作系统平台。
下面结合实施例对本发明进行详细描述。
如图1中所示,在本发明实施例中,推送SDK中仅提供推送管理模块和Service(服务)模块以供宿主应用整合。其中推送管理模块负责对推送功能模块的下载和加载。推送SDK提供Service模块供宿主应用进行注册。该Service模块并不由宿主应用启动,而是由推送功能模块中的启动模块启动。推送功能模块即推送SDK的核心逻辑,被组织成一个压缩文件,可以从推送服务端设备下载。
在本发明实施例中,宿主应用指的是推送SDK需要整合入的应用程序,该宿主应用可以安装并运行于任意的用户设备,包括但不限于诸如:智能移动终端、智能家居设备、网络设备、可穿戴式设备、智能医疗设备、PC(个人计算机)等。其中智能移动设备可以包括诸如手机、平板电脑、笔记本电脑、PDA(个人数字助理)、互联网汽车等。智能家居设备可以包括智能家电设备,诸如智能电视、智能空调、智能热水器、智能冰箱、智能空气净化器等等,智能家居设备还可以包括智能门锁、智能插座、智能电灯、智能摄像头等。网络设备可以包括诸如交换机、无线AP、服务器等。可穿戴式设备可以包括诸如智能手表、智能眼镜、智能手环、虚拟现实设备、增强现实设备、混合现实设备(即可以支持虚拟现实和增强现实的设备)等等。智能医疗设备可以包括诸如智能体温计、智能血压仪、智能血糖仪等等
具体地,在宿主应用端执行的方法流程可以包括以下步骤:
在101中,宿主应用的推送管理模块调用推送SDK提供的启动接口,从推送服务端设备下载推送功能模块。
在本发明实施例中,可以在宿主应用启动进行初始化的过程中,执行本流程。也可以由某个特定事件触发,例如在宿主应用启动过程中不执行本流程,但在用户登录应用后触发执行本流程。除此之外,本发明并不限于这些触发方式。
推送功能模块从文件类型上可以包含dex文件和so文件。dex文件是Android系统的可执行文件,包含应用程序的全部操作指令以及运行时数据。so文件是动态库文件,是一种二进制文件。从功能上可以包括启动模块、数据通道模块和消息事件分发模块。各模块的具体功能将在后续流程中涉及。
推送管理模块调用启动接口,发起http连接到推送服务端设备,检查对应推送功能模块的配置状态,下载最新的推送功能模块的压缩包。其中,在检查对应功能模块的配置状态时,主要检查对应推送功能模块的版本状况。如果宿主应用本地尚没有下载过推送功能模块,则直接下载最新的推送功能模块的压缩包。如果宿主应用本地已经下载过推送功能模块,则将本地的推送功能模块与推送服务端设备的推送功能模块进行版本对比,如果推送服务端设备的推送功能模块存在新的版本,则下载最新的推送功能模块的压缩包。如果推送服务端设备的推送功能模块不存在新的版本,则可以结束本实施例的流程。
另外,在检查对应功能模块的配置状态时,除了版本状况之外,还可以检查诸如地域、安全级别等其他类型的配置状况。例如,某些推送功能模块的压缩包是具有地域针对性的,只有位于某个地域的宿主应用才能够进行下载。
推送管理模块在下载最新的推送功能模块的压缩包后,通过加载器(Classloader)加载压缩包中的dex文件使其得以运行。so文件由dex文件中的代码进行加载。
另外,推送管理模块会对下载的推送功能模块进行安全性检查,例如进行MD5校验、签名比对等,从而保证所下载文件的安全性。如果通过安全性检查,则加载该推送功能模块,否则不会进行加载。
在102中,推送管理模块加载推送功能模块中的启动模块。
dex文件被加载后,推送管理模块调用dex文件中的启动模块,启动推送流程。
在103中,启动模块启动Service模块。
启动模块可以首先检查Service模块是否正常配置,如果是,则启动该Service模块。该Service模块可以在宿主应用的指定进程中启动,启动后在该指定进程中再次加载dex文件。其中该指定进程可以为主进程,也可以为子进程,优选后一种。例如,Service模块可以在push进程中启动运行。
其中,对于在主进程中启动Service模块的情况,由于dex文件已经在主进程中加载,因此不需要再次加载dex文件。
宿主应用在整合推送SDK时,通过推送SDK提供的Service模块预先进行注册,包括将Service模块(组件)加入应用功能清单,例如在manifest文件中注册一个用于承载推送服务数据包的长连接的Service模块。
启动模块在检查Service模块是否正常配置时,可以包括:判断Service模块是否已被宿主应用注册。还可以包括是否存在正在运行的push进程,如果是,则直接拉取该正在运行的push进程;否则创建push进程运行该Service模块。
对应这样一种情况:该推送SDK被多个不同宿主应用整合,则这种情况下多个宿主应用可以共用同一个Serive模块。也就是说,启动模块可以首先判断当前是否已经存在已启动的Serive模块可供使用,如果是,则不需要再次启动Service模块,而可以通过AIDL进程间通信的方式,直接使用该已启动的Service模块建立的数据通道从推送服务端设备获取推送服务数据包,以此保证同一设备只有一条数据通道,达到降低流量和电量消耗的目的。
其中,启动模块在判断当前是否已经存在已启动的Serive模块可供使用时,实际上就是判断是否有其他整合了该推送SDK的宿主应用已经启动了Service模块。具体地,可以通过已启动的Serive模块的名称确定哪个Serive模块整合了与本宿主相同的推送SDK,在此基础上,可以尝试与该确定出的Serive模块进行通信并进行安全性验证,如果验证通过,则确定该Serive模块可供使用。
在104中,Service模块调用推送功能模块中的数据通道模块,以通过数据通道模块与推送服务端设备建立长连接,并从推送服务端设备获取推送服务数据包。
在本发明实施例中,推送SDK中不再包含与推送服务端设备建立长连接以获取推送服务数据包的功能,仅提供Service模块,通过动态加载的方式加载推送功能模块后,由Service模块调用推送功能模块中的数据通道模块来与推送服务端设备建立长连接,并获取推送服务数据包。
推送服务数据包是与具体业务相关的推送数据,通常可以是新增加的、修改的等业务数据。
在105中,在通过数据通道模块获取推送服务数据包的过程中,如果接收到推送事件,则将推送事件发送到消息事件分发模块。
在106中,消息事件分发模块将推送事件发送给宿主应用的广播接收者模块。
如果通过数据通道模块接收到需要通知宿主应用的推送事件,例如透传消息、通知栏推送被点击等,可以将该推送事件发送到消息分发模块。由消息分发模块通过Intent(意图)机制分发给宿主应用自定义的BroadcastReceiver(广播接收者)模块。
至此,完成整个推送流程。
相对应地,推送服务端设备执行的流程可以如图2中所示。在本发明实施例中,推送服务端设备可以是可以提供推送服务数据包的服务器或服务器集群。如图2中所示,推送服务端设备执行的流程可以包括以下步骤:
在201中,推送服务端设备向宿主应用提供推送功能模块以供宿主应用下载。
在本步骤中,宿主应用调用推送SDK提供的启动接口发起http连接到推送服务端设备,推送服务端设备会应宿主应用的请求,将最新版本的推送功能模块提供给宿主应用,以供宿主应用下载。
在202中,在宿主应用加载推送功能模块中的启动模块以启动Service模块,并通过Service模块调用推送功能模块中的数据通道模块以与推送服务端设备建立长连接后,推送服务端设备向宿主应用提供推送服务数据包。
宿主应用执行的处理参见图1所示实施例,在此不做赘述。待宿主应用通过数据通道模块与推送服务端设备建立长连接后,推送服务端设备就能够将推送服务数据包推送给宿主应用。
在推送数据包的推送过程中,如果存在需要通知宿主应用的推送事件,则将该推送事件发送给数据通道模块。
以上是对本发明提供的方法进行的详细描述,下面结合实施例对本发明提供的装置分别进行描述。
图3为本发明实施例提供的一种推送SDK的实现装置,该装置可以体现为可以整合入宿主应用的SDK,如图3所示,该装置可以包括:推送管理模块01和Service模块02。各组成模块的主要功能如下:
推送管理模块01负责调用启动接口以从推送服务端设备下载推送功能模块。
推送管理模块01加载推送功能模块中的启动模块。启动模块进一步启动Service模块02。
Service模块02供宿主应用注册。该Service模块02被推送功能模块中的启动模块启动后,调用推送功能模块中的数据通道模块以与推送服务端设备建立长连接并获取推送服务数据包。
其中,推送管理模块可以运行于宿主应用的主进程,Service模块可以运行于宿主应用指定的进程。该指定的进程可以是主进程,也可以是指定的子进程,优选后一种。
图4为本发明实施例提供的另一种推送SDK的实现装置,该装置设置于宿主应用,如图4所示,该装置可以包括:
推送管理模块01,负责从推送服务端设备下载推送功能模块10;加载推送功能模块10中的启动模块11。
推送功能模块10加载后,同样运行于宿主应用并作为该装置的一部分功能模块执行处理。
启动模块11,负责启动推送SDK提供的Service模块02。
Service模块02,负责调用推送功能模块10中的数据通道模块12。
数据通道模块12,负责与推送服务端设备建立长连接,并从推送服务端设备获取推送服务数据包。
其中,宿主应用中的注册模块(图中未示出)可以预先对推送SDK提供的Serive模块进行注册。
推送管理模块01可以在宿主应用启动的初始化过程中,调用推送SDK提供的启动接口,以执行从推送服务端设备下载推送功能模块的处理。
其中,推送功能模块从文件类型上可以体现为包括dex文件和so文件的压缩包。
推送管理模块01从推送服务端设备下载推送功能模块时,若宿主应用本地尚不存在对应的推送功能模块,则从推送服务端设备下载最新版本的推送功能模块10;否则,将推送服务端设备的推送功能模块与宿主应用本地的推送功能模块进行版本比对,若推送服务端设备的推送功能模块版本高于宿主应用本地的推送功能模块版本,则从推送服务端设备下载最新版本的推送功能模块10,否则结束流程。
推送管理模块01可以运行于宿主应用的主进程。Service模块02可以运行于宿主应用指定的进程。其中,指定的进程可以是主进程,也可以是指定的子进程,优选后一种。
另外,推送管理模块01可以在加载推送功能模块10中的启动模块11之前,对下载的推送功能模块10进行安全性检查,若通过安全性检查,则继续执行加载推送功能模块10中的启动模块11的处理。
数据通道模块12在获取推送服务数据包的过程中,若接收到推送事件,则可以将推送事件提供给推送功能模块10中的消息事件分发模块13。由消息事件分发模块13将推送事件发送到宿主应用的广播接收者模块。
图5为本发明实施例提供的再一种推送SDK的实现装置,该装置设置于推送服务端设备。如图5所示,该装置可以包括:
功能模块提供单元21,负责向宿主应用提供推送功能模块10以供宿主应用下载;
数据包提供单元22,用于在宿主应用加载所述推送功能模块中的启动模块以启动Service模块,并通过所述Service模块调用推送功能模块中的数据通道模块以与所述推送服务端设备建立长连接后,向宿主应用提供推送服务数据包。
图6示出了适于用来实现本发明实施方式的示例性计算机系统/服务器012的框图。图6显示的计算机系统/服务器012仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图6所示,计算机系统/服务器012以通用计算设备的形式表现。计算机系统/服务器012的组件可以包括但不限于:一个或者多个处理器或者处理单元016,系统存储器028,连接不同系统组件(包括系统存储器028和处理单元016)的总线018。
总线018表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机系统/服务器012典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器012访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器028可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)030和/或高速缓存存储器032。计算机系统/服务器012可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统034可以用于读写不可移动的、非易失性磁介质(图6未显示,通常称为“硬盘驱动器”)。尽管图6中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线018相连。存储器028可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块042的程序/实用工具040,可以存储在例如存储器028中,这样的程序模块042包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块042通常执行本发明所描述的实施例中的功能和/或方法。
计算机系统/服务器012也可以与一个或多个外部设备014(例如键盘、指向设备、显示器024等)通信,在本发明中,计算机系统/服务器012与外部雷达设备进行通信,还可与一个或者多个使得用户能与该计算机系统/服务器012交互的设备通信,和/或与使得该计算机系统/服务器012能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口022进行。并且,计算机系统/服务器012还可以通过网络适配器020与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器020通过总线018与计算机系统/服务器012的其它模块通信。应当明白,尽管图6中未示出,可以结合计算机系统/服务器012使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理单元016通过运行存储在系统存储器028中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的方法流程。
上述的计算机程序可以设置于计算机存储介质中,即该计算机存储介质被编码有计算机程序,该程序在被一个或多个计算机执行时,使得一个或多个计算机执行本发明上述实施例中所示的方法流程和/或装置操作。例如,被上述一个或多个处理器执行本发明实施例所提供的方法流程。
随着时间、技术的发展,介质含义越来越广泛,计算机程序的传播途径不再受限于有形介质,还可以直接从网络下载等。可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
由以上描述可以看出,本发明提供的上述方法、装置、设备和计算机存储介质存在以下优点:
1)本发明提供的推送SDK中仅提供推送管理模块、启动接口和Service模块以供宿主应用整合,Serive模块的启动以及与推送服务端设备建立长连接以获取推送服务数据包的功能采用动态加载的方式获取,有效降低了推送SDK对宿主应用安装包大小的增加。经试验,可以降低70%以上,宿主应用安装包大小增加量可以控制在100kb左右。
2)当推送功能相关的版本更新时,不再需要宿主应用进行修改和重新发布新版本,只需要在推送服务端设备发布新版本即可,宿主应用采用动态加载的方式加载该新版本,从而缩短了版本更新的周期,对推送核心逻辑(即推送功能模块)的修改和完善也可以更快的到达终端用户。不需要宿主应用的开发者开发宿主应用的新版本,节约了宿主应用的开发和维护成本。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

Claims (20)

1.一种推送软件开发工具包SDK的实现方法,其特征在于,该方法包括:
宿主应用从推送服务端设备下载推送功能模块;
加载所述推送功能模块中的启动模块,以启动推送SDK提供的服务Service模块;
通过Service模块调用所述推送功能模块中的数据通道模块以与所述推送服务端设备建立长连接,并从所述推送服务端设备获取推送服务数据包。
2.根据权利要求1所述的方法,其特征在于,该方法还包括:
所述宿主应用预先对推送SDK提供的Service模块进行注册。
3.根据权利要求1所述的方法,其特征在于,宿主应用启动的初始化过程中,调用推送SDK提供的启动接口,以执行所述从推送服务端设备下载推送功能模块的步骤。
4.根据权利要求1所述的方法,其特征在于,所述推送功能模块为包括dex文件和so文件的压缩包。
5.根据权利要求1或3所述的方法,其特征在于,所述从推送服务端设备下载推送功能模块包括:
若所述宿主应用本地尚不存在对应的推送功能模块,则从推送服务端设备下载最新版本的推送功能模块;否则,将推送服务端设备的推送功能模块与宿主应用本地的推送功能模块进行版本比对,若推送服务端设备的推送功能模块版本高于宿主应用本地的推送功能模块版本,则从推送服务端设备下载最新版本的推送功能模块,否则结束流程。
6.根据权利要求1所述的方法,其特征在于,所述启动推送SDK提供的服务Service模块之前,还包括:
所述启动模块判断是否已经存在所述推送SDK可用的已启动Serive模块,如果否,则继续执行所述启动推送SDK提供的服务Service模块;否则,利用所述已启动Service模块建立的长连接从推送服务端设备获取推送服务数据包。
7.根据权利要求1所述的方法,其特征在于,所述调用推送SDK提供的启动接口由宿主应用中运行于主进程的推送管理模块执行;
所述Service模块运行于宿主应用指定的子进程。
8.根据权利要求1所述的方法,其特征在于,该方法还包括:
通过所述数据通道模块获取推送服务数据包的过程中,接收到推送事件,则通过所述推送功能模块中的消息事件分发模块将所述推送事件发送到宿主应用的广播接收者模块。
9.一种推送SDK的实现方法,其特征在于,该方法包括:
推送服务端设备向宿主应用提供推送功能模块以供所述宿主应用下载;
在所述宿主应用加载所述推送功能模块中的启动模块以启动Service模块,并通过所述Service模块调用所述推送功能模块中的数据通道模块以与所述推送服务端设备建立长连接后,所述推送服务端设备向所述宿主应用提供推送服务数据包。
10.一种推送SDK的实现方法,其特征在于,该方法包括:
推送SDK向宿主应用提供推送管理模块,所述推送管理模块从推送服务端设备下载推送功能模块;
推送SDK提供服务Service模块供宿主应用注册,所述Service模块被启动后,调用所述推送功能模块中的数据通道模块以与推送服务端设备建立长连接并获取推送服务数据包。
11.根据权利要求10所述的方法,其特征在于,所述推送管理模块运行于宿主应用的主程序;
所述Service模块运行于宿主应用指定的子程序。
12.一种推送SDK的实现装置,设置于宿主应用,其特征在于,该装置包括:
推送管理模块,用于从推送服务端设备下载推送功能模块;加载所述推送功能模块中的启动模块;
所述启动模块,用于启动推送SDK提供的Service模块;
所述Service模块,用于调用所述推送功能模块中的数据通道模块;
所述数据通道模块,用于与所述推送服务端设备建立长连接,并从所述推送服务端设备获取推送服务数据包。
13.根据权利要求12所述的装置,其特征在于,所述推送管理模块从推送服务端设备下载推送功能模块时,具体执行:
若所述宿主应用本地尚不存在对应的推送功能模块,则从推送服务端设备下载最新版本的推送功能模块;否则,将推送服务端设备的推送功能模块与宿主应用本地的推送功能模块进行版本比对,若推送服务端设备的推送功能模块版本高于宿主应用本地的推送功能模块版本,则从推送服务端设备下载最新版本的推送功能模块,否则结束流程。
14.根据权利要求12所述的装置,其特征在于,所述推送管理模块运行于宿主应用的主进程;所述Service模块运行于宿主应用指定的子进程。
15.根据权利要求12所述的装置,其特征在于,所述数据通道模块,还用于在获取推送服务数据包的过程中,接收到推送事件,则将所述推送事件提供给所述推送功能模块中的消息事件分发模块;
所述消息事件分发模块,用于将所述推送事件发送到宿主应用的广播接收者模块。
16.一种推送SDK的实现装置,设置于推送服务端设备,其特征在于,该装置包括:
功能模块提供单元,用于向宿主应用提供推送功能模块以供所述宿主应用下载;
数据包提供单元,用于在所述宿主应用加载所述推送功能模块中的启动模块以启动Service模块,并通过所述Service模块调用所述推送功能模块中的数据通道模块以与所述推送服务端设备建立长连接后,向所述宿主应用提供推送服务数据包。
17.一种推送SDK的实现装置,其特征在于,该装置包括:
推送管理模块,用于从推送服务端设备下载推送功能模块;
Service模块,用于供宿主应用注册;被所述推送功能模块中的启动模块启动后,调用所述推送功能模块中的数据通道模块以与推送服务端设备建立长连接并获取推送服务数据包。
18.根据权利要求17所述的装置,其特征在于,所述推送管理模块运行于宿主应用的主进程,所述Service模块运行于宿主应用指定的子进程。
19.一种设备,其特征在于,所述设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-11中任一所述的方法。
20.一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行如权利要求1-11中任一所述的方法。
CN201810659905.8A 2018-06-25 2018-06-25 一种推送sdk的实现方法、装置、设备和计算机存储介质 Active CN109150956B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810659905.8A CN109150956B (zh) 2018-06-25 2018-06-25 一种推送sdk的实现方法、装置、设备和计算机存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810659905.8A CN109150956B (zh) 2018-06-25 2018-06-25 一种推送sdk的实现方法、装置、设备和计算机存储介质

Publications (2)

Publication Number Publication Date
CN109150956A true CN109150956A (zh) 2019-01-04
CN109150956B CN109150956B (zh) 2021-04-16

Family

ID=64802325

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810659905.8A Active CN109150956B (zh) 2018-06-25 2018-06-25 一种推送sdk的实现方法、装置、设备和计算机存储介质

Country Status (1)

Country Link
CN (1) CN109150956B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111754269A (zh) * 2020-06-29 2020-10-09 嘉兴想天信息科技有限公司 短说app集成社区系统
CN112799641A (zh) * 2020-12-31 2021-05-14 苏州科达科技股份有限公司 扩展软件开发包的方法、装置、电子设备及存储介质
CN113342419A (zh) * 2021-06-25 2021-09-03 北京奇艺世纪科技有限公司 一种推送系统加载方法、装置、电子设备及存储介质
CN115550498A (zh) * 2022-08-03 2022-12-30 阿波罗智联(北京)科技有限公司 投屏方法、装置、设备和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102760219A (zh) * 2011-12-20 2012-10-31 北京安天电子设备有限公司 一种Android平台软件保护系统、方法及设备
CN103401896A (zh) * 2013-07-15 2013-11-20 四川公用信息产业有限责任公司 一种多Android客户端服务共享方法及系统
CN105610888A (zh) * 2015-09-08 2016-05-25 华南师范大学 基于安卓的利用socket推送消息的方法和系统
CN105843654A (zh) * 2016-04-14 2016-08-10 广州市久邦数码科技有限公司 一种动态加载广告sdk的实现方法及其实现系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102760219A (zh) * 2011-12-20 2012-10-31 北京安天电子设备有限公司 一种Android平台软件保护系统、方法及设备
CN103401896A (zh) * 2013-07-15 2013-11-20 四川公用信息产业有限责任公司 一种多Android客户端服务共享方法及系统
CN105610888A (zh) * 2015-09-08 2016-05-25 华南师范大学 基于安卓的利用socket推送消息的方法和系统
CN105843654A (zh) * 2016-04-14 2016-08-10 广州市久邦数码科技有限公司 一种动态加载广告sdk的实现方法及其实现系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
世道无情: "Android动态加载(一) 基础篇(一)", 《HTTPS://WWW.JIANSHU.COM/P/FB03C2B59241》 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111754269A (zh) * 2020-06-29 2020-10-09 嘉兴想天信息科技有限公司 短说app集成社区系统
CN112799641A (zh) * 2020-12-31 2021-05-14 苏州科达科技股份有限公司 扩展软件开发包的方法、装置、电子设备及存储介质
CN113342419A (zh) * 2021-06-25 2021-09-03 北京奇艺世纪科技有限公司 一种推送系统加载方法、装置、电子设备及存储介质
CN113342419B (zh) * 2021-06-25 2023-09-19 北京奇艺世纪科技有限公司 一种推送系统加载方法、装置、电子设备及存储介质
CN115550498A (zh) * 2022-08-03 2022-12-30 阿波罗智联(北京)科技有限公司 投屏方法、装置、设备和存储介质
CN115550498B (zh) * 2022-08-03 2024-04-02 阿波罗智联(北京)科技有限公司 投屏方法、装置、设备和存储介质

Also Published As

Publication number Publication date
CN109150956B (zh) 2021-04-16

Similar Documents

Publication Publication Date Title
CN108733005B (zh) 一种控制智能设备联动的方法及装置
CN109213611B (zh) 跨进程通讯方法、装置、终端及存储介质
CN109150956A (zh) 一种推送sdk的实现方法、装置、设备和计算机存储介质
CN110113407B (zh) 小程序状态同步方法、设备和计算机存储介质
CN110389936B (zh) 一种启动小程序的方法、设备和计算机存储介质
WO2018028055A1 (zh) 在Windows系统上运行Android应用程序的方法及装置
US9614931B2 (en) Identifying a resource set require for a requested application and launching the resource set in a container for execution in a host operating system
CN110825479A (zh) 页面处理方法、装置、终端设备、服务器和存储介质
CN109062617A (zh) 一种支持多类型设备的平台的应用方法、移动终端
CN110209416A (zh) 应用软件更新方法、装置、终端及存储介质
CN109218393B (zh) 一种推送的实现方法、装置、设备和计算机存储介质
CN111330280B (zh) 游戏中的数据处理方法、装置、存储介质与电子设备
CN106681718A (zh) 一种基于工具集的桌面端插件框架及实现方法
US20220245005A1 (en) Methods, devices and computer storage media for inter-mini program platform discovery
CN110389935A (zh) 一种启动小程序的方法、设备和计算机存储介质
CN102043645A (zh) 一种加载插件的方法及装置
CN110297658A (zh) 功能组件共享方法、装置和计算机设备
CN108563472B (zh) 基于多开应用的服务插件加载方法及装置
CA2878759C (en) Methods and systems for providing software applications
CN114020414B (zh) Android系统与底层Linux共生方法、装置、电子设备及存储介质
CN114610446B (zh) 一种自动注入探针的方法、装置及系统
CN110377328A (zh) 一种数据获取方法、装置、设备以及存储介质
CN109254856A (zh) 智能pos服务端提供接口给客户端的方法
CN115691493A (zh) 语义分发方法、装置、设备及可读存储介质
CN110990015B (zh) 一种面向应急指挥领域的移动软件集成框架及其实现方法

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