开发者交换系统的制作方法

文档序号:13985264
开发者交换系统的制作方法

本公开涉及应用开发,并且涉及用于移动设备的协同应用开发的系统和方法。



背景技术:

近年来,诸如智能手机的互联网连接设备的使用呈指数增加。这样的设备能够使用的软件应用的数量和种类同样以若干个数量级地增加。目前,在任意给定的互联网连接设备上能够执行许多不同的功能并且能够分析许多不同的数据集合。提供这种功能和数据的应用涵盖面向商务的应用、教育应用、游戏、新应用、购物应用、消息收发应用、媒体流应用、社交媒体应用等。

有这么大量可用的应用,许多互联网连接设备的用户并不清楚可以执行功能和/或向用户提供感兴趣的数据的应用的可用性。即使是通常专注于应用市场的一个分区的应用开发者也无法及时了解他们的用户可能在其他分区发现有价值的所有应用。而且,没有开发者能够专业地实现即使是整个应用生态系统可用的功能性领域的一部分。

这里所提供的背景说明是为了总体上呈现本公开的背景的目的。现在所称的发明人的工作,对于在该背景部分所描述的内容而言,以及提交时不符合作为现有技术的说明书的方面,既未明确也未隐含地被认为是对于本公开的现有技术。



技术实现要素:

开发者交换系统包括用于存储记录的数据存储器,每个记录包括功能模块和描述该功能模块的元数据。元数据指定由功能模块所执行的功能。功能本体内部设置由多个功能。开发者交换系统包括功能管理模块,其用于向第一应用开发者提供图形用户界面以从功能本体中选择第一功能。开发者交换系统包括集成模块,其用于向第一应用开发者提供处理器可执行指令以集成到第一应用中。处理器可执行指令包括(i)向开发者交换系统发送功能模块请求,(ii)接收由开发者交换系统提供的功能模块,(iii)执行所提供的功能模块,以及(iv)在第一应用内呈现来自所提供的功能模块的数据。功能模块请求对于第一功能进行识别。该开发者交换系统包括递送模块,其用于(i)从用户设备接收功能模块请求,该功能模块请求指定期望功能的标识符,(ii)从数据存储器中识别与期望功能对应的记录的考虑集合,(iii)选择记录的考虑集合中的一个记录,以及(iv)将与所选择的记录对应的功能模块从数据存储器选择性地发送到用户设备。

在其他特征中,开发者交换系统包括生产者模块,其用于(i)从第二应用开发者接收功能模块,以及(ii)在数据存储器中创建新记录以存储从第二应用开发者接收到的功能模块。在其它特征中,生产者模块用于响应于从第二应用开发者接收到更新的功能模块而更新数据存储中的新记录。在其他特征中,生产者模块用于将来自第二应用开发者的元数据存储在新记录中。元数据包括以下中的至少一个:(i)从第二应用开发者接收的功能模块的用户界面的预览和(ii)从第二应用开发者接收的功能模块的文本描述。

在其它特征中,处理器可执行指令包括将所提供的功能模块存储在功能模块数据存储器中。在其他特征中,递送模块用于响应于从用户设备接收到功能模块请求,将功能模块的标识符发送到用户设备。处理器可执行指令包括从开发者交换系统接收功能模块标识符,并且仅响应于所接收的功能模块标识符与存储在功能模块数据存储器中的功能模块标识符不匹配,向开发者交换系统发送请求,以提供通过所接收的功能模块标识符识别出的功能模块。

在其他特征中,处理器可执行指令包括在沙箱中执行提供的功能模块。在其他特征中,处理器可执行指令包括在第一应用启动时向开发者交换系统发送功能模块请求。在其他特征中,处理器可执行指令仅包括在用户设备上第一次启动第一应用时向开发者交换系统发送功能模块请求。在其他特征中,显示数据被提供给与第一状态模板对应的第一应用的状态。处理器可执行指令包括,响应于从第一状态模板实例化的状态,向开发者交换系统发送功能模块请求。

在其他特征中,处理器可执行指令包括存储由开发者交换系统提供的所提供的功能模块。该指令包括,响应于关于第一状态模板的后续功能模块请求,使得开发者交换系统提供不同的第二功能模块,从存储器中清除所提供的功能模块。在其他特征中,处理器可执行指令包括第一功能的标识。在其他特征中,功能模块请求识别功能模块请求的来源。递送模块用于基于功能模块请求的源来识别期望的功能。

在其他特征中,集成模块用于向第一应用开发者提供第一功能的标识。处理器可执行指令包括,从第一应用开发者插入的应用编程接口调用,接收第一功能的标识。在其他特征中,集成模块用于向第一应用开发者提供软件开发套件。软件开发套件协助第一应用开发者准备应用编程接口调用。

在其他特征中,处理器可执行指令包括识别安装在用户设备上的应用,并通过包括与所识别的应用有关的数据来准备功能模块请求。递送模块用于根据与识别的应用有关的数据来限制记录的考虑集合。在其他特征中,处理器可执行指令包括识别用户设备上的活跃(active)账户,并通过包括与活动账户有关的数据来准备功能模块请求。递送模块用于(i)根据与活跃账号的相关数据,调整记录的考虑集合的得分,以及(ii)根据调整后的得分来选择被选择的记录。

操作开发者交换系统的方法包括定义包含多个功能的功能本体。该方法包括将记录存储在数据存储器中,每个记录包括功能模块和描述该功能模块的元数据。元数据指定从功能本体选择出的功能模块执行的功能。该方法包括创建并向第一应用开发者呈现用于从功能本体中选择第一功能的图形用户界面。该方法包括响应于对第一功能的选择,向第一应用开发者发送处理器可执行指令以集成到第一应用中。处理器可执行指令包括(i)向开发者交换系统发送功能模块请求,(ii)接收由开发者交换系统提供的功能模块,(iii)执行所提供的功能模块,以及(iv)在第一应用内呈现来自所提供的功能模块的数据。功能模块请求对于第一功能进行识别。

在其他特征中,该方法包括从第二应用开发者接收第一功能模块。该方法包括:响应于接收到第一功能模块,在数据存储器中创建新记录以存储第一功能模块。在其它特征中,该方法包括从第二应用开发者接收第一功能模块的更新版本。该方法包括响应于接收到第一功能模块的更新版本来更新数据存储器中的新记录。

在其他特征中,新记录存储来自第二应用开发者的元数据。元数据包括以下中的至少一个:(i)从第二应用开发者接收的功能模块的用户界面的预览和(ii)从第二应用开发者接收的功能模块的文本描述。在其他的特征中,方法包括从用户设备接收功能模块请求,该功能模块请求指定期望功能的标识符。该方法包括从数据存储器识别与期望的功能对应的记录的考虑集合.该方法包括选择记录的考虑集合中的一个记录。该方法包括从数据存储器选择性地获取与所选择的记录对应的功能模块并且向用户设备发送所获取的功能模块。

在其它特征中,处理器可执行指令包括将所提供的功能模块存储在功能模块数据存储器中。在其他特征中,该方法包括,响应于从用户设备接收功能模块请求,向用户设备发送功能模块的标识符。处理器可执行指令包括从开发者交换系统接收功能模块标识符,并且仅响应于所接收的功能模块标识符与存储在功能模块数据存储器中的功能模块标识符不匹配,向开发者交换系统发送请求,以提供通过所接收的功能模块标识符识别出的功能模块。

在其他特征中,该方法包括,基于功能模块请求源于的应用的识别来识别期望的功能。在其他特征中,处理器可执行指令包括在沙箱中执行提供的功能模块。在其他特征中,处理器可执行指令包括在第一应用启动时向开发者交换系统发送功能模块请求。在其他特征中,处理器可执行指令仅包括在用户设备上第一次启动第一应用时向开发者交换系统发送功能模块请求。

在其他的特征中,处理器可执行指令包括,响应于从第一状态模板实例化的状态,向开发者交换系统发送功能模块请求。显示数据被提供给与第一状态模板对应的第一应用的状态。在其他特征中,处理器可执行指令包括存储由开发者交换系统提供的被提供的功能模块。该指令包括,响应于关于第一状态模板的后续功能模块请求,使得开发者交换系统提供不同的第二功能模块,从存储器中清除所提供的功能模块。

在其他特征中,处理器可执行指令包括第一功能的标识。在其他特征中,方法包括向第一应用开发者提供第一功能的标识。处理器可执行指令包括,从第一应用开发者插入到第一应用中的应用编程接口调用,接收第一功能的标识。

在其他特征中,该方法包括向第一应用开发者提供软件开发套件。软件开发套件向第一应用开发者提供用于创建应用编程接口调用的模板。模板填充有第一功能的标识。在其他特征中,处理器可执行指令包括识别第一应用执行所在的用户设备上安装的应用。指令包括识别用户设备上的活跃账户。指令包括,通过包括与活跃账户有关的数据和与识别出的应用有关的数据来准备功能模块请求。

一种开发第一应用的方法,包括访问开发者交换系统的图形化界面。该方法包括使用开发者交换系统的图形化用户界面,从功能本体的多个功能中选择第一功能。该方法包括从开发者交换系统接收处理器可执行指令以集成到第一应用中。处理器可执行指令包括(i)向开发者交换系统发送功能模块请求,(ii)接收由开发者交换系统提供的功能模块,(iii)执行所提供的功能模块,以及(iv)在第一应用内呈现来自所提供的功能模块的数据。功能模块请求对于第一功能进行识别。该方法包括将处理器可执行指令集成到第一应用,包括指定将显示数据显示给用户的区域。

在其它特征中,处理器可执行指令包括将所接收的功能模块存储在功能模块数据存储器中。在其他特征中,处理器可执行指令包括响应于功能模块请求,从开发者交换系统接收功能模块标识符。指令包括,仅响应于所接收的功能模块标识符与存储在功能模块数据存储器中的功能模块标识符不匹配,向开发者交换系统发送请求,以提供通过所接收的功能模块标识符识别出的功能模块。

