CN117424884A - 数据传输方法、装置、终端及存储介质 - Google Patents

数据传输方法、装置、终端及存储介质 Download PDF

Info

Publication number
CN117424884A
CN117424884A CN202210812683.5A CN202210812683A CN117424884A CN 117424884 A CN117424884 A CN 117424884A CN 202210812683 A CN202210812683 A CN 202210812683A CN 117424884 A CN117424884 A CN 117424884A
Authority
CN
China
Prior art keywords
client
module
data
service
terminal
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.)
Pending
Application number
CN202210812683.5A
Other languages
English (en)
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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202210812683.5A priority Critical patent/CN117424884A/zh
Publication of CN117424884A publication Critical patent/CN117424884A/zh
Pending legal-status Critical Current

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/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/24Negotiation of communication capabilities

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer And Data Communications (AREA)

Abstract

本申请公开了一种数据传输方法、装置、终端及存储介质,属于通信技术领域。本申请通过声明跨端通信协议并将涉及跨端通信的数据都组装成规范化的URL数据,极大方便了第一客户端统一管理各个外部客户端发来的URL数据,也方便了第一客户端快速解析到业务数据并将业务数据路由到业务模块,这样无需技术人员按照不同客户端不同业务模块来分别制定不同的通信规则或代码逻辑,减少了技术人员的重复性工作,降低了跨端通信实现的人力成本,提升了跨端通信实现的开发效率。

Description

