CN113946614A - 一种iOS基于静态库的网络数据传输方法、装置及系统 - Google Patents
一种iOS基于静态库的网络数据传输方法、装置及系统 Download PDFInfo
- Publication number
- CN113946614A CN113946614A CN202111189866.8A CN202111189866A CN113946614A CN 113946614 A CN113946614 A CN 113946614A CN 202111189866 A CN202111189866 A CN 202111189866A CN 113946614 A CN113946614 A CN 113946614A
- Authority
- CN
- China
- Prior art keywords
- static library
- network data
- ios
- call
- service management
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- 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/547—Remote procedure calls [RPC]; Web services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
- H04L69/162—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Databases & Information Systems (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供一种iOS基于静态库的网络数据传输方法、装置及系统,静态库设有对应的单例类对象作为该静态库的代理,方法应用于单例类对象,包括:获取iOS客户端发送的调用请求并统一发送给静态库,每个调用请求用于表征iOS客户端以期通过静态库暴露的接口调用静态库内的方法;接收静态库回调的网络数据,其中,静态库基于调用请求通过socket向服务器请求以得到网络数据,网络数据包含iOS客户端欲调用的目标方法所对应的回调函数;基于网络数据从预设函数映射表中确定出回调函数对应的方法名,并基于方法名调用对应的目标方法到iOS客户端。此种方式不仅解决了网络数据传输的实效性,也能够实现客户端与服务器之间通信的双向性。
Description
技术领域
本申请涉及数据传输领域,具体而言,涉及一种iOS基于静态库的网络数据传输方法、装置及系统。
背景技术
进行iOS客户端开发,通常需要链接一些静态库,当使用到静态库时,Xcode导入framework进行编译完成后即可使用静态库。使用开发好的静态库,当有新业务或者问题修改时,库文件需要改动,对应的接口头文件也需要改动,则使用静态库的工程的编译会需要较多的时间。
当需要添加不同功能、需要增加业务需求时,只需要增加framework与应用层参数的变化即可,因此可在不更改静态库的情况下,应对业务需求灵活变化的应用场景。这时候需要在客户端层面做一个统一的管理器,应用层和底层之间的数据传递,可以通过参数的变化来解决相对应的问题。
针对iOS客户端的网络请求,传统的方式有很多,例如http协议、tcp协议、udp协议等传输方式。这些传统的传输方式,对于应用的开发,http协议的实效性和短链接具有一定的缺陷,而tcp协议和udp协议对于开发者来说较难上手,维护起来不方便。
发明内容
本申请实施例的目的在于提供一种iOS基于静态库的网络数据传输方法、装置及系统,以通过基于静态库的网络请求的传输方式,在保证传输的实效性的同时,实现客户端与服务器之间通信的双向性。
为了实现上述目的,本申请的实施例通过如下方式实现:
第一方面,本申请实施例提供一种iOS基于静态库的网络数据传输方法,静态库设有对应的单例类对象作为该静态库的代理,所述方法应用于所述单例类对象,包括:获取iOS客户端发送的调用请求并统一发送给所述静态库,每个调用请求用于表征所述iOS客户端以期通过所述静态库暴露的接口调用所述静态库内的方法;接收所述静态库回调的网络数据,其中,所述静态库基于所述调用请求通过socket向服务器请求以得到所述网络数据,所述网络数据包含所述iOS客户端欲调用的目标方法所对应的回调函数;基于所述网络数据从预设函数映射表中确定出回调函数对应的方法名,并基于所述方法名调用对应的目标方法到所述iOS客户端。
在本申请实施例中,利用单例类对象作为静态库的代理,处在客户端与服务器之间,能够统一调用静态库接口,向下(向静态库)传递请求,静态库可以去服务器修改或者拉取内容,向上收到静态库的回调,统一分发处理。因此,此种方式不仅解决了网络数据传输的实效性,而且能够实现客户端与服务器之间通信的双向性,可以说是集http协议与tcp协议的优点于一身的方式。且此方式轻量级无状态化,即服务器不保留与客户端交易时的任何状态,大大减轻了服务器记忆负担,从而保持较快的响应速度。相对于传统用socket本地写tcp协议的方式,连接轻量级化。静态库链接网络服务器的数据传输具有加密状态行为,可提升安全性,防止网络黑客劫持行为,防止数据被篡改。并且,此种方式接口调用方便,双向传输,相较于http协议的单向传输可以实现及时通讯功能。另外,由于静态库回调给iOS客户端,处理回调内容尤为重要,特别是当有很多接口回调数据时,如果针对每个回调接口配置对应的回调处理代码,那么大量的代码对于前期开发和后期维护都具有极高的难度。而本方案针对静态库,利用framework将网络数据传输抛给应用层,iOS客户端创建代理(单例类对象)去接收静态库的回调,少量代码即可以管理大量的静态库的回调(可以通过几行代码实现),能够极大地降低前期开发和后期维护的难度。以及,本方案可以适应业务需求灵活变化的应用场景,因为当业务需求变化的时候不会影响接口名的变化(类似http传输协议的域名端口),可以通过找到对应的文件来更改参数(可以通过预设函数映射表实现),以更改具体业务实现,维护性和扩展性极强。
结合第一方面,在第一方面的第一种可能的实现方式中,创建所述单例类对象的方式为:创建单例类PPCPMsgManager,PPCPMsgManager即所述单例类对象;在PPCPMsgManager中设置代理,生成包含多个业务管理类的预设函数映射表,其中,每个所述业务管理类关联有至少一个方法名。
在该实现方式中,创建单例类对象PPCPMsgManager,当需要向静态库发送调用请求的时候,在任何地方都可以调用这个单例类对象,通过framework暴露出来的头文件,即可调用静态库请求方法。而在PPCPMsgManager中设置代理,生成包含多个业务管理类的预设函数映射表,可以便于后续在回调处理的过程中通过此预设函数映射表确定出对应的方法名以对相应方法进行调用,无需在处理回调的过程中使用头文件进行方法的调用,从而能够适应业务需求灵活多变的应用场景。
结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,在PPCPMsgManager中设置代理,生成包含多个业务管理类的预设函数映射表,包括:创建单例类PesRespondsManager作为PPCPMsgManager的代理;获取多个业务管理类回调函数列表;针对每个业务管理类回调函数列表,对该业务管理类回调函数列表进行循环处理,获取其中的函数SEL,以此得到业务管理类回调函数列表中的所有函数,再对每个函数进行utf-8字符串处理,并分割字符串成为数组,以分割出对应的方法名,而后将函数对应的方法名加参数注册到映射关系表中,并释放该函数;针对每个业务管理类回调函数列表的注册完成后,得到所述预设函数映射表。
在该实现方式中,通过获取多个业务管理类回调函数列表;针对每个业务管理类回调函数列表,对该业务管理类回调函数列表进行循环处理,获取其中的函数SEL,以此得到业务管理类回调函数列表中的所有函数,再对每个函数进行utf-8字符串处理,并分割字符串成为数组,以分割出对应的方法名,而后将函数对应的方法名加参数注册到映射关系表中,并释放该函数;针对每个业务管理类回调函数列表的注册完成后,得到预设函数映射表。通过此种方式可以实现函数的注册,得到预设函数映射表,以便于iOS基于静态库的网络数据传输方法的实现。
结合第一方面,在第一方面的第三种可能的实现方式中,所述预设函数映射表包含多个业务管理类,每个业务管理类关联有至少一个方法名,基于所述网络数据从预设函数映射表中确定出回调函数对应的方法名,包括:从所述预设函数映射表中确定出与所述网络数据中回调函数对应的目标业务管理类;从所述目标业务管理类中确定出与所述回调函数匹配的方法名。
在该实现方式中,通过此种方式可以简单高效地确定出与回调函数匹配的方法名。
结合第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,基于所述方法名调用对应的目标方法到所述iOS客户端,包括:基于所述方法名,通过objective-C的runtime特性确定出对应的目标方法,并调用所述目标方法到所述iOS客户端。
在该实现方式中,通过objective-C的runtime特性确定出对应的目标方法,并调用目标方法到iOS客户端,这样不用通过头文件即可以调用业务管理类中的方法。
第二方面,本申请实施例提供一种iOS基于静态库的网络数据传输装置,静态库设有对应的单例类对象作为该静态库的代理,所述装置应用于所述单例类对象,包括:调用请求单元,用于获取iOS客户端发送的调用请求并统一发送给所述静态库,每个调用请求用于表征所述iOS客户端以期通过所述静态库暴露的接口调用所述静态库内的方法;数据请求单元,用于接收所述静态库回调的网络数据,其中,所述静态库基于所述调用请求通过socket向服务器请求以得到所述网络数据,所述网络数据包含所述iOS客户端欲调用的目标方法所对应的回调函数;方法调用单元,用于基于所述网络数据从预设函数映射表中确定出回调函数对应的方法名,并基于所述方法名调用对应的目标方法到所述iOS客户端。
第三方面,本申请实施例提供一种iOS基于静态库的网络数据传输系统,静态库设有对应的单例类对象作为该静态库的代理,所述系统包括:iOS客户端,用于调用所述单例类对象向所述静态库统一发送调用请求,以期通过所述静态库暴露的接口调用所述静态库内的方法;所述静态库,用于基于所述调用请求通过socket向服务器请求网络数据,其中,所述网络数据包含所述iOS客户端欲调用的目标方法所对应的回调函数;所述单例类对象,用于接收所述静态库回调的网络数据,基于所述网络数据从预设函数映射表中确定出回调函数对应的方法名,并基于所述方法名调用对应的目标方法到所述iOS客户端。
第四方面,本申请实施例提供一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行第一方面或第一方面的可能的实现方式中任一项所述的iOS基于静态库的网络数据传输方法。
第五方面,本申请实施例提供一种电子设备,包括存储器和处理器,所述存储器用于存储包括程序指令的信息,所述处理器用于控制程序指令的执行,所述程序指令被处理器加载并执行时实现第一方面或第一方面的可能的实现方式中任一项所述的iOS基于静态库的网络数据传输方法。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种iOS基于静态库的网络数据传输系统的示意图。
图2为本申请实施例提供的一种iOS基于静态库的网络数据传输方法的流程图。
图3为静态库回包给iOS客户端的核心处理方案的示意图。
图4为本申请实施例提供的一种iOS基于静态库的网络数据传输装置的结构框图。
图5为本申请实施例提供的一种电子设备的结构框图。
图标:10-iOS基于静态库的网络数据传输装置;11-调用请求单元;12-数据请求单元;13-方法调用单元;20-电子设备;21-存储器;22-通信模块;23-总线;24-处理器。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
请参阅图1,图1为本申请实施例提供的一种iOS基于静态库的网络数据传输系统的示意图。
在本实施例中,iOS基于静态库的网络数据传输系统中的主体(可以是实体,也可以是一些不具备实体的虚拟对象,此处不作限定)可以包括iOS客户端、单例类对象、静态库和服务器。
为了便于对本方案的理解,此处先对iOS基于静态库的网络数据传输系统中的各个主体的基本情况进行介绍。
针对iOS客户端,可以利用C++编写好底层处理的代码(其中包含网络传输协议),编译成静态库文件,iOS客户端打包进入开发工具中,编译链接底层静态库。
静态库中包含多个可供客户端调用的方法(需要回调函数进行调用),Xcode导入framework进行编译好后即可使用静态库(通过framework暴露出静态库可供调用的头文件)。
针对服务器,服务器中存储有包含静态库中方法所对应的回调函数,可以通过网络数据的形式返回给静态库。对于回调函数,可以做类似http协议的回调处理,首先由int类型result代表返回结果,然后利用json数据结构返回content。
静态库对应的单例类对象,作为该静态库的代理,处在客户端与服务器之间,主要用于统一调用静态库接口,向下(向静态库)传递请求,静态库可以去服务器修改或者拉取内容,向上收到静态库的回调,统一分发处理。
示例性的,可以创建单例类PPCPMsgManager,PPCPMsgManager即该单例类对象,而后在PPCPMsgManager中设置代理,生成包含多个业务管理类的预设函数映射表,其中,每个业务管理类关联有至少一个方法名。
创建单例类对象PPCPMsgManager,当需要向静态库发送调用请求的时候,在任何地方都可以调用这个单例类对象,通过framework暴露出来的头文件,即可调用静态库请求方法。而在PPCPMsgManager中设置代理,生成包含多个业务管理类的预设函数映射表,可以便于后续在回调处理的过程中通过此预设函数映射表确定出对应的方法名以对相应方法进行调用,无需在处理回调的过程中使用头文件进行方法的调用,从而能够适应业务需求灵活多变的应用场景。
具体的,可以创建单例类PesRespondsManager作为PPCPMsgManager的代理。而后,可以获取多个业务管理类回调函数列表;针对每个业务管理类回调函数列表,可以对该业务管理类回调函数列表进行循环处理,获取其中的函数SEL,以此得到业务管理类回调函数列表中的所有函数。再对每个函数进行utf-8字符串处理,并分割字符串成为数组,以分割出对应的方法名,而后将函数对应的方法名加参数注册到映射关系表中,并释放该函数。针对每个业务管理类回调函数列表的注册完成后,即可得到预设函数映射表。
通过此种方式可以实现函数的注册,得到预设函数映射表,以便于iOS基于静态库的网络数据传输方法的实现。
例如,以具体的实例为例:
处理静态库回调,此处可以通过代理的方式,先统一处理回调方法,在PPCPMsgManager中设置代理,生成多个业务管理类回调。代码如下:
创建单例类PesRespondsManager,统一注册业务管理类回调函数列表,可以创建串型队列在子线程中做操作,以有效屏蔽多线程并发导致的数据紊乱问题。代码如下:
其中,行1:获取回调业务管理类函数列表;行2:循环处理函数表;行3:获取函数SEL;行4:获取业务管理类回调函数列表中的所有函数;行5:对函数做utf-8字符串处理;行6:分割字符串成为数组,分割出方法名;行7:函数名加参数注册到映射关系表中;行8:释放获取函数。
需要说明的是,单例类对象的创建过程,是在客户端启动时即进行。
在本实施例中,iOS基于静态库的网络数据传输系统的运行方式,可以为:
iOS客户端可以调用单例类对象向静态库统一发送调用请求,以期通过静态库暴露的接口调用静态库内的方法。
静态库可以基于调用请求通过socket向服务器请求网络数据,其中,网络数据包含iOS客户端欲调用的目标所对应的回调函数。
而单例类对象可以接收静态库回调的网络数据,基于网络数据从预设函数映射表中确定出回调函数对应的方法名,并基于方法名调用对应的目标方法到iOS客户端。
由于本方案中iOS基于静态库的网络数据传输系统的运行方式,与后文将介绍的iOS基于静态库的网络数据传输方法的执行流程相对应。因此,为了便于描述,后文将以单例类对象(单例类对象同样设置在客户端所在的电子设备中)为执行主体,对iOS基于静态库的网络数据传输方法进行详细介绍,以实现对iOS基于静态库的网络数据传输系统的介绍。
请参阅图2,图2为本申请实施例提供的一种iOS基于静态库的网络数据传输方法的流程图。在本实施例中,iOS基于静态库的网络数据传输方法可以包括步骤S10、步骤S20和步骤S30。
为了调用静态库中的方法,iOS客户端可以调用单例类对象向静态库统一发送调用请求,以期通过静态库暴露的接口调用静态库内的方法。与此同时,单例类对象可以执行步骤S10。
步骤S10:获取iOS客户端发送的调用请求并统一发送给所述静态库,每个调用请求用于表征所述iOS客户端以期通过所述静态库暴露的接口调用所述静态库内的方法。
在本实施例中,单例类对象可以获取iOS客户端发送的调用请求并统一发送给静态库。
示例性的,可以理解为:iOS客户端发起调用请求,代码如下:
而后,静态库可以基于调用请求通过socket向服务器请求网络数据,此网络数据包含iOS客户端欲调用的目标所对应的回调函数。服务器则可以将相应的网络数据返回给静态库。
此时,单例类对象可以执行步骤S20。
步骤S20:接收所述静态库回调的网络数据,其中,所述静态库基于所述调用请求通过socket向服务器请求以得到所述网络数据,所述网络数据包含所述iOS客户端欲调用的目标方法所对应的回调函数。
在本实施例中,单例类对象可以接收静态库回调的网络数据(包含目标方法所对应的回调函数)。
接收网络数据后,单例类对象可以执行步骤S30。
步骤S30:基于所述网络数据从预设函数映射表中确定出回调函数对应的方法名,并基于所述方法名调用对应的目标方法到所述iOS客户端。
在本实施例中,单例类对象可以基于网络数据从预设函数映射表中确定出回调函数对应的方法名,并基于方法名调用对应的目标方法到iOS客户端。
示例性的,单例类对象可以从预设函数映射表中确定出与网络数据中回调函数对应的目标业务管理类;再从目标业务管理类中确定出与回调函数匹配的方法名。通过此种方式可以简单高效地确定出与回调函数匹配的方法名。
以及,单例类对象可以基于方法名,通过objective-C的runtime特性确定出对应的目标方法,并调用目标方法到iOS客户端。这样不用通过头文件即可以调用业务管理类中的方法。
例如,处理回调的过程可以为:当收到静态库回调,PesRespondsManager可以从函数映射表找到对应的业务管理类,然后从业务管理类中搜索字典找到对应的方法名,并通过objective-C的runtime特性找到对应的方法,即可不使用头文件实现对业务管理类中的方法的调用。如图3所示,图3为静态库回包给iOS客户端的核心处理方案的示意图。其中,Responds表示响应的网络数据(即静态库欲回调给iOS客户端的回调数据包),PesRespondsManager为单例类对象,对网络数据进行处理,实现对方法的调用。
在本实施例中,对于回调数据包(即网络数据)的处理操作,可以统一放在一个子线程中,防止耗时操作在主线程中卡顿用户操作,影响用户体验。放在串型队列中排队处理,可以防止并发影响到数据处理的时序问题。
而对于回调数据包(网络数据)分发在各个文件管理类中的情况,数据处理完成后,可以采用通知或者代理的形式回调到业务中,业务收到处理后进行分类,如果需要在主线程中操作UI,就抛到主线程中处理,不需要在主线程中操作UI的则在当前线程中处理即可。
请参阅图4,图4为本申请实施例提供的一种iOS基于静态库的网络数据传输装置10的结构框图。
在本实施例中,静态库设有对应的单例类对象作为该静态库的代理,所述装置应用于所述单例类对象,iOS基于静态库的网络数据传输装置10可以包括:
调用请求单元11,用于获取iOS客户端发送的调用请求并统一发送给所述静态库,每个调用请求用于表征所述iOS客户端以期通过所述静态库暴露的接口调用所述静态库内的方法。
数据请求单元12,用于接收所述静态库回调的网络数据,其中,所述静态库基于所述调用请求通过socket向服务器请求以得到所述网络数据,所述网络数据包含所述iOS客户端欲调用的目标方法所对应的回调函数。
方法调用单元13,用于基于所述网络数据从预设函数映射表中确定出回调函数对应的方法名,并基于所述方法名调用对应的目标方法到所述iOS客户端。
在本实施例中,所述预设函数映射表包含多个业务管理类,每个业务管理类关联有至少一个方法名,所述方法调用单元13,具体用于从所述预设函数映射表中确定出与所述网络数据中回调函数对应的目标业务管理类;从所述目标业务管理类中确定出与所述回调函数匹配的方法名。
在本实施例中,所述方法调用单元13,具体用于基于所述方法名,通过objective-C的runtime特性确定出对应的目标方法,并调用所述目标方法到所述iOS客户端。
请参阅图5,图5为本申请实施例提供的一种电子设备20的结构框图。
在本实施例中,电子设备20为内置有iOS客户端的终端,例如个人电脑、平板电脑、智能手机等,此处不作限定。
示例性的,电子设备20可以包括:通过网络与外界连接的通信模块22、用于执行程序指令的一个或多个处理器24、总线23和不同形式的存储器21,例如,磁盘、ROM、或RAM,或其任意组合。存储器21、通信模块22、处理器24之间可以通过总线23连接。
示例性的,存储器21中存储有程序。处理器24可以从存储器21调用并运行这些程序,从而便可以通过运行程序而实现iOS基于静态库的网络数据传输方法。
本申请实施例提供一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行本实施例中的iOS基于静态库的网络数据传输方法。
综上所述,本申请实施例提供一种iOS基于静态库的网络数据传输方法、装置及系统,利用单例类对象作为静态库的代理,处在客户端与服务器之间,能够统一调用静态库接口,向下(向静态库)传递请求,静态库可以去服务器修改或者拉取内容,向上收到静态库的回调,统一分发处理。因此,此种方式不仅解决了网络数据传输的实效性,而且能够实现客户端与服务器之间通信的双向性,可以说是集http协议与tcp协议的优点于一身的方式。且此方式轻量级无状态化,即服务器不保留与客户端交易时的任何状态,大大减轻了服务器记忆负担,从而保持较快的响应速度。相对于传统用socket本地写tcp协议的方式,连接轻量级化。静态库链接网络服务器的数据传输具有加密状态行为,可提升安全性,防止网络黑客劫持行为,防止数据被篡改。并且,此种方式接口调用方便,双向传输,相较于http协议的单向传输可以实现及时通讯功能。另外,由于静态库回调给iOS客户端,处理回调内容尤为重要,特别是当有很多接口回调数据时,如果针对每个回调接口配置对应的回调处理代码,那么大量的代码对于前期开发和后期维护都具有极高的难度。而本方案针对静态库,利用framework将网络数据传输抛给应用层,iOS客户端创建代理(单例类对象)去接收静态库的回调,少量代码即可以管理大量的静态库的回调(可以通过几行代码实现),能够极大地降低前期开发和后期维护的难度。以及,本方案可以适应业务需求灵活变化的应用场景,因为当业务需求变化的时候不会影响接口名的变化(类似http传输协议的域名端口),可以通过找到对应的文件来更改参数(可以通过预设函数映射表实现),以更改具体业务实现,维护性和扩展性极强。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
再者,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (9)
1.一种iOS基于静态库的网络数据传输方法,其特征在于,静态库设有对应的单例类对象作为该静态库的代理,所述方法应用于所述单例类对象,包括:
获取iOS客户端发送的调用请求并统一发送给所述静态库,每个调用请求用于表征所述iOS客户端以期通过所述静态库暴露的接口调用所述静态库内的方法;
接收所述静态库回调的网络数据,其中,所述静态库基于所述调用请求通过socket向服务器请求以得到所述网络数据,所述网络数据包含所述iOS客户端欲调用的目标方法所对应的回调函数;
基于所述网络数据从预设函数映射表中确定出回调函数对应的方法名,并基于所述方法名调用对应的目标方法到所述iOS客户端。
2.根据权利要求1所述的iOS基于静态库的网络数据传输方法,其特征在于,创建所述单例类对象的方式为:
创建单例类PPCPMsgManager,PPCPMsgManager即所述单例类对象;
在PPCPMsgManager中设置代理,生成包含多个业务管理类的预设函数映射表,其中,每个所述业务管理类关联有至少一个方法名。
3.根据权利要求2所述的iOS基于静态库的网络数据传输方法,其特征在于,在PPCPMsgManager中设置代理,生成包含多个业务管理类的预设函数映射表,包括:
创建单例类PesRespondsManager作为PPCPMsgManager的代理;
获取多个业务管理类回调函数列表;
针对每个业务管理类回调函数列表,对该业务管理类回调函数列表进行循环处理,获取其中的函数SEL,以此得到业务管理类回调函数列表中的所有函数,再对每个函数进行utf-8字符串处理,并分割字符串成为数组,以分割出对应的方法名,而后将函数对应的方法名加参数注册到映射关系表中,并释放该函数;
针对每个业务管理类回调函数列表的注册完成后,得到所述预设函数映射表。
4.根据权利要求1所述的iOS基于静态库的网络数据传输方法,其特征在于,所述预设函数映射表包含多个业务管理类,每个业务管理类关联有至少一个方法名,基于所述网络数据从预设函数映射表中确定出回调函数对应的方法名,包括:
从所述预设函数映射表中确定出与所述网络数据中回调函数对应的目标业务管理类;
从所述目标业务管理类中确定出与所述回调函数匹配的方法名。
5.根据权利要求4所述的iOS基于静态库的网络数据传输方法,其特征在于,基于所述方法名调用对应的目标方法到所述iOS客户端,包括:
基于所述方法名,通过objective-C的runtime特性确定出对应的目标方法,并调用所述目标方法到所述iOS客户端。
6.一种iOS基于静态库的网络数据传输装置,其特征在于,静态库设有对应的单例类对象作为该静态库的代理,所述装置应用于所述单例类对象,包括:
调用请求单元,用于获取iOS客户端发送的调用请求并统一发送给所述静态库,每个调用请求用于表征所述iOS客户端以期通过所述静态库暴露的接口调用所述静态库内的方法;
数据请求单元,用于接收所述静态库回调的网络数据,其中,所述静态库基于所述调用请求通过socket向服务器请求以得到所述网络数据,所述网络数据包含所述iOS客户端欲调用的目标方法所对应的回调函数;
方法调用单元,用于基于所述网络数据从预设函数映射表中确定出回调函数对应的方法名,并基于所述方法名调用对应的目标方法到所述iOS客户端。
7.一种iOS基于静态库的网络数据传输系统,其特征在于,静态库设有对应的单例类对象作为该静态库的代理,所述系统包括:
iOS客户端,用于调用所述单例类对象向所述静态库统一发送调用请求,以期通过所述静态库暴露的接口调用所述静态库内的方法;
所述静态库,用于基于所述调用请求通过socket向服务器请求网络数据,其中,所述网络数据包含所述iOS客户端欲调用的目标方法所对应的回调函数;
所述单例类对象,用于接收所述静态库回调的网络数据,基于所述网络数据从预设函数映射表中确定出回调函数对应的方法名,并基于所述方法名调用对应的目标方法到所述iOS客户端。
8.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行权利要求1至5中任一项所述的iOS基于静态库的网络数据传输方法。
9.一种电子设备,其特征在于,包括存储器和处理器,所述存储器用于存储包括程序指令的信息,所述处理器用于控制程序指令的执行,所述程序指令被处理器加载并执行时实现权利要求1至5中任一项所述的iOS基于静态库的网络数据传输方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111189866.8A CN113946614A (zh) | 2021-10-12 | 2021-10-12 | 一种iOS基于静态库的网络数据传输方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111189866.8A CN113946614A (zh) | 2021-10-12 | 2021-10-12 | 一种iOS基于静态库的网络数据传输方法、装置及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113946614A true CN113946614A (zh) | 2022-01-18 |
Family
ID=79330252
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111189866.8A Pending CN113946614A (zh) | 2021-10-12 | 2021-10-12 | 一种iOS基于静态库的网络数据传输方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113946614A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114860367A (zh) * | 2022-05-07 | 2022-08-05 | 金蝶软件(中国)有限公司 | 一种用户界面事件的处理方法、装置及系统 |
-
2021
- 2021-10-12 CN CN202111189866.8A patent/CN113946614A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114860367A (zh) * | 2022-05-07 | 2022-08-05 | 金蝶软件(中国)有限公司 | 一种用户界面事件的处理方法、装置及系统 |
CN114860367B (zh) * | 2022-05-07 | 2023-10-03 | 金蝶软件(中国)有限公司 | 一种用户界面事件的处理方法、装置及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109684054B (zh) | 信息处理方法及装置、电子设备及存储器 | |
US11477298B2 (en) | Offline client replay and sync | |
KR102354717B1 (ko) | 언어-독립형 디스패치를 위한 코드 서비스 기법 | |
US9195522B2 (en) | Method and device for controlling communication between applications in a web runtime environment | |
CN103942225A (zh) | 一种混合型应用客户端的资源调用方法、客户端及系统 | |
EP3837604B1 (en) | In situ triggered function as a service within a service mesh | |
US11436066B2 (en) | System for offline object based storage and mocking of rest responses | |
JP5936103B2 (ja) | クライアントでJavaメソッドを呼び出すシステム、コンピュータ、方法及びプログラム | |
US10089152B1 (en) | Using scripts to bootstrap applications with metadata from a template | |
CN113220431B (zh) | 跨云的分布式数据任务调度方法、设备及存储介质 | |
CN108900627B (zh) | 一种网络请求方法、终端装置及存储介质 | |
Nakao et al. | Toward remote service invocation in android | |
CN112930530B (zh) | 用于网络应用程序执行的客户端应用程序 | |
CN109725887B (zh) | 基于消息研发框架的数据交互方法、装置及终端设备 | |
Rattanapoka et al. | An MQTT-based IoT cloud platform with flow design by Node-RED | |
CN113946614A (zh) | 一种iOS基于静态库的网络数据传输方法、装置及系统 | |
CN108496157B (zh) | 使用扩展接口提供运行时跟踪的系统和方法 | |
CN112527376A (zh) | 基于反向代理服务实现DevOps自动化的方法 | |
CN117130647A (zh) | 代码管理方法、装置及系统 | |
CN112764746A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
Oortgiese et al. | A distributed dynamic architecture for task oriented programming | |
CN115268909A (zh) | 一种web前端创建并运行构建任务的方法、系统和终端 | |
CN111581578B (zh) | 接口请求处理方法和装置 | |
CN112527377A (zh) | 应用程序生成处理方法、装置、计算机设备和存储介质 | |
CN107623704B (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 |