在其他特征中,处理器可执行指令包括在沙箱中执行提供的功能模块。在其他特征中,处理器可执行指令包括在第一应用启动时向开发者交换系统发送功能模块请求。在其他特征中,处理器可执行指令仅包括在用户设备上第一次启动第一应用时向开发者交换系统发送功能模块请求。在其他的特征中,方法包括将显示数据集成到第一状态模块,包括在第一状态模块中保留用于显示来自功能模块的显示数据的区域。方法包括,响应于来自第一状态模块的状态的实例化,功能模块被激活并且由功能模块生成的显示数据显示在所保留的区域中。

在其他的特征中,处理器可执行指令包括,响应于从第一状态模板实例化的状态,向开发者交换系统发送功能模块请求。在其他特征中,处理器可执行指令包括存储由开发者交换系统提供的被提供的功能模块。指令包括每次状态从第一状态模块实例化时向开发者交换系统发送功能模块请求。该指令包括,响应于关于第一状态模板的后续功能模块请求,使得开发者交换系统提供不同的第二功能模块,从存储器中清除所提供的功能模块。

在其他特征中,方法包括从开发者交换系统接收第一功能的标识。方法包括在与第一状态模板内创建应用编程接口调用。应用编程接口调用包括第一功能的标识。在其他特征中,该方法包括从开发者交换系统接收软件开发套件。软件开发套件提供用于创建应用编程接口调用的模板。创建应用编程接口调用包括利用第一功能的标识来填充模板。

在其他特征中,处理器可执行指令包括识别安装在用户设备上的应用,识别用户设备上的活跃账户,并通过包括与活跃账户有关的数据和与所识别的应用有关的数据来准备功能模块请求。在其他特征中,该方法包括创建具有第一应用的功能的适当子集的第一功能模块。方法包括向开发者交换系统提供第一功能模块。

在其他特征中,该方法包括,响应于更新第一应用与功能的适当子集有关的代码,向开发者交换系统发送第一功能模块的更新版本。在其他特征中,方法包括向开发者交换系统提供第一功能模块有关的元数据。元数据包括(i)第一功能模块的用户界面的预览和(ii)第一功能模块的描述中的至少一个。

一种非瞬态计算机可读介质,其存储处理器可执行指令。指令包括向开发者交换系统经由网络连接发送功能模块请求。功能模块请求识别待执行的第一功能。指令包括从开发者交换系统接收第一功能模块。第一功能模块包括用于生成与待执行的特定功能有关的显示数据的代码。指令包括将第一功能模块存储在功能模块数据存储器中。指令包括,响应于触发事件,从功能模块数据存储器获取第一功能模块并且执行该第一功能模块。指令包括呈现通过第一功能模块的执行所生成的显示数据。

在其他特征中,第一功能模块在沙箱中执行。在其他特征中,显示数据显示在并入指令的应用的第一状态内。触发事件包括由应用的用户访问的应用的第一状态。在其他特征中,显示数据并入到状态实例化所来自的第一应用的第一状态模块中。触发事件基于从第一状态模板实例化的状态。

在其他特征中,响应于状态从第一状态模板实例化,发送功能模块请求。指令包括响应于状态的另一实例从第一状态模块实例化向开发者交换系统发送第二功能模块请求。指令包括,响应于根据第二功能模块请求从开发者交换系统接收不同的第二功能模块,从功能模块数据存储器删除第一功能模块。

在其他特征中,指令包括响应于功能模块请求,从开发者交换系统接收功能模块标识符。指令包括,仅响应于所接收的功能模块标识符与存储在功能模块数据存储器中的功能模块标识符不匹配,向开发者交换系统发送请求,以提供第一功能模块。

在其他特征中,指令包括识别存储指令的设备上安装的应用,识别设备上的活跃账户,并通过包括与活跃账户有关的数据和与所识别的应用有关的数据来准备功能模块请求。计算机设备包括非瞬态计算机可读介质和执行来自非瞬态计算机可读介质的指令的处理硬件。在其他特征中,计算设备是智能手机。

根据详细的说明书、权利要求书和附图,本公开的其它适用范围将变得清楚。详细描述和具体示例仅用于说明的目的,并不旨在限制本公开的范围。

附图说明

根据详细的说明和附图,将更加完全地理解本公开。

图1是根据本公开原理的组合功能框图和图形化用户界面示例。

图2是示例功能本体的图形化表示。

图3是表明本公开的原理如何能够用在移动应用生态系统中的高级功能框图。

图4是示例开发者门户的简化图形化用户界面。

图5描述发送到功能交换系统的示例功能请求的示例内容。

图6A至图6C描述响应于功能请求所返回的回复的示例内容。

图7是示例开发者门户的高级功能框图。

图8是示例功能模块记录格式的图形化表示。

图9是根据本公开的原理所开发的应用中的示例动态执行代码的部分框图。

图10是开发者门户的示例操作的流程图。

图11是应用中的动态执行代码的示例操作的流程图。

图12是示出多个开发者与功能交换系统之间的交互的高级示意图。

图13是功能模块记录的另一示例格式的图形化表示。

图14是组合的功能框图与图形化用户界面示例。

图15是示例功能交换系统开发者界面的图形化用户界面。

图16是功能交换系统的另一开发者界面的图形化用户界面。

图17是开发者与功能交换系统之间的示例交互的流程图。

图18是用户设备与功能交换系统之间的示例交互的流程图。

在附图中,可以重复使用参考标记来识别相似和/或相同的元件。

具体实施方式

应用(这里可替换地称为app(应用))的开发者一般专注于针对有限数量的功能来提供良好的用户体验。例如,应用开发者可以集中于提供准确且直观呈现的电影放映时间,而可以不把精力投入到提供其他相关的功能,诸如地图或者到影院的导航方向。需要注意的是,应用提供的功能也可以描述为应用能够执行的动作。

应用开发者通常喜欢将客户保留在它们自己的应用中,提高与该应用的参与度并且提供最无缝的用户体验。然而,尝试复制来自另一应用的功能在其他功能不是该开发者的核心力量的时候可能不会提供更好的用户体验。例如,如果开发者擅长呈现电影放映时间并且拥有有价值的数据以及放映时间有关的处理算法,那么该开发者可能不是基于GPS的地图绘制软件开发方面的专家。因此,那个开发者应该依靠他人来提供地图绘制功能。

为了访问另一应用的功能,开发者可以在写他们的代码时对于另一应用的参考进行硬编码。在一些情况下,很可能在操作系统中可以使用特定的应用。例如,开发者有理由期望在运行安卓操作系统的智能手机上可以使用谷歌地图的地图绘制软件,虽然该通用规则存在着明显的例外,尤其是在美国之外。

然而,即使安装了应用,用户也更喜欢使用不同的应用。对于大多数其他类别的应用,诸如影评应用或餐厅评价应用,不保证将会存在任何特定的应用。因此,硬编码访问一个或多个特定的应用是猜想中的练习。而且,应用生态系统的不断发展意味着在任何类别中最受欢迎、安装范围最大、以及最实用的应用是不同的并且是随时间而变化的。

对于特定的功能,请求被传递到操作系统。例如,为了绘制地址的地图,能够将地图绘制请求传递到操作系统。操作系统可以向用户呈现服务于该地图绘制请求的已安装应用列表。操作系统可以允许用户选择应用中的一个应用作为预设,并且一旦该预设被选择,平均用户可以永远不会再次访问该选择。特定的操作系统可能不存在针对特定请求的选择,而是将选择传递到预设的应用或服务,除非用户做出具体的配置改变。

应用开发者与向用户提供有价值功能的其他应用进行集成的能力有限并且难以实现。对于开发者也没有相互达成商务关系的系统方式。本公开描述了一种功能交换系统,其中开发者能够作为生产开发者并且向功能交换系统提供与特定功能有关的功能代码,而作为消费开发者的开发者能够将功能代码集成到他们自己的应用中。

这种集成可以在开发期间执行,诸如在电影放映时间应用开发者集成来自生产开发者的用于地图绘制的功能代码的时候。在其他实施方式中,放映时间应用可以从功能交换系统动态地请求地图绘制功能代码,诸如当应用首次在用户设备上执行时或者以定期间隔执行时。在各种实施方式中,当向用户显示放映时间应用的屏幕(也称为状态)时,其中地图绘制功能是相关的,从功能交换系统请求功能代码。

如果来自生产开发者的功能代码被更新,则消费开发者应用可以更新已存储的功能代码的副本。这样的更新可以在挽式配置(pull configuration)中执行,其中消费应用定期检查功能交换系统以查看更新是否可用。在其他实施方式中,功能交换系统可以将更新向外推送到应用。在另外的示例中,当消费应用第一次下载功能代码时,消费应用可以订购来自功能交换系统的更新。

由生产开发者所提供的功能代码(以下将称之为功能模块)可以采用各种形式。例如,功能模块可以特定针对特定的实体。换言之,提供的功能模块可以针对单个实体来执行功能。例如,地图绘制软件的生产开发者可以提供功能模块,一个功能模块针对将要绘制地图的每个可能位置。消费开发者基于感兴趣的位置来指定想要哪个功能模块。

例如,电影放映时间开发者可以从特定针对影院位置的地图绘制软件生产开发者选择功能模块。消费开发者然后选择电影放映时间应用所覆盖的其他影院中的每个影院的功能模块。在其他实施方式中,功能可以对于实体是通用的。换言之,地图绘制软件的生产开发者可以向功能交换系统提供允许绘制任何位置的地图的功能模块,或者至少特定地理位置(诸如,美国本土)中最热门的位置。

功能模块本身可以包括变化复杂级别的软件代码或者可以简单地包括静态数据。例如,特定位置的功能模块可以包括围绕该位置的地图图像。用户对于图像的选择可以将用户链接到将要向用户提供交互式地图绘制的另一应用。图像可以由文本信息来补充和/或替换,诸如应用的名称、应用受欢迎度有关的信息等。