数据传输方法、装置、终端及存储介质
技术领域
本申请涉及通信技术领域,特别涉及一种数据传输方法、装置、终端及存储介质。
背景技术
随着通信技术的发展和终端功能的多样化,经常会存在跨端通信的业务需求,跨端通信包括以下两种情况:在不同设备间的跨终端通信,以及在同一设备上的跨客户端通信。
以一个客户端A调起另一个客户端B的某项功能接口(如扫码功能接口、支付功能接口、跳转功能接口等)的跨端通信场景为例,这需要技术人员在确定了客户端B的该功能接口所支持的页面调用方式之后,进而人工配置好利用该页面调用方式来调起该客户端B的该功能接口的代码逻辑,才能够在触发调用条件时,通过该代码逻辑来从客户端A调起客户端B的该功能接口,以实现提供该功能接口所对应业务服务。
由于跨端通信场景是繁多而复杂的,不同客户端、不同功能接口所支持的页面调起方式也各不相同,技术人员需要针对调用不同客户端的不同功能接口的情况,逐个指定不同的代码逻辑,这导致终端上的客户端实现跨端通信功能的人力成本较高、开发效率较低。
发明内容
本申请实施例提供了一种数据传输方法、装置、终端及存储介质,能够降低客户端实现跨端通信功能的人力成本、提升开发效率。该技术方案如下:
一方面,提供了一种数据传输方法,由终端执行,该方法包括:
通过所述终端的第一客户端接收第二客户端发送的统一资源定位符URL数据,所述URL数据基于所述第一客户端所支持的跨端通信协议封装得到,所述第二客户端是指所述终端上与所述第一客户端不同的客户端或另一终端上的任一客户端;
基于所述跨端通信协议,解析所述URL数据的路径字段,得到所述URL数据所请求与所述第一客户端进行跨端通信的业务模块;
基于所述跨端通信协议,解析所述URL数据的参数字段,得到所述URL数据所携带的业务数据;
通过所述业务模块处理所述业务数据,以使所述业务模块向所述第二客户端提供业务服务。
一方面,提供了一种数据传输装置,该装置包括:
接收模块,用于通过所述终端的第一客户端接收第二客户端发送的统一资源定位符URL数据,所述URL数据基于所述第一客户端所支持的跨端通信协议封装得到,所述第二客户端是指所述终端上与所述第一客户端不同的客户端或另一终端上的任一客户端;
解析模块,用于基于所述跨端通信协议,解析所述URL数据的路径字段,得到所述URL数据所请求与所述第一客户端进行跨端通信的业务模块;
所述解析模块,还用于基于所述跨端通信协议,解析所述URL数据的参数字段,得到所述URL数据所携带的业务数据;
处理模块,用于通过所述业务模块处理所述业务数据,以使所述业务模块向所述第二客户端提供业务服务。
在一种可能实施方式中,所述接收模块用于:
通过所述第一客户端内置的路由模块接收所述第二客户端发送的所述URL数据,所述路由模块用于统一接收来自任一第二客户端的基于所述跨端通信协议封装得到的URL数据。
在一种可能实施方式中,所述解析模块包括:
解析单元,用于通过所述路由模块基于所述跨端通信协议,解析所述URL数据的路径字段,得到用于指示所述业务模块的模块路径;
查询单元,用于基于所述模块路径,在所述路由模块中查询得到与所述模块路径相匹配的已注册的所述业务模块。
在一种可能实施方式中,所述查询单元用于:
从所述路由模块中已注册的至少一个配置信息中,查询得到与所述模块路径相匹配的配置信息,将所述配置信息所指示的已注册模块确定为所述业务模块;其中,在启动所述第一客户端后,所述第一客户端中支持跨端通信的各个模块均在所述路由模块中注册配置信息。
在一种可能实施方式中,所述解析模块用于:
通过所述路由模块,从所述参数字段中读取所述URL数据的加密属性参数,所述加密属性参数用于指示所述业务数据是否经过加密;
在所述加密属性参数指示所述业务数据经过加密的情况下,基于与所述第二客户端预先协商的解密算法,对所述参数字段中记录的加密数据进行解密,得到所述业务数据。
在一种可能实施方式中,所述处理模块包括:
处理单元,用于通过所述业务模块处理所述业务数据,得到业务处理结果;
传输单元,用于在所述第二客户端请求所述业务处理结果的情况下,向所述第二客户端返回所述业务处理结果,或,向所述第二客户端关联的服务器发送所述业务处理结果,以使所述服务器向所述第二客户端转发所述业务处理结果。
在一种可能实施方式中,所述传输单元用于:
在所述第二客户端为所述终端上的与所述第一客户端不同的客户端的情况下,基于所述终端在原生层的字典数据,对所述业务处理结果进行组装,将组装得到的数据发送到所述第二客户端;或,
在所述第二客户端为另一终端上的任一客户端的情况下,将所述业务处理结果映射为JSON格式后,将JSON格式的业务处理结果通过套接字链接通道发送至所述第二客户端。
一方面,提供了一种终端,该终端包括一个或多个处理器和一个或多个存储器,该一个或多个存储器中存储有至少一条计算机程序,该至少一条计算机程序由该一个或多个处理器加载并执行以实现如上述数据传输方法。
一方面,提供了一种存储介质,该存储介质中存储有至少一条计算机程序,该至少一条计算机程序由处理器加载并执行以实现如上述数据传输方法。
一方面,提供一种计算机程序产品,所述计算机程序产品包括一条或多条计算机程序,所述一条或多条计算机程序存储在计算机可读存储介质中。终端的一个或多个处理器能够从计算机可读存储介质中读取所述一条或多条计算机程序,所述一个或多个处理器执行所述一条或多条计算机程序,使得终端能够执行上述任一种数据传输方法。
本申请实施例提供的技术方案带来的有益效果至少包括:
通过由第一客户端对外提供跨端通信协议,使得第二客户端在需要与第一客户端进行跨端通信时,向第一客户端发送按照该跨端通信协议来封装得到的URL数据,从而第一客户端可以方便地对URL数据进行解析,快速确定本次跨端通信所请求的业务模块并快速获取到对应的业务数据,从而将业务数据路由到业务模块,以通过业务模块对外提供业务服务,通过声明跨端通信协议并将涉及跨端通信的数据都组装成规范化的URL数据,极大方便了第一客户端统一管理各个外部客户端发来的URL数据,也方便了第一客户端快速解析到业务数据并将业务数据路由到业务模块,这样无需技术人员按照不同客户端不同业务模块来分别制定不同的通信规则或代码逻辑,减少了技术人员的重复性工作,降低了跨端通信实现的人力成本,提升了跨端通信实现的开发效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还能够根据这些附图获得其他的附图。
图1是本申请实施例提供的一种数据传输方法的实施环境示意图;
图2是本申请实施例提供的一种数据传输方法的流程图;
图3是本申请实施例提供的一种数据传输方法的交互流程图;
图4是本申请实施例提供的一种业务模块向路由模块中注入配置信息的原理性流程图;
图5是本申请实施例提供的一种跨端预览同一篇word文档的界面示意图;
图6是本申请实施例提供的一种跨端通信功能的测试结果的界面示意图;
图7是本申请实施例提供的一种数据传输方法的交互流程图;
图8是本申请实施例提供的一种数据传输方法的原理性流程图;
图9是本申请实施例提供的一种数据传输装置的结构示意图;
图10是本申请实施例提供的一种终端的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
本申请中术语“第一”“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”、“第n”之间不具有逻辑或时序上的依赖关系,也不对数量和执行顺序进行限定。
本申请中术语“至少一个”是指一个或多个,“多个”的含义是指两个或两个以上,例如,多个业务模块是指两个或两个以上的业务模块。
本申请中术语“包括A或B中至少一项”涉及如下几种情况:仅包括A,仅包括B,以及包括A和B两者。
本申请中涉及到的用户相关的信息(包括但不限于用户的设备信息、个人信息、行为信息等)、数据(包括但不限于用于分析的数据、存储的数据、展示的数据等)以及信号,当以本申请实施例的方法运用到具体产品或技术中时,均为经过用户许可、同意、授权或者经过各方充分授权的,且相关信息、数据以及信号的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。例如,本申请中涉及到的业务数据都是在充分授权的情况下获取的。
以下,对本申请实施例涉及的术语进行解释说明。
跨端通信:本申请实施例涉及的跨端通信包含两种情况,在不同设备间的跨终端通信,以及在同一设备上的跨客户端通信。比如,同一终端上一个客户端A调起另一个客户端B的某项功能接口,或者第一终端上的客户端A向第二终端上的客户端A或客户端B传输业务数据,均属于跨端通信场景。
URL(Uniform Resource Locator,统一资源定位符):是因特网的万维网服务程序上用于指定信息位置的表示方法。URL最初是由蒂姆·伯纳斯·李发明用来作为万维网的地址,现在已经被万维网联盟编制为互联网标准RFC1738。
URL Scheme(URL方案):是操作系统提供的一种用于从一个客户端调起另一个客户端的机制,可以由某个客户端A注册后,其他的客户端B通过URL Scheme来调用该客户端A。URL Scheme通过在程序中嵌入一个URL,能够调用其他客户端来完成外部程序的功能调用。
Universal Links(通用链接):是Apple(苹果)公司在iOS 9操作系统中推出的一种能够方便的通过传统HTTPS(Hyper Text Transfer Protocol over SecureSocketLayer,超文本传输安全协议)链接来启动APP(Application,应用程序,也称应用客户端,简称为客户端)的功能。
Today插件(Today Widget,今日插件):Today插件是在通知中心下面Today标签页的内容,任何APP都可以创建自己的Today插件,而且可以创建多个Today插件。用户可以在Today标签页进行管理,选择哪些插件是可见的,哪些插件是不可见的。Today插件里面可以显示客户端相关的数据,可以进行一些简单的操作,也可以跳回客户端的主程序。
3D Touch(三维触控):3D Touch是一种立体触控技术,被Apple称为新一代多点触控技术,支持3D Touch的设备屏幕可感应不同的感压力度触控。
URLNavigator:一个开源的路由库,提供了通过URL导航到视图控制器(ViewController)的方式,通过URL导航进行路由跳转能够实现模块解耦。本申请实施例基于URLNavigator路由库封装一套支持跨端通信功能的TXRouter组件(路由模块)。
Pthreads(POSIX Threads,POSIX线程):Pthreads是POSIX的线程标准,定义了创建和操纵线程的一套API,换一种表述,Pthreads定义了一套C语言的类型、函数与常量,以pthread.h头文件和一个线程库实现。
Socket(套接字):套接字是通信的基石,是支持TCP(Transmission ControlProtocol,传输控制协议)/IP(Internet Protocol,网际互连协议)协议的路通信的基本操作单元。可以将套接字看作不同主机间的客户端进程进行双向跨端通信的端点,它构成了单个主机内及整个网络间的编程界面。一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。从所处的地位来讲,套接字上联应用进程,下联网络协议栈,是应用程序通过网络协议进行通信的接口,是应用程序与网络协议栈进行交互的接口。
H5(Hyper Text Markup Language 5,即HTML5,第五代HTML):H5是构建Web(网页)内容的一种语言描述方式,H5是互联网的下一代标准,被认为是互联网的核心技术之一。
JSON(JavaScript Object Notation,JavaScript对象简谱):JSON是一种轻量级的数据交换格式。它基于ECMAScript(European Computer Manufacturers Association,欧洲计算机协会制定的JS规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON成为理想的数据交换语言。JSON格式易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
在跨端通信场景中,以一个客户端A调起另一个客户端B的某项功能接口(如扫码功能接口、支付功能接口、跳转功能接口等)为例进行说明,技术人员在确定了客户端B的该功能接口所支持的页面调用方式之后,人工配置好利用该页面调用方式来调起该客户端B的该功能接口的代码逻辑,才能够在触发调用条件时,通过该代码逻辑来从客户端A调起客户端B的该功能接口,以实现提供该功能接口所对应业务服务。比如,页面调用方式包括URLScheme、Universal Links、Today插件、3Dtouch等,针对支持不同页面调用方式的不同客户端,技术人员需要一一重新适配各自的代码逻辑,重复性工作较多。
由于跨端通信场景是繁多而复杂的,不同客户端、不同功能接口所支持的页面调起方式也各不相同,技术人员需要针对调用不同客户端的不同功能接口的情况,逐个指定不同的代码逻辑,即,针对不同客户端、不同功能接口需要制定不同的跨端通信规则,这导致终端上的客户端实现跨端通信功能的人力成本较高、开发效率较低。
有鉴于此,本申请实施例提供一种数据传输方法,通过基于URLNavigator路由库封装一套支持跨端通信功能的多实例TXRouter组件(后文中称之为路由模块),路由模块内置在客户端中,通过路由模块开启RouterModule(统一路由模组)来循环接收、分发请求跨端通信的事件,并基于Pthreads线程标准来建立套接字链接通道,以实现如业务处理结果等数据的回调,实现跨端数据传输,从而能够整理和完善客户端跨端通信能力的过程和规范。并且,上述路由模块通过定义跨端通信协议,提供了一种通用的输入规范来方便地拉取各个业务模块,这种业务模块的调用方式能够解除代码的耦合性。
以跨客户端调起扫描二维码功能接口为例进行说明,传统的跨端调用过程涉及如下步骤:A1、检测摄像头权限,开启摄像头,调用摄像头;A2、绘制扫一扫页面元素,初始化扫码业务模块;A3、通过摄像头采集图像数据,应用初始化完毕的扫码业务模块进行算法匹配;A4、对图像数据识别并生成处理结果。
在应用本申请实施例的跨端通信方式后,能够将上述跨端调用过程转换为外部通信的调用模块无感知,并通过跨端通信协议来传输业务数据(或调起业务模块),由路由模块来将业务数据分发到相应的业务模块。比如,在ToB(To Business,面向企业客户的业务)业务中进行私有化交付时,会将各个业务模块提供的业务功能(如移动网关、安全键盘、离线包、消息推送等)进行统一处理,仍以跨客户端调起扫描二维码功能接口为例进行说明,应用本申请实施例的跨端通信方式后的跨端调用过程涉及如下步骤:B1、按照跨端通信协议,组装URL数据;B2、扫码业务模块接收URL数据,并解析得到图像数据,内部执行代码逻辑;B3、对图像数据识别并生成处理结果。其中,扫码业务模块所在客户端之外(即端外)所需要处理的是步骤B1和B3。
在应用本申请实施例的跨端通信方式后,由于需要支持跨端通信功能的客户端都可以内置路由模块,这样能够保证在ToB业务中私有化交付时,外部客户(即外部客户端)接入和调用业务模块时的便捷性、可维护性和扩展性。在跨端通信过程中,主要涉及到发送端(即本申请实施例中涉及的第二客户端)和接收端(即本申请实施例中涉及的第一客户端),第一客户端上又涉及到路由模块、业务模块和消息通道。
可选地,跨端通信过程的发送端可以是第一客户端内的H5页面、端内模块、小程序(指依附于客户端主程序的嵌入式程序),也可以是第二客户端内的H5页面、小程序、外部模块(比如,通过URL Scheme、Universal Links、Today插件、3Dtouch等方式拉起的模块),本申请实施例对此不进行具体限定。
以下,对本申请实施例的系统架构进行说明。
图1是本申请实施例提供的一种数据传输方法的实施环境示意图。参见图1,在该实施环境中包括:第一终端120、服务器140和第二终端160。
第一终端120安装和运行有支持跨端通信的第一客户端,可选地,第一客户端包括:社交应用、浏览器应用、游戏应用、视频应用、音频应用、支付应用、购物应用、外卖应用等,本申请实施例对第一客户端的类型不进行具体限定。
第一终端120以及第二终端160通过无线网络或有线网络与服务器140进行直接或间接地通信连接。
服务器140包括一台服务器、多台服务器、云计算平台或者虚拟化中心中的至少一种。服务器140用于为下述第二客户端提供后台服务。可选地,服务器140承担主要计算工作,第一终端120和第二终端160承担次要计算工作;或者,服务器140承担次要计算工作,第一终端120和第二终端160承担主要计算工作;或者,服务器140、第一终端120和第二终端160三者之间采用分布式计算架构进行协同计算。
可选地,服务器140是独立的物理服务器,或者是多个物理服务器构成的服务器集群或者分布式系统,或者是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)以及大数据和人工智能平台等基础云计算服务的云服务器。
第二终端160安装和运行有支持跨端通信的第二客户端,可选地,第二客户端包括:社交应用、浏览器应用、游戏应用、视频应用、音频应用、支付应用、购物应用、外卖应用等,本申请实施例对第二客户端的类型不进行具体限定。
在一种跨端通信场景中,第二终端160上的第二客户端作为跨端通信的发送端,向第一终端120上的第一客户端发送经过跨端通信协议封装得到的URL数据,即,不同终端上的客户端进行跨设备(或跨终端)通信,在这种情况下,第二客户端与第一客户端是相同或不同的客户端,比如,手机端和PC(Personal Computer,个人计算机)端上的同一客户端可以进行跨端通信,示意性地,手机端和PC端上的视频应用通过跨端通信来同步视频的播放进度信息,或者,手机端和PC端上的不同客户端也可以进行跨端通信,示意性地,PC端的客户端远程调用手机端的另一客户端来传输数据文件等,本申请实施例对此不进行具体限定。可选地,第一终端120上的第一客户端对URL数据解析得到的业务数据进行处理,得到业务处理结果之后,可以直接向第二终端160上的第二客户端返回业务处理结果,或者,出于隐私保护的需求,还可以向第二客户端关联的服务器140返回业务处理结果,以使服务器140向第二终端160上的第二客户端转发该业务处理结果。
在另一种跨端通信场景中,无需服务器140和第二终端160的参与,第一终端120上安装有第一客户端和第二客户端,第一终端120上的第二客户端可以作为发送端,向第一终端120上的第一客户端发送经过跨端通信协议封装得到的URL数据,即,同一终端上的不同客户端进行跨客户端通信,在这种情况下,第二客户端是指第一终端上与第一客户端不同的客户端,换言之,第二客户端是指第一终端上除了第一客户端以外的任一客户端,比如,同一终端上的视频应用调起社交应用的扫码功能接口来扫描二维码,此时会涉及到视频应用和社交应用的跨客户端通信,又比如,同一终端上的外卖应用调起支付应用的支付功能接口来完成快捷支付,此时会涉及到外卖应用和支付应用的跨客户端通信。
可选地,第一终端120和第二终端160的设备类型相同或不同,该设备类型包括:智能手机、平板电脑、智能音箱、智能手表、智能掌机、便携式游戏设备、车载终端、膝上型便携计算机和台式计算机中的至少一种,但并不局限于此。例如,第一终端120和第二终端160均是智能手机,或者其他手持便携式通信设备。以下实施例,以终端包括智能手机来举例说明。
本领域技术人员能够知晓,上述终端的数量为更多或更少。比如上述终端仅为一个,或者上述终端为几十个或几百个,或者更多数量。本申请实施例对终端的数量和设备类型不加以限定。
以下,对本申请实施例的数据传输方法的流程进行简单说明。
图2是本申请实施例提供的一种数据传输方法的流程图。参见图2,该实施例由终端执行,该实施例包括下述步骤:
201、终端通过第一客户端接收第二客户端发送的统一资源定位符URL数据,该URL数据基于该第一客户端所支持的跨端通信协议封装得到,该第二客户端是指该终端上与该第一客户端不同的客户端或另一终端上的任一客户端。
本申请实施例涉及的URL数据,是指基于第一客户端所支持的跨端通信协议封装得到的URL字符串。
可选地,URL数据包括:协议名字段、版本号字段、路径字段和参数字段,协议名字段用于记录本次封装所使用的跨端通信协议的协议名称,版本号字段用于记录本次封装所使用的跨端通信协议的版本号,路径字段用于记录第二客户端所请求与第一客户端进行跨端通信的业务模块的模块路径,参数字段用于记录第二客户端本次需要进行跨端通信的业务数据。
在一个示例中,在第二客户端请求调用第一客户端的扫码业务模块的情况下,第二客户端发送的URL数据可以为“tmf://v17/common/scanCode?jump=0”,其中,“tmf://”为跨端通信协议的协议名称,“v17”为跨端通信协议的版本号,“common/scanCode”为扫码业务模块的模块路径,“jump=0”是指参数jump取值为0。
本申请实施例涉及的跨端通信协议,是指针对第一客户端内置的路由模块所声明的一种用于对跨端通信的业务数据进行规范化管理的数据传输协议,比如,该跨端通信协议称为Installable协议。
本申请实施例涉及的路由模块,是指基于URLNavigator路由库封装一套支持跨端通信功能的多实例TXRouter组件,基于路由模块可以开启RouterModule(统一路由模组)来循环接收、分发请求跨端通信的事件,即,路由模块可视为是接收客户端外部的业务数据的相关消息的统一入口。
在一些实施例中,终端的第一客户端内置有路由模块,通过创建TXRouter类来启动路由模块,接着,在TXRouter类中建立统一路由模组RouterModule,以处理客户端外部的跨端通信的业务数据的传输,此外,路由模块对外提供Installable跨端通信协议。第二客户端在想要与内置了路由模块的第一客户端进行跨端通信时,要将协议名称、协议版本号、业务模块的模块路径、业务数据等按照Installable跨端通信协议所定义的格式进行封装,最终封装得到了一个URL数据,并将URL数据发送至第一客户端,第一客户端通过路由模块来接收并解析URL数据。其中,在跨终端通信的情况下,第二客户端是指另一终端上的任一客户端(这时有可能与第一客户端是相同的客户端,也可能与第一客户端是不同的客户端),在跨客户端通信的情况下,第二客户端是指当前终端上与第一客户端不同的客户端(即当前终端上除了第一客户端以外的任一客户端),本申请实施例对第二客户端是否位于当前终端不进行具体限定,对第二客户端是否与第一客户端相同也不进行具体限定。
202、终端基于该跨端通信协议,解析该URL数据的路径字段,得到该URL数据所请求与该第一客户端进行跨端通信的业务模块。
在一些实施例中,第一客户端通过路由模块来基于Installable跨端通信协议,解析URL数据的路径字段,得到第二客户端所请求进行跨端通信的业务模块,例如,假设URL数据为“tmf://v17/common/scanCode?jump=0”,路由模块解析路径字段得到业务模块的模块路径为“common/scanCode”,这时可知这一模块路径所指示的“scanCode”模块就是本次URL数据所请求与第一客户端进行跨端通信的扫码业务模块。
203、终端基于该跨端通信协议,解析该URL数据的参数字段,得到该URL数据所携带的业务数据。
在一些实施例中,第一客户端通过路由模块来基于Installable跨端通信协议,解析URL数据的参数字段,得到URL数据中所携带的业务数据,例如,假设URL数据为“tmf://v17/common/scanCode?jump=0”,路由模块解析参数字段得到“jump=0”是指参数jump取值为0,即代表了本次第二客户端申请调用第一客户端的“scanCode”扫码业务模块,并且在扫码成功时不会自动进行APP跳转(即不会在扫码成功后从第二客户端自动跳转到第一客户端)。
在一些实施例中,Installable跨端通信协议针对业务数据还定义了一个加密属性参数secret,加密属性参数secret用于表征参数字段中的业务数据是否经过了加密,在加密属性参数secret指示业务数据经过了加密时,路由模块是无法解析到业务数据的,路由模块只能解析到经过加密的加密数据,路由模块将加密数据发送到业务模块,由业务模块来对加密数据进行解析以得到业务数据,这样能够保护到业务数据对路由模块不可见,从而提高业务数据在跨端通信过程中的数据安全性和隐私性。
204、终端通过该业务模块处理该业务数据,以使该业务模块向该第二客户端提供业务服务。
在一些实施例中,终端通过路由模块解析得到业务数据(或者加密数据)后,路由模块将业务数据(或者加密数据)转发到步骤202确定的业务模块,由业务模块来处理业务数据(或者由业务模块来处理对加密数据解密得到的业务数据),从而来向第二客户端提供业务服务。
在一些实施例中,有可能第二客户端无需业务模块反馈一个回调信息,这时业务模块对业务数据处理完毕后,无需向第二客户端返回回调信息。在另一些实施例中,有可能第二客户端会需要业务模块反馈一个回调信息,比如这一回调信息是业务模块对业务数据的业务处理结果,这时,需要判断第二客户端所处的位置,如果第二客户端位于当前终端内,则业务模块可以通过原生层的字典数据,来对业务处理结果进行组装,将组装得到的数据直接发送到路由模块TXRouter类的统一路由模组RouterModule,再通过统一路由模组RouterModule将组装得到的数据发送到当前终端内的第二客户端;如果第二客户端位于当前终端外,则业务模块可以将业务处理结果映射成JSON格式,将JSON格式的业务处理结果发送到路由模块TXRouter类的统一路由模组RouterModule,接着,当前终端第一客户端与另一终端的第二客户端之间建立Socket套接字链接通道,以基于Socket套接字链接通道来传输JSON格式的业务处理结果,可选地,统一路由模组RouterModule可以在Socket套接字链接通道中直接向第二客户端返回JSON格式的业务处理结果,可选地,出于隐私保护的要求,统一路由模组RouterModule可以在Socket套接字链接通道中向第二客户端关联的服务器返回JSON格式的业务处理结果,以请求服务器向第二客户端转发JSON格式的业务处理结果,本申请实施例对此不进行具体限定。
上述所有可选技术方案,能够采用任意结合形成本公开的可选实施例,在此不再一一赘述。
本申请实施例提供的方法,通过由第一客户端对外提供跨端通信协议,使得第二客户端在需要与第一客户端进行跨端通信时,向第一客户端发送按照该跨端通信协议来封装得到的URL数据,从而第一客户端可以方便地对URL数据进行解析,快速确定本次跨端通信所请求的业务模块并快速获取到对应的业务数据,从而将业务数据路由到业务模块,以通过业务模块对外提供业务服务,通过声明跨端通信协议并将涉及跨端通信的数据都组装成规范化的URL数据,极大方便了第一客户端统一管理各个外部客户端发来的URL数据,也方便了第一客户端快速解析到业务数据并将业务数据路由到业务模块,这样无需技术人员按照不同客户端不同业务模块来分别制定不同的通信规则或代码逻辑,减少了技术人员的重复性工作,降低了跨端通信实现的人力成本,提升了跨端通信实现的开发效率。
在上述实施例中,简单介绍了第一客户端如何处理第二客户端发来的URL数据,而在本申请实施例中,将详细介绍第一客户端和第二客户端之间的数据传输流程,下面进行说明。
图3是本申请实施例提供的一种数据传输方法的交互流程图。参见图3,以同一设备上不同客户端之间的跨客户端通信场景为例进行说明,该实施例由同一终端上的第一客户端和第二客户端之间交互实现,该实施例包括下述步骤:
300、终端启动第一客户端和第二客户端。
在一些实施例中,用户可以点击桌面上第一客户端的应用图标,触发终端操作系统启动该第一客户端,比如,创建第一客户端的主进程,并通过该主进程运行第一客户端的主程序。可选地,用户还可以通过语音指令、手势指令等方式,触发终端操作系统启动该第一客户端,又或者,用户还可以配置第一客户端的自动启动条件,使得在终端检测到满足该自动启动条件时,终端操作系统自动启动该第一客户端,比如,自动启动条件可以是开机自动启动,或者定时自动启动,本申请实施例对第一客户端的启动方式不进行具体限定。
在一些实施例中,用户可以点击桌面上第二客户端的应用图标,触发终端操作系统启动该第二客户端,比如,创建第二客户端的主进程,并通过该主进程运行第二客户端的主程序。可选地,用户还可以通过语音指令、手势指令等方式,触发终端操作系统启动该第二客户端,又或者,用户还可以配置第二客户端的自动启动条件,使得在终端检测到满足该自动启动条件时,终端操作系统自动启动该第二客户端,比如,自动启动条件可以是开机自动启动,或者定时自动启动,本申请实施例对第二客户端的启动方式不进行具体限定。
需要说明的是,第一客户端和第二客户端可以具有相同或不同的启动方式,比如,第二客户端是开机自动启动的,第一客户端是由用户点击应用图标后启动的,又或者,第一客户端和第二客户端均是由用户点击应用图标后启动的,但第一客户端目前处于后台挂起的运行状态,而第二客户端则处于前台显示的运行状态。
在本申请实施例中,仅以终端预先启动了第一客户端和第二客户端之后,第二客户端向第一客户端发送业务数据以实现跨端通信为例进行说明,可选地,第二客户端请求后台调起第一客户端也属于跨端通信场景,此时第一客户端可以是启动后处于后台挂起的运行状态,或者第一客户端此时并未启动,这时,第二客户端可以向终端操作系统请求拉起第一客户端,或者请求启动第一客户端,本申请实施例对此不进行具体限定。
需要说明的是,第一客户端和第二客户端可以具有相同或不同的启动时机,比如,第一客户端比第二客户端先启动,或者,第二客户端比第一客户端先启动,或者,第一客户端和第二客户端同时启动,本申请实施例对此不进行具体限定。
301、在启动该第一客户端后,该第一客户端中支持跨端通信的各个模块均在该第一客户端的路由模块中注册配置信息,该路由模块用于统一接收来自任一第二客户端的URL数据。
在一些实施例中,第一客户端中内置有路由模块TXRouter,路由模块TXRouter对外声明Installable跨端通信协议,Installable跨端通信协议中提供有install静态方法,install静态方法用于对第一客户端中支持跨端通信的各个模块提供初始化方式。在这种情况下,在第一客户端的启动阶段,第一客户端中支持跨端通信的各个模块(包括路由模块TXRouter在内),都可以实现上述install静态方法,来将本模块的跨端通信的初始化条件、配置参数等进行注册,从而在路由模块TXRouter生成每个模块的配置信息Components,这一过程也可以视为是第一客户端内每个支持跨端通信的模块在初始化阶段向路由模块TXRouter中注入配置信息Components。其中,第一客户端中支持跨端通信的模块也即是指后续在接收到URL数据后能够对外提供业务服务的业务模块。
在一些实施例中,在以冷启动方式启动第一客户端的情况下,路由模块TXRouter可以调用didFinishLaunchingWithOptions方法,来对各个已注册模块各自生成的配置信息Components进行forEach(遍历)操作,以确保每个支持跨端通信的模块都执行install静态方法生成了对应的配置信息Components,在遍历完毕后,完成了对第一客户端中各个支持跨端通信的模块的初始化,从而能够保证在后续进行业务数据分发时,可以提前直接调用所请求的业务模块内部的功能。
图4是本申请实施例提供的一种业务模块向路由模块中注入配置信息的原理性流程图,如400所示,在路由模块TXRouter对外声明Installable跨端通信协议之后,终端启动第一客户端,接着,判断是否检测到新的支持跨端通信的模块,如果是,即检测到了新的支持跨端通信的模块,则对检测到的新模块继承Installable跨端通信协议,并对新模块应用install静态方法;如果否,即未检测到新的支持跨端通信的模块,则遍历查询已注册模块,例如遍历到了三个已注册模块A、B和C,然后对遍历找到的已注册模块应用install静态方法。接着,通过install静态方法来向路由模块TXRouter中注入跨端通信的初始化条件、配置参数等,接着,实现了对各个模块(已注册模块或新模块)的初始化,对每个模块都生成了各自的配置信息Components。
302、第二客户端向第一客户端发送URL数据,该URL数据基于该第一客户端内置的该路由模块所支持的跨端通信协议封装得到。
其中,该第二客户端是指该终端上与该第一客户端不同的客户端,即,该第二客户端是指该终端上除了该第一客户端以外的任一客户端。
在一些实施例中,第二客户端存在跨端通信需求时,生成了待向第一客户端发送的业务数据之后,需要确定第一客户端内置的路由模块TXRouter所支持的跨端通信协议,接着,将协议名称、协议版本号、本次所请求的业务模块的模块路径和业务数据按照Installable跨端通信协议进行封装,比如,将协议名称封装在协议名字段,将协议版本号封装在版本号字段,将本次所请求的业务模块的模块路径封装在路径字段,将业务数据封装在参数字段后,按照“协议名字段+版本号字段+路径字段+参数字段”的方式组装得到一个URL字符串,这一URL字符串就是基于Installable跨端通信协议对业务数据封装得到的URL数据,接着,第二客户端将封装完毕的URL数据发送到第一客户端。
在一些实施例中,出于业务数据的保密需求,第二客户端可能存在业务数据仅对业务模块可见而对路由模块TXRouter不可见的需求,这时,第二客户端在封装阶段,可以先配置加密属性参数secret,再基于预先协商的加密算法,对业务数据进行加密,得到加密数据,接着,将加密属性参数secret和加密数据一起封装到URL数据的参数字段,这样路由模块TXRouter在接收到URL数据后,仅能够对URL数据解析得到加密数据,而无法获取到实际的业务数据,从而保证了业务数据在跨端通信中的数据安全性,符合业务数据的隐私保护需求。
在一些实施例中,第二客户端采取的加密算法可以是对称加密算法或者非对称加密算法,本申请实施例对加密算法的类型不进行具体限定。
在一个示例中,以第二客户端请求调用第一客户端的扫码业务模块为例进行说明,假设跨端通信协议的协议名称为“tmf://”,协议版本号为“v17”,扫码业务模块的模块路径为“common/scanCode”,业务数据仅包括jump参数且jump参数取值为0,那么在按照“协议名字段+版本号字段+路径字段+参数字段”的格式进行封装后,可以得到URL数据“tmf://v17/common/scanCode?jump=0”,接着,第二客户端可以将上述URL数据发送到第一客户端。
在一种跨端通信协议的定义中,针对扫码业务模块,对外可提供模块标识为“TMF.scanCode(Object object)”,扫码业务模块的功能接口从基础库版本1.7.0起支持在小程序插件和H5容器中使用,用于调起客户端的扫码界面并进行扫码。扫码业务模块可具有如下Schema“tmf://v17/common/scanCode”,在上述Schema之后可封装其他自定义的参数,例如,对外还支持如下表1所示的多种类型的自定义参数:
表1
其中,H5是指H5页面或H5容器,NA是指native(原生)层。
在跨端调用扫码业务模块时,第二客户端可以基于表1所示出了各种类型的自定义参数,来将所欲定义的相关参数封装到URL数据的参数字段,比如,将“jump=0”封装到参数字段,代表扫码成功后不会自动跳转到第一客户端,又比如,将“onlyFromCamera=1”封装到参数字段,代表仅能够打开摄像头扫码二维码,而不允许从相册中选择一张图片来识别二维码,技术人员可根据业务需求来配置不同的参数,本申请实施例对参数配置方式不进行具体限定。
303、第一客户端通过内置的该路由模块接收该第二客户端发送的该URL数据。
在一些实施例中,第一客户端内置有路由模块,通过创建TXRouter类来启动路由模块,接着,在TXRouter类中添加routerOpenURL通知的收发组件,该收发组件用于接收第一客户端内部发起跨端通信之前会发出的routerOpenURL通知,相当于对线程、数据和内存执行跨端通信之前的预处理操作进行管控,收发组件在接收到任一模块发出routerOpenURL通知后,会将路由模块中其他非必要的任务挂起,以保证有充足的线程资源提供调用,通过在收发组件中注册routerOpenURL通知,能够区分端内通信和端外通信,保证端内通信的统一。
在一些实施例中,在TXRouter类中还建立统一路由模组RouterModule,以处理客户端外部的跨端通信的业务数据的传输,这样就能够通过统一路由模组RouterModule来接收第二客户端发送的URL数据。
在上述步骤303中,提供了通过该终端的第一客户端接收第二客户端发送的URL数据的一种可能实施方式,通过路由模块TXRouter来统一接收外部客户端在跨端通信场景下的消息,这些消息都按照跨端通信协议的要求统一封装成了URL数据,从而方便了路由模块TXRouter统一解析确定业务模块并获取业务数据(或加密数据)。
304、第一客户端通过该路由模块基于该跨端通信协议,解析该URL数据的路径字段,得到用于指示该URL数据所请求与该第一客户端进行跨端通信的业务模块的模块路径。
在一些实施例中,第一客户端通过路由模块来基于Installable跨端通信协议,解析URL数据的路径字段,得到第二客户端所请求进行跨端通信的业务模块,例如,假设URL数据为“tmf://v17/common/scanCode?jump=0”,路由模块解析路径字段得到业务模块的模块路径为“common/scanCode”,这时可知这一模块路径所指示的“scanCode”模块就是本次URL数据所请求与第一客户端进行跨端通信的扫码业务模块。
305、第一客户端从该路由模块中已注册的至少一个配置信息中,查询得到与该模块路径相匹配的配置信息,将该配置信息所指示的已注册模块确定为该业务模块。
在一些实施例中,由于在上述步骤301中第一客户端的启动阶段,支持跨端通信的各个模块都通过install静态方法,在路由模块TXRouter中注入了本模块的配置信息Components,因此通过上述步骤304解析得到路径字段中记录的模块路径之后,可以从路由模块中已注册的所有配置信息Components中,查询得到与该模块路径相匹配的配置信息Components,将该配置信息Components所指示的已注册模块确定为本次请求跨端通信的业务模块。
上述步骤305提供了基于该模块路径,在该路由模块中查询得到与该模块路径相匹配的已注册的业务模块的一种可能实施方式,通过在初始化阶段由各个支持跨端通信的模块都在路由模块中预先注册配置信息,能够方便路由模块统一化管理哪些业务模块支持跨端通信,从而提高了查询到URL数据所请求的业务模块的查询效率。
在上述步骤304-305中,提供了基于该跨端通信协议,解析该URL数据的路径字段,得到该URL数据所请求与该第一客户端进行跨端通信的业务模块的一种可能实施方式,由于URL数据中路径字段记录了业务模块的模块路径,从而能够根据模块路径查询到配置信息来锁定到本次的业务模块,或者还可以直接根据模块路径索引到本次的业务模块,本申请实施例对此不进行具体限定。
306、第一客户端通过该路由模块,从该参数字段中读取该URL数据的加密属性参数,该加密属性参数用于指示该业务数据是否经过加密。
在一些实施例中,路由模块TXRouter基于Installable跨端通信协议,解析URL数据的参数字段,从参数字段中读取到加密属性参数secret,从而判断加密属性参数secret是否指示该业务数据经过了加密,在加密属性参数secret指示业务数据经过加密的情况下,执行下述步骤307;在加密属性参数secret指示业务数据未经过加密的情况下,第一客户端可以直接通过路由模块TXRouter从参数字段中解析得到业务数据,接着,通过路由模块TXRouter将解析得到的业务数据发送到业务模块。
在一些实施例中,加密属性参数secret是一个二值数据,加密属性参数secret取值为0时代表未对业务数据进行加密,加密属性参数secret取值为1时代表已对业务数据进行了加密;或者,加密属性参数secret是一个布尔型数据,加密属性参数secret取值为false时代表未对业务数据进行加密,加密属性参数secret取值为true时代表已对业务数据进行了加密,本申请实施例对加密属性参数secret的数据类型不进行具体限定。
307、在该加密属性参数指示该业务数据经过加密的情况下,第一客户端通过路由模块将该参数字段中记录的加密数据发送到该业务模块。
在一些实施例中,在加密属性参数secret是二值数据且取值为1,或者加密属性参数secret是布尔型数据且取值为true的情况下,代表加密属性参数secret指示该业务数据经过加密,这时第一客户端的路由模块TXRouter可以将参数字段中解析得到的加密数据发送到业务模块,这时路由模块TXRouter仅能够对URL数据解析得到加密数据,而无法获取到实际的业务数据,换言之,业务数据仅对业务模块可见而对路由模块TXRouter不可见,从而保证了业务数据在跨端通信中的数据安全性,符合业务数据的隐私保护需求。
308、第一客户端通过该业务模块基于与该第二客户端预先协商的解密算法,对该加密数据进行解密,得到该业务数据。
在一些实施例中,在加密属性参数secret指示该业务数据经过加密的情况下,业务模块会在路由模块TXRouter中注册接收消息的对象(相当于路由模块TXRouter中的一项用于接收消息的任务),对象中持有一条secret属性,secret属性表征需要在Installable跨端通信协议中进行加密,secret属性中提供了预先协商的秘钥来对路由模块转发的加密数据执行解密操作,从而能够将从URL数据的参数字段中解析得到的加密数据,解密成为业务模块可识别的业务数据。
在上述步骤306-308中,提供了基于该跨端通信协议,解析该URL数据的参数字段,得到该URL数据所携带的业务数据的一种可能实施方式,即,在URL数据中记录的是加密数据的情况下,路由模块将加密数据转发到业务模块中进行解密,由业务模块获取到业务数据,这样能够提升业务数据的传输安全性和隐私性,可选地,在URL数据中记录的业务数据的情况下,这时无需执行解密操作,路由模块可以直接将业务数据转发给业务模块,这样能够简化解析业务数据的流程。
309、第一客户端通过该业务模块处理该业务数据,得到业务处理结果。
在一些实施例中,业务模块在自身对加密数据解密得到业务数据,或者接收到路由模块转发的未经加密的业务数据之后,可以调用invoke函数来执行业务数据所对应的算法或逻辑运算,以处理该业务数据,得到业务处理结果。
在一些实施例中,如果在获取到业务处理结果后,第二客户端不请求返回对业务处理结果的回调信息,那么可以直接结束流程,关闭该业务模块以释放业务模块所占用的处理资源,如果在获取到业务处理结果后,第二客户端还请求返回对业务处理结果的回调信息,则进入到步骤310。其中,回调信息是指以回调方式来通知第二客户端的一种消息,回调信息可以是业务处理结果本身,或者,回调信息还可以是一个ACK(AcknowledgeCharacter,确认字符)消息或者一串错误码,本申请实施例对回调信息不进行具体限定,在本申请实施例中,以回调信息为业务处理结果本身为例进行举例说明。
310、第一客户端基于该终端在原生层的字典数据,对该业务处理结果进行组装,通过该路由模块将组装得到的数据发送到该第二客户端。
在本申请实施例中,由于第二客户端是指终端上与第一客户端不同的客户端,即第一客户端和第二客户端位于同一终端上,在此基础上,上述步骤310提供了在该第二客户端请求该业务处理结果的情况下,向该第二客户端返回该业务处理结果的一种可能实施方式,即,业务模块基于该终端在原生层的字典数据,对该业务处理结果进行组装,比如,按照原生层的字典数据,统一组装成“协议名字段+版本号字段+路径字段+参数字段”,其中,协议名字段可记录第二客户端所支持的跨端通信协议的协议名称,版本号字段则记录第二客户端所支持的跨端通信协议的版本号,路径字段则记录要将业务处理结果返回给的第二客户端的路径,参数字段则记录业务处理结果等回调信息,接着,业务模块将组装得到的数据发送到路由模块TXRouter的统一路由模组RouterModule,由统一路由模组RouterModule来将组装得到的数据返回至该第二客户端。
在上述步骤309-310中,提供了在第二客户端与第一客户端位于同一终端上的情况下,通过该业务模块处理该业务数据,以使该业务模块向该第二客户端提供业务服务的一种可能实施方式,即业务模块对业务数据处理完毕后,还向第二客户端返回业务处理结果作为回调信息,这时由于同一终端上的客户端均会支持终端原生层的字典数据,因此直接基于原生层的字典数据就能够对业务处理结果进行组装,而无需转换成JSON格式,节约了第一客户端的处理资源。
在另一些实施例中,第二客户端是另一终端上的任一客户端,即,第一客户端和第二客户端位于不同的终端上,此时,第一客户端可以向第二客户端直接返回业务处理结果,或者,向该第二客户端关联的服务器发送该业务处理结果,以使该服务器向该第二客户端转发该业务处理结果,详细的数据传输流程请参考下一实施例,这里不做赘述。
在一个示例中,假设在第二客户端的H5页面中,通过跨端通信能力,以H5作为发送端向第一客户端的路由模块TXRouter发送正在预览的word文档,以便于用户能够随时切换不同客户端来预览同一篇word文档,比如,从浏览器客户端中切换到office(办公)客户端中查看正在预览的word文档,这时,第二客户端将word文档的访问路径或下载地址、word文档的预览进度信息等业务数据,按照Installable跨端通信协议封装得到URL数据后,将URL数据发送到第一客户端的路由模块TXRouter,路由模块TXRouter可以通过如下代码逻辑来处理URL数据:
假设路由模块TXRouter通过统一路由模组RouterModule接收到了形如“tmfjsbridge://invoke/tmf/word文档访问路径”的URL数据,代表本次使用的协议名称为“tmfjsbridge://”,版本号字段缺省(可视为等于默认值),业务模块的模块路径为“invoke/tmf”,后面则是业务模块打开word文档所需的访问路径。接着,统一路由模组RouterModule创建了与之对应的TXRouter对象,再将业务数据(例如word文档的访问路径和预览进度信息)分发到支持word文档的业务模块中,然后在终端中拉起该业务模块。
图5是本申请实施例提供的一种跨端预览同一篇word文档的界面示意图,如图5所示,示出了通过第二客户端的H5页面,跨端调起第一客户端并跳转至第一客户端中继续预览word文档的展示界面500,展示界面500是第一客户端中显示的用户界面,在展示界面500中显示有用户原本在第二客户端的H5页面所预览的word文档,在H5页面将word文档的访问路径和预览进度信息同步到第一客户端之后,第一客户端后台拉起支持word文档的业务模块,并通过业务模块来打开该访问路径中存储的word文档,同时业务模块根据预览进度信息,确定用户原本在第二客户端的H5页面中的浏览位置,进而在进度条501上还显示跳转选项502,提示用户“上次浏览到了此处,点击快速跳转”,使得用户在点击跳转选项502之后,将会直接跳转到用户原本在第二客户端的H5页面中的浏览位置,从而避免用户手动调整进度条来寻找上次浏览的位置。
图6是本申请实施例提供的一种跨端通信功能的测试结果的界面示意图,如图6所示,示出了针对上述在不同客户端之间同步正在预览的word文档的测试结果,在测试界面600中展示了本次针对正在预览的word文档进行跨端同步的测试结果为:
{“errMsg”:“ok”,“data”:{“path”:“C:\Download\Document1”},“session”:“6”,“invokeId”:“2”,“errCode”:“0”,“ret”:0}
上述测试结果代表经过测试跨端同步正在预览的word文档过程无异常,此外,在测试界面600中还展示有第一客户端所支持的其他可供测试的业务模块的功能接口,包括“扫一扫”、“数据(存)”、“数据(读)”、“数据清除”、“登录”、“打电话”、“资讯列表”、“excel预览”、“word预览”、“ppt预览”、“pdf预览”等,本申请实施例对第一客户端所支持的其他可供测试的业务模块的功能接口类型不进行具体限定。
在一些实施例中,在成功同步了正在预览的word文档和预览进度信息之后,第一客户端还可以产生一个回调信息,并通过URLOpenHandler方法返回到统一路由模组RouterModule,再由统一路由模组RouterModule将回调信息回传到发送端,例如回调信息可以是一个ACK消息,表征本次已经同步成功,又或者,在同步成功时不会产生任何回调信息,仅在同步识别时才返回一串错误码,这样能够节约不同客户端之间的通信开销。可选地,回调信息中还可以包括一些标识信息,如appId(客户端标识)、userId(账号信息)、dysmUuid(符号表,用户标记调用的跨端通信的次数)、athenaHost(信息上报域名)等,这些信息都可以封装到回调信息中回传给第二客户端,或者通过下一实施例的方法,经由Socket套接字链接通道上报给服务器。
上述所有可选技术方案,能够采用任意结合形成本公开的可选实施例,在此不再一一赘述。
本申请实施例提供的方法,针对同一终端上不同客户端进行跨端通信场景,通过由第一客户端中支持跨端通信的各个模块在初始化阶段向路由模块中注册配置信息,便于路由模块统一管理支持跨端通信的各个模块,并在接收到第二客户端基于跨端通信协议封装得到的URL数据后,快速解析定位到URL数据请求的业务模块,将URL数据中的业务数据路由到业务模块中进行处理,以通过业务模块对外提供业务服务,通过声明跨端通信协议并将涉及跨端通信的数据都组装成规范化的URL数据,极大方便了第一客户端统一管理各个外部客户端发来的URL数据,也方便了第一客户端快速解析到业务数据并将业务数据路由到业务模块,这样无需技术人员按照不同客户端不同业务模块来分别制定不同的通信规则或代码逻辑,减少了技术人员的重复性工作,降低了跨端通信实现的人力成本,提升了跨端通信实现的开发效率。
在上一实施例中,针对同一终端上不同客户端进行跨端通信场景,详细介绍了路由模块的初始化流程、URL数据封装流程、URL数据解析流程、业务数据加密和解密方式,以及业务模块以回调方式返回业务处理结果的流程,而在本申请实施例中,将针对不同终端上的客户端进行跨端通信场景进行详细说明。
图7是本申请实施例提供的一种数据传输方法的交互流程图。参见图7,以不同设备上的客户端之间的跨终端通信场景为例进行说明,该实施例由第一终端上的第一客户端和第二终端上第二客户端之间交互实现,该实施例包括下述步骤:
701、第二终端的第二客户端向第一终端的第一客户端发送URL数据,该URL数据基于该第一客户端所支持的跨端通信协议封装得到。
其中,该第二客户端是指该与第一终端不同的第二终端上的任一客户端,第二客户端可以与第一客户端是相同或者不同的客户端。
上述步骤701中第二客户端封装并发送URL数据的方式,与上一实施例中步骤302中第二客户端封装并发送URL数据的方式类似,这里不做赘述。
702、第一客户端通过内置的路由模块接收该第二客户端发送的该URL数据,该路由模块用于统一接收来自任一第二客户端的URL数据。
上述步骤702是通过该终端的第一客户端接收第二客户端发送的URL数据的一种可能实施方式,本步骤702中第一客户端通过路由模块接收URL数据的方式,与上一实施例中步骤303中第一客户端通过路由模块接收URL数据的方式,这里不做赘述。
703、第一客户端通过该路由模块基于该跨端通信协议,解析该URL数据的路径字段,得到用于指示该URL数据所请求与该第一客户端进行跨端通信的业务模块的模块路径。
上述步骤703与上一实施例中的步骤304类似,这里不做赘述。
704、第一客户端基于该模块路径,在该路由模块中查询得到与该模块路径相匹配的已注册的该业务模块。
在一些实施例中,第一终端在启动第一客户端后,也需要经过上一实施例中步骤301涉及的初始化阶段,即,在初始化阶段,第一客户端中支持跨端通信的各个模块均在该第一客户端的路由模块中注册配置信息,在这种情况下,第一客户端可以从该路由模块中已注册的至少一个配置信息中,查询得到与该模块路径相匹配的配置信息,将该配置信息所指示的已注册模块确定为该业务模块。
在上述步骤703-704中,提供了基于该跨端通信协议,解析该URL数据的路径字段,得到该URL数据所请求与该第一客户端进行跨端通信的业务模块的一种可能实施方式,解析路径字段以确定业务模块的方式与上一实施例中步骤305中的描述类似,这里不做赘述。
705、第一客户端通过该路由模块,从该参数字段中读取该URL数据的加密属性参数,该加密属性参数用于指示该业务数据是否经过加密。
上述步骤705与上一实施例中的步骤306类似,这里不做赘述。
706、在该加密属性参数指示该业务数据经过加密的情况下,第一客户端通过路由模块将该参数字段中记录的加密数据发送到该业务模块。
上述步骤706与上一实施例中的步骤307类似,这里不做赘述。
707、第一客户端通过该业务模块基于与该第二客户端预先协商的解密算法,对该加密数据进行解密,得到该业务数据。
上述步骤707与上一实施例中的步骤308类似,这里不做赘述。
在上述步骤705-707中,提供了在该加密属性参数指示该业务数据经过加密的情况下,基于该跨端通信协议,解析该URL数据的参数字段,得到该URL数据所携带的业务数据的一种可能实施方式,可选地,在该加密属性参数指示该业务数据未经过加密的情况下,第一客户端可以直接通过路由模块从参数字段中解析得到业务数据,接着,通过路由模块将解析得到的业务数据发送到业务模块。
708、第一客户端通过该业务模块处理该业务数据,得到业务处理结果。
上述步骤708与上一实施例中的步骤309类似,这里不做赘述。
709、第一客户端向该第二客户端返回该业务处理结果,或,向该第二客户端关联的服务器发送该业务处理结果,以使该服务器向该第二客户端转发该业务处理结果。
在本申请实施例中,由于第二客户端是另一终端上的任一客户端,即,第一客户端和第二客户端是不同终端上的客户端,在此基础上,如果第一客户端能够直接与第二客户端建立端到端的通信连接,则第一客户端可以直接向第二客户端返回业务处理结果;如果第一客户端无法直接与第二客户端建立端到端的通信连接,那么第一客户端可以在与第二客户端所关联的服务器建立通信连接后,由第一客户端将该业务处理结果发送到服务器,再由服务器将该业务处理结果转发到第二客户端。
在一些实施例中,由于第二客户端是另一终端上的任一客户端,这时有可能第二客户端所处的第二终端与第一终端在原生层的字典数据不兼容,因此,第一客户端可以在将该业务处理结果映射为JSON格式后,以JSON格式来进行数据传输的映射和桥接,即,在原生层将转换得到的JSON格式的业务处理结果发送给统一路由模组RouterModule,再由统一路由模组RouterModule通过Socket套接字链接通道发送至该第二客户端,或者,将JSON格式的业务处理结果通过Socket套接字链接通道发送至第二客户端所关联的服务器,再由服务器将该业务处理结果转发到第二客户端。
在一些实施例中,第一客户端通过Pthreads线程库,开启Socket套接字链接通道,业务模块通过URLOpenHandler方法将JSON格式的业务处理结果传入到统一路由模组RouterModule。此外,在路由模块TXRouter启动时,还会预先设置host(服务器地址)、appId(客户端标识)、userId(账号信息)、dysmUuid(符号表,用户标记调用的跨端通信的次数)、athenaHost(信息上报域名)等标识信息,将业务处理结果和上述标识信息使用第二客户端所支持的跨端通信协议进行封装后,再将封装得到的数据转换成JSON格式(在第二客户端也内置了路由模块TXRouter的情况下,相当于将数据处理成易于第二客户端的统一路由模组RouterModule接收的形式),然后在Socket套接字链接通道中组装、分发、传输对应的JSON格式的回调信息。
在一些实施例中,在Socket套接字链接通道中分发JSON格式的回调信息时,可以同时维护两条消息分发通道,一条传输到发送端(即第二终端)的接收层,另一条传输到发送端的服务器(即第二客户端关联的服务器),例如,在Socket套接字链接通道中,调用bind函数来绑定发送端的服务器地址、端口号和ipv6(Internet Protocol Version 6,互联网协议第六版)地址之后,在Socket套接字链接通道中创建两条消息队列,一条消息队列用于记录待传输到发送端的回调信息,另一条消息队列用于记录待传输到发送端的服务器的回调信息,这样每当有业务模块对业务数据处理完毕后,可以将以上述方式获取到的JSON格式的回调信息添加到对应的消息队列中。
在一些实施例中,第一客户端的统一路由模组RouterModule在接收到业务模块上传的JSON格式的回调信息之后,在发送端的接收层找到已注册的用于接收回调信息的接收函数,然后可以通过反射的方式对接收函数进行调用,以将JSON格式的回调信息传入到发送端的第二客户端,反射的方式是指在调用接收函数时无需导入头文件,这样是为了降低第一客户端和第二客户端之间的业务代码逻辑的依赖性,保护发送端的第二客户端的接收函数的隐私性。
在一些实施例中,第一客户端可以通过反射的方式返回JSON格式的回调信息时,如果第一客户端所在的第一终端无法直接与第二客户端所在的第二终端建立端到端连接,那么需要经由第二客户端关联的服务器进行消息转发,这时,可以检查当前的网络状态,通过ICMP(Internet Control Message Protocol,互联网控制消息协议)协议检测bind函数绑定的ipv6地址是否可达,如果ipv6地址可达,那么将JSON格式的回调信息添加到Socket套接字链接通道中用于向服务器返回回调信息的消息队列中,等待消息队列将JSON格式的回调信息发送到服务器。
在上述步骤708-709中,提供了在第二客户端请求业务结果的情况下,通过该业务模块处理该业务数据,以使该业务模块向该第二客户端提供业务服务的一种可能实施方式。在另一些实施例中,在第二客户端不请求业务处理结果的情况下,第一客户端在通过业务模块对业务数据处理完毕后,即可退出流程,关闭业务模块,释放业务模块所占用的处理资源,能够节约终端的处理资源,简化跨端通信的通信开销。
上述所有可选技术方案,能够采用任意结合形成本公开的可选实施例,在此不再一一赘述。
本申请实施例提供的方法,针对不同终端上的客户端进行跨端通信场景,通过由第一客户端的路由模块接收各个第二客户端基于跨端通信协议封装得到的URL数据,路由模块能够快速解析定位到URL数据请求的业务模块,将URL数据中的业务数据路由到业务模块中进行处理,以通过业务模块对外提供业务服务,通过声明跨端通信协议并将涉及跨端通信的数据都组装成规范化的URL数据,极大方便了第一客户端统一管理各个外部客户端发来的URL数据,也方便了第一客户端快速解析到业务数据并将业务数据路由到业务模块,这样无需技术人员按照不同客户端不同业务模块来分别制定不同的通信规则或代码逻辑,减少了技术人员的重复性工作,降低了跨端通信实现的人力成本,提升了跨端通信实现的开发效率。
图8是本申请实施例提供的一种数据传输方法的原理性流程图,如图8所示,结合上述两个实施例的不同情况进行了数据传输流程的总结,下面进行说明。
在步骤801中,终端上的第一客户端创建路由模块TXRouter。
在步骤802中,在路由模块TXRouter中建立统一路由模组RouterModule。
在步骤803中,发送端即第二客户端开始向第一客户端发送URL数据。
在步骤804中,第一客户端通过路由模块TXRouter解析URL数据。
在步骤805中,根据解析URL数据得到的模块路径,判断是否有已注册配置信息Components的业务模块能够处理?如果查询到了配置信息Components相匹配的业务模块,将解析URL数据得到的业务数据或加密数据发送到业务模块,执行步骤806,如果没有查询到配置信息Components相匹配的业务模块,执行步骤814。
在步骤806中,业务模块对持有secret属性的加密数据,利用解密算法进行解密,执行invoke函数来进行算法或逻辑运算,以处理解密得到的业务数据。
在步骤807中,业务模块生成对业务数据的业务处理结果。
在步骤808中,业务模块判断是否需要向第二客户端返回回调信息?如果需要向第二客户端返回回调信息,进入步骤809,如果不需要向第二客户端返回回调信息,关闭业务模块,退出流程。
在步骤809中,第一客户端开启Socket套接字链接通道。
在步骤810中,路由模块TXRouter判断是否能够直接向第二客户端返回回调信息?如果能够直接向第二客户端返回回调信息,进入步骤814,如果不能直接向第二客户端返回回调信息,进入步骤811。
在步骤811中,路由模块TXRouter调用bind函数绑定第二客户端关联的服务器地址、端口号和ipv6地址。
在步骤812中,路由模块TXRouter以反射的方式调用第二客户端接收层的接收函数。
在步骤813中,路由模块TXRouter产生的回调信息发送到服务器。
在步骤814中,路由模块TXRouter判断第二客户端所处的位置,如果第二客户端处于第一客户端所在终端内(即位于端内),进入步骤815,如果第二客户端处于第一客户端所在终端外(即位于端外),进入步骤816。
在步骤815中,路由模块TXRouter根据原生层的字段数据,对业务处理结果和其他相关信息进行组装,得到回调信息。
在步骤816中,路由模块TXRouter在组装得到回调信息后,将回调信息转换成JSON格式,即通过JS进行数据映射。
在步骤817中,路由模块TXRouter将回调信息直接以回调方式通知到第二客户端。
在本申请实施例中,通过在私有化部署过程中,对不同的客户统一封装跨端通信的规则,即对不同的外部客户端声明一个统一的跨端通信协议,这样能够对外提供一套针对跨端通信协议制定的参数功能文档,方便外部的第二客户端调用第一客户端中各个业务模块的功能接口,使得外部客户端调用功能接口时更加方便快捷。
进一步的,由于在第一客户端内置了路由模块来对各种跨端通信的URL数据进行统一的规范化管理,极大简化了在跨端通信过程中,不同插件、不同终端、不同业务模块拉起独立功能接口的实现流程,在产品进行POC(Proof of Concept,为观点提供证据)演示时更能体现对效率工程的注重。
进一步的,由于对外声明的Installable跨端通信协议,能够在启动阶段完成注册和初始化,这样方便了随时增加新的业务模块或移除原有的业务模块,这些业务模块能够由路由模块在每次冷启动第一客户端的阶段进行集成管理,具有极强的可扩展能力。
图9是本申请实施例提供的一种数据传输装置的结构示意图,请参考图9,该装置包括:
接收模块901,用于通过该终端的第一客户端接收第二客户端发送的统一资源定位符URL数据,该URL数据基于该第一客户端所支持的跨端通信协议封装得到,该第二客户端是指该终端上与该第一客户端不同的客户端或另一终端上的任一客户端;
解析模块902,用于基于该跨端通信协议,解析该URL数据的路径字段,得到该URL数据所请求与该第一客户端进行跨端通信的业务模块;
该解析模块902,还用于基于该跨端通信协议,解析该URL数据的参数字段,得到该URL数据所携带的业务数据;
处理模块903,用于通过该业务模块处理该业务数据,以使该业务模块向该第二客户端提供业务服务。
本申请实施例提供的装置,通过由第一客户端对外提供跨端通信协议,使得第二客户端在需要与第一客户端进行跨端通信时,向第一客户端发送按照该跨端通信协议来封装得到的URL数据,从而第一客户端可以方便地对URL数据进行解析,快速确定本次跨端通信所请求的业务模块并快速获取到对应的业务数据,从而将业务数据路由到业务模块,以通过业务模块对外提供业务服务,通过声明跨端通信协议并将涉及跨端通信的数据都组装成规范化的URL数据,极大方便了第一客户端统一管理各个外部客户端发来的URL数据,也方便了第一客户端快速解析到业务数据并将业务数据路由到业务模块,这样无需技术人员按照不同客户端不同业务模块来分别制定不同的通信规则或代码逻辑,减少了技术人员的重复性工作,降低了跨端通信实现的人力成本,提升了跨端通信实现的开发效率。
在一种可能实施方式中,该接收模块901用于:
通过该第一客户端内置的路由模块接收该第二客户端发送的该URL数据,该路由模块用于统一接收来自任一第二客户端的基于该跨端通信协议封装得到的URL数据。
在一种可能实施方式中,基于图9的装置组成,该解析模块902包括:
解析单元,用于通过该路由模块基于该跨端通信协议,解析该URL数据的路径字段,得到用于指示该业务模块的模块路径;
查询单元,用于基于该模块路径,在该路由模块中查询得到与该模块路径相匹配的已注册的该业务模块。
在一种可能实施方式中,该查询单元用于:
从该路由模块中已注册的至少一个配置信息中,查询得到与该模块路径相匹配的配置信息,将该配置信息所指示的已注册模块确定为该业务模块;其中,在启动该第一客户端后,该第一客户端中支持跨端通信的各个模块均在该路由模块中注册配置信息。
在一种可能实施方式中,该解析模块902用于:
通过该路由模块,从该参数字段中读取该URL数据的加密属性参数,该加密属性参数用于指示该业务数据是否经过加密;
在该加密属性参数指示该业务数据经过加密的情况下,基于与该第二客户端预先协商的解密算法,对该参数字段中记录的加密数据进行解密,得到该业务数据。
在一种可能实施方式中,基于图9的装置组成,该处理模块903包括:
处理单元,用于通过该业务模块处理该业务数据,得到业务处理结果;
传输单元,用于在该第二客户端请求该业务处理结果的情况下,向该第二客户端返回该业务处理结果,或,向该第二客户端关联的服务器发送该业务处理结果,以使该服务器向该第二客户端转发该业务处理结果。
在一种可能实施方式中,该传输单元用于:
在该第二客户端为该终端上的与该第一客户端不同的客户端的情况下,基于该终端在原生层的字典数据,对该业务处理结果进行组装,将组装得到的数据发送到该第二客户端;或,
在该第二客户端为另一终端上的任一客户端的情况下,将该业务处理结果映射为JSON格式后,将JSON格式的业务处理结果通过套接字链接通道发送至该第二客户端。
上述所有可选技术方案,能够采用任意结合形成本公开的可选实施例,在此不再一一赘述。
需要说明的是:上述实施例提供的数据传输装置在传输并处理URL数据时,仅以上述各功能模块的划分进行举例说明,实际应用中,能够根据需要而将上述功能分配由不同的功能模块完成,即将终端的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据传输装置与数据传输方法实施例属于同一构思,其具体实现过程详见数据传输方法实施例,这里不再赘述。
图10是本申请实施例提供的一种终端的结构示意图。可选地,该终端1000的设备类型包括:智能手机、平板电脑、MP3播放器(Moving Picture Experts Group Audio LayerIII,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts Group AudioLayer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端1000还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,终端1000包括有:处理器1001和存储器1002。
可选地,处理器1001包括一个或多个处理核心,比如4核心处理器、8核心处理器等。可选地,处理器1001采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable LogicArray,可编程逻辑阵列)中的至少一种硬件形式来实现。在一些实施例中,处理器1001包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central Processing Unit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1001集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1001还包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
在一些实施例中,存储器1002包括一个或多个计算机可读存储介质,可选地,该计算机可读存储介质是非暂态的。可选地,存储器1002还包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1002中的非暂态的计算机可读存储介质用于存储至少一个程序代码,该至少一个程序代码用于被处理器1001所执行以实现本申请中各个实施例提供的数据传输方法。
在一些实施例中,终端1000还可选包括有:外围设备接口1003和至少一个外围设备。处理器1001、存储器1002和外围设备接口1003之间能够通过总线或信号线相连。各个外围设备能够通过总线、信号线或电路板与外围设备接口1003相连。具体地,外围设备包括:射频电路1004、显示屏1005、摄像头组件1006、音频电路1007和电源1008中的至少一种。
外围设备接口1003可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器1001和存储器1002。在一些实施例中,处理器1001、存储器1002和外围设备接口1003被集成在同一芯片或电路板上;在一些其他实施例中,处理器1001、存储器1002和外围设备接口1003中的任意一个或两个在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路1004用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路1004通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1004将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路1004包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。可选地,射频电路1004通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路1004还包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏1005用于显示UI(User Interface,用户界面)。可选地,该UI包括图形、文本、图标、视频及其它们的任意组合。当显示屏1005是触摸显示屏时,显示屏1005还具有采集在显示屏1005的表面或表面上方的触摸信号的能力。该触摸信号能够作为控制信号输入至处理器1001进行处理。可选地,显示屏1005还用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏1005为一个,设置终端1000的前面板;在另一些实施例中,显示屏1005为至少两个,分别设置在终端1000的不同表面或呈折叠设计;在再一些实施例中,显示屏1005是柔性显示屏,设置在终端1000的弯曲表面上或折叠面上。甚至,可选地,显示屏1005设置成非矩形的不规则图形,也即异形屏。可选地,显示屏1005采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件1006用于采集图像或视频。可选地,摄像头组件1006包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件1006还包括闪光灯。可选地,闪光灯是单色温闪光灯,或者是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,用于不同色温下的光线补偿。
在一些实施例中,音频电路1007包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器1001进行处理,或者输入至射频电路1004以实现语音通信。出于立体声采集或降噪的目的,麦克风为多个,分别设置在终端1000的不同部位。可选地,麦克风是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器1001或射频电路1004的电信号转换为声波。可选地,扬声器是传统的薄膜扬声器,或者是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅能够将电信号转换为人类可听见的声波,也能够将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路1007还包括耳机插孔。
电源1008用于为终端1000中的各个组件进行供电。可选地,电源1008是交流电、直流电、一次性电池或可充电电池。当电源1008包括可充电电池时,该可充电电池支持有线充电或无线充电。该可充电电池还用于支持快充技术。
在一些实施例中,终端1000还包括有一个或多个传感器1010。该一个或多个传感器1010包括但不限于:加速度传感器1011、陀螺仪传感器1012、压力传感器1013、光学传感器1014以及接近传感器1015。
在一些实施例中,加速度传感器1011检测以终端1000建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器1011用于检测重力加速度在三个坐标轴上的分量。可选地,处理器1001根据加速度传感器1011采集的重力加速度信号,控制显示屏1005以横向视图或纵向视图进行用户界面的显示。加速度传感器1011还用于游戏或者用户的运动数据的采集。
在一些实施例中,陀螺仪传感器1012检测终端1000的机体方向及转动角度,陀螺仪传感器1012与加速度传感器1011协同采集用户对终端1000的3D动作。处理器1001根据陀螺仪传感器1012采集的数据,实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
可选地,压力传感器1013设置在终端1000的侧边框和/或显示屏1005的下层。当压力传感器1013设置在终端1000的侧边框时,能够检测用户对终端1000的握持信号,由处理器1001根据压力传感器1013采集的握持信号进行左右手识别或快捷操作。当压力传感器1013设置在显示屏1005的下层时,由处理器1001根据用户对显示屏1005的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
光学传感器1014用于采集环境光强度。在一个实施例中,处理器1001根据光学传感器1014采集的环境光强度,控制显示屏1005的显示亮度。具体地,当环境光强度较高时,调高显示屏1005的显示亮度;当环境光强度较低时,调低显示屏1005的显示亮度。在另一个实施例中,处理器1001还根据光学传感器1014采集的环境光强度,动态调整摄像头组件1006的拍摄参数。
接近传感器1015,也称距离传感器,通常设置在终端1000的前面板。接近传感器1015用于采集用户与终端1000的正面之间的距离。在一个实施例中,当接近传感器1015检测到用户与终端1000的正面之间的距离逐渐变小时,由处理器1001控制显示屏1005从亮屏状态切换为息屏状态;当接近传感器1015检测到用户与终端1000的正面之间的距离逐渐变大时,由处理器1001控制显示屏1005从息屏状态切换为亮屏状态。
本领域技术人员能够理解,图10中示出的结构并不构成对终端1000的限定,能够包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
在示例性实施例中,还提供了一种计算机可读存储介质,例如包括至少一条计算机程序的存储器,上述至少一条计算机程序可由终端中的处理器执行以完成上述各个实施例中的数据传输方法。例如,该计算机可读存储介质包括ROM(Read-Only Memory,只读存储器)、RAM(Random-Access Memory,随机存取存储器)、CD-ROM(Compact Disc Read-OnlyMemory,只读光盘)、磁带、软盘和光数据存储设备等。
在示例性实施例中,还提供了一种计算机程序产品,包括一条或多条计算机程序,该一条或多条计算机程序存储在计算机可读存储介质中。终端的一个或多个处理器能够从计算机可读存储介质中读取该一条或多条计算机程序,该一个或多个处理器执行该一条或多条计算机程序,使得终端能够执行以完成上述实施例中的数据传输方法。
本领域普通技术人员能够理解实现上述实施例的全部或部分步骤能够通过硬件来完成,也能够通过程序来指令相关的硬件完成,可选地,该程序存储于一种计算机可读存储介质中,可选地,上述提到的存储介质是只读存储器、磁盘或光盘等。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (10)

