发明内容
有鉴于此,本申请提供一种信息推送的实现方法,应用在服务端,所述服务端维护有包括业务标识和对应的推送数据的服务端配置信息,所述方法包括:
接收客户端带有业务标识的业务请求;
当服务端配置信息中包括所述业务请求中的业务标识时,采用所述业务标识对应的推送数据生成业务响应;所述推送数据包括展示内容,供所述客户端向用户显示所述展示内容;
将生成的业务响应返回给所述客户端。
本申请提供的一种信息推送的实现方法,应用在客户端,包括:
根据用户的操作,向服务端发送带有业务标识的业务请求;
接收服务端根据所述业务标识返回的业务响应;
当服务端返回的业务响应中携带有包括展示内容的推送数据时,向用户显示所述展示内容。
本申请还提供了一种信息推送的实现装置,应用在服务端,所述服务端维护有包括业务标识和对应的推送数据的服务端配置信息,所述装置包括:
业务请求接收单元,用于接收客户端带有业务标识的业务请求;
业务响应生成单元,用于当服务端配置信息中包括所述业务请求中的业务标识时,采用所述业务标识对应的推送数据生成业务响应;所述推送数据包括展示内容,供所述客户端向用户显示所述展示内容;
业务响应发送单元,用于将生成的业务响应返回给所述客户端。
本申请提供的一种信息推送的实现装置,应用在客户端,包括:
业务请求发送单元,用于根据用户的操作,向服务端发送带有业务标识的业务请求;
业务响应接收单元,用于接收服务端根据所述业务标识返回的业务响应;
推送数据处理单元,用于当服务端返回的业务响应中携带有包括展示内容的推送数据时,向用户显示所述展示内容。
由以上技术方案可见,本申请的实施例中,服务端根据客户端业务请求中的业务标识识别出客户端要使用与推送信息相关的业务时,将推送数据在业务响应中发送给客户端,由客户端显示给用户,从而避免了将客户端不会显示的推送数据发送给客户端,降低了对网络资源的占用,节约了客户端的流量。
具体实施方式
本申请的实施例提出一种新的信息推送的实现方法,在服务端配置信息中预置需要进行信息推动的业务的业务标识以及对应的推送数据,当客户端发起带有预置的业务标识的业务请求时,服务端将对应的推送数据在业务响应中返回给客户端,客户端即可利用推送数据在该业务的进行过程中向用户显示推动的信息,以避免因用户未使用与推送信息相关的业务而导致的网络资源和用户流量的浪费,从而解决现有技术存在的问题。
本申请的实施例中,基于C/S(Client/Server,客户端/服务器)架构的客户端和服务端通过网络相互可访问。其中,客户端安装在用户设备上,可以是App,也可以是其他形式的客户端软件;服务端运行在业务服务提供方服务器上。客户端所在的用户设备可以是手机、平板电脑、PC(Personal Computer,个人电脑)、笔记本等设备;服务器可以是一个物理或逻辑服务器,也可以是由两个或两个以上分担不同职责的物理或逻辑服务器、相互协同来实现本申请实施例中服务器的各项功能。本申请实施例对用户设备、服务器的种类,以及用户设备与服务器之间通信网络的类型、协议等均不做限定。
本申请的实施例中,在服务端维护有服务端配置信息,用来保存业务标识和推送数据的对应关系。如果希望在用户使用某项业务时向客户端推送与该业务有关的信息,则将该业务的业务标识和要发送给客户端的推送数据对应的配置在服务端配置信息中。服务端配置信息可以由技术人员手动配置在服务端;也可以以配置文件的形式保存在预定存储位置,由服务端读取。
本申请的实施例中,信息推送的实现方法应用在服务端的流程如图1所示,应用在客户端的流程如图2所示。
在客户端,步骤210,根据用户的操作,向服务端发送带有业务标识的业务请求。
在服务端,步骤110,接收客户端带有业务标识的业务请求。
当用户希望使用某个具体业务的服务时,在客户端进行与该项业务相关的操作,例如打开该项业务的页面、或启动该项业务的某个功能等等。客户端根据用户的操作,向服务端发起业务请求,在业务请求中带有用户即将或正在进行的业务的业务标识,以便服务端能够通过业务标识识别出用户请求的具体业务。根据实际应用场景中服务提供方的实现,业务标识可以是服务端为各个业务提供的唯一编号,也可以是服务端各个业务接收客户端请求的服务接口,还可以是客户端业务请求中其他对应于某项业务或某项业务中的某个功能的字段,本申请的实施例不做限定。
在服务端,步骤120,当服务端配置信息中包括接收的业务请求中的业务标识时,采用该业务标识对应的推送数据生成业务响应。
服务端在接收到客户端的业务请求后,从业务请求中提取业务标识,查找服务端配置信息中是否包括该业务标识及对应的推送数据,找到后根据对应的推送数据生成返回给客户端的业务响应。
具体而言,服务端可以自行对该业务请求进行业务处理,也可以通过调用其他的业务服务功能模块来对该业务请求进行业务处理,以得到相应的业务结果;服务端在服务的配置信息中查询该业务请求中的业务标识,如果查询成功,则读取服务端配置信息中对应于该业务标识的推送数据,采用推送数据和得到的业务结果生成业务响应;如果查询失败,则当前该项业务没有需要推送给用户的信息,服务端采用得到的业务结果生成业务响应。
根据实际应用场景中服务端的具体实现,可以有多种方式来获取业务结果、查询是否有推送数据,本申请的实施例不做限定。例如,服务端接收业务响应的接口功能模块通过调用业务服务功能模块来进行业务处理,通过调用推送信息功能模块来进行服务端配置信息的查询。在这个例子中,接口功能模块在收到来自客户端的业务请求后,先采用客户端的业务请求调用业务服务功能模块,来得到该业务请求的业务结果,从业务服务功能模块返回的业务结果中可以携带有对应的业务请求中的业务标识;接口功能模块在收到业务结果后,再以业务请求或业务结果中的业务标识调用推送信息功能模块来查询服务端配置信息,来得到带有与业务标识对应的推送数据的查询结果、或无匹配业务标识(即查询失败)的查询结果。
上述例子中,可以在接口功能模块预先注册钩子函数,用来在收到业务结果后,启动对推送信息功能模块的调用。一种实现方式中,预先注册的钩子函数在收到从业务功能模块返回的所有业务结果后,都启动对服务端配置信息的查询。在另一种实现方式中,预先注册对应于服务端配置信息中每个业务标识的钩子函数;当从业务功能模块返回的业务结果中带有对应于某个钩子函数的业务标识时,该钩子函数以该业务标识调用推送信息功能模块,启动对服务端配置信息的查询。
在一些应用场景中,服务端可以只向当前状态满足一定条件的用户进行信息推送,从而避免将推送信息发送给与其无关的用户,既能够进一步降低对网络资源的占用、对用户流量的消耗,还能够减少对用户的打扰。例如,对推送信息与地理位置相关的情形,可以向在一定地理区域内的用户推送该信息;对推送的业务信息只对一定等级以上的用户有效的情形,可以只对等级满足条件的用户进行信息推送。
在这些应用场景中,服务端在收到来自客户端的业务请求后,获取在该客户端登录的用户的当前用户状态信息,如果当前用户状态信息满足预定用户筛选条件、并且服务端配置信息中包括该业务请求中的业务标识,则利用该业务标识对应的推送数据来生成业务响应。
当客户端在用户设备上启动运行时,通常会与服务端建立长连接,并通过所建立的连接上传该客户端、该客户端所在用户设备、和/或在该客户端登录用户的相关信息,服务端会保存客户端上传的这些信息;服务端可以从保存的这些信息中得到当前用户状态信息;此外,服务端还可以通过与客户端的长连接,要求客户端提供所需的其他当前用户状态信息。本申请的实施例对当前用户状态信息的具体内容和获取方式均不做限定。
在服务端,步骤130,将生成的业务响应返回给该客户端。
在客户端,步骤220,接收服务端根据业务请求中的业务标识返回的业务响应。
当服务端配置信息中存在客户端发起的业务请求中的业务标识时,服务端向客户端返回的带有推送数据的业务响应;否则服务端返回的业务响应中不带有推送数据。
在客户端,步骤230,当服务端返回的业务响应中携带有包括展示内容的推送数据时,向用户显示展示内容。
服务端配置信息中对应于业务标识的推送数据包括客户端完成推送信息的显示、或显示和操作响应等所需的数据。例如,推送数据中通常包括展示内容;由客户端在收到带有推送数据的业务响应后,将其中的展示内容显示给用户。
服务端可以指定显示展示内容的页面。除展示内容外,推送数据中还可以包括页面标识;客户端在收到包括页面标识和展示内容的推送数据后,在具有该页面标识的页面显示与该页面标识一同收到的展示内容。页面标识用来唯一代表在客户端运行过程中可能打开的某个页面,可以根据实际场景中客户端的具体实现来确定,不再赘述。另外,展示内容可以采用弹窗、公告或其他方式来显示给用户,本申请实施例不做限定。
一个例子中,客户端可以采用钩子函数来实现在指定页面显示展示内容。具体而言,在客户端预先注册(如可以在客户端启动运行时注册)钩子函数,该钩子函数在客户端收到服务端返回的业务响应后,启动对业务响应的检查;如果检查到业务响应中带有推送数据,则开始检测客户端每个打开页面的页面标识;当打开页面的页面标识与推送数据中的页面标识相同时,在该页面显示推送数据中的展示内容。
对展示内容中带有可供用户操作的按钮、控件等的应用场景,推送数据中还可以包括推送业务逻辑,用来告知客户端在用户对展示内容进行操作后要进行怎样的处理。在客户端将带有可操作部件的展示内容显示给用户后,如果用户对可操作部件进行了操作,则客户端依照推送数据中的推送业务逻辑来进行后续的处理,如打开另一个页面、启动某一个具体的功能等等。
可见,本申请的实施例中,在服务端配置信息中预置需要进行信息推动的业务的业务标识以及对应的推送数据,服务端在从客户端业务请求中的业务标识识别出客户端要使用与推送数据对应的业务后,将推送数据在业务响应中返回给客户端,从而避免了将客户端不用使用的推送数据发送给客户端,降低了对网络资源的占用,节约了客户端的流量。
在本申请的一个应用示例中,服务提供方运行的服务端包括通用RPC(RemoteProcedure Call,远程过程调用)模块、业务处理模块和服务端运营模块;用户设备上运行的客户端包括网络模块、客户端运营模块和页面与业务模块。客户端在启动时与服务端建立长连接,服务端的各项业务均具有各自的业务RPC接口,当客户端要使用某项业务时,基于长连接通过该项业务的RPC接口向服务端发起请求。换言之,服务端可以通过业务RPC接口来识别客户端在使用的具体业务,因此本应用示例中,将业务RPC接口作为业务标识。
服务提供方希望当位于某个预定地理区域范围内的用户打开其客户端上移动支付业务的页面时,向用户推荐在该区域附近的运营活动。服务提供方的运营人员以按照要展现给用户的运营活动信息生成的展示内容作为推送数据,将推送数据与移动支付业务RPC接口的对应关系添加到服务端配置信息中。
请参见图3,当用户在客户端上打开移动支付业务的页面时,客户端的页面与业务模块按照原有的业务逻辑,通过网络模块向服务端的移动支付业务RPC接口发起业务请求。
服务端的通用RPC模块接收客户端的业务请求,将业务请求转发到业务处理模块;业务处理模块根据移动支付业务的处理逻辑,将对应于该业务请求的业务结果返回给通用RPC模块。预先注册在通用RPC模块的钩子函数在收到业务结果后,启动对是否有推送数据的查询,通用RPC模块以移动支付业务RPC接口为参数调用服务端运营模块。服务端运营模块在服务端配置信息中查询是否有移动支付业务RPC接口对应的推送数据,在查询到推送数据后,按照在该客户端登录用户的当前定位信息判断该用户是否位于预定地理区域范围内,如果是则将推送数据返回给通用RPC模块;否则向RPC模块返回无推送数据。通用RPC模块收到服务端运营模块返回的推送数据后,将业务处理模块返回的业务结果和推送数据封装在业务响应中,并将业务响应发送给客户端。如果通用RPC模块没有收到推送数据,则将业务处理模块返回的业务结果封装在业务响应中并发送给客户端。
客户端的网络模块收到服务端返回的业务响应,将业务响应中的业务结果发送给页面与业务模块,由页面与业务模块根据移动支付业务的逻辑做业务处理。预先注册在网络模块的钩子函数在收到业务响应后,启动客户端运营模块对业务响应的检测。客户端运营模块从网络模块获取接收的业务响应,检测业务响应中是否携带有推送数据。如果业务响应中没有推送数据,则不做处理。如果业务响应中有推送数据,则在当前客户端的页面上以弹窗的形式将推送数据中的展示内容显示给用户。
与上述流程实现对应,本申请的实施例还提供了一种应用在服务端的信息推送的实现装置,和一种应用在客户端的信息推送的实现装置。这两种装置均可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为逻辑意义上的装置,是通过客户端或服务端所在设备的CPU(Central Process Unit,中央处理器)将对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,除了图4所示的CPU、内存以及非易失性存储器之外,信息推送的实现装置所在的设备通常还包括用于进行无线信号收发的芯片等其他硬件,和/或用于实现网络通信功能的板卡等其他硬件。
图5所示为本申请实施例提供的一种信息推送的实现装置,应用在服务端,所述服务端维护有包括业务标识和对应的推送数据的服务端配置信息,所述装置包括业务请求接收单元、业务响应生成单元和业务响应发送单元,其中:业务请求接收单元用于接收客户端带有业务标识的业务请求;业务响应生成单元用于当服务端配置信息中包括所述业务请求中的业务标识时,采用所述业务标识对应的推送数据生成业务响应;所述推送数据包括展示内容,供所述客户端向用户显示所述展示内容;业务响应发送单元用于将生成的业务响应返回给所述客户端。
一个例子中,所述业务响应生成单元包括业务结果获取子单元和第一推送数据查询子单元,其中:业务结果获取子单元用于获取对所述业务请求进行业务处理后的业务结果;第一推送数据查询子单元用于在服务端配置信息中查询所述业务标识,查询成功后采用所述业务标识对应的推送数据和所述业务结果生成业务响应,查询失败后采用所述业务结果生成业务响应。
上述例子中,所述业务响应生成单元注册有钩子函数,用来在获取到业务结果后启动第一推送数据查询子单元对服务端配置信息的查询。
另一个例子中,所述业务响应生成单元包括业务结果获取子单元和第二推送数据查询子单元,其中:业务结果获取子单元用于获取对所述业务请求进行业务处理后的业务结果;所述业务结果中包括所述业务请求中的业务标识;第二推送数据查询子单元用于当所述业务标识存在于服务端配置信息中时,查询服务端配置信息中与所述业务标识对应的推送数据、并采用所述推送数据和所述业务结果生成业务响应,否则采用所述业务结果生成业务响应;
所述业务响应生成单元注册有对应于服务端配置信息中每个业务标识的钩子函数,用来在获取到带有相同业务标识的业务结果后启动第二推送数据查询子单元对服务端配置信息的查询。
可选的,所述业务响应生成单元具体用于:获取客户端登录用户的当前用户状态信息;当服务端配置信息中包括所述业务请求中的业务标识、并且所述当前用户状态信息满足预定用户筛选条件时,采用所述业务标识对应的推送数据生成业务响应。
可选的,所述推送数据还包括页面标识,供所述客户端在具有所述页面标识的页面显示所述展示内容。
可选的,所述推送数据还包括推送业务逻辑,供客户端在收到用户对展示内容的操作时,根据推送业务逻辑进行处理。
可选的,所述业务标识包括:业务远程过程调用RPC接口。
图6所示为本申请实施例提供的一种信息推送的实现装置,应用在客户端,包括业务请求发送单元、业务响应接收单元和推送数据处理单元,其中:业务请求发送单元用于根据用户的操作,向服务端发送带有业务标识的业务请求;业务响应接收单元用于接收服务端根据所述业务标识返回的业务响应;推送数据处理单元用于当服务端返回的业务响应中携带有包括展示内容的推送数据时,向用户显示所述展示内容。
一个例子中,所述推送数据还包括页面标识;所述推送数据处理单元具体用于:当服务端返回的业务响应中携带有包括页面标识和展示内容的推送数据时,在具有所述页面标识的页面显示所述展示内容。
上述例子中,所述推送数据处理单元包括响应检查启动子单元、页面标识监测子单元和内容展示子单元,其中:响应检查启动子单元由预先注册的钩子函数在接收到服务端返回的业务响应后,启动对业务响应的检查;页面标识监测子单元用于在检查出业务响应中带有推送数据时,监测打开页面的页面标识;内容展示子单元用于当打开页面的页面标识与所述推送数据中的页面标识相同时,在所述页面显示所述推送数据中的展示内容。
可选的,所述推送数据还包括推送业务逻辑;所述装置还包括推送业务逻辑处理单元,用于在收到用户对展示内容的操作时,根据所述推送业务逻辑进行处理。
可选的,所述业务标识包括:业务远程过程调用RPC接口。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。