产生的预览可以描述为深度观看卡,并且与到达能够提供另外的交互的另一应用的深度链接,诸如通过提供交互式地图显示、导航方向等。深度链接是指用户被直接带到地图绘制应用中的期望位置,与被带到地图绘制应用的预设状态相对。

应用的深度观看卡或者应用的状态展示另外的信息,不只是应用的标识或应用状态。例如,信息可以包括应用状态的标题或者应用状态的描述,其可以是来自应用状态的一小段文本。从应用状态可以提供其他的元数据,包括图像、位置、评价数量、平均评价以及状态指示符。例如,“现在营业”或“歇业”的状态指示符可以根据当前时间是否在业务的营业时间内来应用于业务。

一些深度观看卡可以强调导致将深度观看开选择为搜索结果的信息。例如,可以以黑体或斜体示出与用户查询相匹配的深度观看卡中的文本。深度观看卡也可以并入允许直接行动的要素,诸如立即调用建立的能力或者直接切换到地图绘制应用从而得到到达建立的导航方向的能力。与深度观看卡的其他交互(诸如轻敲或点击深度观看卡的任何其他区域)可以将用户带到所指示的状态或应用。如下面详细描述,这可以通过打开相关的应用来完成,或者如果未安装应用,通过打开与期望的应用状态相关的网站来完成。在其他实施方式中,为了达到期望的应用状态,可以下载、安装然后执行未安装的应用。

换言之,深度观看卡包括应用或者状态的指示,以及来自应用或状态本身的附加内容。附加内容允许用户对于选择哪种结果做出更为明智的选择,并且甚至可以允许用户在不必导航至应用状态的情况下直接执行动作。如果用户想要执行的动作是获得信息,在一些情况下,深度观看卡本身可以提供必要的信息。

功能模块可以包括供不同尺寸的深度观看卡使用的多个图像。消费开发者可以保留深度观看卡的状态的特定部分,并且不同的尺寸允许针对期望的尺寸对于图像进行特定调整。功能模块可以包括用于创建深度观看卡的代码,其可以包括选择合适尺寸的图像和/或缩放图像。

功能模块还可以包括创建预览图像的深度观看创建代码。例如,深度观看创建代码可以查询设备上的应用或者服务器,从而生成示出感兴趣位置的图像。深度观看创建代码也可以生成深度链接,当用户选择深度观看看时将跟随该深度链接。深度观看创建代码可以从消费开发者所写的代码接收诸如位置的信息。

继续地图绘制的示例,深度观看创建代码从生产开发者有关的源请求地图绘制数据和/或地图绘制数据的图像。这个源可以是安装在用户设备上的生产开发者的应用,或者可以是生产开发者操作的服务器系统。

例如,消费开发者可以集成实体通用的来自地图绘制供应商的功能模块。当向用户展示影院的状态时,消费应用将影院位置传递给功能模块。功能模块查询生产开发者的地图绘制服务器并且创建深度观看卡。作为一个示例,深度观看卡包括地图中影院位置的预览图像,以及到达影院位置在生产开发者应用中的深度链接。

深度链接可以包括将生产开发者应用开放至特定状态的编程调用。深度链接可以包括到达生产开发者应用的网络版本的统一资源定位符(URL)。深度链接可以包括将生产开发者的应用开放至预设状态的脚本,然后导航至该预定状态。URL可以用在生产开发者的应用未安装在用户设备上的情况。

在一些实施方式中,当选择深度观看卡时,一些或者所有的功能模块可以包括不但体现深度观看卡而且提供附加功能的代码。例如,地图绘制应用的生产开发者可以生成功能模块,该功能模块包括提供交互式地图必要的所有代码。该功能模块然后能够在不向外链接到其他应用的情况下,在消费开发者的应用内提供交互式地图。因此,功能模块可以包括创建深度观看卡的代码、基于GPS和Wi-Fi信号来识别位置的代码、以及用于从地图绘制服务器获得地图数据的代码。

功能模块还可以包括实现允许用户与地图进行交互的用户界面的代码。功能模块所创建的用户界面可以是当用户选择地图的深度观看卡片是开放的分开状态。在一些实施方式中,功能模块可以允许在不切换到另一状态的情况下,操纵深度观看卡本身中的地图的图像。

当消费开发者开发应用(称为第一应用)时,消费开发者可以从来自特定生产开发者的功能交换系统获得功能模块。例如,消费开发者可以利用功能交换系统识别来自诺基亚公司的地图绘制功能模块。

在其他实施方式中,消费开发者可以从功能交换系统建立的实体(例如,见图2)选择特定功能。换言之,消费开发者可以选择与“示出位置的交互式地图”对应的功能。

当第一应用在用户设备上执行时,第一应用可以查询功能交换系统,请求呈现位置的交互式地图的功能模块。基于用户设备有关的数据和实现所请求的功能的各种功能模块有关的数据,功能交换系统提供功能模块返回到第一应用。第一应用执行该功能模块,诸如由来自功能交换系统的代码实现的沙箱内。沙箱可以显著地显示该功能模块与用户设备的交互,诸如通过限制用户设备的硬件资源、其他应用以及预定义范围之外的任何存储器的访问。

第一应用因此能够在不硬编码地参考任何特定应用开发者的功能模块的情况下提供期望的功能。每当执行所下载的功能模块时,第一应用可以查询功能交换系统来查看是否推荐有新的功能模块或者现有功能模块的新版本。在其他实施方式中,第一应用可以只在从上次查询经过预定时间段之后查询功能交换系统,诸如24小时。

功能交换系统可以向消费开发者提供动态地检索、更新和执行功能模块所需要的代码。该代码可以在开发期间集成到第一应用中。功能交换系统所提供的代码可以作为数据库或分组来提供,并且可以包括作为软件开发套件(SDK)的部分。消费开发者识别哪个功能是所期望的可以使用SDK来执行,或者可以使用功能交换系统的网络门户来指定。

在图1中,示出运行在用户设备104(诸如,智能手机)上的不复杂的放映时间应用100。搜索栏108允许用户搜索特定的电影(在此情况下,虚构的“霍比特人XIII(The Hobbit XIII)”)。放映时间应用100可以示出用户设备104的当前位置周围的影院,或者可以允许用户使用“改变位置”按钮112来指定位置。

示出结果,包括AMC Plaza 20(AMC广场20)影院结果116-1和MJRTownplace 16(MJR市镇广场16)影院结果116-2。结果116-1包括电影时间120、“购票”按钮124以及深度观看卡128,该深度观看卡128示出影院位置的示例地图,伴随以星形所表示的影院。

放映时间应用100包括来自功能交换系统132的代码,该功能交换系统132响应于放映时间应用100的状态(或屏幕)被激活而运行。代码向功能交换系统132发送功能模块请求136。功能模块请求136指定功能ID 140以向功能交换系统132指示哪个功能是期望的。在此情况下,将期望的功能示出位置的地图。功能模块请求136也可以包括经过汇集的信息144,诸如安装在用户设备104上的地图绘制应用。

功能交换系统132响应功能模块148。功能模块148允许放映时间应用100显示深度观看卡128的地图。如上所述,功能模块148可以包括在深度观看卡128中示出的图像,或者可以包括允许检索和/或生成图像的代码。如果功能模块是实体特定的,针对结果116-2可以从功能交换系统132检索到另一功能模块。

在图2中,功能交换系统132的操作者开发出的功能本体200包括可以代表不同工业垂直领域的多个分支节点(诸如,地图绘制204-1和餐厅204-2)。功能本体200包括叶节点,诸如地图绘制分支节点204-1之下的街道地址地图绘制208-1和带有卫星影像的街道地址208-2。

每个叶节点对应于一个或多个应用提供的特定功能。地图绘制分支节点204-1之下的导航方向分支节点212包括用于自动导航方向的叶节点216-1、步行导航方向的叶节点216-2和公共交通导航方向的叶节点216-3。功能本体200还包括餐厅分支节点204-2之下的用于评论的叶节点220-1、业务信息的叶节点220-2、以及预定的叶节点220-3。

功能本体200可以以各种方式被配置并且可以以变化的粒度等级来划分。例如,叶节点208-1和208-2可以组合在共同的街道地址分支节点之下,其中叶节点208-1将简单地不指定卫星影像,而叶节点208-2将指定卫星影像的存在。

可以由功能交换系统132的操作者基于例如有多少应用执行每个功能来做出如何构建功能本体200的决定。如果叶节点存在着指定只由一个应用执行的功能,该叶节点可以与其他的叶节点进行组合,使得能够进行应用的选择。

当消费开发者执行他们应用感兴趣的功能时,该功能可以被指定为与特定功能对应的叶节点,或者作为与各种功能对应的分支节点。例如,如果功能模块提供的特定的地图绘制功能不重要,消费开发者可以将地图绘制(分支节点204-1)指定为想要的功能。然而,如果消费开发者需要功能模块包含公共交通,则消费开发者将指定叶节点216-3用于公共交通导航方向。

在图3中,示出整个应用生态系统的高级总览。生产开发者300向功能交换系统304提供一个或多个功能模块。消费开发者308与功能交换系统304来指定选择的功能。应用开发者可以工作在作为生产开发者300的生产角色和在作为消费开发者308的消费角色。

功能交换系统304可以向消费开发者308提供一个或多个功能模块。在另外的实施例中,功能交换系统可以向消费开发者308提供动态执行模块。动态执行模块将允许消费开发者308开发的应用从功能交换系统304获取功能模块。

消费开发者308将动态执行模块或特定功能模块并入到开发中的应用(在图3中称为“应用A”)。应用A被提供给数字分发平台312,诸如谷歌公司的PLAY(播放)数字分发平台或者苹果公司的APP STORE(应用商店)数字分发平台。