1.一种数据传输方法,其特征在于,由终端执行,所述方法包括:
通过所述终端的第一客户端接收第二客户端发送的统一资源定位符URL数据,所述URL数据基于所述第一客户端所支持的跨端通信协议封装得到,所述第二客户端是指所述终端上与所述第一客户端不同的客户端或另一终端上的任一客户端;
基于所述跨端通信协议,解析所述URL数据的路径字段,得到所述URL数据所请求与所述第一客户端进行跨端通信的业务模块;
基于所述跨端通信协议,解析所述URL数据的参数字段,得到所述URL数据所携带的业务数据;
通过所述业务模块处理所述业务数据,以使所述业务模块向所述第二客户端提供业务服务。
2.根据权利要求1所述的方法,其特征在于,所述通过所述终端的第一客户端接收第二客户端发送的统一资源定位符URL数据包括:
通过所述第一客户端内置的路由模块接收所述第二客户端发送的所述URL数据,所述路由模块用于统一接收来自任一第二客户端的基于所述跨端通信协议封装得到的URL数据。
3.根据权利要求2所述的方法,其特征在于,所述基于所述跨端通信协议,解析所述URL数据的路径字段,得到所述URL数据所请求与所述第一客户端进行跨端通信的业务模块包括:
通过所述路由模块基于所述跨端通信协议,解析所述URL数据的路径字段,得到用于指示所述业务模块的模块路径;
基于所述模块路径,在所述路由模块中查询得到与所述模块路径相匹配的已注册的所述业务模块。
4.根据权利要求3所述的方法,其特征在于,所述基于所述模块路径,在所述路由模块中查询得到与所述模块路径相匹配的已注册的所述业务模块包括:
从所述路由模块中已注册的至少一个配置信息中,查询得到与所述模块路径相匹配的配置信息,将所述配置信息所指示的已注册模块确定为所述业务模块;其中,在启动所述第一客户端后,所述第一客户端中支持跨端通信的各个模块均在所述路由模块中注册配置信息。
5.根据权利要求2所述的方法,其特征在于,所述基于所述跨端通信协议,解析所述URL数据的参数字段,得到所述URL数据所携带的业务数据包括:
通过所述路由模块,从所述参数字段中读取所述URL数据的加密属性参数,所述加密属性参数用于指示所述业务数据是否经过加密;
在所述加密属性参数指示所述业务数据经过加密的情况下,基于与所述第二客户端预先协商的解密算法,对所述参数字段中记录的加密数据进行解密,得到所述业务数据。
6.根据权利要求1所述的方法,其特征在于,所述通过所述业务模块处理所述业务数据,以使所述业务模块向所述第二客户端提供业务服务包括:
通过所述业务模块处理所述业务数据,得到业务处理结果;
在所述第二客户端请求所述业务处理结果的情况下,向所述第二客户端返回所述业务处理结果,或,向所述第二客户端关联的服务器发送所述业务处理结果,以使所述服务器向所述第二客户端转发所述业务处理结果。
7.根据权利要求6所述的方法,其特征在于,所述向所述第二客户端返回所述业务处理结果包括:
在所述第二客户端为所述终端上的与所述第一客户端不同的客户端的情况下,基于所述终端在原生层的字典数据,对所述业务处理结果进行组装,将组装得到的数据发送到所述第二客户端;或,
在所述第二客户端为另一终端上的任一客户端的情况下,将所述业务处理结果映射为JSON格式后,将JSON格式的业务处理结果通过套接字链接通道发送至所述第二客户端。
8.一种数据传输装置,其特征在于,所述装置包括:
接收模块,用于通过所述终端的第一客户端接收第二客户端发送的统一资源定位符URL数据,所述URL数据基于所述第一客户端所支持的跨端通信协议封装得到,所述第二客户端是指所述终端上与所述第一客户端不同的客户端或另一终端上的任一客户端;
解析模块,用于基于所述跨端通信协议,解析所述URL数据的路径字段,得到所述URL数据所请求与所述第一客户端进行跨端通信的业务模块;
所述解析模块,还用于基于所述跨端通信协议,解析所述URL数据的参数字段,得到所述URL数据所携带的业务数据;
处理模块,用于通过所述业务模块处理所述业务数据,以使所述业务模块向所述第二客户端提供业务服务。
9.一种终端,其特征在于,所述终端包括一个或多个处理器和一个或多个存储器,所述一个或多个存储器中存储有至少一条计算机程序,所述至少一条计算机程序由所述一个或多个处理器加载并执行以实现如权利要求1至权利要求7任一项所述的数据传输方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条计算机程序,所述至少一条计算机程序由处理器加载并执行以实现如权利要求1至权利要求7任一项所述的数据传输方法。
CN202210812683.5A 2022-07-11 2022-07-11 数据传输方法、装置、终端及存储介质 Pending CN117424884A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210812683.5A CN117424884A (zh) 2022-07-11 2022-07-11 数据传输方法、装置、终端及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210812683.5A CN117424884A (zh) 2022-07-11 2022-07-11 数据传输方法、装置、终端及存储介质

