CN111666112B - 平台插件的实现方法、装置、系统和计算机设备 - Google Patents
平台插件的实现方法、装置、系统和计算机设备 Download PDFInfo
- Publication number
- CN111666112B CN111666112B CN202010317543.1A CN202010317543A CN111666112B CN 111666112 B CN111666112 B CN 111666112B CN 202010317543 A CN202010317543 A CN 202010317543A CN 111666112 B CN111666112 B CN 111666112B
- Authority
- CN
- China
- Prior art keywords
- platform
- plug
- target function
- function information
- calling
- 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请涉及一种平台插件的实现方法、装置、系统、计算机设备和存储介质,所述方法包括:创建公共类,在公共类中注册平台插件;从公共类中读取平台插件的目标功能信息;根据目标功能信息生成平台插件的平台对象,平台对象的调用方法包含目标功能信息;调用平台对象的调用方法,使用调用方法向平台插件的宿主平台发送回调请求,以使得宿主平台根据调用方法中的目标功能信息调用平台插件对应的原生代码进行对应处理后返回处理结果;接收宿主平台返回的处理结果,根据处理结果实现平台插件的目标功能。上述方法能够提高系统调用宿主平台中应用程序的功能实现插件功能时的效率。
Description
技术领域
本申请涉及插件实现处理技术领域,特别是涉及一种平台插件的实现方法、装置、系统、计算机设备和存储介质。
背景技术
目前有些系统提供了与应用程序的宿主平台通信的方法,通过与宿主平台通信的方法调用宿主平台中应用程序的功能,以实现系统中该应用程序对应的插件功能。然而,系统每次使用与宿主平台通信的方法以实现插件功能时,都需要对应用程序对应的平台插件进行注册,操作繁琐效率很低。
例如,当前Flutter环境下,虽然Flutter系统提供了跟IOS平台通信的方法,但是使用起来复杂,每次使用都是需要注册一遍然后才能慢慢交互。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高系统调用宿主平台中应用程序的功能实现插件功能时的效率的平台插件的实现方法、装置、系统、计算机设备和存储介质。
一种平台插件的实现方法,该方法包括:创建公共类,在公共类中注册平台插件;从公共类中读取平台插件的目标功能信息;根据目标功能信息生成平台插件的平台对象,平台对象的调用方法包含目标功能信息;调用平台对象的调用方法,使用调用方法向平台插件的宿主平台发送回调请求,以使得宿主平台根据调用方法中的目标功能信息调用平台插件对应的原生代码进行对应处理后返回处理结果;接收宿主平台返回的处理结果,根据处理结果实现平台插件的目标功能。
在其中一个实施例中,平台插件的实现方法还包括:对平台插件设置标识信息;根据目标功能信息生成平台插件的平台对象,包括:根据目标功能信息以及标识信息生成所述平台插件的平台对象,平台对象的调用方法包含目标功能信息和标识信息;以使得宿主平台根据调用方法中的目标功能信息调用平台插件对应的原生代码进行对应处理后返回处理结果,包括:以使得宿主平台根据调用方法中的标识信息确定平台插件,并根据目标功能信息调用平台插件对应的原生代码进行对应处理后返回处理结果。
在其中一个实施例中,在公共类中注册平台插件,包括:在公共类中枚举平台插件的插件功能以对平台插件进行注册,插件功能包括目标功能。
在其中一个实施例中,平台插件的实现方法还包括:对目标功能设置第一枚举值;从公共类中读取平台插件的目标功能信息,包括:根据第一枚举值读取平台插件的目标功能信息。
在其中一个实施例中,插件功能为多个,平台插件的实现方法还包括:对各插件功能设置第二枚举值;从公共类中读取平台插件的目标功能信息,包括:根据目标功能对应的第二枚举值读取平台插件的目标功能信息。
在其中一个实施例中,平台对象为MethodChannel对象,平台对象的调用方法为invokeMethod方法。
一种平台插件的实现装置,其特征在于,该装置包括:创建模块,用于创建公共类,在公共类中注册平台插件;读取模块,用于从公共类中读取平台插件的目标功能信息;生成模块,用于根据目标功能信息生成平台插件的平台对象,平台对象的调用方法包含目标功能信息;调用模块,用于调用平台对象的调用方法,使用调用方法向平台插件的宿主平台发送回调请求,以使得宿主平台根据调用方法中的目标功能信息调用平台插件的原生代码进行对应处理后返回处理结果;实现模块,用于接收宿主平台返回的处理结果,根据处理结果实现平台插件的目标功能。
一种平台插件的实现系统,该系统包括Flutter端平台和宿主平台;Flutter端平台用于创建公共类,在公共类中注册平台插件,从公共类中读取平台插件的目标功能信息,根据目标功能信息生成平台插件的平台对象,平台对象的调用方法包含目标功能信息,调用平台对象的调用方法,使用调用方法向平台插件的宿主平台发送回调请求;宿主平台用于根据调用方法中的目标功能信息调用平台插件的原生代码进行对应处理后向Flutter端平台返回处理结果;Flutter端平台用于接收宿主平台返回的处理结果,根据处理结果实现平台插件的目标功能。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述任一实施例方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述任一实施例方法的步骤。
上述平台插件的实现方法、装置、系统、计算机设备和存储介质,系统创建公共类,在公共类中注册平台插件,从公共类中读取平台插件的目标功能信息,根据目标功能信息生成平台插件的平台对象,平台对象的调用方法包含目标功能信息,调用平台对象的调用方法,使用调用方法向平台插件的宿主平台发送回调请求,以使得宿主平台根据调用方法中的目标功能信息调用平台插件的原生代码进行对应处理后返回处理结果,接收宿主平台返回的处理结果,根据处理结果实现平台插件的目标功能。因此,系统创建公共类,在公共类中注册平台插件。在后续系统需要调用宿主平台中应用程序的目标功能以实现插件功能时,可以直接从公共类中读取平台插件的目标功能信息以执行后续的调用操作,无需再对平台插件进行注册,减少了调用过程的操作,提高了系统调用宿主平台中应用程序的功能实现插件功能时的效率。
附图说明
图1为一个实施例中一种平台插件的实现方法的应用环境图;
图2为一个实施例中一种平台插件的实现方法的流程示意图;
图3为另一个实施例中一种平台插件的实现方法的流程示意图;
图4为再一个实施例中一种平台插件的实现方法的流程示意图;
图5为又一个实施例中一种平台插件的实现方法的流程示意图;
图6为又一个实施例中一种平台插件的实现方法的流程示意图;
图7为一个实施例中一种平台插件的实现系统的结构示意图;
图8为一个具体实施场景中一种平台插件的实现方法的流程示意图;
图9为一个实施例中一种平台插件的实现装置的结构框图;
图10为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的一种平台插件的实现方法,应用于如图1所示的应用环境中。如图1所示,系统调用端需要实现多个平台插件的功能。在实现各平台插件的功能时,需要通过平台通道调用对应宿主平台中应用程序的功能。其中,对应宿主平台可以是安卓宿主平台或IOS宿主平台。安卓宿主平台和IOS宿主平台中均包含有多个应用程序的原生代码,通过原生代码实现对应应用程序的功能。例如,安卓宿主平台包括应用程序1、应用程序3、应用程序5和应用程序7的原生代码。IOS宿主平台包括应用程序2、应用程序4、应用程序6和应用程序8的原生代码。系统调用端中平台插件1、平台插件2、平台插件3和平台插件4分别与应用程序1、应用程序2、应用程序3和应用程序4对应。当系统调用端需要实现平台插件的功能时,通过平台通道调用对应宿主平台中应用程序的功能。例如,系统调用端需要实现平台插件1的功能时,通过平台通道调用安卓宿主平台中应用程序1的功能。在调用宿主平台中应用程序的功能之前,系统调用端需要先对平台插件进行注册。传统的操作方式为,系统调用端每次使用与宿主平台通信以实现插件功能时需对平台插件进行注册,操作繁琐。本申请的系统调用端创建公共类,在公共类中注册平台插件,从公共类中读取平台插件的目标功能信息,根据目标功能信息生成平台插件的平台对象,平台对象的调用方法包含目标功能信息,调用平台对象的调用方法,使用调用方法向平台插件的宿主平台发送回调请求,以使得宿主平台根据调用方法中的目标功能信息调用平台插件的原生代码进行对应处理后返回处理结果,接收宿主平台返回的处理结果,根据处理结果实现平台插件的目标功能。因此,系统调用端创建公共类,在公共类中注册平台插件。在后续系统调用端需要调用宿主平台中应用程序的目标功能以实现插件功能时,可以直接从公共类中读取平台插件的目标功能信息以执行后续的调用操作,无需再对平台插件进行注册,减少了调用过程的操作,提高了系统调用端调用宿主平台中应用程序的功能实现插件功能时的效率。
在一个实施例中,如图2所示,提供了一种平台插件的实现方法,以该方法应用于图1中的系统调用端的系统为例进行说明,包括以下步骤:
S102,创建公共类,在公共类中注册平台插件。
在本实施例中,系统创建公共类,系统中任意功能模块的其他类在实例化时可以调用公共类中的方法体。进一步地,在公共类中注册平台插件。系统中任意功能模块在实现实例化时均可从公共类中调用注册后的平台插件的功能。具体地,系统为Flutter端系统。Flutter端系统创建公共类SNPackagesUtil,用于注册平台插件和调用平台插件的功能。其中,注册平台插件的方式可以是在公共类SNPackagesUtil中添加平台插件的功能对应的枚举。初始化时只需添加平台插件的功能对应的枚举,就可完成对应平台插件的注册。
S104,从公共类中读取平台插件的目标功能信息。
在本实施例中,系统在公共类中注册平台插件之后,系统中任意功能模块在任何时候需要实现平台插件的功能时,可直接从公共类中读取平台插件的功能信息。平台插件包含一个或多个插件功能,各插件功能对应有功能信息。具体地,系统中任意功能模块从公共类中读取平台插件的目标功能信息,以执行平台插件的目标功能。
S106,根据目标功能信息生成平台插件的平台对象,平台对象的调用方法包含目标功能信息。
在本实施例中,系统中任意功能模块可以根据目标功能信息生成平台插件的平台对象。其中,平台对象可以是Flutter平台对象,具体可以是Flutter中的MethodChannel对象。平台对象中包含调用方法。在根据目标功能信息生成平台插件的平台对象的过程中,可以将目标功能信息封装进平台对象的调用方法中,以在使用调用方法实现功能调用过程中平台宿主根据调用方法中的目标功能信息进行对应处理。具体地,调用方法可以是invokeMethod方法。
S108,调用平台对象的调用方法,使用调用方法向平台插件的宿主平台发送回调请求,以使得宿主平台根据调用方法中的目标功能信息调用平台插件对应的原生代码进行对应处理后返回处理结果。
在本实施例中,系统的任意功能模块生成平台对象后,调用平台对象的调用方法,并使用该调用方法向平台插件的宿主平台发送回调请求,以请求宿主平台返回对应平台插件的处理结果。宿主平台接收到发送回调请求后,根据调用方法中的目标功能信息调用平台插件的原生代码进行对应处理,并将处理结果返回到系统。
具体地,系统中任意功能模块调用平台插件的目标功能信息,只需调用平台插件的初始化方法,就可获取到平台插件的MethodChannel对象,然后使用此MethodChannel暴露出来的插件方法,此类方法中会使用MethodChannel对象调用invokeMethod方法向宿主平台发送回调请求。
S110,接收宿主平台返回的处理结果,根据处理结果实现平台插件的目标功能。
在本实施例中,系统接收宿主平台返回的处理结果。此处理结果为宿主平台调用平台插件对应的原生代码执行目标功能信息对应的操作时得到的处理结果,进而系统可根据该处理结果实现平台插件的目标功能。
上述平台插件的实现方法,系统创建公共类,在公共类中注册平台插件,从公共类中读取平台插件的目标功能信息,根据目标功能信息生成平台插件的平台对象,平台对象的调用方法包含目标功能信息,调用平台对象的调用方法,使用调用方法向平台插件的宿主平台发送回调请求,以使得宿主平台根据调用方法中的目标功能信息调用平台插件的原生代码进行对应处理后返回处理结果,接收宿主平台返回的处理结果,根据处理结果实现平台插件的目标功能。因此,系统创建公共类,在公共类中注册平台插件。在后续系统需要调用宿主平台中应用程序的目标功能以实现插件功能时,可以直接从公共类中读取平台插件的目标功能信息以执行后续的调用操作,无需再对平台插件进行注册,减少了调用过程的操作,提高了系统调用宿主平台中应用程序的功能实现插件功能时的效率。
在一实施例中,如图3所示,S106之前,还包括步骤:
S105,对平台插件设置标识信息。
此时,S106包括:
S1062,根据目标功能信息以及标识信息生成平台插件的平台对象,平台对象的调用方法包含目标功能信息和标识信息。
此时,S108包括:
S1082,调用平台对象的调用方法,使用调用方法向平台插件的宿主平台发送回调请求,以使得宿主平台根据调用方法中的标识信息确定平台插件,并根据目标功能信息调用平台插件对应的原生代码进行对应处理后返回处理结果。
在该实施例中,系统在公共类中注册平台插件后,对平台插件设置标识信息。该标识信息可以是唯一标识,以使得系统能够通过该唯一标识识别出平台插件。该标识信息可以是系统的平台通道的标识,用于后续通过平台通道通信时的唯一标识。进一步地,系统根据目标功能信息以及标识信息生成平台插件的平台对象,平台对象的调用方法包含目标功能信息和标识信息。具体地,系统为Flutter端系统,宿主平台为IOS宿主平台和/或安卓宿主平台。在Flutter端、IOS端以及安卓端给平台插件定义一个唯一的平台通道对应的唯一标识,用于后续通信时的信息识别。进一步地,在Flutter端平台插件的功能对应一个Flutter平台对象,一般使用MethodChannel对象作为适用对象。通过平台太插件的唯一标识,生成对应的MethodChannel对象。
最终,系统调用平台对象的调用方法,使用调用方法向平台插件的宿主平台发送回调请求,以使得宿主平台根据调用方法中的标识信息确定平台插件,并根据目标功能信息调用平台插件对应的原生代码进行对应处理后返回处理结果。例如,Flutter端调用MethodChannel对象的i nvokeMethod方法向安卓宿主平台发送回调请求。i nvokeMethod方法中包含了平台插件的标识信息和目标功能信息。安卓宿主平台根据平台插件的标识信息识别出平台插件,又根据目标功能信息确定出平台插件对应的目标功能,进而调用平台插件对应的原生代码进行目标功能对应的操作处理,得到处理结果,并向Flutter端返回处理结果。因此,可以提高系统调用宿主平台中应用程序的功能实现插件功能时的准确性。
在一实施例中,如图4所示,S102包括步骤:
S1022,创建公共类,在公共类中枚举平台插件的插件功能以对平台插件进行注册,插件功能包括目标功能。
在该实施例中,系统为Flutter系统。在Flutter系统端定义一个公共类SNPackagesUtil。公共类SNPackagesUtil用于注册平台插件。具体地,在公共类SNPackagesUtil中添加平台插件的各种插件功能所对应的枚举。初始化时只需添加好对应的枚举,即可完成平台插件的注册。因此,实现可平台插件的提前注册,可提高后续系统调用宿主平台中应用程序的功能实现插件功能时的效率。
在一实施例中,如图5所示,S1022之后,还包括步骤:
S1032,对目标功能设置第一枚举值。
此时,S104包括步骤:
S1042,根据第一枚举值读取平台插件的目标功能信息。
在该实施例中,系统在公共类中枚举平台插件的目标功能后,对目标功能设置第一枚举值。系统通过第一枚举值可识别出平台插件的目标功能,进一步地,读取出目标功能的目标功能信息。因此,可提高系统从公共类中读取目标功能信息的效率。
在一实施例中,平台插件的插件功能为多个。如图6所示,S1022之后,还包括步骤:
S1034,对各插件功能设置第二枚举值。
此时,S104包括步骤:
S1044,根据目标功能对应的第二枚举值读取平台插件的目标功能信息。
在该实施例中,系统在公共类中枚举平台插件的多个插件功能后,并对各插件功能设置对应的第二枚举值。此处需要说明的是,各插件功能对应的第二枚举值不相同,各插件功能对应的第二枚举值能够唯一识别出对应的插件功能。进一步地,系统根据目标功能对应的第二枚举值识别出平台插件的目标功能,进而读取目标功能的目标功能信息。因此,可提高系统从公共类中读取目标功能信息的效率。
本申请还提供一种平台插件的实现系统。如图7所示,在一实施例中,该平台插件的实现系统包括Flutter端平台12和宿主平台22。
在本实施例中,Flutter端平台12用于创建公共类,在公共类中注册平台插件,从公共类中读取平台插件的目标功能信息,根据目标功能信息生成平台插件的平台对象,平台对象的调用方法包含目标功能信息,调用平台对象的调用方法,使用调用方法向平台插件的宿主平台22发送回调请求。宿主平台22用于根据调用方法中的目标功能信息调用平台插件的原生代码进行对应处理后向Flutter端平台12返回处理结果。Flutter端平台12用于接收宿主平台22返回的处理结果,根据处理结果实现平台插件的目标功能。
其中,Flutter端平台12和宿主平台22具体的实现过程可参见上述各实施例中一种平台插件的实现方法的具体实现过程,此处不再重述。
为了进一步说明上述一种平台插件的实现方法以及一种平台插件的实现系统的实现过程,以下提供一具体实施场景以作进一步的详述:
参见图8所示,平台插件的实现系统包括Flutter端和宿主平台的客户端,通过Flutter端与客户端的信息交互以实现Flutter端中平台插件的对应功能,其实现过程主要包括以下步骤:
步骤1:在Flutter端定义一个公共类SNPackagesUtil,用于注册和调用插件功能。在公共类SNPackagesUtil中添加各种插件功能所对应的枚举,初始化的时候只需添加对应的枚举,即可完成对应插件的注册。
步骤2:在Flutter端、IOS端的客户端和/或安卓端的客户端给每一个插件都定义一个平台通道的唯一标识,用于后续两端通信时的唯一标识。
步骤3:在Flutter端公共类SNPackagesUtil中每一个枚举都对应着一个Flutter平台对象,一般都使用MethodChannel作为适用对象。通过插件对应的唯一标识,生成对应的MethodChannel对象。
步骤4:调用插件功能的时候,只需调用对应插件的初始化方法,就可获取到对应插件的对象,该对象持有一个MethodChannel对象。进而,使用此对象通过调用对应的暴露出来的插件方法,此类方法中会使用MethodChannel对象调用invokeMethod方法,然后等待对应客户端的处理结果回调,以此实现Flutter端的方法调用。其中,具体Flutter端的调用过程可参见图8的流程所示。
步骤5:在对应客户端页注册对应的各个插件唯一的platform对象,每个对象设置对应的监听方法,每个插件相对独立,互不影响。Flutter端通过集成进对应客户端的FlutterSDK调用平台通道方法,对应客户端的对应插件的对应方法被调用后,调用原生代码进行处理,然后将处理结果通过唯一的平台通道反馈Flutter端,因此实现Flutter端整个插件库的调用。其中,具体对应客户端的调用过程可参见图8的流程所示。
对于后续Flutter端添加新的插件,需要先在Flutter端的公共类SNPackagesUtil中添加对应插件的注册方法和对应功能的方法调用。然后在对应客户端添加对应的platform对象,并且添加监听方法,以及对应的客户端处理逻辑。新添加的插件的使用方法跟上述实现过程一样,此处不再详述。
应该理解的是,虽然流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,附图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
本申请还提供一种平台插件的实现装置,如图9所示,该装置包括创建模块10、读取模块20、生成模块30以及调用模块40、实现模块50。创建模块10,用于创建公共类,在公共类中注册平台插件;读取模块20,用于从公共类中读取平台插件的目标功能信息;生成模块30,用于根据目标功能信息生成平台插件的平台对象,平台对象的调用方法包含目标功能信息;调用模块40,用于调用平台对象的调用方法,使用调用方法向平台插件的宿主平台发送回调请求,以使得宿主平台根据调用方法中的目标功能信息调用平台插件的原生代码进行对应处理后返回处理结果;实现模块50,用于接收宿主平台返回的处理结果,根据处理结果实现平台插件的目标功能。
在一实施例中,该平台插件的实现装置还包括第一设置模块(图9未示出),用于对平台插件设置标识信息。此时,生成模块30具体用于根据目标功能信息以及标识信息生成平台插件的平台对象,平台对象的调用方法包含目标功能信息和标识信息。调用模块40具体用于调用平台对象的调用方法,使用调用方法向平台插件的宿主平台发送回调请求,以使得宿主平台根据调用方法中的标识信息确定平台插件,并根据目标功能信息调用平台插件对应的原生代码进行对应处理后返回处理结果。
在一实施例中,创建模块10具体用于在公共类中枚举平台插件的插件功能以对平台插件进行注册,插件功能包括目标功能。
在一实施例中,该平台插件的实现装置还包括第二设置模块(图9未示出),用于对目标功能设置第一枚举值。此时读取模块20具体用于根据第一枚举值读取平台插件的目标功能信息。
在一实施例中,插件功能为多个,该平台插件的实现装置还包括第三设置模块(图9未示出),用于对各插件功能设置第二枚举值。此时读取模块20具体用于根据目标功能对应的第二枚举值读取平台插件的目标功能信息。
在一实施例中,该平台插件的实现装置中平台对象为MethodChannel对象,平台对象的调用方法为invokeMethod方法。
关于平台插件的实现方法的具体限定可以参见上文中对于平台插件的实现方法的限定,在此不再赘述。上述平台插件的实现装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图10所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部设备连接,以与外部设备进行数据交互。该计算机程序被处理器执行时以实现一种平台插件的实现方法。
本领域技术人员可以理解,图10中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:创建公共类,在公共类中注册平台插件;从公共类中读取平台插件的目标功能信息;根据目标功能信息生成平台插件的平台对象,平台对象的调用方法包含目标功能信息;调用平台对象的调用方法,使用调用方法向平台插件的宿主平台发送回调请求,以使得宿主平台根据调用方法中的目标功能信息调用平台插件对应的原生代码进行对应处理后返回处理结果;接收宿主平台返回的处理结果,根据处理结果实现平台插件的目标功能。
在其中一个实施例中,处理器执行计算机程序时实现以下步骤:对平台插件设置标识信息;处理器执行计算机程序实现上述的根据目标功能信息生成平台插件的平台对象步骤时,具体实现以下步骤:从根据目标功能信息以及标识信息生成平台插件的平台对象,平台对象的调用方法包含目标功能信息和标识信息;处理器执行计算机程序实现上述的以使得宿主平台根据调用方法中的目标功能信息调用平台插件对应的原生代码进行对应处理后返回处理结果步骤时,具体实现以下步骤:以使得宿主平台根据调用方法中的标识信息确定平台插件,并根据目标功能信息调用平台插件对应的原生代码进行对应处理后返回处理结果。
在其中一个实施例中,处理器执行计算机程序实现上述的在公共类中注册平台插件步骤时,具体实现以下步骤:在公共类中枚举平台插件的插件功能以对平台插件进行注册,插件功能包括目标功能。
在其中一个实施例中,处理器执行计算机程序时实现以下步骤:对目标功能设置第一枚举值;处理器执行计算机程序实现上述的从公共类中读取平台插件的目标功能信息步骤时,具体实现以下步骤:根据第一枚举值读取平台插件的目标功能信息。
在其中一个实施例中,插件功能为多个,处理器执行计算机程序时实现以下步骤:对各插件功能设置第二枚举值;处理器执行计算机程序实现上述的从公共类中读取平台插件的目标功能信息步骤时,具体实现以下步骤:根据目标功能对应的第二枚举值读取平台插件的目标功能信息。
在其中一个实施例中,平台对象为MethodChannel对象,平台对象的调用方法为invokeMethod方法。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:创建公共类,在公共类中注册平台插件;从公共类中读取平台插件的目标功能信息;根据目标功能信息生成平台插件的平台对象,平台对象的调用方法包含目标功能信息;调用平台对象的调用方法,使用调用方法向平台插件的宿主平台发送回调请求,以使得宿主平台根据调用方法中的目标功能信息调用平台插件对应的原生代码进行对应处理后返回处理结果;接收宿主平台返回的处理结果,根据处理结果实现平台插件的目标功能。
在其中一个实施例中,计算机程序被处理器执行时实现以下步骤:对平台插件设置标识信息;计算机程序被处理器执行实现上述的根据目标功能信息生成平台插件的平台对象步骤时,具体实现以下步骤:从根据目标功能信息以及标识信息生成平台插件的平台对象,平台对象的调用方法包含目标功能信息和标识信息;计算机程序被处理器执行实现上述的以使得宿主平台根据调用方法中的目标功能信息调用平台插件对应的原生代码进行对应处理后返回处理结果步骤时,具体实现以下步骤:以使得宿主平台根据调用方法中的标识信息确定平台插件,并根据目标功能信息调用平台插件对应的原生代码进行对应处理后返回处理结果。
在其中一个实施例中,计算机程序被处理器执行实现上述的在公共类中注册平台插件步骤时,具体实现以下步骤:在公共类中枚举平台插件的插件功能以对平台插件进行注册,插件功能包括目标功能。
在其中一个实施例中,计算机程序被处理器执行时实现以下步骤:对目标功能设置第一枚举值;计算机程序被处理器执行实现上述的从公共类中读取平台插件的目标功能信息步骤时,具体实现以下步骤:根据第一枚举值读取平台插件的目标功能信息。
在其中一个实施例中,插件功能为多个,计算机程序被处理器执行时实现以下步骤:对各插件功能设置第二枚举值;计算机程序被处理器执行实现上述的从公共类中读取平台插件的目标功能信息步骤时,具体实现以下步骤:根据目标功能对应的第二枚举值读取平台插件的目标功能信息。
在其中一个实施例中,平台对象为MethodChannel对象,平台对象的调用方法为invokeMethod方法。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种平台插件的实现方法,所述方法包括:
创建公共类,在所述公共类中注册平台插件;
从所述公共类中读取所述平台插件的目标功能信息;
根据所述目标功能信息生成所述平台插件的平台对象,所述平台对象的调用方法包含所述目标功能信息;
调用所述平台对象的所述调用方法,使用所述调用方法向所述平台插件的宿主平台发送回调请求,以使得所述宿主平台根据所述调用方法中的所述目标功能信息调用所述平台插件对应的原生代码进行对应处理后返回处理结果;
接收所述宿主平台返回的处理结果,根据所述处理结果实现所述平台插件的目标功能。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:对所述平台插件设置标识信息;
所述根据所述目标功能信息生成所述平台插件的平台对象,包括:
根据所述目标功能信息以及所述标识信息生成所述平台插件的平台对象,所述平台对象的调用方法包含所述目标功能信息和所述标识信息;
所述以使得所述宿主平台根据所述调用方法中的所述目标功能信息调用所述平台插件对应的原生代码进行对应处理后返回处理结果,包括:
以使得所述宿主平台根据所述调用方法中的所述标识信息确定所述平台插件,并根据所述目标功能信息调用所述平台插件对应的原生代码进行对应处理后返回处理结果。
3.根据权利要求1所述的方法,其特征在于,所述在所述公共类中注册平台插件,包括:
在所述公共类中枚举所述平台插件的插件功能以对所述平台插件进行注册,所述插件功能包括所述目标功能。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:对所述目标功能设置第一枚举值;
所述从所述公共类中读取所述平台插件的目标功能信息,包括:
根据所述第一枚举值读取所述平台插件的目标功能信息。
5.根据权利要求3所述的方法,其特征在于,所述插件功能为多个,所述方法还包括:对各插件功能设置第二枚举值;
所述从所述公共类中读取所述平台插件的目标功能信息,包括:
根据所述目标功能对应的第二枚举值读取所述平台插件的目标功能信息。
6.根据权利要求1所述的方法,其特征在于,所述平台对象为MethodChannel对象,所述平台对象的调用方法为invokeMethod方法。
7.一种平台插件的实现装置,其特征在于,所述装置包括:
创建模块,用于创建公共类,在所述公共类中注册平台插件;
读取模块,用于从所述公共类中读取所述平台插件的目标功能信息;
生成模块,用于根据所述目标功能信息生成所述平台插件的平台对象,所述平台对象的调用方法包含所述目标功能信息;
调用模块,用于调用所述平台对象的所述调用方法,使用所述调用方法向所述平台插件的宿主平台发送回调请求,以使得所述宿主平台根据所述调用方法中的所述目标功能信息调用所述平台插件的原生代码进行对应处理后返回处理结果;
实现模块,用于接收所述宿主平台返回的处理结果,根据所述处理结果实现所述平台插件的目标功能。
8.一种平台插件的实现系统,其特征在于,所述系统包括Flutter端平台和宿主平台;
所述Flutter端平台用于创建公共类,在所述公共类中注册平台插件,从所述公共类中读取所述平台插件的目标功能信息,根据所述目标功能信息生成所述平台插件的平台对象,所述平台对象的调用方法包含所述目标功能信息,调用所述平台对象的所述调用方法,使用所述调用方法向所述平台插件的所述宿主平台发送回调请求;
所述宿主平台用于根据所述调用方法中的所述目标功能信息调用所述平台插件的原生代码进行对应处理后向所述Flutter端平台返回处理结果;
所述Flutter端平台用于接收所述宿主平台返回的处理结果,根据所述处理结果实现所述平台插件的目标功能。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010317543.1A CN111666112B (zh) | 2020-04-21 | 2020-04-21 | 平台插件的实现方法、装置、系统和计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010317543.1A CN111666112B (zh) | 2020-04-21 | 2020-04-21 | 平台插件的实现方法、装置、系统和计算机设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111666112A CN111666112A (zh) | 2020-09-15 |
CN111666112B true CN111666112B (zh) | 2022-11-29 |
Family
ID=72382654
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010317543.1A Active CN111666112B (zh) | 2020-04-21 | 2020-04-21 | 平台插件的实现方法、装置、系统和计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111666112B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112256421B (zh) * | 2020-11-12 | 2024-06-18 | Oppo广东移动通信有限公司 | 通信处理方法、装置、存储介质及电子设备 |
CN113094085B (zh) * | 2021-04-13 | 2024-01-19 | 贝壳找房(北京)科技有限公司 | 组件集成方法、装置、计算机可读存储介质及电子设备 |
CN113138766A (zh) * | 2021-04-25 | 2021-07-20 | 北京房江湖科技有限公司 | 代码块调用方法、装置及跨平台的代码块调用系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090265368A1 (en) * | 2008-04-17 | 2009-10-22 | Microsoft Corporation | Automatic generation of user interfaces |
CN102546708A (zh) * | 2010-12-27 | 2012-07-04 | 阿里巴巴集团控股有限公司 | 插件获取方法、系统及相关装置 |
-
2020
- 2020-04-21 CN CN202010317543.1A patent/CN111666112B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090265368A1 (en) * | 2008-04-17 | 2009-10-22 | Microsoft Corporation | Automatic generation of user interfaces |
CN102546708A (zh) * | 2010-12-27 | 2012-07-04 | 阿里巴巴集团控股有限公司 | 插件获取方法、系统及相关装置 |
Non-Patent Citations (2)
Title |
---|
《The Extension of the Unit Testing Tool Junit for Special Testings 》;Liangliang Kong 等;《First International Multi-Symposiums on Computer and Computational Sciences (IMSCCS"06)》;20081117;全文 * |
基于Java2安全体系结构的Web数据库安全性问题研究;邓建高 等;《计算机工程与设计》;20081115;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111666112A (zh) | 2020-09-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111666112B (zh) | 平台插件的实现方法、装置、系统和计算机设备 | |
CN111163129B (zh) | 一种基于跨链网络的资源处理方法及装置 | |
CN109039751B (zh) | 配置路由的方法、装置、计算机设备和存储介质 | |
CN111752571A (zh) | 程序升级方法、装置、设备及存储介质 | |
CN112272218B (zh) | 云平台实例资源操作方法、装置、计算机设备及存储介质 | |
CN109445845B (zh) | 接口调用方法、装置、计算机设备和存储介质 | |
CN109254765B (zh) | 定时任务管理方法、装置、计算机设备及存储介质 | |
CN112929396B (zh) | 基于区块链的业务处理方法、装置、设备和可读存储介质 | |
CN107273226B (zh) | 在安卓系统中集成组件及调用被集成组件的方法和装置 | |
CN111831365A (zh) | 接口路由转发方法、系统、计算机设备及可读存储介质 | |
CN112148351B (zh) | 一种应用软件跨版本兼容的方法和系统 | |
CN110968358A (zh) | 一种基于浏览器插件加载脚本模块的方法及装置 | |
CN115421699A (zh) | 类继承关系分析方法、装置、计算机设备和存储介质 | |
CN114827297A (zh) | 协议适配方法、装置、设备及存储介质 | |
CN112714148A (zh) | 一种界面配置方法、装置、设备及介质 | |
CN109842620B (zh) | 业务发布方法及装置 | |
CN109063044B (zh) | 数据库表的参数插入方法、装置、终端设备及存储介质 | |
CN113730917A (zh) | 游戏脚本生成方法、装置、计算机设备和存储介质 | |
CN110399161B (zh) | 一种映射关系的生成方法、调用方法及装置 | |
CN112631613A (zh) | 基于区块链平台的智能合约部署和调用方法及相关设备 | |
CN112732644A (zh) | 应用程序的资源索引处理方法、计算机设备和存储介质 | |
CN112015478B (zh) | 内核加载方法、服务器、设备、计算机设备及存储介质 | |
CN111857816A (zh) | 寄存器分配方法、装置、电子设备及计算机存储介质 | |
CN111563038A (zh) | Sdk测试方法、装置、计算机设备及计算机可读存储介质 | |
CN114860204B (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 |