用户设备104的用户从数字分发平台312下载应用A。当在用户设备上执行应用A时,应用A内的动态执行模块向功能交换系统304做出功能请求,并且从功能交换系统304接收功能模块。

如上所述,可以仅当向用户设备104呈现功能模块需要的状态时,激活动态执行模块316。在另外的实施方式中,动态执行模块316可以在每次应用启动时做出该功能请求。通过这种方式,功能模块的下载可以在后台执行使得当向用户显示对应状态时没有等待。

虽然图3示出组件之间的有效数据流,大多数情况下,生产开发者300、消费开发者308、数字分发平台312、功能交换系统304以及用户设备104可以经由网络320进行通信。网络320可以不是单个网络而是可以包含局域网络、移动电话供应商的专用网络、以及诸如互联网的分发通信网络。

在图4中,示出功能交换系统304的开发者门户400。消费应用开发者(称为应用开发者A)如404所示登录开发者门户400。应用开发者A能够使用用户界面要素408登出。应用开发者A可以使用应用界面412来指定设置并且选择特定应用的功能模块。在这种情况下,特定应用称为应用A。

在其他的实施方式中,应用开发者A可以简单地浏览可用的功能并且选择感兴趣的功能模块,而不需要开发者门户400接收有关功能将用于哪一个应用的任何信息。使用应用接口412,服务器门户400能够帮助应用开发者A跟踪哪些功能具体用于应用A。

作为单个示例,应用开发者A能够使用“后一个”用户界面要素416来查看接下来的应用的信息,或者使用“前一个”用户界面要素420来查看先前的应用。应用开发者A可以使用用户界面要素424指定支付偏好。例如,每个功能模块可以带有基于使用功能模块的次数计算出的价格。

列表428显示针对应用A已经建立的功能。点击列表428中的功能中的一个可以激活新建/编辑功能界面432。诸如“X”的界面要素436可以引起从功能列表428删除功能。“添加”用户界面要素440可以允许使用新建/编辑功能界面432选择的新功能。

阻止列表444确立应用开发者A不想用作功能模块的应用。阻止列表444也可以识别待避免的特定开发者。使用“选择”界面要素452可以选择明确的应用或应用开发者列表448。“管理模式”用户界面要素456允许应用开发者A指定莫斯,诸如利用通配符来识别将要避免的应用或开发者。

在图4中,伴随匹配模式的两个应用或应用开发者,示出了第一模式460-1,同时第一模式460-2示出了匹配模式的四个应用或开发者。例如,只有应用开发商A是山姆会员仓储中心折扣零售商,一个指定的模式可以对应于好事多(COSTCO)折扣零售商。好事多模式可以在“好事多”之前和之后包括通配符,以便识别并且阻止任何好事多应用。

在新/功能界面432中,呈现出功能特定的阻止列表464。特定功能的阻止列表464可以与阻止列表444类似地配置,允许应用开发者A识别出不应当响应于来自应用A的请求而提供的应用或应用开发者。虽然在图4中未示出,可以向应用开发者A全局提供诸如阻止列表444的阻止列表,其将应用于应用开发者A提供的所有应用。

用户界面选项菜单468可以允许应用开发者A指定将提供特定功能的功能模块的显示参数。例如,选项可以包括将示出功能模块的预览的宽度和高度。用户界面选项菜单468可以提供多个选项来允许功能模块的图形化输出从而匹配应用A的观感,诸如字体、字号、颜色等。

可使用功能列表472允许应用开发者A识别应用A感兴趣的功能。过滤器476允许应用开发者A基于例如关键字搜索来过滤可使用功能的列表。由消费开发者选择多个功能中的一个功能。在一些实施方式中,如上所述,消费开发者可以选择功能群组或者功能类别,其可以对应于功能本体的分支节点。在一些实施方式中,可以通过功能本体的图形化示意图来补充或替换列表472。诸如图2中所示的树形图可以示出为每个分支坍缩为单个节点,使得能够同时看到功能本体中的一些或所有。用户然后只扩大沿到达感兴趣功能的路径的分支。

一旦功能被选择时,可以向开发者展示满足该功能的功能模块的当前集合。如下面关于图8所述,可以显示关于每个功能模块的各种元数据,包括用户如何与功能模块交互的屏幕快照。这些屏幕快照允许消费开发者确认所选择功能对应于消费开发者具有的需求。当在阻止列表464和UI选项468做出任何期望的选项时,用户界面要素480指示新的或者现有的功能的编辑完成。

一旦确定所有感兴趣的功能时,应用开发者A激活下载UI要素484。当激活下载UI要素484时,可以将定制数据库提供给应用开发者A用于集成到应用A中。在各种其他实施方式中,向应用开发者A提供与功能列表428对应的一组API调用,用于与为应用开发者A提供的通用SDK库一同使用。

软件开发套件(SDK)可以在配置应用的同时下载或者可以当应用开发者A首次开始使用开发者门户400时下载。SDK可以与应用开发者A的编程环境进行集成,诸如集成的开发环境。

SDK可以允许应用开发者A以最少的努力插入多个功能中的一个功能。例如,应用开发者A可以指定应当提供功能所处的状态的区域,并且SDK提供动态执行代码,该动态执行代码将识别、下载和执行功能模块从而在所执行的区域中提供该功能。

应用开发者A全局地、每个应用地或者每个功能地选择的设置可以在应用A中捕获,诸如对于开发者门户400提供的数据库的特定API调用。类似地,所有这些设置也可以发送到功能交换系统304。当功能交换系统304识别应用、开发者、或者所请求的功能时,功能交换系统304可以查询所设立的设置。

在图5中,可以利用功能交换系统304的公钥来加密功能请求504的示例内容,使得内容无法被窃听者窃听。功能标识符504-1诸如使用预先设置的代码来识别哪个功能时发送的应用所期望的。期望的预览微件尺寸字段504-2可以指定为功能模块预留的区域的宽度和高度。

在504-3,提供了已安装应用的表示。例如,可以包括所有已安装应用的穷尽列表,包括标题和版本号。在一些实施方式中,可以针对最受欢迎的一百个应用执行一个位的字段。换言之,一百个二进制数字对应于这些应用中的每个应用是否安装,零表示应用未安装,而一表示应用已安装。为了允许这种缩短的位字段格式,必须预先设置应用集合。虽然将一百用作示例,为了有效存储,可以使用二的幂次(诸如128)。

使用有限数量的位来表示已安装应用的另一机制是布隆过滤器。布隆过滤器指定来自预定义应用集合的应用是否可能安装在设备上或者应用是否确实未安装。换言之,为了完成存储压缩,布隆过滤器的输出并不确定地说明特定的应用存在;布隆过滤器输出只确定地说明特定的应用是否不存在。

已安装账户数据结构504-4可以报告用户设备上存在哪些账户,以及可能有用的这些账户有关的任何相关细节。这可以影响结果的相关程度。例如,如果用户已经表达对于流传输电影的兴趣,但是他们在特定服务上的账户部允许该电影的流传输,对应的状态将受到减分。账户数据结构504-4可以另外或者可替换地报告哪些账户活跃在用户设备上,以及任何其他的可用数据,诸如上次访问该账户是多久以前。

在504-5,指定阻止列表。该阻止列表可以补充功能交换系统132中已经存在的阻止列表,或者可以是独立的阻止列表。阻止列表可以基于功能交换系统132事先已知的功能模块或应用开发者的唯一标识符来列出不返回的功能模块。

在504-6,发送功能请求504的设备的规格可以包括操作系统和操作系统版本号。规格也可以包括设备的地理位置数据、发送功能请求504的应用的标识,该应用的应用开发者的标识、屏幕分辨率、肖像/风景定向,以及传感器能力(加速度计的精确度、存在心率传感器等)

功能交换系统132可以使用应用或者应用开发者标识从而应用开发者门户400提供的预先设置的参数,诸如阻止列表。功能交换系统132也可以使用应用标识来从结果移除与应用本身有关的功能——换言之,为了避免返回简单地重复请求应用的一部分的功能的功能模块。而且,功能交换系统132可以将存储从应用标识到期望功能的映射,使得应用标识表示感兴趣的功能。在此情况下,可以省略功能标识符504-1。

在图6A中,示出第一回复550,功能交换系统304将其发送到动态执行模块316。第一回复550包括功能模块ID 550-1,其指定功能交换系统304所选择的与动态执行模块316请求的功能相匹配的功能模块的唯一ID。

功能模块ID 550-1也可以包括版本号。版本号允许动态执行模块316评价功能模块的较新的版本是否可以使用。如果动态执行模块316没有功能模块ID 550-1识别的功能模块的副本,或者如果功能模块的版本过期,动态执行模块316从功能交换系统304请求功能模块。该请求可以简单地包括功能模块ID 550-1的副本。

响应于针对功能模块的明确请求,可以发送如图6B中所示的第二回复560。第二回复560包括通过功能模块ID 550-1识别的功能模块560-1的副本。加密签名560-2可以防止中间人攻击对于功能模块560-1的损坏。

在各种实施方式中,功能交换系统304可以发送如图6C中所示的组合回复570。当功能交换系统304知道还没有向动态执行模块316发送功能模块时可以发送组合回复570。在其他的实施方式中,简单地发送组合回复570使得功能模块的下载不等到动态执行模块316与功能交换系统304之间的另一轮通信。

在图7中,将功能交换系统304的示例实施方式示出为框图。功能交换系统304的用户界面600允许应用开发者604(其可以工作在生产角色或者消费角色)与功能交换系统304进行交互。用户界面600可以作为可以在互联网使用的网站来实现。

开发者认证模块608存储开发者的凭证并且安全地将每个开发者认证到功能交换系统304。开发者认证模块608可以在开发者数据存储器612中存储凭证。可以根据最佳操作来存储凭证,诸如通过向凭证添加加密盐值并且使用强大的散列函数,诸如PBKDF2(基于密码的密钥产生函数2)。