Publications (1)

Publication Number Publication Date
CN117424884A true CN117424884A (zh) 2024-01-19

Family

ID=89531271

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210812683.5A Pending CN117424884A (zh) 2022-07-11 2022-07-11 数据传输方法、装置、终端及存储介质

Country Status (1)

Country Link
CN (1) CN117424884A (zh)

Similar Documents

Publication Publication Date Title
EP3389230B1 (en) System for providing dialog content
US20200278949A1 (en) Method and apparatus for viewing previously used file, and terminal
US11864248B2 (en) Application function implementation method and electronic device
CN114286165B (zh) 一种显示设备、移动终端、投屏数据传输方法及系统
US20200341617A1 (en) Program Orchestration Method and Electronic Device
JP2023511914A (ja) オーディオ出力方法および端末デバイス
KR102121358B1 (ko) 데이터 전송 방법 및 디바이스
WO2022028494A1 (zh) 一种多设备数据协作的方法及电子设备
WO2015176352A1 (zh) 一种基于安卓系统的应用间信息交互方法及装置
CN112420217A (zh) 消息推送方法、装置、设备及存储介质
CN110263525B (zh) 设备配置方法及装置
CN112511892B (zh) 屏幕共享方法、装置、服务器及存储介质
US10178087B2 (en) Trusted pin management
JP7319431B2 (ja) アプリケーション機能の実施方法及び電子装置
CN117424884A (zh) 数据传输方法、装置、终端及存储介质
CN113076362B (zh) 业务执行方法及装置
CN113642010B (zh) 一种获取扩展存储设备数据的方法及移动终端
KR102254821B1 (ko) 대화형 콘텐츠 제공 시스템
CN111159734A (zh) 通信终端及多应用数据互访处理方法
CN113938890B (zh) 数据共享方法和终端设备
CN114513479B (zh) 消息收发方法、装置、终端、服务器及存储介质
EP4345590A1 (en) Task synchronization system and method, and device
CN111142648B (zh) 一种数据处理方法和智能终端
WO2018171661A1 (zh) 信息同步方法、装置、系统及存储介质
CN116679859A (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