CN108874554B - 信息通信方法及装置 - Google Patents
信息通信方法及装置 Download PDFInfo
- Publication number
- CN108874554B CN108874554B CN201710321408.2A CN201710321408A CN108874554B CN 108874554 B CN108874554 B CN 108874554B CN 201710321408 A CN201710321408 A CN 201710321408A CN 108874554 B CN108874554 B CN 108874554B
- Authority
- CN
- China
- Prior art keywords
- service
- calling
- native system
- information
- interface
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Telephonic Communication Services (AREA)
Abstract
本发明公开了一种信息通信方法及装置,属于网络技术领域。方法包括:在应用运行过程中,获取在非原生系统中触发的第一业务的业务信息;根据预先在通信模块中注册的原生系统的第一接口调用信息,确定原生系统的第一业务接收接口,第一业务接收接口用于统一接收传递给原生系统的业务信息,并基于业务信息对应的任务标识在原生系统中对业务信息进行分发;调用第一业务接收接口,以向原生系统传递第一业务的业务信息。在非原生系统调用原生系统的过程中,通过调用原生系统预先注册的统一业务接收接口,便可将该业务信息传递给原生系统,而不需要根据该业务重新建立一个通信通道,从而提高了通信效率。而且,打破了通信通道与业务之间的依赖关系,提高了可扩展性。
Description
技术领域
本发明涉及网络技术领域,特别涉及一种信息通信方法及装置。
背景技术
Unity是一款能够开发3D(Three Dimensional,三维空间)应用的3D引擎,原生系统(Native)是指独立于Unity引擎的终端操作系统,比如安卓系统、ios系统等,相比于Native,Unity可以称之为非原生系统。采用Unity开发的应用在运行时需要与终端的Native进行通信,才能完成应用的相关功能。然而由于Unity的环境相对比较封闭,以其为引擎开发的应用与Native之间的通信存在着较多的限制。
现有技术中,Unity和Native的通信包括两个方面:一方面是Unity对Native的调用。另一方面是Native对Unity的调用。如图1所示为现有技术中一种Unity和Native的通信方案示意图。其中,Unity到Native的调用可以采用以下方式实现:首先根据业务的功能需求,定义并实现针对该业务的Native侧的业务接口,采用Platform Invoke(平台调用)技术将该业务接口封装成C(语言)类型的接口,以使得Unity可以通过自身的业务调用接口调用该C类型的接口实现对Native的业务接口的调用,通过该调用将业务信息传递给Native的业务接口,以使Native的业务接收接口处理相应的业务逻辑,从而完成Unity到Native的信息通信。对于不同的业务需求,需要按照上述方式实现相应的Native的业务接口,从而实现各种业务的Unity到Native的信息通信。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
针对任一业务,在实现Unity到Native的通信时,都需要经过定义并实现与业务对应的业务接口,并对业务接口进行封装处理,如果将一个业务接口对应的业务通信看作是一个通信通道,则通信通道和业务之间便具有强耦合关系,当需要通信的业务较多时,对应每个业务都需要新创建一个通信通道,由于不断地创建通信通道,降低了通信效率,而且,通信信道对业务具有强依赖性,当需要将应用从一个原生系统移植到另一个原生系统时,需要对各种业务的业务接口进行重新封装,使得与之相关的业务逻辑也需要更改,扩展性差。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种信息通信方法及装置。所述技术方案如下:
第一方面,提供了一种信息通信方法,所述方法包括:
在所述应用运行过程中,获取在所述非原生系统中触发的第一业务的业务信息;
根据预先在通信模块中注册的所述原生系统的第一接口调用信息,确定所述原生系统的第一业务接收接口,所述第一业务接收接口用于统一接收传递给所述原生系统的业务信息,并基于业务信息对应的任务标识在所述原生系统中对业务信息进行分发;
调用所述第一业务接收接口,以向所述原生系统传递所述第一业务的业务信息。
第二方面,提供了一种信息通信装置,所述装置包括:
获取单元,用于在所述应用运行过程中,获取在所述非原生系统中触发的第一业务的业务信息;
第一确定单元,用于根据预先在通信模块中注册的所述原生系统的第一接口调用信息,确定所述原生系统的第一业务接收接口,所述第一业务接收接口用于统一接收传递给所述原生系统的业务信息,并基于业务信息对应的任务标识在所述原生系统中对业务信息进行分发;
第一调用单元,用于调用所述第一业务接收接口,以向所述原生系统传递所述第一业务的业务信息。
第三方面,提供了一种存储设备,所述存储设备存储有多条指令,所述指令适于由处理器用来加载并执行上述的信息通信方法。
第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,所述指令被处理器执行以完成上述的信息通信方法。
本发明实施例提供的技术方案带来的有益效果是:
在非原生系统调用原生系统的过程中,通过调用原生系统预先注册的统一业务接收接口,便可将该业务信息传递给原生系统,而不需要根据该业务重新建立一个通信通道,从而提高了通信效率。而且,打破了通信通道与业务之间的依赖关系,当需要将应用从一个原生系统移植到另一个原生系统时,由于各种业务对应统一的业务接口,不需要更改业务的业务逻辑,提高了可扩展性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是现有技术中的一种信息通信的架构图;
图2A是本发明实施例提供的一种信息通信的架构图;
图2B是本发明实施例提供的一种通信模块的组成结构图;
图3A是本发明实施例提供的一种在通信模块中注册统一的接口调用信息的流程图;
图3B是本发明实施例提供的一种Unity同步调用Native的流程图;
图3C是本发明实施例提供的一种Unity异步调用Native的流程图;
图4是本发明实施例提供的一种信息通信装置的框图;
图5是本发明实施例提供的一种终端的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
图2A是本发明实施例提供的一种信息通信的架构图。参见图2A,包括Unity业务处理模块,原生系统(Native)业务处理模块,通信模块。Unity业务处理模块和Native业务处理模块可以通过通信模块进行信息通信。Unity业务处理模块用于实现Unity侧的业务逻辑,Native业务处理模块用于实现Native侧的业务逻辑。
图2B为通信模块的组成结构示意图,其中,通信模块包括Unity接口模块,Native接口模块和调用模块。
Unity接口模块,用于将Unity的接口调用信息注册到调用模块。
Native接口模块,用于将Native的接口调用信息注册到调用模块。
在Unity和Native进行通信的过程中,Unity业务处理模块通过Unity接口模块,将业务信息传递给调用模块,通过在调用模块注册的Native接口调用信息调用Native接口,从而实现向Native传递业务信息;Native业务处理模块通过Native接口模块,将业务信息传递给调用模块,通过在调用模块注册的Unity接口调用信息调用Unity接口,从而实现向Unity传递业务信息。
其中,参见图2B,调用模块包括业务管理模块、Unity调用模块、Native调用模块和回调注册模块。
业务管理模块,用于将从Unity接口模块接收到的业务信息分发给Native接口模块;将从Native接口模块接口到的业务信息分发给Unity接口模块。业务管理模块还可以用于进行线程管理,比如,为异步调用分配空闲线程。
Unity调用模块,用于记录Unity接口在通信模块注册的Unity接口调用信息。
Native调用模块,用于记录Native接口在通信模块注册的Native接口调用信息。
回调注册模块,用于记录业务信息所指示的任务ID以及回调信息,该回调信息用于指示向Unity或Native反馈业务处理结果的回调函数的调用地址,比如,该回调信息为回调函的函数指针。需要说明的是,在应用开发的过程中,对应用功能所涉及到的每个业务均设置有一个任务ID,当一个业务需要在Unity和Native之间进行通信时,会将该业务在Unity侧的业务逻辑和在Native侧的业务逻辑设置为相同的任务ID,该任务ID可以由开发人员在编辑业务的业务逻辑时设置。
其中,参见图2B,Unity接口模块包括Unity同步调用接口,Unity异步调用接口和Unity调用注册接口。
Unity同步调用接口,用于将需要同步调用的业务信息传递给通信模块,由通信模块通过注册的Native调用信息传递给Native调用接口。
Unity异步调用接口,用于将需要异步调用的业务信息传递给通信模块,由通信模块通过注册的Native调用信息传递给Native调用接口。
Unity调用注册接口,用于将Unity接收业务信息的接口调用信息注册到通信模块。
其中,Native接口模块包括Native同步调用接口,Native异步调用接口和Native调用注册接口。
Native同步调用接口,用于将需要同步调用的业务信息传递给通信模块,由通信模块通过注册的Unity调用信息传递给Unity调用接口。
Native异步调用接口,用于将需要异步调用的业务信息传递给通信模块,由通信模块通过注册的Unity调用信息传递给Unity调用接口。
Native调用注册接口,用于将Native接收业务信息的接口调用信息注册到通信模块。
在本发明实施例中,在进行Unity和Native的混合开发过程中,可以基于上述信息通信的架构图,将上述通信模块封装成一个通信组件,该通信组件用于实现上述通信架构各模块的功能。在使用形式上,该通信组件可以作为应用的一个插件使用;或者对应不同的原生系统打包成相应的库文件,在开发应用时直接将该库文件导入到工程文件使用,比如,针对ios系统打包成后缀名为.a的库文件,针对安卓系统打包成后缀名为.so的库文件,针对Windows系统打包成.dll的库文件等。本发明实施例对通信组件的使用形式不作限定。
其中,如图2B所示,该通信模块向外暴露有Unity接口模块和Native接口模块,也即是,该通信模块向外提供的调用接口包括:Unity同步调用接口、Unity异步调用接口、Unity调用注册接口、Native同步调用接口、Native异步调用接口和Native调用注册接口,而对于剩余的其他模块或接口,通信模块并不提供给外部调用。
在应用开发过程中,对于需要在Unity和Native之间进行通信的业务功能,开发人员需要实现该业务功能在Unity侧的业务逻辑以及在Native侧的业务逻辑。其中,Unity侧的业务逻辑是指采用Unity实现的对象或函数所具有的功能,该对象可以为2D模型或者3D模型。该对象用于呈现在应用的界面上并与用户操作进行交互,比如,该对象可以是界面中的一个按钮、一个人物图像、一个对话框等。其中,Native侧的业务逻辑是指原生系统具有的相关功能,比如,语音采集功能,语音播放功能,读取通讯录列表的功能和启动摄像头功能等。
以语音通信功能为例,Unity侧主要实现的业务逻辑包括:该业务功能的界面呈现、检测用户操作以及向Native传递业务信息等,其中,界面呈现的内容可以包括开关按钮,通信状态相关图像的呈现等。Native侧主要实现的业务逻辑包括:启动或关闭音频接口、接收和播放语音信息等。
以语音通信功能为例,采用上述通信框架,开发人员在实现该语音通信功能时,Unity侧的业务逻辑只需要根据该业务功能的业务需求,实现对Unity调用注册接口的调用,以及对Unity同步调用接口和异步调用接口的调用即可;Native侧的业务逻辑,也是只需要根据该业务功能的业务需求,实现对Native调用注册接口的调用,以及对Native同步调用接口和异步调用接口的调用即可,可见,不管是同步调用还是异步调用都能够轻松实现,可以大大提高开发人员的开发效率。
当应用开发完成后,对于需要在Unity和Native之间进行通信的业务功能,通过上述通信架构所指示的逻辑进行信息通信。下面以终端为主体,对应用采用上述通信架构进行通信的过程进行解释说明,该终端上安装有采用Unity和Native混合开发、且基于上述通信架构开发的应用,详细过程参见图3A至图3C提供的实施例。
在对通信的详细过程进行介绍之前,先对涉及到的相关概念进行介绍:
回调函数:回调函数是通过函数指针调用的函数,可以将该函数的指针(函数入口调用地址)作为参数传递给另一个函数,另一个函数可以通过该指针调用其所指向的函数。本发明实施例中,将通过回调函数进行调用的过程称为回调。
同步调用:同步调用是一种阻塞式的调用方式,即调用者调用一个函数时,其代码一直处于阻塞等待状态,直到被调用者返回调用结果才会继续向下执行。例如,函数A中包括调用函数B的代码,以及在调用函数B之后的其他代码。函数A在调用函数B时,只有当函数B返回调用结果后,才会执行后续的其他代码,否则一直等待函数B返回的调用结果。
异步调用:异步调用是与同步调用相对的概念,调用者在调用一个函数时,无需等待被调用者返回调用结果便可继续向下执行。例如,上述函数A在调用函数B时,无需等待函数B返回调用结果,继续向下执行后续的其他代码。
其中,对于异步调用,如果调用者需要被调用者返回调用结果,则可以采用回调的方式来实现。回调的过程可以为:在异步调用函数时,将回调函数的调用地址通知给被调用者,当有了调用结果后,调用该回调函数便可以将调用结果通知给调用者。其中,可以将耗时较长的业务采用回调的方式来调用结果的返回,具体可以根据实际业务处理需求进行设置,本发明实施例对此不作限定。
需要说明的是,在调用的过程中终端一般会为调用者开启一个线程来承载该调用,对于同步调用整个调用过程都在调用者对应的主线程进行;对于异步调用在调用发生后,终端会该调用分配一个空闲线程,在调用者的主线程继续执行其他代码,被调用者可以通过调用者注册的回调返回调用结果。
基于上述通信架构,本发明实施例提供的信息通信方法可以包括以下几个过程:
(1)在Unity与Native首次通信之前,在通信模块中注册统一的接口调用信息。
在本发明实施例中,应用在安装到终端以后,可以在应用启动时对应用进行初始化的过程中,建立Unity和Native之间的通信通道。也即是,在初始化过程中,将Unity的接口调用信息以及回调信息注册到通信模块,并将Native的接口调用信息以及回调信息注册到通信模块。
参见图3A,该过程(1)可以包括以下步骤:
步骤a1,将Unity的接口调用信息注册到通信模块。
该将Unity的接口调用信息注册到通信模块的过程可以为:终端确定Unity侧预设的业务接收接口,将该业务接收接口的调用地址注册到通信模块。
结合通信模块的组成结构,该过程可以为:终端将Unity侧的业务接收接口的调用地址作为参数,调用Unity调用注册接口,该Unity调用注册接口将该业务接收接口的调用地址传递给Unity调用模块,Unity调用模块存储该调用地址。
其中,在应用开发过程中,可以预先定义Unity侧的业务接收接口,该业务接收接口用于接收Native的业务信息。在终端初始化应用的过程中,会初始化该业务接收接口,为该业务接收接口分配内存地址。
通过在通信模块注册Unity的接口调用信息,使得通信模块在接收到Native的业务信息时,可以根据该Unity的接口调用信息所指示的调用地址,访问到Unity的业务接收接口,从而将业务信息传递给Unity的业务接收接口,由Unity的业务接收接口对业务信息进行处理。也即是,通过在通信模块注册Unity的接口调用信息,建立了Native向Unity传递业务信息的通信通道。
步骤a2,将Native的接口调用信息注册到通信模块。
该步骤与步骤a1同理,在此不做赘述。通过在通信模块注册Native的接口调用信息,使得通信模块在接收到Unity的业务信息时,可以根据该Native的接口调用信息所指示的调用地址,访问到Native的业务接收接口,从而将业务信息传递给Native的业务接收接口,由Native的业务接收接口对业务信息进行处理。也即是,通过在通信模块注册Native的接口调用信息,建立了Unity向Native传递业务信息的通信通道。
需要说明的是,上述仅以在应用启动时,在对应用进行初始化的过程中对接口调用信息进行注册为例说明,注册时机还可以为在Unity和Native之间进行首次通信之间的任一时刻,本发明实施例对注册时机不作限定。
需要说明的是,上述步骤a1至步骤a2可以同时执行也可以按一定顺序执行,本发明实施例对步骤a1至步骤a2的执行顺序不作限定。其中,步骤a1是在应用的业务在原生系统和非原生系统之间进行首次通信之前,确定原生系统的第一业务接收接口,将第一业务接收接口的调用地址作为第一接口调用信息注册在通信模块中的过程。其中,步骤b2是在应用的业务在原生系统和非原生系统之间进行首次通信之前,确定非原生系统(Unity)的第二业务接收接口;将第二业务接收接口的调用地址作为第二接口调用信息注册在通信模块中的过程。
(2)Unity同步调用Native。
Unity同步调用Native的调用主体(调用者)是具有同步调用需求的Unity对象、业务处理函数等。以调用主体为Unity对象为例,参见图3B,Unity同步调用Native的过程可以包括以下步骤:
步骤b1,当终端检测到Unity对象所指示的业务逻辑被触发时,Unity对象将该业务逻辑对应的业务信息作为参数,调用Unity同步调用接口。
其中,对该Unity对象的业务逻辑的触发可以通过用户操作触发,也可以通过其他Unity对象的业务逻辑触发,本发明实施例对此不作限定。
其中,业务信息包括对应业务的任务ID和业务数据。
例如,应用具有语音通信功能,语音通信功能所涉及的一个业务是获取联系人列表。当终端检测到用户开启了语音通信应用,并且执行了获取联系人列表的操作时,确定触发了获取联系人列表的业务逻辑。由于终端联系人列表的具体业务逻辑是在Native侧实现的,因此,该业务涉及到Unity和Native之间的通信。其中,终端会提供一个联系人列表获取按钮,该按钮可以视为Unity对象。
以该获取联系人列表的业务为例,假设任务ID用taskId表示,业务数据可以为用于承载联系人列表信息的变量,比如采用变量data来承载业务数据。其中,Unity同步调用接口的定义可以为callNativeSync(taskId,data,type),其中type为调用类型。当终端检测到联系人列表按钮的触发操作时,调用该callNativeSync,并传入对应参数。
该步骤b1中Unity对象将该业务逻辑对应的业务信息作为参数,调用Unity同步调用接口之前,还包括获取业务逻辑对应的业务信息的步骤,也即是,获取在非原生系统中触发的第一业务的业务信息的过程。
步骤b2,Unity同步调用接口向业务管理模块传递调用信息,该调用信息包括该调用的调用类型和业务信息。
其中,业务管理模块也可以采用函数的形式来实现,Unity同步调用接口以业务信息和调用类型作为参数,调用该业务管理模块。也即是,Unity同步调用接口向业务管理模块传递了调用类型、任务ID和业务数据。
其中,当调用Unity同步调用接口时,该调用类型默认为同步调用。比如,可以定义当调用类型的参数值为0时确定为同步调用,当调用类型的参数值为1是确定为异步调用。
例如,业务管理模块的定义可以为taskDispatcher(taskId,data,type)。callNativeSync内部通过调用该taskDispatcher将调用信息传递给业务管理模块。
步骤b3,业务管理模块根据调用类型确定该调用为同步调用时,根据预先注册的Native的接口调用信息,采用同步调用的方式调用Native的业务接收接口,将该业务信息传递给该业务接收接口。
业务管理模块可以根据调用类型,检测该调用是同步调用还是异步调用。比如,当业务管理模块检测到调用类型的参数值为0时,可以确定该调用是同步调用。
业务管理模块可以根据Native的接口调用信息,获取Native的业务接收接口的调用地址,根据该调用地址调用该业务接收接口,并将任务ID和业务数据作为参数传递给业务接收接口。
其中,同步调用是指在调用主体所对应的主线程执行该调用过程,并且在该主线程返回调用结果。
例如,当type指示同步调用时,taskDispatcher内部逻辑为直接调用Native的业务接收接口,比如Native的业务接收接口定义为callObjManager(taskId,data),并传入taskId和业务数据data。
该步骤b3为根据预先在通信模块中注册的原生系统的第一接口调用信息,确定原生系统的第一业务接收接口,并调用第一业务接收接口,以向原生系统传递第一业务的业务信息的过程。其中,调用第一业务接收接口传入的参数为第一业务的业务信息。其中,第一业务接收接口即为Native的业务接收接口,用于统一接收传递给原生系统的业务信息,并基于业务信息对应的任务标识在原生系统中对业务信息进行分发。
步骤b4,Native的业务接收接口对接收的业务信息进行处理,并返回处理结果。
Native的业务接收接口根据任务ID,确定与该任务ID对应的业务处理函数,并以业务数据作为参数,调用该业务处理函数。其中,业务处理函数用于对业务数据进行处理。
需要说明的是,Native的业务接收接口作为Native接收Unity的业务信息的统一接口,在应用开发的过程中,可以针对不同的业务预先定义任务ID,以及业务在Unity侧和Native侧的业务处理逻辑,使得在Unity侧和Native侧均可以通过任务ID,调用Native的与该任务ID匹配的业务处理函数或对象,以对业务数据进行处理。
例如,callObjManager对接有Native的各种业务处理函数,比如该获取联系人列表的获取函数定义为getPeopleList(data),其返回值为datareturn。getPeopleList在获取到联系人列表后,将联系人列表信息存储在datareturn中直接返回,使得callNativeSync的调用获取到调用结果,比如在终端上显示该获取到的联系人列表。
该步骤b4为根据任务标识,从多个业务处理对象和任务标识的对应关系中,确定与任务标识对应的目标业务处理对象,通过调用目标业务处理对象,对业务数据进行处理的过程。
(3)Unity异步调用Native。
Unity同步调用Native的调用主体是具有异步调用需求的Unity对象或Unity的业务处理函数等。以异步调用需要回调,调用主体为Unity对象为例,参见图3C,Unity异步调用Native的过程可以包括以下步骤:
步骤c1,当终端检测到Unity对象的业务逻辑被触发时,Unity对象将该业务逻辑对应的业务信息作为参数,调用Unity异步调用接口。
在该步骤中,业务信息包括任务ID、业务数据和回调参数,该回调参数用于指示Native返回调用结果的回调函数,比如该回调参数可以为用于接收回调结果的回调地址。其中,在调用Unity异步调用接口时,终端会检测该回调参数是否有效,比如检测回调参数所指示的回调地址是否为空,如果为空,则确定该回调参数无效,结束本次调用过程并进行错误提示;如果不是空,则确定回调参数有效,执行步骤c2。
其中,业务逻辑被触发的过程与步骤b1同理,在此不做赘述。
仍以语音通信功能中获取联系人列表的业务为例,本次调用采用异步调用且需要回调,Unity异步调用接口的定义可以为callNativeAsyncWithCallBack(taskId,data,type,callBack),其中callBack为预设的回调函数的指针。当终端检测到联系人列表按钮的触发操作时,调用该callNativeAsyncWithCallBack,并传入对应参数。
步骤c2,通过调用回调注册模块记录该异步调用的回调信息。
在应用开发过程中,对于Unity侧的一些需要返回调用结果的异步调用,可以预先定义用于传递相应调用结果的回调函数,以及该异步调用对应的任务ID。
其中,将该异步调用的回调信息注册到通信模块的过程可以为:将异步调用的任务ID和回调函数的调用地址作为参数,调用回调注册模块,以使回调注册模块记录该任务ID和调用地址之间的对应关系。其中,任务ID和调用地址之间的对应关系即为回调信息。其中,回调函数可以在开发过程中由开发人员根据业务逻辑需求定义,在应用初始化的过程中,终端会为预先定义的回调函数分配内存调用地址。
通过在通信模块中记录Unity的回调信息,使得Unity在采用异步调用的方式向Native传递业务信息时,Native可以根据任务ID对应的回调函数的调用地址,调用Unity的回调函数,以将调用结果通知给Unity。也即是,通过在通信模块记录Unity的回调信息,建立了Native向Unity返回调用结果的通信通道。
步骤c3,Unity异步调用接口向业务管理模块传递调用信息,该调用信息该调用的调用类型和业务信息。
该步骤与步骤b2同理,在此不做赘述。
例如,业务管理模块的定义可以为taskDispatcher(taskId,data,type,callBack)。callNativeSync内部通过调用该taskDispatcher将调用信息传递给业务管理模块。
步骤c4,业务管理模块根据调用类型,确定该调用为异步调用之后,根据预先注册的Native的接口调用信息,采用异步调用的方式调用Native的业务接收接口,将该业务信息传递给业务接收接口。
在该步骤中,业务管理模块可以采用与步骤b3同理的方式确定该调用为异步调用,以及与步骤b3同理的方式获取到Native的业务接收接口的调用地址。
其中,采用异步调用的方式是指采用调用主体的主线程以外的线程执行该调用过程。
在本发明实施例中,业务管理模块还提供任务管理功能和线程分配功能,在业务管理模块确定本次调用为异步调用之后,业务管理模块可以记录该业务信息所指示的任务ID,比如,将该任务ID添加到异步调用的任务列表中。业务管理模块会循环扫描该任务列表,按照任务ID的添加顺序,从空闲线程池中选取一个空闲线程来执行该任务ID所指示的异步调用,也即是,采用选取的空闲线程来执行后续的调用过程。在为任务ID分配了空闲线程之后,业务管理模块将该任务ID从该任务列表中删除。
例如,当type指示同步调用时,taskDispatcher内部逻辑为直接调用Native的业务接收接口,比如Native的业务接收接口定义为callObjManager(taskId,data),并传入taskId和业务数据data。由于本次调用需要回调,callObjManager的内部逻辑中包括为该回调分配线程的过程。
需要说明的是,在Unity的同步调用和异步调用的过程中,可以不将调用类型作为参数,终端可以直接根据接口的参数个数和参数类型来确定调用类型。
步骤c5,Native的业务接收接口对接收的业务信息进行处理,并返回对应业务的处理结果给业务管理模块,该业务的处理结果中包括该业务对应的任务ID和业务返回信息。
在该步骤中Native的业务接收接口对接收的业务信息进行处理的过程与步骤b4同理,在此不做赘述。
例如,callObjManager对接有Native的各种业务处理函数,比如每个业务处理函数对应一个任务ID,该获取联系人列表的获取函数定义为getPeopleList(datareturn),通过调用getPeopleList在获取到联系人列表后,将联系人列表信息存储在datareturn。
步骤c6,业务管理模块将该业务的任务ID传递给回调注册模块,由回调注册模块根据记录的回调信息返回与该任务ID对应的回调函数的调用地址。
其中,回调注册模块也可以采用函数的形式来实现。该回调注册模块中存储有多个任务ID和回调函数的调用地址之间的对应关系。
其中,业务管理模块将该业务的任务ID作为参数,调用该回调注册模块,该回调注册模块根据该任务ID,从存储的多个任务ID和调用地址的对应关系中,获取与该任务ID对应的调用地址,将该调用地址返回给业务管理模块。
例如,回调注册模块可以定义为callBackRegist(taskId)其返回值为回调函数的地址,比如,与本次任务ID对应的回调函数为getPeopleList(datareturn)。callObjManager可以通过调用callBackRegist获取到getPeopleList的地址。
步骤c7,业务管理模块将处理结果作为参数,调用该调用地址所指示的回调函数,以将该处理结果反馈给该Unity对象。
其中,业务管理模块通过业务所指示的主线程调用该回调函数。
需要说明的是,对于不需要返回调用结果的异步调用,可以在上述Unity异步调用Native的过程中,执行到步骤c4的Native的业务接收接口对接收的业务信息进行处理的步骤时,结束调用过程。
例如,callBackRegist将该datareturn作为参数调用callBackPeopleList,从而callNativeAsyncWithCallBack的调用结果返回给Unity对象,比如在终端上显示该获取到的联系人列表。
(4)Native同步调用Unity。
该过程与Unity同步调用Native的过程同理,在此不做赘述。
(5)Native异步调用Unity。
该过程与Unity异步调用Native的过程同理,在此不做赘述。
基于上述过程(4)和(5)终端执行的通信过程大致为:当获取到在Native中触发的第二业务的业务信息时,根据预先在通信模块中注册的非原生系统的第二接口调用信息,确定非原生系统的第二业务接收接口,该第二业务接收接口用于统一接收传递给非原生系统的业务信息,并基于业务信息对应的任务标识在非原生系统中对业务信息进行分发;调用第二业务接收接口,以向非原生系统传递第二业务的业务信息;其中,调用第二业务接收接口的调用类型包括同步调用和异步调用。详细过程分别与过程(2)和(3)对应,在此不做赘述。
需要说明的是,在该Native异步调用Unity的过程中,如果该异步调用涉及到回调,也可以通过回调注册模块记录异步调用的回调信息。通过在通信模块注册Native的回调信息,使得Native在采用异步调用的方式向Unity传递业务信息时,Unity可以根据任务ID获取对应回调函数的调用地址,根据该调用地址调用Native的回调函数,以将调用结果通知给Native。也即是,通过在通信模块注册Native的回调信息,建立了Unity向Native返回调用结果的通信通道。
在本发明实施例中,设计了Unity与Native之间进行通信的通用通信模块,基于该通信模块开发的应用,终端仅需在Unity和Native首次通信之前,对Unity侧和Native侧的统一接口调用信息进行注册,并且,在应用的整个运行周期中(也即是从应用启动运行到应用停止运行)只需注册一次,也就是说,一个运行周期中,对于Unity与Native之间的通信,只需要建立一次统一的通信通道即可,而无需像现有技术中一样需要对应不同的业务反复多次建立通信通道,从而大大提高了通信效率。并且,不论什么业务都基于已建立的通信通道进行通信,使得通信通道与业务逻辑之间不存在耦合关系,二者完全独立,针对不同的原生系统,可以将通信模块封装成符合满足不同操作系统的通信组件,应用开发时只需根据不同的操作系统在应用中引用相应的通信组件即可,而不用对应用的业务逻辑代码进行更改,便可将应用移植到相应的原生系统,实现Unity与相应原生系统之间的通信,提高了可扩展性。
另外,本发明实施例还可以通过对通信过程中数据格式的改进,来提高通信效率,下面对本发明实施例在通信过程中所采用的数据格式进行介绍:
在本发明实施例中,在通信模块中传递的业务数据的数据格式为二进制,也即是,通信模块在Unity和Native进行通信的过程中,对业务数据进行透传,而不关心业务数据的具体格式。其中,通信模块的调用者可以采用多种方式对将业务数据序列化为二进制字节流,比如采用protocol buf或者自定义的其他方式等。比如,通信模块的调用者采用protocol buf编码方式,将业务数据进行序列化之后再传递给通信模块,也即是,结合图2A,Unity业务处理模块和通信模块之间,以及Native业务处理模块和通信模块之间传递的均为序列化后的二进制字节流。也即是结合上述过程(2)或(3)Unity在获取到第一业务的业务信息之后,可以采用预设算法,对该业务信息进行二进制编码,并基于该二进制编码后的数据格式,在通信模块中传递该业务信息。其中,预设算法可以为protocol buf或自定义的其他编码方式等。
需要说明的是,结合图1,现有技术中Unity调用Native的过程中,传递的业务数据均需要采用jason的数据格式封装。jason的数据格式实际上是满足(key,value)数据结构的字符串。基于该数据结构,key值内容需要由开发人员自行定义,目前没有统一的定义标准。而在Native调用Unity的过程中,也需要将业务数据封装成字符串。将业务数据采用字符串方式封装具有以下缺陷:(1)对字符串的传递和处理耗时较长;(2)开发人员需要关心字符串编码规则和并且需要定义相应的业务解析规则,使得开发效率低且通信的处理过程复杂,出错率高;(3)当业务需求发生变化时,需要根据业务数据重新定义字符串格式,同时也需要修改相应的业务调用接口,而且,字符串定义复杂且不统一,针对一个原生系统开发的应用,不易移植到其他原生系统,开发难度大且扩展性差。与此相比,本发明实施例通过在通信模块中以二进制字节流的方式传递业务数据,具有以下优点:(1)通信模块对业务数据进行透传,提高了通信效率;(2)开发人员可以采用通用的二进制编码方式,编写业务逻辑,提高了开发效率,而且简化了通信的处理过程,进一步地提高了通信效率;(3)业务需求的任何变化,对通信接口都不会影响到对通信模块的调用方式,开发人员只需要关心实际的业务处理逻辑即可,再通过适用于不同原生系统的通信模块,便可以实现通信,开发难度小,扩展性好。
下面结合现有技术,对本发明实施例的通信架构所支持的调用方式进行进一步说明:
现有技术中,对于Native调用Unity只支持主线程异步调用,由于异步调用不能及时得到调用结果,容易造成通信延时,甚至系统卡顿的问题,这在复杂的通信应用中将难以满足实际的通信需求。而Unity调用Native的异步调用需要开发人员自行实现,无疑增加了开发工作量,从而降低开发效率。本发明实施例提供的通信方法,业务管理模块可以进行统一的线程管理,使得Unity和Native之间都可以进行同步调用和异步调用,并且可以选取主线程之外的空闲线程进行异步调用,降低了主线程的压力,可以适用于更多更复杂的通信需求,比如可以适用于对通信要求较高的人脸识别、语音通信等场景,并且能够降低开发工作量,提高开发效率。
图4是本发明实施例提供的一种信息通信装置的框图。参照图2,该装置包括获取单元401,第一确定单元402和第一调用单元403。
其中,
获取单元,在所述应用运行过程中,获取在所述非原生系统中触发的第一业务的业务信息;
第一确定单元,用于根据预先在通信模块中注册的所述原生系统的第一接口调用信息,确定所述原生系统的第一业务接收接口,所述第一业务接收接口用于统一接收传递给所述原生系统的业务信息,并基于业务信息对应的任务标识在所述原生系统中对业务信息进行分发;
第一调用单元,用于调用所述第一业务接收接口,以向所述原生系统传递所述第一业务的业务信息。
在一种可能的实现方式中,所述第一业务的业务信息包括任务标识和业务数据,所述第一调用单元用于:
将所述第一业务的业务信息作为参数,调用所述第一业务接收接口;
根据所述任务标识,从多个业务处理对象和任务标识的对应关系中,确定与所述任务标识对应的目标业务处理对象;
通过调用所述目标业务处理对象,对所述业务数据进行处理。
在一种可能的实现方式中,所述装置还包括:
第二确定单元,当获取到在所述原生系统中触发的第二业务的业务信息时,根据预先在所述通信模块中注册的所述非原生系统的第二接口调用信息,确定所述非原生系统的第二业务接收接口,所述第二业务接收接口用于统一接收传递给所述非原生系统的业务信息,并基于业务信息对应的任务标识在所述非原生系统中对业务信息进行分发;
第二调用单元,用于调用所述第二业务接收接口,以向所述非原生系统传递所述第二业务的业务信息;
其中,调用所述第二业务接收接口的调用类型包括同步调用和异步调用。
在一种可能的实现方式中,所述第二调用单元还用于:如果所述第二业务对应的调用类型为同步调用,则在所述第二业务对应的主线程执行调用所述第二业务接收接口的步骤;或,
如果所述第二业务对应的调用类型为异步调用时,则获取空闲线程;基于所述空闲线程,执行调用所述第二业务接收接口的步骤。
在一种可能的实现方式中,所述装置还包括:
编码单元,用于采用预设算法,对所述第一业务的业务信息进行二进制编码;
传递单元,用于基于二进制编码后的数据格式,传递所述第一业务的业务信息。
在一种可能的实现方式中,所述装置还包括:
第三确定单元,用于在所述应用的业务在原生系统和非原生系统之间进行首次通信之前,确定所述原生系统的所述第一业务接收接口和所述非原生系统的第二业务接收接口;
第一注册单元,用于将所述第一业务接收接口的调用地址作为所述第一接口调用信息注册在所述通信模块中;
第二注册单元,用于将所述第二业务接收接口的调用地址作为第二接口调用信息注册在所述通信模块中。
本公开实施例提供的装置,仅需在Unity和Native首次通信之前,对Unity侧和Native侧的统一接口调用信息进行注册,并且,在应用的整个运行周期中(也即是从应用启动运行到应用停止运行)只需注册一次,也就是说,一个运行周期中,对于Unity与Native之间的通信,只需要建立一次统一的通信通道即可,而无需像现有技术中一样需要对应不同的业务反复多次建立通信通道,从而大大提高了通信效率。并且,不论什么业务都基于已建立的通信通道进行通信,使得通信通道与业务逻辑之间不存在耦合关系,二者完全独立,针对不同的原生系统,可以将通信模块封装成符合满足不同操作系统的通信组件,应用开发时只需根据不同的操作系统在应用中引用相应的通信组件即可,而不用对应用的业务逻辑代码进行更改,便可将应用移植到相应的原生系统,实现Unity与相应原生系统之间的通信,提高了可扩展性。
需要说明的是:上述实施例提供的信息通信装置在信息通信时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的信息通信装置与信息通信方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图5是本发明实施例提供的一种终端的结构示意图,该终端可以用于执行上述各个实施例中提供的信息通信方法。参见图5,该终端500包括:
终端500可以包括RF(Radio Frequency,射频)电路110、包括有一个或一个以上计算机可读存储介质的存储器120、输入单元130、显示单元140、传感器150、音频电路160、WiFi(Wireless Fidelity,无线保真)模块170、包括有一个或者一个以上处理核心的处理器180、以及电源190等部件。本领域技术人员可以理解,图5中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
RF电路110可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器180处理;另外,将涉及上行的数据发送给基站。通常,RF电路110包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM)卡、收发信机、耦合器、LNA(Low Noise Amplifier,低噪声放大器)、双工器等。此外,RF电路110还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于GSM(Global System of Mobile communication,全球移动通讯系统)、GPRS(General Packet Radio Service,通用分组无线服务)、CDMA(CodeDivision Multiple Access,码分多址)、WCDMA(Wideband Code Division MultipleAccess,宽带码分多址)、LTE(Long Term Evolution,长期演进)、电子邮件、SMS(ShortMessaging Service,短消息服务)等。
存储器120可用于存储软件程序以及模块,处理器180通过运行存储在存储器120的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器120可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端500的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器120可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器120还可以包括存储器控制器,以提供处理器180和输入单元130对存储器120的访问。
输入单元130可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,输入单元130可包括触敏表面131以及其他输入设备132。触敏表面131,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面131上或在触敏表面131附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面131可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器180,并能接收处理器180发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面131。除了触敏表面131,输入单元130还可以包括其他输入设备132。具体地,其他输入设备132可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元140可用于显示由用户输入的信息或提供给用户的信息以及终端500的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元140可包括显示面板141,可选的,可以采用LCD(Liquid Crystal Display,液晶显示器)、OLED(Organic Light-Emitting Diode,有机发光二极管)等形式来配置显示面板141。进一步的,触敏表面131可覆盖显示面板141,当触敏表面131检测到在其上或附近的触摸操作后,传送给处理器180以确定触摸事件的类型,随后处理器180根据触摸事件的类型在显示面板141上提供相应的视觉输出。虽然在图5中,触敏表面131与显示面板141是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面131与显示面板141集成而实现输入和输出功能。
终端500还可包括至少一种传感器150,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板141的亮度,接近传感器可在终端500移动到耳边时,关闭显示面板141和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于终端500还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路160、扬声器161,传声器162可提供用户与终端500之间的音频接口。音频电路160可将接收到的音频数据转换后的电信号,传输到扬声器161,由扬声器161转换为声音信号输出;另一方面,传声器162将收集的声音信号转换为电信号,由音频电路160接收后转换为音频数据,再将音频数据输出处理器180处理后,经RF电路110以发送给比如另一终端,或者将音频数据输出至存储器120以便进一步处理。音频电路160还可能包括耳塞插孔,以提供外设耳机与终端500的通信。
WiFi属于短距离无线传输技术,终端500通过WiFi模块170可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图5示出了WiFi模块170,但是可以理解的是,其并不属于终端500的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器180是终端500的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器120内的软件程序和/或模块,以及调用存储在存储器120内的数据,执行终端500的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器180可包括一个或多个处理核心;优选的,处理器180可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器180中。
终端500还包括给各个部件供电的电源190(比如电池),优选的,电源可以通过电源管理系统与处理器180逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源190还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管未示出,终端500还可以包括摄像头、蓝牙模块等,在此不再赘述。具体在本实施例中,终端的显示单元是触摸屏显示器,终端还包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行。所述一个或者一个以上程序包含可执行指令,终端500被配置为执行指令,以执行上述信息通信方法实施例中终端所执行的方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器,上述指令可由终端中的处理器执行以完成上述实施例中信息通信方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (14)
1.一种信息通信方法,其特征在于,应用于基于原生系统和非原生系统混合开发的应用,所述方法包括:
在所述应用运行过程中,获取在所述非原生系统中触发的第一业务的业务信息,所述第一业务的业务信息包括任务标识和业务数据;
根据预先在通信模块中注册的所述原生系统的第一接口调用信息,确定所述原生系统的第一业务接收接口,所述第一业务接收接口用于统一接收传递给所述原生系统的业务信息;
将所述第一业务的业务信息作为参数,调用所述第一业务接收接口;
根据所述任务标识,从多个业务处理对象和任务标识的对应关系中,确定与所述任务标识对应的目标业务处理对象;
通过调用所述目标业务处理对象,对所述业务数据进行处理;
其中,所述第一业务在所述非原生系统的任务标识和在所述原生系统的任务标识相同。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当获取到在所述原生系统中触发的第二业务的业务信息时,根据预先在所述通信模块中注册的所述非原生系统的第二接口调用信息,确定所述非原生系统的第二业务接收接口,所述第二业务接收接口用于统一接收传递给所述非原生系统的业务信息,并基于业务信息对应的任务标识在所述非原生系统中对业务信息进行分发;
调用所述第二业务接收接口,以向所述非原生系统传递所述第二业务的业务信息;
其中,调用所述第二业务接收接口的调用类型包括同步调用和异步调用。
3.根据权利要求2所述的方法,其特征在于,所述调用所述第二业务接收接口,包括:
如果所述第二业务对应的调用类型为同步调用,则在所述第二业务对应的主线程执行调用所述第二业务接收接口的步骤;或,
如果所述第二业务对应的调用类型为异步调用时,则获取空闲线程;基于所述空闲线程,执行调用所述第二业务接收接口的步骤。
4.根据权利要求1所述的方法,其特征在于,所述获取在所述非原生系统中触发的第一业务的业务信息之后,所述方法还包括:
采用预设算法,对所述第一业务的业务信息进行二进制编码;
基于二进制编码后的数据格式,传递所述第一业务的业务信息。
5.根据权利要求1至3任一项所述的方法,其特征在于,所述方法还包括:
在所述应用的业务在原生系统和非原生系统之间进行首次通信之前,确定所述原生系统的所述第一业务接收接口;
将所述第一业务接收接口的调用地址作为所述第一接口调用信息注册在所述通信模块中。
6.根据权利要求2或3所述的方法,其特征在于,所述方法还包括:
在所述应用的业务在原生系统和非原生系统之间进行首次通信之前,确定所述原生系统的所述非原生系统的第二业务接收接口;
将所述第二业务接收接口的调用地址作为第二接口调用信息注册在所述通信模块中。
7.一种信息通信装置,其特征在于,应用于基于原生系统和非原生系统混合开发的应用,所述装置包括:
获取单元,用于在所述应用运行过程中,获取在所述非原生系统中触发的第一业务的业务信息,所述第一业务的业务信息包括任务标识和业务数据;
第一确定单元,用于根据预先在通信模块中注册的所述原生系统的第一接口调用信息,确定所述原生系统的第一业务接收接口,所述第一业务接收接口用于统一接收传递给所述原生系统的业务信息;
第一调用单元,用于将所述第一业务的业务信息作为参数,调用所述第一业务接收接口;根据所述任务标识,从多个业务处理对象和任务标识的对应关系中,确定与所述任务标识对应的目标业务处理对象;通过调用所述目标业务处理对象,对所述业务数据进行处理;
其中,所述第一业务在所述非原生系统的任务标识和在所述原生系统的任务标识相同。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
第二确定单元,用于当获取到在所述原生系统中触发的第二业务的业务信息时,根据预先在所述通信模块中注册的所述非原生系统的第二接口调用信息,确定所述非原生系统的第二业务接收接口,所述第二业务接收接口用于统一接收传递给所述非原生系统的业务信息,并基于业务信息对应的任务标识在所述非原生系统中对业务信息进行分发;
第二调用单元,用于调用所述第二业务接收接口,以向所述非原生系统传递所述第二业务的业务信息;
其中,调用所述第二业务接收接口的调用类型包括同步调用和异步调用。
9.根据权利要求8所述的装置,其特征在于,所述第二调用单元还用于:
如果所述第二业务对应的调用类型为同步调用,则在所述第二业务对应的主线程执行调用所述第二业务接收接口的步骤;或,
如果所述第二业务对应的调用类型为异步调用时,则获取空闲线程;基于所述空闲线程,执行调用所述第二业务接收接口的步骤。
10.根据权利要求7所述的装置,其特征在于,所述装置还包括:
编码单元,用于采用预设算法,对所述第一业务的业务信息进行二进制编码;
传递单元,用于基于二进制编码后的数据格式,传递所述第一业务的业务信息。
11.根据权利要求7至9任一项所述的装置,其特征在于,所述装置还包括:
第三确定单元,用于在所述应用的业务在原生系统和非原生系统之间进行首次通信之前,确定所述原生系统的所述第一业务接收接口;
第一注册单元,用于将所述第一业务接收接口的调用地址作为所述第一接口调用信息注册在所述通信模块中。
12.根据权利要求8或9所述的装置,其特征在于,所述装置还包括:
第三确定单元,用于在所述应用的业务在原生系统和非原生系统之间进行首次通信之前,确定所述原生系统的所述非原生系统的第二业务接收接口;
第二注册单元,用于将所述第二业务接收接口的调用地址作为第二接口调用信息注册在所述通信模块中。
13.一种存储设备,其特征在于,所述存储设备存储有多条指令,所述指令适于由处理器用来加载并执行权利要求1-6任一项所述的信息通信方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有指令,所述指令被处理器执行以完成权利要求1-6任一项所述的信息通信方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710321408.2A CN108874554B (zh) | 2017-05-09 | 2017-05-09 | 信息通信方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710321408.2A CN108874554B (zh) | 2017-05-09 | 2017-05-09 | 信息通信方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108874554A CN108874554A (zh) | 2018-11-23 |
CN108874554B true CN108874554B (zh) | 2020-11-10 |
Family
ID=64287890
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710321408.2A Active CN108874554B (zh) | 2017-05-09 | 2017-05-09 | 信息通信方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108874554B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109766203A (zh) * | 2019-01-24 | 2019-05-17 | 重庆爱奇艺智能科技有限公司 | 一种用于实现联合端与安卓端之间统一通信的方法和装置 |
CN110221813B (zh) * | 2019-05-27 | 2023-09-19 | 北京小米移动软件有限公司 | 应用的数据连接建立方法、装置、存储介质和电子设备 |
CN112181514B (zh) * | 2019-09-18 | 2021-08-20 | 华为技术有限公司 | 插件实现的方法和插件实现的系统 |
CN112202806B (zh) * | 2020-10-12 | 2023-04-18 | 中国民航信息网络股份有限公司 | 一种面向ndc标准的聚合报文处理方法及装置 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090234953A1 (en) * | 2008-03-11 | 2009-09-17 | Palm, Inc. | Apparatus and methods for integration of third party virtual private network solutions |
CN102662772A (zh) * | 2012-03-08 | 2012-09-12 | 河海大学 | 多语言开发系统中实现不同语言间数据通信的方法 |
CN102945169A (zh) * | 2012-12-05 | 2013-02-27 | 江苏鸿信系统集成有限公司 | 一种基于Android的Native APP融合Web APP开发系统 |
CN103677843B (zh) * | 2013-12-19 | 2017-05-10 | 深圳市蓝凌软件股份有限公司 | 一种跨移动终端的native能力开发方法及装置 |
CN104461575B (zh) * | 2014-12-26 | 2017-11-10 | 北京华电万通科技有限公司 | 一种网页脚本语言跨移动操作系统平台原生接口调用的装置及方法 |
CN105468369B (zh) * | 2015-11-19 | 2019-03-26 | 深圳联友科技有限公司 | 移动平台上JavaScript调用原生功能的方法以及系统 |
CN106339229A (zh) * | 2016-08-31 | 2017-01-18 | 虎扑(上海)文化传播股份有限公司 | 一种针对移动平台的混合开发方法及系统 |
-
2017
- 2017-05-09 CN CN201710321408.2A patent/CN108874554B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN108874554A (zh) | 2018-11-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2018103484A1 (zh) | 直播页面的数据处理方法、装置和系统 | |
WO2017206916A1 (zh) | 处理器中内核运行配置的确定方法以及相关产品 | |
WO2016150331A1 (zh) | 一种运行游戏客户端的方法和装置 | |
JP7098757B2 (ja) | アプリケーション機能の実施方法及び電子装置 | |
US10824449B2 (en) | Application running method and device | |
CN106874077B (zh) | 进程运行方法及装置 | |
CN108874554B (zh) | 信息通信方法及装置 | |
CN110058850B (zh) | 一种应用的开发方法、装置以及存储介质 | |
CN107786424B (zh) | 音视频通信方法、终端及服务器 | |
CN107704363B (zh) | 冻屏监测方法、移动终端及计算机可读存储介质 | |
CN104965722B (zh) | 一种显示信息的方法及装置 | |
WO2017206915A1 (zh) | 处理器中内核运行配置的确定方法以及相关产品 | |
WO2015010466A1 (zh) | 信息显示方法、装置和移动终端 | |
CN111078316B (zh) | 布局文件加载方法、装置、存储介质及电子设备 | |
CN111273955B (zh) | 热修复插件优化方法、装置、存储介质及电子设备 | |
WO2015062234A1 (zh) | 移动终端资源处理方法、装置和设备 | |
CN106919458B (zh) | Hook目标内核函数的方法及装置 | |
CN106095423B (zh) | 提供浏览服务的方法、终端及服务器 | |
CN114327087A (zh) | 输入事件处理方法、装置、电子设备和存储介质 | |
CN107463395B (zh) | 组件调用方法及装置 | |
CN106899959B (zh) | 一种获取sim卡信息的方法、装置、终端及系统 | |
CN111026457B (zh) | 一种硬件配置方法、装置、存储介质及终端设备 | |
CN105282628B (zh) | 一种视频播放的方法和装置 | |
CN107122204B (zh) | 应用的卸载状态检测方法及装置 | |
CN108234275B (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 |