阻止管理模块616允许开发者指定与功能模块或功能模块的开发者相匹配的模式,其中响应于功能模块请求不应当提供匹配。阻止的模式和明确选择的功能模块以及应用开发者存储在开发者数据存储器612中,并且可以关联于表示如下信息的元数据:是否针对该开发者的所有应用、针对开发者的特定应用、或者针对一个或多个应用的特定功能阻止这些应用。

生产者模块620允许生产开发者向功能模块数据存储器提供功能模块。生产开发者可以提供存储在每个功能记录中的元数据,包括预览、依赖性等。生产开发者可以跟踪他们的功能模块的使用并且更新这些功能模块。

货币化偏好模块624存储允许消费和生产应用开发者向功能交换系统304和/或彼此进行支付并且接收支付的支付偏好。在各种实施方式中,消费应用开发者可以接收用于将流量指向功能模块或者生产开发者的应用的补偿。而且,因为生产开发者功能模块的使用可以驱动对于生产开发者的更多了解或参与,所以生产开发者可以向功能交换系统304付费。

另外,可以在功能模块显示的用户界面的内部或附近显示广告,并且可以与功能交换系统以及生产开发者和消费开发者中的一个或者两者分享与这些广告有关的收益。换言之,生产开发者会想要为了向消费开发者和/或使用消费开发者应用的终端用户推广他们的应用而付费(例如,根据每个印象的费用,每次点击的费用、或者每次安装的费用)。

应用功能管理模块628允许消费开发者基于存储在功能模块数据存储器632中的功能本体来识别和选择一个或多个功能或功能模块。在各种实施方式中,消费开发者能够从功能本体选择功能,并且在运行时,将会把与这些功能匹配的功能模块提供给消费开发者的应用。

在其他实施方式中,可以在开发应用期间向消费开发者提供功能模块。在另一情况下,功能交换系统304可以允许应用开发者指定准确的功能模块,其将被提供给应用开发者用于集成到开发中的应用,或者由功能交换系统304在运行时间提供给该应用。

功能交换系统304不鼓励功能模块的明确选择,因为这限制向消费开发者提供改进或者更有利的功能模块的未来机会。提供改进的功能模块可以为了更好的用户体验、更受欢迎、具有更好的安全性或者更近被更新。应用功能管理模块628也可以每个开发者正在开发的与功能交换系统304合作的各种应用,包括每个应用的名称和其他参数。

集成模块636向应用开发者604提供动态执行代码。该动态执行代码可以提供允许功能模块在应用开发者604开发的应用内执行的沙箱。集成模块636可以将动态执行代码调整到开发者数据存储器612中存储的偏好,并且可以包括来自功能模块数据存储器632的一个或多个功能模块。

集成模块636可以创建API(应用编程接口)调用,其允许应用开发者604开发的软件例程调用动态执行代码。这些API调用可以从开发者数据存储器612指定细节,诸如阻止的列表数据、确定用户界面的尺寸以及期望功能的标识。

集成模块636向应用开发者604提供生成的代码。生成的代码可以包括源代码、目标代码、数据库、标头文件和源(诸如图像和字体)。在API调用封装针对应用开发者604特定的所有设置的实施方式中,动态执行代码可以是在所有开发者中相同的静态数据库。通过这种方式,集成模块636提供给应用开发者604的API调用允许动态执行数据库在请求功能使用标准化数据库的同时使用来自应用开发者604的设置。

在应用开发者604开发的应用的运行期期间,递送模块640为来自动态执行模块316的请求服务。递送模块640可以从开发者数据存储器612获取信息,诸如是否存储阻止列表,以及甚至应用开发者想要哪些功能ID。

在其他实施方式中,直接从动态执行模块316接收期望功能的表示。递送模块640如下面更详细所述识别将要提供期望功能并且与任何合格要求相匹配的候选功能模块。例如,一些功能模块可以要求特定的操作系统或者真实特定的操作系统版本。其他的功能模块可以要求待安装的特定应用。

递送模块640然后将候选功能模块排序,诸如基于受欢迎度、对于一个或多个功能交换系统304的收益、消费应用开发者和生成开发者、和/或一些其他量度,诸如功能模块最近被更新得如何。递送模块640然后将排名最高的功能模块提供给动态执行模块316。

在图8中,示出存储在功能模块数据存储器632中的功能模块记录的示例格式700。功能模块ID 704可以唯一识别功能模块数据存储器632中的功能模块。功能模块元数据708包括可以唯一识别功能本体内的功能的功能ID 708-1。功能类别708-2可以识别功能本体内的功能之上的分支节点。

输入参数708-3表示功能模块可以提供或需要的参数和值的类型。例如,提供地图绘制服务的功能模块可能需要输入所位于目的地并且可能选择性地允许输入当前位置。

依赖性字段708-4表示为了允许该功能模块用户设备必须满足的条件。例如,只有当可以指定嵌入在应用中的动态执行数据库的版本时,才可以指定操作系统和可接受的版本号。依赖性708-4页可以指定用户设备上必须按照那个应用或者哪些应用和/或用户设备上必须激活哪些账户。

预览尺寸字段708-5表示功能模块的整个深度观看卡或者功能模块的深度观看卡的图像部分的尺寸。例如,深度观看卡可以通过将功能模块生成的图像放置在功能模块或者寄主应用生成的文本附近来创建。预览尺寸可以通过像素数量来指定并且可以包括高度和宽度。

受欢迎度/排名字段708-6可以执行功能模块的全时(all-time)受欢迎度或者该功能模块开发自哪个功能模块。在其他实施方式中,受欢迎程序可以基于优先的时间帧来确定,诸如过去的月或年。受欢迎度也可以反映受欢迎的衍生值(诸如下载速度——也就是应用的下载增长得有多快)。

受欢迎度也可以基于寄主应用使用功能模块的频率。受欢迎度也可以基于功能模块被消费开发者选择或者由功能交换系统304选择用于提供动态执行模块的频率。排名可以基于应用或功能模块的用户反馈,并且可以基于外部数据源,诸如评论、博客张贴、数字分发平台排名等。

示例用户界面字段708-7可以呈现用户可以如何与功能模块交互的一个或多个屏幕快照。这些可以显示在开发者门户中,从而允许消费开发者确定功能模块与消费开发者的目标匹配得如何。

功能模块712包括预览生成代码712-1,其用于提供在消费开发者应用的用户界面中使用的深层观看卡。预览可以包括如果功能模块被选择指示将提供什么的图形化信息,并且也可以包括独立可执行数据。该独立可执行数据可以允许用户在不需要激活功能模块的请情况从功能模块获得必要的信息,或者保留消费开发者应用的当前状态。

操作性代码712-2可以在功能模块被激活时实现功能。例如,如果功能模块提供地图绘制能力,预览生成代码712-1可以在指定位置附近提供地图的简单预览。通过激活功能模块,操作代码712-2可以提供允许全景、滚动、缩放的交互式地图。

访问机制712-3可以用于取代操作代码712-2,或者可以允许访问使用操作代码712-2可使用的功能以外的附近功能。当功能模块被驱动时,一个或多个访问机制712-3可以用于将另一应用开启到期望的状态从而提供该功能。继续地图绘制的示例,访问机制712-3中的一个可以打开存储在用户设备上的地图绘制应用,其中的用户设备来自开发该功能模块的同一开发者。该地图绘制应用因此可以被指定为依赖性字段708-4中的依赖性。当操作代码712-2可以允许交互式地图时,该交互式地图允许全景和缩放,访问机制712-3中的一个访问机制可以用于到达地图绘制应用,该地图绘制应用能够显示附加信息,诸如卫星影像或自行车路线。

资源712-4可以包括用户界面创建所需要的要素,包括图像、字体、样式表等。

在图9中,示出示例应用(应用A 800)中的各种功能块的示例。应用A800可以包括应用状态的多个模块。这些模板定义应用A 800的每个状态(有时称为屏幕)的内容。一个应用状态模板804包括功能预览微件808,其中将要示出功能模块生成的预览。

应用状态模板804可以指定,当基于应用状态模块804实例化应用状态时,将向动态执行模块812发送触发信号。动态执行模块812可能已经由功能交换系统304提供给开发者应用A 800并且在开发期间集成到应用A 800中。

动态执行模块包括查询封装其模块816,其设定将要发送到功能交换系统304的查询(或请求)。该请求可以基于已安装的应用模块820,该应用模块820识别用户设备上已经安装的应用并且向查询封装器模块816提供已安装应用的表示。

账户识别模块824识别用户设备上的活跃用户账户。例如,具有流传输视频操作器的账户可以表示能够从该供应商流传输一些或者所有电影作为现有订阅服务的一部分。这可以允许功能模块对应于功能交换系统304将要提供的流传输视频操作器。

指定功能存储器828存储应用开发者针对每个应用状态模块选择的功能。功能预览微件808与功能对应,并且指定功能存储器828记录是哪个功能。在其他实施方式中,动态执行模块812可以是软件的预设部分,诸如数据库。在此情况下,指定功能存储器828可以由API调用中的参数来代替。应用状态模块804然后可以存储这些API调用,并且针对查询封装器模块816的触发消息将指定API调用中的期望功能。

触发消息和/或指定功能存储器828页可以向查询封装器模块816传达附加设置(可替换地,可以由功能交换系统304来存储),诸如阻止列表准则。查询封装器模块816设置如图5中所示的查询。

功能交换通信模块832与功能交换系统304通信。功能交换通信模块832向功能交换系统304提供所设立的查询,并且接收作为响应的功能模块和/或所指定的功能模块的指示。

基于功能模块的标识,功能交换通信模块832然后可以请求提供整个功能模块。在其他实施方式中,如上所述,可以立即发送功能模块而不管动态执行模块812是否已经接收到功能模块。功能交换通信模块832将接收到的功能模块存储在功能模块数据存储器836中。

