SDK的调用方法、装置、设备及计算机可读存储介质与流程

文档序号:32741990发布日期:2022-12-30 19:22阅读:45来源:国知局
SDK的调用方法、装置、设备及计算机可读存储介质与流程
sdk的调用方法、装置、设备及计算机可读存储介质
技术领域
1.本技术涉及计算机技术领域,具体而言,本技术涉及一种sdk的调用方法、装置、设备及计算机可读存储介质。


背景技术:

2.sdk(software development kit,软件开发工具包)一般是用户为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。现有技术中的一种方案是调用sdk某些未维护或禁止的接口时,会利用编译器增加警告的方式防止调用方进行调用,通过编译器插件增加禁止调用的提示信息;在编译阶段将信息抛给调用方;该方案中增加调用编译失败的效果不太友好,会造成调用方的人力耗时。另一种方案是将调用方的参数传给服务器,由服务器先处理分析参数的合法性,然后再通过接口内部的逻辑运算、算术运算等,生成结果;该方案中调用sdk接口通过服务器的分析处理比较耗时,从而降低了sdk内部运算的效率。


技术实现要素:

3.本技术针对现有的方式的缺点,提出一种sdk的调用方法、装置、设备及计算机可读存储介质,用以解决如何实现对sdk的私有接口和/或sdk的私有属性的调用进行合理保护,并降低调用耗时的问题。
4.第一方面,本技术提供了一种软件开发工具包sdk的调用方法,包括:
5.响应于针对sdk调用请求,生成sdk的第一对象对应的代理对象,并将包含代理对象的标识的通知消息发送至sdk,以用于指示sdk确定代理对象的属性;
6.基于接收到的来自sdk的代理对象的属性,确定代理对象的属性对应的配置;
7.基于属性的类型和配置,通过代理对象,以反射方式对sdk的私有接口、sdk的私有属性中的至少一项进行调用。
8.在一个实施例中,基于属性的类型和配置,通过代理对象,以反射方式对sdk的私有接口、sdk的私有属性中的至少一项进行调用,包括:
9.当属性的类型不为空对象,且配置符合预设规定,则通过代理对象,以反射方式对sdk的私有接口、sdk的私有属性中的至少一项进行调用,并接收sdk通过代理对象的第一函数回传的针对sdk的私有接口、sdk的私有属性中的至少一项的数据;
10.第一对象为类对象或实例对象。
11.在一个实施例中,当属性的类型为空对象,或配置不符合预设规定,则接收sdk通过代理对象的第一函数回传的第一调用异常数据。
12.第二方面,本技术提供了一种sdk的调用方法,包括:
13.响应于针对sdk调用请求,生成协议方法,并将协议方法对应的协议信息发送给sdk,以指示sdk将协议信息与sdk的协议列表中的协议信息进行匹配;
14.当协议方法对应的协议信息与协议列表中的协议信息之间相互匹配,则通过sdk
的第二对象,对协议列表中的协议信息对应的sdk的公共接口、sdk的公共属性中的至少一项进行调用。
15.在一个实施例中,当协议方法对应的协议信息与协议列表中的协议信息之间相互匹配,则通过sdk的第二对象,对sdk的公共接口、sdk的公共属性中的至少一项进行调用,包括:
16.当协议方法对应的协议信息包括的协议名称、接口名称、接口功能说明、第一接口参数分别与协议列表中的协议信息包括的协议名称、接口名称、接口功能说明、第一接口参数一一匹配相同,则通过sdk的第二对象,对sdk的公共接口、sdk的公共属性中的至少一项进行调用,并接收sdk通过预设的第二函数回传的针对sdk的公共接口、sdk的公共属性中的至少一项的数据;
17.第二对象为类对象或实例对象。
18.在一个实施例中,当协议方法对应的协议信息包括的协议名称、接口名称、接口功能说明、第一接口参数中的至少一项与协议列表中的协议信息不同,则根据协议方法对应的协议信息包括的第一接口参数,以及预设参数,确定第二接口参数,以指示sdk根据第二接口参数的类型,将第二接口参数的值设置为默认值、空字符串、第一数值、空对象中的任一项;
19.接收sdk通过预设的第二函数回传的第二调用异常数据,第二调用异常数据包括第二接口参数的值。
20.第三方面,本技术提供了一种sdk的调用装置,包括:
21.第一处理模块,用于响应于针对sdk调用请求,生成sdk的第一对象对应的代理对象,并将包含代理对象的标识的通知消息发送至sdk,以用于指示sdk确定代理对象的属性;
22.第二处理模块,用于基于接收到的来自sdk的代理对象的属性,确定代理对象的属性对应的配置;
23.第三处理模块,用于基于属性的类型和配置,通过代理对象,以反射方式对sdk的私有接口、sdk的私有属性中的至少一项进行调用。
24.第四方面,本技术提供了一种sdk的调用装置,包括:
25.第四处理模块,用于响应于针对sdk调用请求,生成协议方法,并将协议方法对应的协议信息发送给sdk,以指示sdk将协议信息与sdk的协议列表中的协议信息进行匹配;
26.第五处理模块,用于当协议方法对应的协议信息与协议列表中的协议信息之间相互匹配,则通过sdk的第二对象,对协议列表中的协议信息对应的sdk的公共接口、sdk的公共属性中的至少一项进行调用。
27.第五方面,本技术提供了一种电子设备,包括:处理器、存储器和总线;
28.总线,用于连接处理器和存储器;
29.存储器,用于存储操作指令;
30.处理器,用于通过调用操作指令,执行本技术第一方面和第二方面的sdk的调用方法。
31.第六方面,本技术提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被用于执行本技术第一方面和第二方面的sdk的调用方法。
32.本技术实施例提供的技术方案,至少具有如下有益效果:
33.响应于针对sdk调用请求,调用方生成sdk的第一对象对应的代理对象,并将包含代理对象的标识的通知消息发送至sdk,以用于指示sdk确定所述代理对象的属性;基于接收到的来自sdk的代理对象的属性,调用方确定代理对象的属性对应的配置;如此,基于属性的类型和配置,调用方通过代理对象,以反射方式实现了对sdk的私有接口、sdk的私有属性中的至少一项的调用进行合理保护,当调用方未设置代理对象,则调用方不能对sdk的私有接口、sdk的私有属性中的至少一项进行调用;同时代理对象仅需调用方在发生调用行为时进行设置,功能执行完毕后代理对象销毁,这样可以保证数据的完整性,并且不会产生脏数据,降低了调用方的调用分析成本,从而降低了调用方的调用耗时。
附图说明
34.为了更清楚地说明本技术实施例中的技术方案,下面将对本技术实施例描述中所需要使用的附图作简单地介绍。
35.图1为本技术实施例提供的系统架构的示意图;
36.图2为本技术实施例提供的一种sdk的调用方法的流程示意图;
37.图3为本技术实施例提供的另一种sdk的调用方法的流程示意图;
38.图4为本技术实施例提供的又一种sdk的调用方法的流程示意图;
39.图5为本技术实施例提供的又一种sdk的调用方法的流程示意图;
40.图6为本技术实施例提供的一种sdk的调用装置的结构示意图;
41.图7为本技术实施例提供的另一种sdk的调用装置的结构示意图;
42.图8为本技术实施例提供的一种电子设备的结构示意图。
具体实施方式
43.为使得本技术的发明目的、特征、优点能够更加的明显和易懂,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而非全部实施例。基于本技术中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
44.下面详细描述本技术的实施例,该实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本技术,而不能解释为对本技术的限制。
45.本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本技术的说明书中使用的措辞“包括”是指存在特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
46.本技术实施例是针对云技术领域中的移动业务提供的一种sdk的调用方法,该sdk的调用方法涉及云技术的多种领域,例如云技术中的云计算、云服务等。
47.云计算(cloud computing)是一种计算模式,它将计算任务分布在大量计算机构
成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。提供资源的网络被称为“云”。“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付费。
48.作为云计算的基础能力提供商,会建立云计算资源池(简称云平台,一般称为iaas(infrastructure as a service,基础设施即服务)平台,在资源池中部署多种类型的虚拟资源,供外部客户选择使用。云计算资源池中主要包括:计算设备(为虚拟化机器,包含操作系统)、存储设备、网络设备。
49.按照逻辑功能划分,在iaas(infrastructure as a service,基础设施即服务)层上可以部署paas(platform as a service,平台即服务)层,paas层之上再部署saas(software as a service,软件即服务)层,也可以直接将saas部署在iaas上。paas为软件运行的平台,如数据库、web容器等。saas为各式各样的业务软件,如web门户网站、短信群发器等。一般来说,saas和paas相对于iaas是上层。
50.所谓人工智能云服务,一般也被称作是aiaas(aias a service,中文为“ai即服务”)。这是目前主流的一种人工智能平台的服务方式,具体来说aiaas平台会把几类常见的ai服务进行拆分,并在云端提供独立或者打包的服务。这种服务模式类似于开了一个ai主题商城:所有的开发者都可以通过api接口的方式来接入使用平台提供的一种或者是多种人工智能服务,部分资深的开发者还可以使用平台提供的ai框架和ai基础设施来部署和运维自已专属的云人工智能服务。
51.人工智能(artificial intelligence,ai)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
52.人工智能技术是一门综合学科,涉及领域广泛,既有硬件层面的技术也有软件层面的技术。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习、自动驾驶、智慧交通等几大方向。
53.为了更好的理解及说明本技术实施例的方案,下面对本技术实施例中所涉及到的一些技术用语进行简单说明。
54.反射:反射是指app的代码在运行时,可以获取任意一个类的所有的属性和方法,可以调用、修改任意一个类或实例的所有属性和方法。
55.sdk:一般来说,在软件开发过程中涉及到某种通用功能,都会把通用功能抽象成一个sdk,例如:微信分享功能、qq微信登陆、微信支付等功能。sdk在进行功能扩展后会产生新的接口或属性,在某些情况下可以将新增的接口和属性放在.m文件中进行保护,生成了私有接口或私有属性,外部就不可直接调用。若新增接口导致某些旧接口不再维护,使用@available关键字进行过期提醒。
56.代理:指代理设计模式,在代理模式(proxy pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。在代理模式中,创建具有现有目标对象的代理
对象,以便向外界提供功能接口。在直接访问目标对象时带来的问题,例如要访问的目标对象在远程的机器上。在面向目标对象系统中,有些目标对象由于某些原因,例如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问,直接访问会给使用者或者系统结构带来很多麻烦,可以在访问此目标对象时加上一个对此目标对象的访问层。
57.feed频道:卖家可以通过feed频道发布一些视频、图片等,之后关注了店铺的买家就可以在feed频道中看到相关内容,而且feed内容也会展示在店铺首页。feed频道展示在app(application,应用程序)的底部位置,非常显眼的位置,是非常重要的流量来源渠道。
58.本技术实施例提供的方案涉及云技术,下面以具体的实施例对本技术的技术方案以及本技术的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本技术的实施例进行描述。
59.本技术实施例所提供的方案可以适用于云技术领域中任意需要sdk的调用的应用场景,通过该方案实现了对sdk的私有接口、sdk的私有属性中的至少一项的调用进行合理保护,或者实现了对sdk的公共接口、sdk的公共属性中的至少一项的调用进行合理保护,同时降低了调用方的调用分析成本。为了更好的理解本技术实施例提供的方案,下面结合具体的一个应用场景对该方案进行说明。
60.在一个实施例中,图1中示出了本技术实施例所适用的一种sdk的调用系统的结构示意图,可以理解的是,本技术实施例所提供的sdk的调用方法可以适用于但不限于应用于如图1所示的应用场景中。
61.本示例中,如图1所示,该示例中的sdk的调用系统可以包括但不限于sdk110、调用方120、服务器130。服务器130可以通过网络与sdk110、调用方120进行通信。调用方120在进行sdk110初始化时,会向服务器130发送请求,服务器130根据调用方120发送的请求,服务器130下发协议列表给sdk110,sdk110得到该协议列表。调用方120响应于针对sdk110调用请求,生成协议方法,并将协议方法对应的协议信息发送给sdk110,以指示sdk110将协议方法对应的协议信息与sdk110得到的协议列表中的协议信息进行匹配;当协议方法对应的协议信息与协议列表
62.中的协议信息之间相互匹配,则调用方120通过sdk110的类对象或实例
63.对象,对协议列表中的协议信息对应的sdk的公共接口、sdk的公共属性中的至少一项进行调用。
64.可理解,上述仅为一种示例,本实施例在此不作限定。
65.其中,sdk110、调用方120可以是终端上的应用程序,终端可以是智能手机(如android手机、ios手机等)、平板电脑、笔记本电脑、数字广播接收器、mid(mobile internet devices,移动互联网设备)、pda(个人数字助理)、台式计算机、车载终端(例如车载导航终端)、智能音箱、智能手表等。服务器130可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、cdn(content delivery network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器或服务器集群。上述网络可以包括但不限于:有线网络,无线网络,其中,该有线网络包括:局域网、城域网和广域网,该无线网络包括:蓝牙、wi-fi及其他实现无线通信的网络。具体也可
基于实际应用场景需求确定,在此不作限定。
66.参见图2,图2示出了本技术实施例提供的一种sdk的调用方法的流程示意图,其中,该方法可以由任一电子设备执行,如可以是调用方,即业务方,作为一可选实施方式,该方法可以由调用方执行,为了描述方便,在下文的一些可选实施例的描述中,将以调用方作为该方法执行主体为例进行说明。如图2所示,本技术实施例提供的sdk的调用方法包括如下步骤:
67.s101,响应于针对sdk调用请求,生成sdk的第一对象对应的代理对象,并将包含代理对象的标识的通知消息发送至sdk,以用于指示sdk确定代理对象的属性。
68.在一个实施例中,sdk为内置在客户端应用程序的一种基础能力,例如,在视频和微信这两个应用程序中都有“扫一扫”的能力,可以把“扫一扫”看成是sdk。
69.在一个实施例中,调用方是指直接调用sdk的业务方,例如在搜索页面拉起扫一扫,调用方就是搜索,其中,扫一扫就是sdk;若在首页拉起扫一扫,调用方就是首页,其中,扫一扫就是sdk。调用方可以是某个相对独立的功能,也可以是整个应用程序。
70.在一个实施例中,响应于针对sdk调用请求,生成sdk的第一对象对应的代理对象,包括:
71.当调用方产生针对该sdk的接口的调用行为,则调用方根据自己的内部逻辑来触发调用请求,调用方对该调用请求进行响应,生成sdk的第一对象对应的代理对象。
72.在一个实施例中,第一对象可以是电视频道,代理对象的属性可以是feed频道。
73.在一个实施例中,在响应于针对sdk调用请求,生成sdk的第一对象对应的代理对象,并将包含代理对象的标识的通知消息发送至sdk之前,还包括:
74.调用方初始化sdk的第一对象,其中,第一对象为类对象或实例对象。
75.在一个实施例中,调用方初始化sdk的第一对象,将会产生调用方当前的上下文环境。
76.s102,基于接收到的来自sdk的代理对象的属性,确定代理对象的属性对应的配置。
77.在一个实施例中,代理对象的属性可以是feed频道,相应的,代理对象的属性对应的配置可以是feed频道的具体内容,例如长视频或短视频。
78.s103,基于属性的类型和配置,通过代理对象,以反射方式对sdk的私有接口、sdk的私有属性中的至少一项进行调用。
79.在一个实施例中,私有接口是外部不能直接访问的接口。sdk的属性可以分为对象属性和类属性。其中,对象属性可以描述某个对象的特征信息,例如播放器模块中的特征信息具有播放的进度、状态、缓存和流媒体编码格式等属性;其中编码格式可以为sdk的私有属性,其他的为sdk的公共属性。sdk的私有属性存在于.m文件中,外部不能够直接访问和修改;例如播放某个流媒体文件,外部不能对编码格式进行获取和修改。其他的为sdk的公共属性,例如播放的进度、下载数据、播放状态(暂停、续播、停止)外部都可以获取并通过接口调用。
80.在一个实施例中,基于属性的类型和配置,通过代理对象,以反射方式对sdk的私有接口、sdk的私有属性中的至少一项进行调用,包括:
81.当属性的类型不为空对象,且配置符合预设规定,则通过代理对象,以反射方式对
sdk的私有接口、sdk的私有属性中的至少一项进行调用,并接收sdk通过代理对象的第一函数回传的针对sdk的私有接口、sdk的私有属性中的至少一项的数据;
82.第一对象为类对象或实例对象。
83.在一个实施例中,调用方生成代理对象,调用方将代理对象通知sdk;sdk根据代理对象对应的目标对象,即sdk的类对象或实例对象,确定代理对象属性;调用方再根据代理对象属性,确定代理对象属性对应的配置。基于代理对象的属性的类型和代理对象属性对应的配置,判断调用方调用sdk的私有接口、sdk的私有属性中的至少一项是否成功,例如,当代理对象的属性的类型不为空对象,且代理对象的属性对应的配置符合预设规定,则调用sdk的私有接口、sdk的私有属性中的至少一项成功。
84.在一个实施例中,当属性的类型为空对象,或配置不符合预设规定,则接收sdk通过代理对象的第一函数回传的第一调用异常数据。
85.在一个实施例中,当代理对象的属性的类型不为空对象,且代理对象的属性对应的配置不符合预设规定,则调用sdk的私有接口、sdk的私有属性中的至少一项不成功;例如,预设规定为:配置的参数只能为1、2或3,但调用方由于逻辑错误,将代理对象的属性对应的配置设置为4,则表明代理对象的属性对应的配置不符合预设规定。当代理对象的属性的类型为空对象,则调用sdk的私有接口、sdk的私有属性中的至少一项不成功。
86.在一个实施例中,第一调用异常数据可以是调用异常的警告、包括关于调用sdk的私有接口、sdk的私有属性中的至少一项不成功的相关信息的日志等。第一函数可以是接收函数。
87.在一个实施例中,代理对象的属性的类型为体积,代理对象的属性对应的配置为长、宽、高,当长、宽、高不全为空对象,则sdk不会返回调用异常的警告给调用方;当体积为空对象时,则sdk返回调用异常的警告给调用方;其中,调用异常的警告用于表明调用方调用sdk的私有接口、sdk的私有属性中的至少一项不成功。
88.本技术实施例中,基于属性的类型和配置,调用方通过代理对象,以反射方式实现了对sdk的私有接口、sdk的私有属性中的至少一项的调用进行合理保护,同时降低了调用方的调用分析成本。
89.参见图3,图3示出了本技术实施例提供的另一种sdk的调用方法的流程示意图,其中,该方法可以由任一电子设备执行,如可以是调用方,即业务方,作为一可选实施方式,该方法可以由调用方执行,为了描述方便,在下文的一些可选实施例的描述中,将以调用方作为该方法执行主体为例进行说明。如图3所示,本技术实施例提供的sdk的调用方法包括如下步骤:
90.s201,响应于针对sdk调用请求,生成协议方法,并将协议方法对应的协议信息发送给sdk,以指示sdk将协议信息与sdk的协议列表中的协议信息进行匹配。
91.在一个实施例中,sdk的协议列表中的协议信息包括协议名称、接口名称、接口功能说明、第一接口参数。其中,协议列表如表1所示:
92.表1协议列表
[0093][0094]
如表1中所示,tel://\v1为协议名称,tel://\v1对应的接口名称为phone,接口功能说明为打电话,第一接口参数为int number。file://\v1\v2为协议名称,file://\v1\v2对应的接口名称为openfile,接口功能说明为打开文件,第一接口参数为string path和string name。location://\v1\v2为协议名称,location://\v1\v2对应的接口名称为getlocation,接口功能说明为获取定位,例如获取地图定位,第一接口参数为double latitude和double longitude。scancode://为协议名称,scancode://对应的接口名称为scanqrcode,接口功能说明为扫二维码,第一接口参数为void。
[0095]
在一个实施例中,响应于针对sdk调用请求,生成协议方法,包括:
[0096]
当调用方产生针对该sdk的接口的调用行为,则调用方根据自己的内部逻辑来触发调用请求,调用方对该调用请求进行响应,生成协议方法。
[0097]
在一个实施例中,在响应于针对sdk调用请求,生成协议方法,并将协议方法对应的协议信息发送给sdk之前,还包括:
[0098]
调用方初始化sdk的第二对象,其中,第二对象为类对象或实例对象。
[0099]
s202,当协议方法对应的协议信息与协议列表中的协议信息之间相互匹配,则通过sdk的第二对象,对协议列表中的协议信息对应的sdk的公共接口、sdk的公共属性中的至少一项进行调用。
[0100]
在一个实施例中,sdk内置校验模块,当sdk通过校验模块确定协议方法对应的协议信息与协议列表中的协议信息之间相互匹配,则调用方则通过sdk的第二对象,对协议列表中的协议信息对应的sdk的公共接口、sdk的公共属性中的至少一项进行调用。
[0101]
在一个实施例中,当协议方法对应的协议信息与协议列表中的协议信息之间相互匹配,则通过sdk的第二对象,对sdk的公共接口、sdk的公共属性中的至少一项进行调用,包括:
[0102]
当协议方法对应的协议信息包括的协议名称、接口名称、接口功能说明、第一接口参数分别与协议列表中的协议信息包括的协议名称、接口名称、接口功能说明、第一接口参数一一匹配相同,则通过sdk的第二对象,对sdk的公共接口、sdk的公共属性中的至少一项进行调用,并接收sdk通过预设的第二函数回传的针对sdk的公共接口、sdk的公共属性中的至少一项的数据。
[0103]
举例说明,如表1所示,tel://\v1为协议名称,tel://\v1对应的接口名称为phone,接口功能说明为打电话,第一接口参数为int number。当协议方法对应的协议信息包括的协议名称、接口名称、接口功能说明、第一接口参数分别为tel://\v1、phone、打电话、int number,协议列表中的协议信息包括的协议名称、接口名称、接口功能说明、第一接
口参数分别为tel://\v1、phone、打电话、int number,则协议方法对应的协议信息与协议列表中的协议信息之间匹配成功,调用方通过sdk的第二对象,对sdk的公共接口、sdk的公共属性中的至少一项进行调用,并接收sdk通过预设的第二函数回传的针对sdk的公共接口、sdk的公共属性中的至少一项的数据。其中,第二函数可以为匿名函数。
[0104]
在一个实施例中,当协议方法对应的协议信息与协议列表中的协议信息之间相互匹配,即协议方法对应的协议信息与协议列表中的协议信息之间匹配成功时,则设定接口调用的生效时间为调用对象的生命周期;其中,接口调用的生效时间包括从调用方发起调用到调用对象执行销毁的时间区间,调用对象为第二对象,接口调用为sdk的公共接口调用。
[0105]
在一个实施例中,当协议方法对应的协议信息包括的协议名称、接口名称、接口功能说明、第一接口参数中的至少一项与协议列表中的协议信息不同,则根据协议方法对应的协议信息包括的第一接口参数,以及预设参数,确定第二接口参数,以指示sdk根据第二接口参数的类型,将第二接口参数的值设置为默认值、空字符串、第一数值、空对象中的任一项;
[0106]
接收sdk通过预设的第二函数回传的第二调用异常数据,第二调用异常数据包括第二接口参数的值。
[0107]
举例说明,如表1所示,当协议方法对应的协议信息包括的协议名称为tel://,协议列表中的多个协议信息分别包括的协议名称为tel://\v1、file://\v1\v2、location://\v1\v2、scancode://,协议方法对应的协议信息包括的协议名称与协议列表中的任一协议信息包括的协议名称都不同,则协议方法对应的协议信息与协议列表中的协议信息之间匹配不成功。
[0108]
在一个实施例中,根据协议方法对应的协议信息包括的第一接口参数,以及预设参数,确定第二接口参数,包括:
[0109]
将第一接口参数与预设参数之间的乘积作为第二接口参数。
[0110]
在一个实施例中,sdk根据第二接口参数的类型,将第二接口参数的值设置为默认值、空字符串、第一数值、空对象中的任一项,包括:
[0111]
当第二接口参数的类型为枚举类型,则将第二接口参数的值设置为默认值;
[0112]
当第二接口参数的类型为字符串类型,则将第二接口参数的值设置为空字符串;
[0113]
当第二接口参数的类型为数值类型,则将第二接口参数的值设置为第一数值,其中,第一数值可以为0;
[0114]
当第二接口参数的类型为对象类型,则将第二接口参数的值设置为空对象。
[0115]
本技术实施例中,响应于针对sdk调用请求,调用方生成协议方法,并将协议方法对应的协议信息发送给sdk,以指示sdk将协议信息与sdk的协议列表中的协议信息进行匹配;如此,当协议方法对应的协议信息与协议列表中的协议信息之间相互匹配,则调用方通过sdk的第二对象,对协议列表中的协议信息对应的sdk的公共接口、sdk的公共属性中的至少一项进行调用,实现了对sdk的公共接口、sdk的公共属性中的至少一项的调用进行合理保护,同时降低了调用方的调用分析成本。
[0116]
为了更好的理解本技术实施例所提供的方法,下面结合具体应用场景的示例对本技术实施例的方案进行进一步说明。
[0117]
本技术实施例所提供的sdk的调用方法应用于云技术中的移动业务领域。
[0118]
在一个实施例中,当某些公共的sdk进行功能扩展后,会增加部分接口,这些接口只允许部分业务方(调度方)进行调用。加载/刷新feed流页面的接口参数中增加了某个枚举值,但这个枚举值仅限与在多个feed频道页面切换时进行传入,feed流只有一个频道的业务方不允许进行调用,例如,枚举名称为tmffeedstreamrefreshingreason的枚举参数取值为reasonchannelchanged时需要在特定条件下传入。某些新增接口可以通过编译器属性设置抛出警告来对业务方进行提醒,例如,colorwithhexstring函数已过期,需要使用init:init(hexstr hex:string)的方式进行调用。
[0119]
在一个实施例中,图片下载的sdk中,在下载接口中新增了缓存方式的参数,该参数是个枚举类型,缓存的方式包括磁盘缓存、内存缓存、归档缓存和数据库缓存,新增的缓存参数为数据库缓存,但又不希望其它部门的调用新增的缓存参数,因此需要限制或保护新增的缓存参数。
[0120]
本技术实施例中,当sdk的接口进行参数、功能扩展后,判断当前接口修改是否能进行私有属性保护;对于私有接口或私有属性,调用方需要通过反射初始化sdk的类对象或实例对象后,进行调用,若存在回调信息则通过代理的方式进行回传消息;对于公共接口或公共属性,与调用方定义私有协议,在sdk初始化时服务器下发私有协议列表,调用方通过检测协议名称后进行参数的传入。从而实现了保护底层sdk的调用安全性,防止其他业务方调用产生问题;通过统一的调用机制来减少sdk接口的维护成本。
[0121]
参见图4,图4示出了本技术实施例提供的又一种sdk的调用方法的流程示意图,其中,该方法可以由任一电子设备执行,如可以是调用方,即业务方,作为一可选实施方式,该方法可以由调用方执行,为了描述方便,在下文的一些可选实施例的描述中,将以调用方作为该方法执行主体为例进行说明。如图4所示,本技术实施例提供的sdk的调用方法包括如下步骤:
[0122]
s301,调用方初始化sdk的类对象或实例对象。
[0123]
s302,sdk提供代理对象的属性。
[0124]
在一个实施例中,调用方生成代理对象,调用方将代理对象通知sdk;sdk根据代理对象对应的目标对象,即sdk的类对象或实例对象,确定代理对象的属性;调用方再根据代理对象的属性,确定代理对象的属性对应的配置。
[0125]
s303,调用方基于代理对象通过反射进行sdk的私有接口或私有属性的访问。
[0126]
s304,sdk判断代理对象的属性的类型是否为空对象;若代理对象的属性的类型不为空对象,则转到步骤s305处理;若代理对象的属性的类型为空对象,则转到步骤s306处理。
[0127]
在一个实施例中,基于代理对象的属性的类型和代理对象属性对应的配置,sdk判断调用方调用sdk的私有接口、sdk的私有属性中的至少一项是否成功;当确定调用方调用sdk的私有接口、sdk的私有属性中的至少一项成功,则转到步骤s305处理,当确定调用方调用sdk的私有接口、sdk的私有属性中的至少一项不成功,则转到步骤s306处理。
[0128]
在一个实施例中,sdk判断代理对象的属性的类型是否为空对象,若为空对象,则sdk返回调用异常的警告给调用方。
[0129]
在一个实施例中,基于代理对象属性和代理对象属性对应的配置,确定私有回传
数据的方法,其中,私有回传数据的方法可以是针对调用方调用私有接口或私有属性的校验和数据回传,在sdk内部运算完毕后会通过代理对象调用私有代理方法将数据回传给调用方。例如,登录模块调用ocr(optical character recognition,光学字符识别)识别人脸,需要将识别结果中的用户信息(姓名、年龄)传递给登录模块;在线开户模块则需要将识别结果的成功、失败进行回传。当代理对象的属性的类型为空对象,则sdk的运算结果不会进行数据的回传。
[0130]
s305,sdk执行内部函数进行算法和逻辑运算,并生成结果。
[0131]
在一个实施例中,sdk执行内部函数进行算法和逻辑运算是针对调用方对私有接口或属性的访问进行的处理。其中,结果可以是轮播图。
[0132]
s306,将调用堆栈和事件进行日志写入sdk。
[0133]
在一个实施例中,日志包括调用方调用sdk的私有接口、sdk的私有属性中的至少一项不成功等信息。
[0134]
s307,sdk执行私有回传数据的方法,利用反射调用代理对象的接收函数,通过代理对象的接收函数将生成结果回传到调用方。
[0135]
本技术实施例中,调用方通过代理对象,以反射方式实现了对sdk的私有接口、sdk的私有属性中的至少一项的调用进行合理保护,同时降低了调用方的调用分析成本。
[0136]
参见图5,图5示出了本技术实施例提供的又一种sdk的调用方法的流程示意图,其中,该方法可以由任一电子设备执行,如可以是调用方,即业务方,作为一可选实施方式,该方法可以由调用方执行,为了描述方便,在下文的一些可选实施例的描述中,将以调用方作为该方法执行主体为例进行说明。如图5所示,本技术实施例提供的sdk的调用方法包括如下步骤:
[0137]
s401,调用方初始化sdk的类对象或实例对象。
[0138]
s402,sdk获取服务器发送的协议列表。
[0139]
在一个实施例中,调用方在进行sdk初始化时,会向服务器发送请求,服务器根据调用方发送的请求,服务器下发协议列表给sdk,sdk得到该协议列表。
[0140]
s403,调用方通过类对象或实例对象进行sdk的公共接口或公共属性的访问。
[0141]
s404,sdk检测调用方是否实现协议方法。
[0142]
s405,sdk获取协议方法对应的协议名称,并将协议方法对应的协议信息与sdk的协议列表中的协议信息进行匹配;当协议方法对应的协议信息与协议列表中的协议信息之间匹配成功,则设定接口调用的生效时间为调用对象的生命周期,并执行步骤s406;当协议方法对应的协议信息与协议列表中的协议信息之间匹配不成功,则执行步骤s407。
[0143]
在一个实施例中,协议方法对应的协议信息包括协议名称、接口名称、接口功能说明、第一接口参数。接口调用的生效时间包括从调用方发起调用到调用对象执行销毁的时间区间,调用对象为第二对象,接口调用为sdk的公共接口调用。
[0144]
s406,sdk执行内部函数进行算法和逻辑运算,转到步骤s408处理。
[0145]
在一个实施例中,sdk的公共接口或公共属性被访问时,不用考虑调用方当前所处的环境,当调用方调用被保护的公共接口,访问或读写被保护的公共属性,sdk正常执行内部函数进行算法和逻辑运算。
[0146]
s407,当sdk的调用接口传入的参数或属性为被保护的值,将参数或属性设置为默
认值。
[0147]
在一个实施例中,当调用方调用公共接口的参数没成功,则sdk将公共接口的参数设置为默认值。
[0148]
s408,当执行了步骤s406,则当sdk内部执行逻辑完成后,生成结果;当执行了步骤s407,则将调用方的行为写入日志。
[0149]
在一个实施例中,生成结果可以是生成预设的电视剧。
[0150]
s409,当调用方需要执行结果,则通过匿名函数返回给调用方。调用对象执行销毁后,重置协议的生效时间,更新协议名称。
[0151]
在一个实施例中,执行结果可以是播放电视剧。
[0152]
本技术实施例中,当协议方法对应的协议信息与协议列表中的协议信息之间相互匹配,则调用方通过sdk的类对象或实例对象,对协议列表中的协议信息对应的sdk的公共接口、sdk的公共属性中的至少一项进行调用,实现了对sdk的公共接口、sdk的公共属性中的至少一项的调用进行合理保护,同时降低了调用方的调用分析成本。
[0153]
基于相同的发明构思,本技术实施例还提供了一种sdk的调用装置,该装置的结构示意图如图6所示,针对sdk的调用装置40,包括第一处理模块401、第二处理模块402和第三处理模块403。
[0154]
第一处理模块401,用于响应于针对sdk调用请求,生成sdk的第一对象对应的代理对象,并将包含代理对象的标识的通知消息发送至sdk,以用于指示sdk确定代理对象的属性;
[0155]
第二处理模块402,用于基于接收到的来自sdk的代理对象的属性,确定代理对象的属性对应的配置;
[0156]
第三处理模块403,用于基于属性的类型和配置,通过代理对象,以反射方式对sdk的私有接口、sdk的私有属性中的至少一项进行调用。
[0157]
在一个实施例中,第三处理模块403,具体用于:
[0158]
当属性的类型不为空对象,且配置符合预设规定,则通过代理对象,以反射方式对sdk的私有接口、sdk的私有属性中的至少一项进行调用,并接收sdk通过代理对象的第一函数回传的针对sdk的私有接口、sdk的私有属性中的至少一项的数据;
[0159]
第一对象为类对象或实例对象。
[0160]
在一个实施例中,第三处理模块403,还用于:
[0161]
当属性的类型为空对象,或配置不符合预设规定,则接收sdk通过代理对象的第一函数回传的第一调用异常数据。
[0162]
应用本技术实施例,至少具有如下有益效果:
[0163]
响应于针对sdk调用请求,调用方生成sdk的第一对象对应的代理对象,并将包含代理对象的标识的通知消息发送至sdk,以用于指示sdk确定所述代理对象的属性;基于接收到的来自sdk的代理对象的属性,调用方确定代理对象的属性对应的配置;如此,基于属性的类型和配置,调用方通过代理对象,以反射方式实现了对sdk的私有接口、sdk的私有属性中的至少一项的调用进行合理保护,同时降低了调用方的调用分析成本。
[0164]
基于相同的发明构思,本技术实施例还提供了另一种sdk的调用装置,该装置的结构示意图如图7所示,针对sdk的调用装置50,包括第四处理模块501和第五处理模块502。
[0165]
第四处理模块501,用于响应于针对sdk调用请求,生成协议方法,并将协议方法对应的协议信息发送给sdk,以指示sdk将协议信息与sdk的协议列表中的协议信息进行匹配;
[0166]
第五处理模块502,用于当协议方法对应的协议信息与协议列表中的协议信息之间相互匹配,则通过sdk的第二对象,对协议列表中的协议信息对应的sdk的公共接口、sdk的公共属性中的至少一项进行调用。
[0167]
在一个实施例中,第五处理模块502,具体用于:
[0168]
当协议方法对应的协议信息包括的协议名称、接口名称、接口功能说明、第一接口参数分别与协议列表中的协议信息包括的协议名称、接口名称、接口功能说明、第一接口参数一一匹配相同,则通过sdk的第二对象,对sdk的公共接口、sdk的公共属性中的至少一项进行调用,并接收sdk通过预设的第二函数回传的针对sdk的公共接口、sdk的公共属性中的至少一项的数据;
[0169]
第二对象为类对象或实例对象。
[0170]
在一个实施例中,第五处理模块502,还用于:
[0171]
当协议方法对应的协议信息包括的协议名称、接口名称、接口功能说明、第一接口参数中的至少一项与协议列表中的协议信息不同,则根据协议方法对应的协议信息包括的第一接口参数,以及预设参数,确定第二接口参数,以指示sdk根据第二接口参数的类型,将第二接口参数的值设置为默认值、空字符串、第一数值、空对象中的任一项;
[0172]
接收sdk通过预设的第二函数回传的第二调用异常数据,第二调用异常数据包括第二接口参数的值。
[0173]
应用本技术实施例,至少具有如下有益效果:
[0174]
响应于针对sdk调用请求,调用方生成协议方法,并将协议方法对应的协议信息发送给sdk,以指示sdk将协议信息与sdk的协议列表中的协议信息进行匹配;如此,当协议方法对应的协议信息与协议列表中的协议信息之间相互匹配,则调用方通过sdk的第二对象,对协议列表中的协议信息对应的sdk的公共接口、sdk的公共属性中的至少一项进行调用,实现了对sdk的公共接口、sdk的公共属性中的至少一项的调用进行合理保护,同时降低了调用方的调用分析成本。
[0175]
基于相同的发明构思,本技术实施例还提供了一种电子设备,该电子设备的结构示意图如图8所示,该电子设备9000包括至少一个处理器9001、存储器9002和总线9003,至少一个处理器9001均与存储器9002电连接;存储器9002被配置用于存储有至少一个计算机可执行指令,处理器9001被配置用于执行该至少一个计算机可执行指令,从而执行如本技术中任意一个实施例或任意一种可选实施方式提供的任意一种sdk的调用方法的步骤。
[0176]
进一步,处理器9001可以是fpga(field-programmable gate array,现场可编程门阵列)或者其它具有逻辑处理能力的器件,如mcu(microcontroller unit,微控制单元)、cpu(central process unit,中央处理器)。
[0177]
应用本技术实施例,至少具有如下有益效果:
[0178]
实现了对sdk的私有接口、sdk的私有属性中的至少一项的调用进行合理保护,或者实现了对sdk的公共接口、sdk的公共属性中的至少一项的调用进行合理保护,同时降低了调用方的调用分析成本。
[0179]
基于相同的发明构思,本技术实施例还提供了一种计算机可读存储介质,存储有
计算机程序,该计算机程序用于被处理器执行时实现本技术中任意一个实施例或任意一种可选实施方式提供的任意一种sdk的调用方法的步骤。
[0180]
本技术实施例提供的计算机可读存储介质包括但不限于任何类型的盘(包括软盘、硬盘、光盘、cd-rom、和磁光盘)、rom(read-only memory,只读存储器)、ram(random access memory,随即存储器)、eprom(erasable programmable read-only memory,可擦写可编程只读存储器)、eeprom(electrically erasable programmable read-only memory,电可擦可编程只读存储器)、闪存、磁性卡片或光线卡片。也就是,可读存储介质包括由设备(例如,计算机)以能够读的形式存储或传输信息的任何介质。
[0181]
应用本技术实施例,至少具有如下有益效果:
[0182]
实现了对sdk的私有接口、sdk的私有属性中的至少一项的调用进行合理保护,或者实现了对sdk的公共接口、sdk的公共属性中的至少一项的调用进行合理保护,同时降低了调用方的调用分析成本。
[0183]
本技术实施例还提供了一种包含指令的计算机程序产品,当其在计算机设备上运行时,使得计算机设备执行上述各个方法实施例所提供的sdk的调用方法。
[0184]
本技术领域技术人员可以理解,可以用计算机程序来实现这些结构图和/或框图和/或流图中的每个框以及这些结构图和/或框图和/或流图中的框的组合。本技术领域技术人员可以理解,可以将这些计算机程序产品提供给通用计算机、专业计算机或其他可编程数据处理方法的处理器来实现,从而通过计算机或其他可编程数据处理方法的处理器来执行本技术公开的结构图和/或框图和/或流图的框或多个框中指定的方案。
[0185]
本技术领域技术人员可以理解,本技术中已经讨论过的各种操作、方法、流程中的步骤、措施、方案可以被交替、更改、组合或删除。进一步地,具有本技术中已经讨论过的各种操作、方法、流程中的其他步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。进一步地,现有技术中的具有与本技术中公开的各种操作、方法、流程中的步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。
[0186]
以上所述仅是本技术的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本技术的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1