功能模块数据存储器836可以作为关系数据库来实现,诸如MySQL开源数据库的轻量级实现。数据库可以针对经由功能交换通信模块832获取的每个功能模块拥有一个记录。每个记录可以具有诸如以下字段:模块名称、版本号、获得日期、最后检查更新的日期、是否需要访问互联网等。每个记录也可以包括到达包括功能模块代码的文件的指针。在各种实施方式中,功能模块数据存储器836的数据库模式可以是功能交换系统304的功能模块数据存储器632所使用的模式的子集。

功能执行模块840执行与应用A 800的背景中的功能预览微件808对应的功能模块。在其他实施方式中,功能模块可以在应用A 800内的沙箱中执行,或者可以在于应用A 800分开的沙箱中执行。沙箱可以由用户设备的操作系统来提供或者由动态执行模块812自身来体用。

功能模块的执行提供在功能预览微件808内显示的信息,诸如文本和图形。当用户驱动(诸如通过触摸或点击)功能预览微件808时,执行功能模块识别出需要附加的操作。执行功能模块可以创建新状态或者可以向与应用状态模板804对应的状态提供附加的用户界面要素。在其他的实施方式中,执行功能模块可以使用访问机制来打开或者安装并且打开提供附加功能的应用。当从功能模块创建的状态或用户界面要素退出时,与应用状态模块804对应的状态可以再一次处于应用A800的前台。

在图10中,功能交换系统304的示例操作开始于904。如果认证到功能交换系统304的开发者有要上传的功能模块(作为生产开发者的开发者角色中),控制转移到908;否则控制转移到912。在908,控制接收来自生产开发者的功能模块,并且在916处继续。在916,控制将接收到的功能模块存储在功能模块数据存储器中,并且在920处继续。在920,控制允许生产开发者针对每个功能模块指定货币化和广告参数。控制然后在912处继续。

在912,如果开发者正在搜索功能模块(作为消费开发者的角色),控制转移到924;否则,控制转移到928。在924,控制允许选择从诸如树的图形化表示或列表选择出的功能。列表或者图形化表示可以经过过滤和/或是由开发者搜索的关键字。在932,控制允许开发者规定各种设置,诸如阻止列表设置。控制在936处继续,其中向消费开发者提供动态执行代码。控制在928处继续。

在928,控制确定是否从功能的动态执行模块接收到查询。如果有,控制转移到940;否则,控制返回到904。在940,控制基于查询所指定的依赖性来识别功能模块的考虑集合。例如,考虑集合将包括与所指定的功能ID相匹配的功能模块,在指定的操作系统和版本上执行的功能模块、以及只需要由查询指示将要安装的应用的功能模块。控制在944继续,其中如果考虑集合是空的,控制转移到948;否则,控制转移到952。在948,控制向动态执行模块返回错误消息。该错误消息可以由动态执行模块显示给用户,或者可以由寄主应用来捕获和/或处理。控制然后返回到904。

在952,控制将功能模块的考虑集合进行排名。如上所述,排名可以包括基于经过加权的和或者各种因子的平均来确定每个应用的量度。因子可以包括受欢迎度、所请求的UI微件尺寸等。排名然后识别具有最高量度的功能模块。功能模块的考虑集合可以进行分类,诸如同使用快速分类算法,使得第一或最后的功能模块具有最高的量度。控制在956处继续,其中排名最高的功能模块被选择并且发送到动态执行模块。控制然后返回到904。

在图11中,包括动态执行模块的寄主应用的示例操作开始与1004。在1004,用户从数字分发平台下载应用(称为应用A)到用户设备。在1008处,如果执行应用A,则控制在1012处继续;否则控制保持在1008。在1012,控制确定是否进入应用A内的功能模块的状态。如果是,控制转移到1016;否则,控制返回到1008。

在1016,控制收集用户设备上的数据,诸如已安装的应用和活跃账户。在1020,控制向功能系统发送包括预定功能标识符和收集到的数据的请求。在1024,控制等待来自功能交换系统的回复。一旦接收到回复,控制转移到1028;否则,控制仍然在1024。在1028,控制确定回复所指定的功能单元是否已经安装在本地数据存储器中。如果是,控制转移到1032;否则,控制转移到1036。

在1036,控制下载回复中所指定的功能模块,诸如通过向功能交换系统发送请求。控制然后在1032处继续。在1032,控制在沙箱中运行功能模块。在1040,控制在状态中向用户呈现来自功能模块的图形化微件。控制然后返回到1008。

图12示出多个开发者1200-1、1200-2、1200-3、...1200-N与功能交换系统之间的交互。功能交换系统向原本不提供应用内功能的应用提供应用内的功能。这样的应用内功能可以包括在功能模块中。功能模块可以是包括功能模块与之关联的原始应用的一部分功能的软件模块。功能交换系统能够为不同的应用存储多个功能模块。用户设备(例如,智能手机)能够从功能交换系统获得功能模块,并且执行该功能模块从而经由在一些实施方式中称为“卡片”的功能模块GUI来提供应用内功能。

在一些实施方式中,应用的开发者可以生成用于他们的应用的功能模块(例如,通过使用功能模块创建SDK)并且将功能模块上传至功能交换系统。

功能交换系统的所有者/操作者可以使用功能交换系统来生成来自开发者的收益。在一些情况下,生产开发者可以通过功能交换系统将功能模块上传至功能交换系统而收取费用。另外或者可替换地,交费开发者可以为使用交换系统而付费。例如,消费开发者可以每次使用功能模块时付费,或者通过另外的方式付费(例如,预付费、循环付费等)。功能交换系统的所有者/操作者可以接收无论任何方式支付的费用的一部分。另外或者可替换地,生成开发者可以接收无论任何方式支付的费用的一部分。

消费开发者可以使用功能交换系统将功能模块包括在他们的应用中,从而在他们的应用中提供新的功能。在一个特定实施例中,银行应用开发者可以使用功能交换系统将具有地图绘制功能的功能模块包括在银行应用。在该示例中,功能模块实现的图形化用户界面(GUI)可以在地图上示出不同的银行分支和/或ATM的位置。在另一示例中,餐厅评论应用开发者可以使用功能交换系统将具有导航功能的功能模块包括在餐厅评论应用。在该示例中,导航功能可以将用户导航到使用餐厅评论应用识别出的不同餐厅。

在开发者界面,消费开发者能够基于与功能模块相关联的功能来搜索功能模块(例如,文本/类别搜索)。开发者界面能够向消费开发者提供与所搜索的功能有关的不同功能模块的列表。消费开发者然后能够选择将要包括在消费开发者的应用中的功能模块中的一个(例如,在一个或多个应用状态中)。在功能交换系统的一些实施方式中,消费开发者能够选择多个不同的功能模块用于在相同或不同应用状态下进行包括。

消费开发者从功能交换系统获得功能模块地址,用于访问(例如,获取)所选择的功能模块。消费开发者能够将功能模块地址与附加的代码一起嵌入在消费开发者的应用中。附加代码可以包括调用功能交换系统请求功能功能模块的代码。调用可以包括功能模块地址作为参数。附加代码可以包括当从功能交换系统接收到功能模块时控制用户设备做什么的代码(例如,用于提供功能模块GUI的代码)。在一些情况下,一些/所有附加代码可以包括在客户端应用模块和/或用户设备模块中。示例数字分发平台包括但不限于谷歌公司开发的Google Play、苹果公司开发的App Store(应用商店)、以及微软公司开发的Windows Phone Store。

用户从数字分发平台下载消费开发者的应用,然后将应用安装在用户设备上。响应于用户打开包括功能模块地址(和附加代码)的应用的状态,用户设备访问功能交换系统1204并且获得功能模块用于在应用状态内提供功能模块GUI。用户设备可以响应于打开应用状态以外的其他条件来访问功能交换系统。例如,用户设备可以响应于用户与GUI要素的交互来访问功能交换系统。在一个示例中,GUI要素可以是当选择时扩展至显示功能模块的GUI的扩展要素。在更具体的示例中,GUI扩展要素可以是“寻找地图”按钮,当用户选择时其扩展至示出由获得的功能模块生成的地图GUI。

图12集中于开发者1 1200-1与功能交换系统1204之间的交互。在一般场景中,开发者1 1200-1可能致力于开发应用1 1208。开发者1 1200-1可能想要向应用1 1208添加功能。例如,开发者1 1200-1可能想要向应用1 1208添加地图绘制/导航功能。开发者1 1200-1能够使用功能交换系统1204将该功能插入到应用1 1208。

开发者1-N 1200-1、……1200-N能够将他们的功能模块上传到功能交换系统1204以用在其他开发者的应用中。在图12中,开发者1 1200-1已经上传功能模块,这是可选的。开发者1 1200-1也与功能交换系统1204交互从而选择用于应用1 1208的功能,如“设备接口通信”所示。开发者1 1200-1获得功能模块的功能模块地址,然后将功能模块地址插入到应用1 1208的一个或多个状态中。

虽然一个功能模块地址被获得并且插入到应用1 1208中,在一些实施方式中,开发者1 1200-1可以获得多个功能模块地址用于插入到应用1 1208中。除了功能模块地址,开发者1 1200-1可以获得上述的附加数据(例如,用于调用功能交换系统的代码和用于提供功能模块GUI的代码)。在一些实施方式中,应用1 1208的一些/所有客户端应用模块1212可以由开发者1 1200-1与功能模块地址一同下载。在其他情况下,开发者1 1200-1能够在不同时间获得客户端应用模块和功能模块地址。

功能交换系统1204包括功能交换模块1216和数据存储器1220。功能交换模块1216实现在此所述的方法。数据存储器1220存储用于实现在此所述的方法的功能模块记录1224和客户端应用模块1228。

图13示出功能模块记录1300的另一示例。功能模块记录1300是可以包括功能模块1304和与功能模块1304相关联的数据的数据结构。功能模块ID 1308可以在数据存储器1220中的其他功能模块之中唯一识别功能模块1304。功能模块地址1312指示功能模块1304在功能交换系统1204中的位置。用户设备可以使用功能模块地址1312来获得功能模块1304。

功能模块记录1300也可以包括各种不同类型的与功能模块1304有关的信息。功能模块1304可以与功能名称1316-1相关联。功能名称1316-1可以通过人类可读形式来描述功能模块1304执行的功能。在一些情况下,单个功能模块能够具有多个不同的名称。

例如,功能名称可以具有多个不同的同义词。在一些情况下,两个功能模块可能接近相同,但是可以是不同的语言。在此情况下,第一功能名称可以是应用的功能名称,而第二功能名称可以是西班牙语的名称。在一些情况下,由于功能模块包括多于一个功能,所以一些功能模块可以具有多个名称。例如,功能模块可以提供地图绘制功能和导航功能两者。

功能类别1316-2可以限定功能模块1304执行的功能的类别(纵向)。示例类别能够包括旅行类别、酒店类别、电影类别、或者票务类别等等。

功能描述1316-3可以是功能的人类可读描述。例如,对于功能“示出餐厅”,功能描述可以包括以下描述:功能模块1304的GUI展示的内容(例如,餐厅信息、菜单和评论)以及功能模块1304向用户提供的其他功能。开发者能够在开发者界面浏览该描述,以便开发者能够读取功能的快速描述。

模块输入1316-4描述功能模块1304在运行期间可以使用的值或其他数据(例如,从而在状态下提供功能模块GUI)。例如,这些值可以包括用户设备的地理位置、一天中的时间、其他位置(例如,对于地图)、城市名称、机场代码和/或菜肴名称、以及其他值。

在一些实施方式中,功能模块可以包括各种不同的特征1316-5。功能特征1316-5描述(例如,列出)功能模块的各种特征和能力,诸如功能模块是否能够“以语音到文本示出方向的能力”。对于“示出餐厅功能”,模块特征1316-5可以包括是否在GUI中显示营业时间,是否在GUI中指示户外座位,是否存在素食者/严格素食者菜肴的指示,或者其他特征。

特征可以是采用要点的形式,以便消费开发者能够在开发者界面快速确定功能模块的特征。在一些实施方式中,特征可以用作开发者界面中的过滤器(例如,见图5A至图5B)。在一些实施方式中,特征可以由消费开发者从预制的特征集合中选择。例如,与餐厅相关联的功能模块可以包括预制的餐厅特征集合,诸如GUI是否包括食物的图片、菜单、预定等。模块特征1316-5中包括的类似信息也能够包括并且描述在功能描述字段1316-3中。

GUI属性字段1316-6可以包括向功能模块1304提供的有关GUI的信息。GUI属性1316-6可以包括与GUI相关联的尺寸信息。尺寸信息可以包括GUI的长度和宽度尺寸(例如,以像素的形式)。CUI属性1316-6也可以指示GUI是2维还是3维。CUI属性1316-6可以包括对于功能模块特定的其他属性。例如,对于地图绘制功能模块,CUI属性1316-6可以指示地图对于黑夜和白天是否有不同的视图。

在一些实施方式中,功能模块记录1300可以包括样本输出数据1316-7。样本输出数据1316-7可以用在开发者界面中以向消费开发者提供预览。样本输出数据1316-7可以示出功能模块GUI在用户设备上看起来如何。这样的样本输出可以有助于消费开发者在潜在的模糊功能名称和描述之中选择合适的功能模块。

功能模块记录1300中包括的数据不限于上述数据,而是也可以包括附加数据,诸如开发者名称、功能模块被提交到功能交换系统的日期、该功能模块的受欢迎度(例如,请求功能模块的次数)以及其他数据。

图14示出示例用户设备1404与功能交换系统1204之间的通信。用户设备1404包括操作系统1400和多个本地的应用,包括应用1 1408和另外的本地应用1412。一个特定的本地应用是网络浏览器应用1414。应用1 1408包括客户端应用模块1416。用户设备1404也包括用户设备模块1420。客户应用模块1416和用户设备模块1420可以进行操作向功能交换系统1204做出功能模块请求。

客户应用模块1416可以表示由功能交换系统1204提供给应用1 1408的开发者的软件。开发者可以在将本地应用放置在数字分发平台上之前已经将客户端应用模块1416包括在应用1 1408中。用户设备模块1420可以表示在用户购买用户设备1404和/或下载并且安装在用户设备1404上之前提供在用户设备1404上的软件。用户设备模块1420在一些情况下可以指的是OEM(原始设备供应商)软件、平台组件、或者框架组件。

虽然客户端应用模块1416和用户设备模块1420都可以包括在用户设备1404上,但是在其他实施方式中,属于用户设备模块1420的特征可以作为应用1 1408的一部分包括在客户端应用模块1416中。如果用户设备模块1420和客户端应用模块1416都存在与用户设备1404上,存在着用以防止这些模块冲突的规则。例如,模块中的一个可以取代另一个。在一个特定示例中,客户端应用模块1416可能比用户设备模块1420更通用,因此可以取代用户设备模块1420。

在图14中,用户已经打开应用1 1408的应用状态1424。响应于打开应用状态1424,客户端应用模块1416和用户设备模块1420中的至少一个向功能交换系统1204生成功能模块请求,其可以包括功能模块地址1428和附加的数据,诸如指示如下的数据:用户设备1404的类型(例如,制造商、型号、尺寸、屏幕分辨率等)、用户设备1404的平台(例如,操作系统、应用版本、应用名称)、以及用户设备1404的地理位置。功能交换系统1204响应于功能模块请求,将功能模块返回到用户设备1404。用户设备1404然后执行该功能模块并且在1432显示生成的图形化用户界面。

在一些实施方式中,应用1 1408和客户端应用模块1416能够用于每当打开应用状态1424时从功能交换系统1204请求功能模块。在其他的实施方式中,功能模块可以在第一次接收功能模块之后存储在用户设备1404中。

虽然在图14中单个应用包括客户端应用模块,在一些情况下多个应用可以包括客户端应用模块。在一些实施方式中,相同的客户端应用模块能够包括在多个不同的应用中。在其他实施方式中,可以是应用特定的不同客户端应用模块可以包括在不同的应用中。虽然在图14中示出单个功能模块地址,但是多个功能模块地址(例如,相同或不同的功能模块地址)可以包括在客户端应用模块中。

图15至图16示出示例的开发者界面。称为消费开发者的开发者能够搜索用于插入到他们的应用中的功能模块。开发者能够搜索与功能模块相关的功能(例如,文本搜索功能的名称和描述)。开发者也可以通过功能类别进行搜索。开发者可以基于各种不同的过滤器参数来过滤结果,诸如模块输入、模块特征、以及GUI属性(例如,2D/3D和/或尺寸)。

在图15的开发者界面1500中,能够执行查询1504,并且通过功能名称和应用名称列出搜索结果。需要注意的是,相同的功能名称能够适用于不同的功能模块。在此情况下,应用名称能够由消费开发者用来区分功能模块。开发者可以基于类别菜单1512来缩小功能列表,或者甚至可以完全省略查询而简单地查看特定类别中的所有功能模块。

另外,开发者能够基于各种准则来过滤列表1508。例如,在单独可选择的过滤器列表1514中,一个过滤器可以只示出允许交互的的功能模块。另一过滤器可以只示出不需要网络连接的功能模块。另一过滤器可以只示出具有它们自己的操作代码并且不是简单地向外深度链接到另一应用或网站的功能模块。

当选择功能模块时,诸如通过使用选择界面要输1516,示出功能模块GUI的预览1520来指示当其嵌入在应用中时可以如何出现。另外的功能信息可以显示在1524。

在图16中,开发者界面1550显示功能列表1554,其可以产生自查询1558,处于包括每个要素的预览1562和功能信息1566的格式。消费开发者能够通过按下相应的选择按钮1570来选择功能模块。

虽然在图15至图16中未示出,由于平台可以不同地实现功能,开发者界面GUI也可以包括示出功能模块可使用的平台(例如,设备或操作系统)和/或不同平台的平台特定预览的字段。在一些情况下,搜索结果可以包括相同功能应用组合的不同功能模块GUI。例如,生产开发者可以针对相同功能提供多个不同的GUI格式。开发者界面也可以包括针对功能模块的其他信息。例如,开发者界面可以包括用于嵌入功能模块的条目和条件,以及与嵌入功能模块相关联的费用。

图17示出描述开发者与功能交换系统之间的交互的示例方法。最初,在1600,一个或多个生成开发者(或者其他团体)需要用于创建功能模块的功能模块创建SDK。功能模块创建SDK可以由生成开发者用于从他们的应用创建功能模块。生成开发者然后可以使用功能模块创建SDK来创建功能模块并且将所创建的功能模块上传到功能交换系统。

在1604,第一开发者(消费开发者)然后能够访问功能交换系统并且搜索功能模块以添加到他们的应用(例如,应用的一个或多个状态)。在1608,第一开发者(消费开发者)然后选择第二开发者(生产开发者)生成的功能模块。在1612,第一开发者将所选择的功能模块的功能模块地址(以及其他代码)包括在第一开发者的应用中。在1616,第一开发者然后向数字分发平台提供应用用于用户下载。

参考图18,最初在1700,用户将第一开发者的应用下载到用户设备。在应用运行期间,在1704,用户访问包括功能模块地址的应用状态。响应于访问状态,在1708,用户设备使用功能模块请求来访问功能交换系统。在1712,响应于该请求,功能交换系统向用户设备发送功能模块。在1716,用户设备然后在已访问的应用状态中提供功能模块的GUI。

用户设备能够执行接收到的功能模块以提供各种功能,并且功能模块可以包括各种数据。用户设备能够基于接收到的功能模块中的数据来执行操作。例如,用户设备能够提供GUI,获得信息,并且基于接收的功能模块中包括的数据来发送信息。

功能模块能够包括由用户设备(例如,客户端应用模块)用于生成功能模块GUI(FMGUI)的数据(例如,文本、图像和指令)。用户设备可以基于功能模块中包括的数据来生成FMGUI。

在一些示例中,用户设备可以仅基于功能模块中包括的数据来生成FMGUI。在其他示例中,用户设备为了生成FMGUI,除了功能模块中包括的数据之外,可以获取用户设备上存储的数据。在其他示例中,用户设备为了生成FMGUI,除了功能模块中包括的数据之外,可以从远程设备(例如,远程服务器)获取数据。

在一些实施方式中,功能模块可以包括文本数据。文本数据能够包括将要包括在FMGUI中的任何文本。例如,文本数据能够包括但不限于:应用的标题、应用的描述、应用功能的描述、以及附加的数据。在一些实施方式中,功能模块可以包括图像数据。图像数据能够包括将要包括在FMGUI中的任何图像。例如,图像数据能够包括但不限于:表示应用的应用图标、用于提供FMGUI的用户界面图像,诸如用于用户输入要素的屏幕快照或图像(例如,按钮图像、菜单图像、滑块图像等)。图像数据也可以包括动画和视频。

在一些实施方式中,功能模块可以包括一个或多个访问机制。例如,功能模块可以包括一个或多个应用访问机制(到本地应用状态的链接)、一个或多个网络访问机制(例如,诸如URL的网络链接)、以及一个或多个应用下载地址(例如,下载数字分发平台上的应用的链接)。访问机制可以与FMGUI中包括的一个或多个链接相关联。在这里描述的一些示例中,功能模块可以包括用于自动生成访问机制(例如,基于GPS变化或者其他数据)的数据或者响应于用户输入的数据。

在一些实施方式中,功能模块可以包括用于生成GUI要素的数据,其中的GUI要素向用户显示信息并且接收用户输入(例如,触摸、点击、语音)。用户设备能够基于功能模块中的数据来生成显示信息并且接收用户输入的用户界面要素。

各种用户界面要素可以包括但不限于:1)出现在前台的弹出窗口,将先前的界面留在后台使得弹出覆盖背景(例如,提供消息并且要求进一步输入的对话框),2)用户能够输入文本信息的文本框,3)允许用户从选择列表中进行选择的菜单(例如,菜单/子菜单条),4)用户能够选择的按钮要素(例如,推式按钮),5)包括文本的连接,其中的文本指示用户设备响应于用户选择该链接要采取的动作,6)项目列表(例如,列表框或下拉列表),7)以表格形式呈现数据的信息的网格视图(例如,工作表),8)复选框,9)单选按钮,10)滑动条,11)用户能够选择在FMGUI的多个不同GUI之间进行导航的选项卡,12)用于输入日期的日历,13)用于改变FMGUI的尺寸和可用功能的展开/收起按钮(和用于拖拽的箭头)。

在一些实施方式中,功能模块可以包括定义FMGUI的行为(例如,自动行为或响应于用户输入)的指令。指令可以定义用户设备执行的操作。例如,指令可以定义FMGUI的布局,诸如定义文本、图像和用户输入要素的布局的标识语言。指令也可以定义用户设备(例如,本地应用、操作系统等)执行的操作。在一些示例中,由指令定义的操作可以用户设备自动执行。例如,用户设备可以自动获取对于数据(例如,存储在用户设备上或者互联网的远程服务器上)的参考。

指令也可以定义用户设备响应于用户输入而执行的操作。例如,指令可以定义用户设备响应于利用在此所述的任何用户界面要素进行的用户交互(例如,触摸)而执行的操作。指令也可以支持运算(例如,计算和绘图)。在一些实施方式中,指令可以定义响应于敲击目标的用户选择如何生成一个或多个访问机制。

在一些实施方式中,功能模块可以包括对于用户设备获取用来包括在FMGUI中的数据的参考。这些参考可以参考用户设备中包括的数据。例如,一个或多个参考可以是用户设备上的日历信息(例如,用户的约定以便FMGUI能够显示与用户日程表的冲突)。再例如,一个或多个参考可以是用户设备上的合同信息,包括但不限于地址、电话号码、照片(例如,合同照片)、文本消息、邮件等。

这些参考可以是对于除了用户设备的计算设备上包括的数据的参考。例如,功能模块可以包括对于远程服务器上的数据的参考,诸如功能交换系统中包括的服务器和/或第三方服务器。第三方服务器例如可以包括用于本地/网络应用(例如,用户设备的本地应用)。参考可以针对存储在服务器上的文本、图像或其他信息,或者响应于来自用户设备对于信息的请求来实时生成。示例是出租车位置、餐厅的预定时间、票据有效期等。

在一些实施方式中,功能模块可以包括赞助的广告数据。例如,FMGUI可以包括针对来自生产开发者的商品或服务或者针对第三方的商品或服务的广告。

上述描述本质上只是说明性的,并不旨在显示本公开、其用途或使用。本发明的广泛教导能够以各种形式进行实施。因此,虽然本公开包括特定的示例,但是本公开的真实范围不应当因此受限,当研究附图、说明书和下面的权利要求时,其他的变型将变得清楚。应当理解的是,在不改变本公开的原理的情况下,方法中的一个或多个步骤可以按照不同的顺序(或同时)执行。而且,虽然上面将每个实施例描述为具有特定特征,但是针对本公开的任何实施例所描述的那些特征中的任何一个或多个特征可以实现在任何其他实施例的特征中和/或与任何其他实施例的特征组合,即使组合没有明确描述。换言之,所描述的实施例不相互排斥,并且一个或多个实施例与一个其他实施例的置换仍然在本公开的范围内。

使用各种术语来描述要素之间(例如,模块之间)的空间和功能关系,包括“连接”、“接合”、“接口”、“耦接”。当在上述公开中描述第一与第二要素之间的关系时,除非明确描述为“直接”,该关系包括第一与第二要素之间不存在其他的间隔要素的直接关系,也包括第一与第二要素之间(空间或功能上)存在一个或多个的间隔要素的间接关系。如在此所使用,短语A、B和C中的至少一个应当理解为逻辑的(A或B或C),利用异或逻辑,并且不应当理解成意为“至少一个A、至少一个B、以及至少一个C”。

在本申请中,包括以下的定义,术语“模块”或术语“控制器”可以由术语“电路”来代替。术语模块可以是指包括执行代码的(共享、专用、或分组)处理器硬件和存储处理器应用执行的代码的(共享、专用、或分组)存储器应用或者以上的部分。

模块可以包括一个或多个接口电路。在一些示例中,接口电路可以包括连接到局域网(LAN)、因特网、广域网(WAN)或其组合的有线或无线接口。本公开的任何给定模块的功能性可以在经由接口电路进行连接的多个模块之中进行分配。例如,多个模块可以允许负载平衡。在另外的示例中,服务器(也称为远程或云)模块可以完成代表客户模块的一些功能性。

术语代码如上所使用,可以包括软件、固件、和/或微代码,并且可以指程序、例程、功能、类、数据结构和/或对象。共享处理器硬件包含执行来自多个模块的一些或所有代码的单个微处理器。分组处理器硬件包含与另外的微处理器相结合地执行来自一个或多个模块的一些或所有代码的微处理器。对于多个微处理器的引用包括分立管芯上的多个微处理器、单个管芯上的多个微处理器、单个微处理器的多个内核、单个微处理器的多个线程、或者以上的组合。

共享存储硬件包含存储来自多个模块的一些或所有代码的单个存储设备。分组存储硬件包含与其他的存储设备相结合地存储来自一个或多个模块的一些或所有代码的存储设备。

存储硬件是术语计算机可读介质的子集。术语计算机可读介质如在此所使用,不包含传播经过介质的瞬态电或电磁信号(诸如,在载波上);术语计算机可读介质因此认为是有形且非易失性的。非瞬态计算机可读介质的非限制性示例是非易失性存储设备(诸如,闪速存储设备、可擦除可编程只读存储设备、或掩膜只读存储设备),易失性存储设备(诸如,静态随机存取存储设备或动态随机存取存储设备),磁存储介质(诸如,模拟或数字的磁盘或硬盘驱动器),以及光存储介质(诸如,CD、DVD或蓝光光盘)。

本申请中所描述的装置和方法可以由专用计算机部分或全部地实现,其中的专用计算机通过配置普通计算机来执行体现在计算机程序中的一个或多个特定功能来创建。上述功能块、流程图要素作为软件规范,其能够通过技术人员或编程人员的常规工作而转译为计算机程序。

计算机程序包括存储在至少一个非易失性计算机可读介质上的处理器可执行指令。计算机程序也可以包括或者依靠被存储的数据。计算机程序可以包含与专用计算机的硬件进行交互的基本输入/输出系统(BIOS),与专用计算机的特定设备进行交互的设备驱动器,一个或多个操作系统、用户应用、背景服务、背景应用等。

计算机程序可以包括:(i)要解析的描述性文本,诸如HTML(超文本标记语言)或XML(可扩展标记语言),(ii)汇编代码,(iii)由编译器从源代码生成的目标代码,(iv)由解释器执行的源代码,(v)由即时编译器编译和执行的源代码等。仅作为示例,源代码可以使用来自包括C、C++、C#、Objective-C、Haskell、Go、SQL、R、Lisp、Fortran、Perl、Pascal、Curl、OCaml、HTML5、Ada、ASP(活动服务器页面)、PHP、Scala、Eiffel、Smalltalk、Erlang、Ruby、Lua和等语言的语法进行编写。

除非使用短语“用于……的装置”明确引用要素,或者在方法权利要求使用术语“操作用于”或“步骤用于”的情况下,权利要求中引用的要素都不是35U.S.C.§112(f)的含义中的装置加功能要素。

再多了解一些
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1