消息扩展应用程序商店的制作方法

文档序号:16054982发布日期:2018-11-24 11:36阅读:208来源:国知局

背景技术
:本公开中描述的实施方案涉及消息传送系统,诸如文本消息传送系统或蜂窝电话或其他通信设备或数据处理系统。文本消息传送系统多年前即开始使用。例如,在20世纪90年代,在智能手机推出之前,无线蜂窝电话运营商诸如verizon或at&t允许通过手机的短消息服务sms发送文本消息。通常,传输数据量受到运营商建立的规则的限制。近来,随着智能电话(例如,iphone)和平板电脑(例如,ipad)的使用增加,文本消息传送系统已经开发了发送图像诸如照片或表情符号的能力。此外,消息传送系统诸如来自appleinc.(cupertino,california)的imessage已允许用户通过“公共”网络发送和接收文本和图像,所述“公共”网络包括wifi接入点和互联网(除了使用无线运营商的专用蜂窝电话网络之外),并且消息传送系统诸如imessage可以根据例如wifi接入点的可用性或其他用户设备的兼容性(可能与imessage不兼容)在公共网络和专用网络的使用之间无缝过渡。技术实现要素:本文描述的实施方案的一个方面涉及一种消息传送系统,该消息传送系统在客户端设备上包括消息传送应用程序和一个或多个扩展应用程序,所述扩展应用程序被配置为创建在由消息传送应用程序托管的视图中显示的内容。消息传送应用程序可以启动一个或多个扩展应用程序,并且在一个实施方案中的内容通过进程间通信在每个扩展应用程序和消息传送应用程序之间传送。在一个实施方案中,方法可包括:由第一设备上的第一消息传送应用程序接收来自第二设备的消息和相关联的元数据,该消息包括由与第二消息传送应用程序一起在第二设备上操作的第二扩展应用程序创建的内容。在一个实施方案中,第一消息传送应用程序和第二消息传送应用程序各自被配置为传输短消息服务sms文本消息和其他内容,并且在消息记录中显示那些文本消息。该方法还可包括在消息传送应用程序的用户界面视图中的消息记录中显示内容,并且将该内容从第一消息传送应用程序传送到由元数据中的应用程序标识符标识的第一扩展应用程序,该内容通过进程间通信ipc从在第一进程中执行的第一消息传送应用程序传送到在不同于第一进程的第二进程中执行的第一扩展应用程序。该方法还可包括将第一扩展应用程序的用户界面显示在第一消息传送应用程序的用户界面内。在一个实施方案中,第一扩展应用程序的用户界面被配置为显示内容,诸如由第二设备上的第二扩展应用程序创建的内容,并且接收用户输入以修改内容。在一个实施方案中,每个扩展应用程序的用户界面在显示时可以替换消息传送应用程序的屏幕键盘。在一个实施方案中,第一扩展应用程序可以修改内容并通过ipc将修改后的内容传递给第一消息传送应用程序,用于传输到第二消息传送应用程序以递送至第二设备上的第二扩展应用程序。在一个实施方案中,第一扩展应用程序和第二扩展应用程序是相同扩展应用程序的两个实例,并且每个都由相同的应用程序标识符标识,该应用程序标识符可由应用程序市场或提供扩展应用程序的下载的其他服务提供。在一个实施方案中,第一扩展应用程序可被配置为接收其他设备(第二设备)的用户的模糊标识符,其中该模糊标识符可被配置为相对于第一设备上的所有其他扩展应用程序对于第一扩展应用程序是唯一的。模糊标识符允许每个扩展应用程序标识协作环境中的用户,诸如其中多个用户试图安排会议或在餐厅预订餐桌等的环境。在一个实施方案中,第一扩展应用程序可改变由消息传送应用程序所托管的视图。例如,在一个实施方案中,第一扩展应用程序可通过应用编程接口(api)调用第一消息传送应用程序,以请求在第一消息传送应用程序内改变扩展应用程序的视图。在一个实施方案中,扩展应用程序视图的改变是在紧凑视图和扩展视图之间的切换。在一个实施方案中,紧凑视图中的扩展应用程序的用户界面可显示在屏幕区域中,其中显示第一消息传送应用程序的屏幕键盘,同时第一消息传送应用程序的消息记录保持可见。在另一个实施方案中,扩展应用程序的紧凑视图可以显示为屏幕键盘上的叠加。在一个实施方案中,扩展视图中的扩展应用程序的视图显示在显示屏幕键盘和消息记录两者的屏幕区域中,使得消息记录不可见,并且第一消息传送应用程序的屏幕键盘也是不可见的。在一个实施方案中,从第二设备接收的元数据可包括统一资源定位符(url)或其他类型或形式的资源定位符(例如,统一资源标识符、(uri)、xml等)和数据,其通过ipc由第一消息传送应用程序传送到第一扩展应用程序,其中资源定位符和数据维护第二设备上的第二扩展应用程序与第一设备上的第一扩展应用程序之间的会话信息。在一个实施方案中,扩展应用程序通过在每个设备上托管消息传送应用程序视图的相应消息传送应用程序进行通信。在一个实施方案中,每个扩展应用程序可被配置为修改后的资源定位符或数据中的至少一者,并且通过两个消息传送应用程序将修改后的资源定位符或数据传递给另一个扩展应用程序。在一个实施方案中,资源定位符或数据的修改可在会话中实现,其中随着会话气泡内的信息由于通信任一侧上的用户交互而改变,消息记录中显示相同的会话气泡。在一个实施方案中,每个扩展应用程序还能够从其对应的消息传送应用程序接收回电,该回电指示另一个扩展应用程序是否接收到修改后的内容,诸如修改后的资源定位符或数据。本文描述的实施方案的另一方面涉及如何响应于对由消息传送应用程序呈现的消息记录中的消息气泡的选择而启动扩展应用程序。根据该方面的方法可包括:由第一设备上的第一消息传送应用程序接收来自第二设备的消息和元数据,该消息包括由与第二消息传送应用程序一起在第二设备上操作的第二扩展应用程序创建的内容。该方法还可包括在消息传送应用程序中的消息记录内显示消息容器诸如消息气泡中的内容,然后接收对消息容器的选择,诸如用户的手指在消息气泡上的轻击。该方法还可包括响应于对消息气泡的选择而启动第一扩展应用程序(如果其在第一设备上安装的话),其中第一扩展应用程序通过从第二设备接收的元数据中的应用程序标识符来标识启动。在一个实施方案中,该方法还可包括在启动之后,将第一扩展应用程序的用户界面显示在第一消息传送应用程序的用户界面内。在一个实施方案中,消息容器可以是由元数据中的气泡标识符指定的消息气泡,并且内容可与气泡标识符相关联,使得由第二扩展应用程序创建的内容出现在具有该气泡标识符的消息气泡内。在一个实施方案中,第一消息传送应用程序和第二消息传送应用程序各自被配置为传输sms文本消息和其他内容,并且在消息记录中的消息气泡中显示文本消息。在一个实施方案中,第一消息传送应用程序和第一扩展应用程序被配置为通过ipc进行通信,并且第一消息传送应用程序在第一沙箱进程中执行,并且第一扩展应用程序在不同于第一沙箱进程的第二沙箱进程中执行。在一个实施方案中,在选择消息气泡之前由第一消息传送应用程序显示内容,而不启动或执行第一扩展应用程序;换句话说,在一个实施方案中,第一扩展应用程序无需被执行以由第一消息传送应用程序在消息气泡中显示内容。在一个实施方案中,api可存在于第一消息传送应用程序和第一扩展应用程序之间,以允许通过利用api的调用进行通信。在一个实施方案中,由第一消息传送应用程序接收的内容以加密形式接收并且由第一消息传送应用程序解密,并且解密的形式通过ipc传递到第一扩展应用程序。在一个实施方案中,如果未安装第一扩展应用程序,则第一消息传送应用程序可提供下载和安装第一扩展应用程序。第一消息传送应用程序可保持已安装的扩展应用程序的注册表(例如,列表),并且该注册表可用于当例如用户轻击或选择具有由特定扩展应用程序创建的内容的消息气泡时确定是否安装了扩展应用程序。如果响应于对消息气泡的选择,第一消息传送应用程序确定未安装处理内容所需的特定扩展应用程序(由与消息一起提供的应用程序标识符指定),随后第一消息传送应用程序可向用户呈现通知,该通知提供供用户选择的选项,该选项将使得设备下载并安装扩展应用程序。在一个实施方案中,可在后台执行扩展应用程序的下载和安装,而第一消息传送应用程序在设备上保持为前台应用程序。本文描述的实施方案的另一方面涉及用于提供向后兼容性的方法,其可在一个设备与较旧设备通信的情况下或者与具有不完全兼容较新消息传送系统的较旧消息传送系统的设备通信的情况下发生。根据该方面的方法可包括:在一个实施方案中,由在第一进程中执行的扩展应用程序创建内容,该内容显示在由第一设备上的第一消息传送应用程序托管的视图内,其中第一消息传送应用程序在不同于第一进程的第二进程中执行,并且响应于对使得发送内容至第二设备的发送命令的选择,内容通过进程间通信从扩展应用程序传送到第一消息传送应用程序。该方法还可包括:由第一消息传送应用程序根据关于第二设备的数据确定第二设备上的第二消息传送应用程序与扩展应用程序不兼容,然后由第一消息传送应用程序发送替代内容到第二消息传送应用程序。在一个实施方案中,该替代内容可包括以下中的一者或多者:(a)标准格式的图像;或(b)可用于检索第二设备上的网页的资源定位符。本文描述的实施方案的另一方面涉及应用程序市场或类似服务,在一个实施方案中,其可提供能够从应用程序市场或类似服务下载和安装的扩展应用程序的可浏览视图。在一个实施方案中,可免费获得应用程序,或者可购买应用程序,然后下载并安装在用户设备上。在一个实施方案中,下载可响应于对包含由尚未安装在接收设备上的扩展应用程序创建的内容的消息气泡的选择而发生。在一个实施方案中,方法可包括以下操作:由第一设备上的第一消息传送应用程序app接收来自第二设备的消息和相关联的元数据,其中该消息包括由与第二设备上的第二消息传送应用程序一起操作的第二扩展应用程序创建的内容,其中相关联的元数据包括与第二扩展应用程序相关联的应用程序标识符;将消息记录中的内容显示在第一消息传送应用程序的用户界面视图中;确定是否安装了与第一消息传送应用程序一起使用的由应用程序标识符所标识的第一扩展应用程序;向用户显示通知,该通知包括使第一设备下载并安装第一扩展应用程序的选项,其中响应于确定未安装与第一消息传送应用程序一起使用的第一扩展应用程序而显示该通知;以及响应于对该选项的选择,下载并安装第一扩展应用程序。在一个实施方案中,响应于用户选择消息记录中的内容(例如,用户轻击消息记录中的消息气泡中的内容),第一设备确定未安装由应用程序标识符标识的第一扩展应用程序。在一个实施方案中,从提供用于下载的多个消息传送扩展应用程序的服务下载第一扩展应用程序,并且由该服务提供应用程序标识符。在一个实施方案中,该服务包括一个或多个服务器系统,其包括能够从该服务下载的消息传送扩展应用程序的可浏览目录。在一个实施方案中,第一扩展应用程序的下载和安装在第一消息传送应用程序保持为前台应用程序时发生。在一个实施方案中,该方法可进一步包括将表示第一扩展应用程序的图标添加到已安装的扩展应用程序的可浏览视图中,由第一消息传送应用程序显示该可浏览视图,并且添加图标发生在安装第一扩展应用程序之后。在一个实施方案中,安装的第一扩展应用程序可通过ipc与第一消息传送应用程序通信,该第一消息传送应用程序在与供第一扩展应用程序执行的第二进程不同的第一进程中执行。本文描述的实施方案的另一方面涉及作为图像创建应用程序的扩展应用程序,诸如可创建贴纸并且可修改那些贴纸的外观以及可允许将这些贴纸置于由消息传送应用程序提供的消息记录中的一个或多个消息气泡上的应用程序。在该方面的一个实施方案中,方法可包括以下操作:在由消息传送应用程序托管的贴纸扩展应用程序app的用户界面视图内接收对创建贴纸图像的选择;接收指定对选定贴纸图像的改变的一个或多个用户输入,所述一个或多个用户输入定义图像元数据;通过贴纸扩展应用程序和第一消息传送应用程序之间的进程间通信将贴纸图像和图像元数据传送到第一消息传送应用程序;第一消息传送应用程序将贴纸图像、消息和图像元数据上载到一个或多个消息传送服务器,以将消息和贴纸图像和图像元数据递送到接收设备;由第一消息传送应用程序接收并存储来自一个或多个消息传送服务器的令牌,该令牌表示贴纸图像;响应于将贴纸图像发送到接收设备或其他接收设备的后续请求,由第一消息传送应用程序将令牌发送到一个或多个消息传送服务器而不再发送贴纸图像。在一个实施方案中,该方法还可包括由贴纸扩展应用程序在由第一消息传送应用程序托管的视图中显示一组贴纸图像,每个贴纸图像可由用户选择以与第一消息传送应用程序提供的消息记录视图中的消息气泡中的消息相关联。在一个实施方案中,用户通过将贴纸图像拖动到消息气泡上将贴纸图像与消息气泡相关联。在一个实施方案中,图像元数据可包括以下中的一者或多者:(a)用于改变贴纸图像的尺寸的缩放数据;(b)用于改变消息气泡上的贴纸图像的旋转或取向的旋转数据;(c)贴纸图像在消息或消息气泡上的位置数据;或者其他图像修改数据(例如,透明度或颜色变化等)。在一个实施方案中,贴纸图像的数据量由消息传送系统约束以保持低于预先确定的限制。第一消息传送应用程序在第一消息传送应用程序的视图内在消息记录中的消息上显示贴纸图像,并且可由图像元数据指定消息上的贴纸图像的尺寸和旋转以及位置。在一个实施方案中,第一消息传送应用程序可加密每个接收设备的贴纸图像,以在消息(具有贴纸图像)被发送到多个接收设备时生成多个加密的贴纸图像。例如,在一个实施方案中,每个接收设备的公钥可用于加密贴纸图像(或加密用于加密贴纸图像的密钥),并且每个不同的接收设备可具有不同的公钥。在一个实施方案中,非对称加密算法诸如公钥/私钥加密算法可用于加密贴纸图像(或用于加密那些图像的密钥)。该方法还可包括从一个或多个消息传送服务器接收令牌的生存时间(ttl)值,该ttl值响应于发送与令牌对应的贴纸图像的后续请求而在第一消息传送应用程序处并且在一个或多个消息传送服务器处进行刷新。在一个实施方案中,该方法还可包括由第一消息传送应用程序根据关于接收设备的数据确定接收设备上的消息传送应用程序与贴纸应用程序不兼容,并且当其与贴纸应用程序不兼容时由第一消息传送应用程序向接收设备发送替代内容。本文描述的实施方案的另一方面涉及使用图像元数据在接收设备上呈现最终贴纸图像的方法。在一个实施方案中,根据该方面的方法包括以下操作:由第一设备上的第一消息传送应用程序从第二设备接收消息和令牌以及相关联的元数据(其可包括图像元数据),该令牌指的是由与第二消息传送应用程序一起在第二设备上操作的第二贴纸扩展应用程序创建的贴纸图像;由第一消息传送应用程序将令牌发送给一个或多个消息传送服务器以获取贴纸图像;响应于发送令牌并通过将图像元数据应用于贴纸图像生成最终图像,由第一消息传送应用程序接收贴纸图像;并且由第一消息传送应用程序在包含该消息的消息气泡上或附近显示最终图像。在一个实施方案中,第一消息传送应用程序在第一进程中执行,并且第一贴纸扩展应用程序在不同于第一进程的第二进程中执行,并且其中消息气泡由气泡标识符标识。在一个实施方案中,第一消息传送应用程序以加密形式接收贴纸图像,并且解密贴纸图像并通过ipc将解密形式的贴纸图像提供给第一贴纸扩展应用程序。在一个实施方案中,图像元数据包括以下中的一者或多者:(a)用于改变贴纸图像的尺寸的缩放数据;(b)用于改变图像贴纸的旋转的旋转数据;或者(c)其他图像修改数据。在一个实施方案中,第一消息传送应用程序使用贴纸图像的散列确定第一消息传送应用程序在发送令牌之前是否已经具有贴纸图像的副本;在一个实施方案中,散列可被包含在相关联的元数据或图像元数据中。在一个实施方案中,该方法还可包括响应于接收到消息而自动启动第一贴纸扩展应用程序,其中该启动在没有用户动作或干预的情况下发生。本文描述的实施方案的另一方面涉及用于在消息传送系统中操作一个或多个消息传送服务器的系统和方法。在一个实施方案中,根据该方面的方法包括以下操作:接收多个加密的贴纸图像以从第一消息传送应用程序递送到多个接收人,多个加密的贴纸图像中的每一个在被解密时表示相同的贴纸图像;创建多个令牌并将其发送到第一消息传送应用程序,该多个令牌中的每一个被分配给多个接收人中的一个接收人;针对每个加密的贴纸图像创建生存时间(ttl)值,并且将ttl值中的至少一个值发送到第一消息传送应用程序;存储多个加密的贴纸图像和多个令牌以及ttl值;并且响应于第一消息传送应用程序再次向该多个接收人中的一个接收人发送相同的贴纸图像并且刷新与接收的令牌对应的ttl值,从第一消息传送应用程序接收该多个令牌中的一个令牌。在一个实施方案中,该方法还可包括响应于接收设备上的第二消息传送应用程序发送该多个令牌中的一个令牌,向该第二消息传送应用程序发送加密的贴纸图像,发送的令牌对应于发送的加密贴纸。在一个实施方案中,可执行该方法的一个或多个消息传送服务器还可接收多个加密消息,每个加密消息针对该多个接收人中的每一个接收人。在一个实施方案中,该一个或多个消息传送服务器可将多个加密的贴纸图像、多个令牌和ttl值存储在一组一个或多个数据库中。在一个实施方案中,该方法还可包括从第一消息传送应用程序接收与相同贴纸图像相关联的元数据,并且向第二消息传送应用程序发送元数据。在一个实施方案中,该元数据可以是以下中的至少一者:(a)由能够从其下载扩展应用程序的服务提供的贴纸扩展应用程序标识符;或者(b)由与第二消息传送应用程序一起操作以创建修改后的贴纸图像的贴纸扩展应用程序使用的图像元数据。虽然前述示例描述了针对贴纸和贴纸图像使用ttl值,但是ttl值可用于在本文描述的一个或多个实施方案中的消息传送系统中被发送、存储或接收的其他对象和内容。在一个或多个实施方案中,可显示消息记录中的贴纸的来源的指示符。这可允许贴纸的接收人查看是谁发送了贴纸。在一个实施方案中,指示符可以是突出显示或围绕消息记录中的贴纸的某种颜色,或者另选地,接收人可选择贴纸,这可使得显示贴纸细节窗口,该窗口显示关于贴纸的细节,包括贴纸的原创者或开发者(或其他来源)以及可能修改贴纸的发送者。在一个实施方案中,在接收设备第一次接收到贴纸时,消息记录中显示的贴纸的来源或其他属性可在消息记录中自动显示一段短暂的时间,此后不再针对该贴纸显示关于来源或属性的信息。在一个实施方案中,用于结合消息传送应用程序进行操作的方法可以不同方式启动扩展应用程序,具体取决于扩展应用程序的类型或取决于关于扩展应用程序的政策。在一个实施方案中,方法可包括以下操作:响应于由消息传送应用程序接收到包含由扩展应用程序创建的内容的消息,确定扩展应用程序的类型;如果扩展应用程序是第一类型的扩展应用程序或者扩展应用程序的政策允许此类启动(例如,请求立即启动的扩展应用程序,并且消息传送应用程序授予请求给该类型的扩展应用程序或请求,或者扩展应用程序是预先确定的类型或其内容是预先确定的类型),则响应于接收到该消息而自动启动扩展应用程序;如果扩展应用程序是第二类型的扩展应用程序(或政策规定延期启动),则延期启动扩展应用程序,直到接收到对由消息传送应用程序显示的消息记录中显示的消息气泡的选择。在一个实施方案中,从在消息记录中选择消息气泡的用户接收该选择。在一个实施方案中,扩展应用程序指定其作为第一类型还是第二类型的扩展应用程序操作,并且消息传送应用程序可应用一个或多个政策以允许立即自动启动或是延迟启动扩展应用程序。在一个实施方案中,第一类型的扩展应用程序在接收到时启动但保持在后台(并且在一个实施方案中,可在后台更新其消息气泡中的内容),直到当用户选择显示来自扩展应用程序的内容的消息气泡时,用户使扩展应用程序在前台中显示(例如,代替屏幕键盘以紧凑视图模式显示)。本文所述的实施方案的另一方面涉及在两个设备上的两个扩展应用程序之间的会话中使用面包屑。在一个实施方案中,使用面包屑的方法可包括以下操作:在消息记录中显示包含由第一扩展应用程序创建的第一内容(或与之相关联)的第一消息气泡,该第一消息气泡具有保持供第一消息传送应用程序使用的会话标识符;在第一设备上的第一消息传送应用程序接收第一扩展应用程序与第二设备上的第二扩展应用程序之间发生的会话的第二内容,其中该会话由会话标识符标识;将第一内容转换为面包屑并显示包含第二内容(或与之相关联)的第二消息气泡,其中第一消息传送应用程序将会话标识符与面包屑和第二消息气泡两者相关联。在一个实施方案中,第一扩展应用程序提供待显示为面包屑的至少一部分的第三内容。在一个实施方案中,第二内容由第二设备上的第二扩展应用程序创建,并且通过第二设备上的第二消息传送应用程序发送到第一设备。在一个实施方案中,第一消息传送应用程序将第一内容转换为面包屑。本文所述的方法和系统可通过数据处理系统诸如一个或多个智能电话、平板电脑、台式计算机、膝上型计算机、智能手表、可穿戴设备、音频附件、机载计算机和其他数据处理系统以及其他消费电子设备来实现。本文所述的方法和系统还可由执行存储在一个或多个非暂态机器可读介质中的可执行的计算机程序指令的一个或多个数据处理系统来实现,该程序指令在被执行时使一个或多个数据处理系统执行本文所述的一个或多个方法。因此,本文所述的实施方案可包括方法、数据处理系统和非暂态机器可读介质。以上概述不包括本公开的所有实施方案的详尽列表。所有系统和方法可根据以上概述的各个方面和实施方案以及以下具体实施方式中所公开的那些的所有合适的组合来实践。附图说明本发明以举例的方式进行说明并且不仅限于各个附图的图形,在附图中类似的标号指示类似的元件。图1a示出了通信设备上的消息传送应用程序的用户界面的示例。图1b示出了通信设备上的消息传送应用程序的用户界面的另一示例。图2示出了消息传送系统的示例,该消息传送系统使用一个或多个消息传送服务器向一组客户端设备提供消息传送服务。图3a示出了根据一个实施方案的用于提供与消息传送应用程序一起使用的扩展应用程序的架构的框图。图3b示出了根据本文的一个实施方案的至少部分地由扩展应用程序创建的消息气泡的用户界面。图3c示出了基于模板的消息气泡的部分的示例。图4a是示出根据一个实施方案的方法的流程图,该方法用于根据本文描述的一个或多个实施方案从消息传送应用程序内浏览、选择和启动扩展应用程序。图4b示出消息传送应用程序的用户界面的示例,其包括根据本文所述的一个实施方案的已安装的扩展应用程序的可浏览视图。图5a示出消息传送应用程序的用户界面的示例,其包括消息传送应用程序的用户界面内的扩展应用程序的视图。图5b示出了在用户已在扩展应用程序中创建内容之后扩展应用程序的用户界面的示例,其中扩展应用程序的视图被托管在消息传送应用程序的用户界面内。图5c示出了在用户已经使用扩展应用程序创建内容并且已经通过使用用于发送内容的消息传送应用程序发送内容之后,通信设备上的消息传送应用程序的用户界面的示例。图5d示出了在接收设备接收到由发送设备上的扩展应用程序创建的内容之后,接收设备上的消息传送应用程序中的用户界面的示例。图5e示出了当接收设备的用户选择包含由发送设备上的扩展应用程序创建的内容的消息气泡,使得接收设备的用户可在接收设备上编辑该内容时,接收设备上的用户界面的示例。图5f示出了提供下载和安装与设备上的消息传送应用程序一起使用的扩展应用程序的用户界面的示例。图6是示出根据本文所述的一个实施方案的可在接收设备上执行的方法的流程图。图7a是示出根据一个实施方案的方法的流程图,其中根据一个实施方案,扩展应用程序可以改变其由消息传送应用程序托管的视图。图7b示出了根据一个实施方案的处于扩展视图中的扩展应用程序的用户界面的示例。图8示出了根据一个实施方案的示例,其中两个或更多个设备上的扩展应用程序可通过每个设备上的消息传送应用程序彼此交互。图9a是示出根据本文描述的一个或多个实施方案的用于允许不同设备上的扩展应用程序之间的交互的方法的流程图。图9b示出了用户界面中的消息气泡的示例,该消息气泡可在当两个或更多个扩展应用程序在会话中交互时由图9a所示的方法产生。图9c示出了根据一个实施方案的消息气泡的示例,其中当消息传送应用程序保持在前台时发生所需扩展应用程序的下载和安装。图9d、图9e、图9f、图9g和图9h示出参与两个消息传送应用程序(每个设备上各一个)之间的会话的两个不同设备上的消息记录的示例,其中该会话涉及两个扩展应用程序之间的会话。图9d、图9e、图9f、图9g和图9h所示的用户界面示出了根据本文描述的一个或多个实施方案如何将消息气泡中的由扩展应用程序创建的内容转换为面包屑。图10为示出根据本文所述的一个实施方案的方法的流程图。图11为示出根据本文所述的一个实施方案的方法的流程图。图12示出消息传送应用程序的用户界面,其中来自两个或更多个扩展应用程序的内容存在于由消息传送应用程序提供的相同的消息记录内。图13a是示出根据一个实施方案的方法的流程图,该方法用于为较旧设备或较旧的消息传送系统提供向后兼容性。图13b示出了在消息传送应用程序中提供向后兼容性的用户界面的示例。图14a示出了根据一个实施方案的方法,其中接收设备(已经接收到消息)下载并安装用于查看其中一个消息中的内容或与该内容进行交互的扩展应用程序。图14b示出可供下载和安装扩展应用程序的扩展应用程序市场或服务的用户界面的示例。图15示出了根据一个实施方案的用于提供在发送和接收设备两者上使用贴纸扩展应用程序的消息传送系统的示例。图16a是示出根据一个实施方案的方法的流程图,该方法可在图15所示的系统中执行。图16b是示出根据一个实施方案的另一个方法的流程图,该方法可与图15所示的系统一起执行。图16c示出根据消息传送应用程序的一个实施方案的用户界面,该消息传送应用程序托管已用于创建贴纸并且将贴纸应用于消息传送应用程序的消息记录中的消息的贴纸扩展应用程序的视图。图17是示出示例性api架构的框图,该架构可在本文描述的一个或多个实施方案中使用。图18示出了说明软件栈的框图,该软件栈可在操作系统中包括一个或多个应用程序和服务。图19示出可用于本文所述的一个或多个实施方案中的数据处理系统的示例。具体实施方式将参考以下讨论的细节来描述各种实施方案和方面,并且附图将对各种实施方案进行说明。以下说明书和附图为例示性的,并且不应被理解为限制性的。描述了许多具体细节,以提供对各个实施方案的全面理解。然而,在某些实例中,熟知的或常规的细节并未被描述,以便提供对实施方案的简明论述。在本说明书中提到的“一个实施方案”或“实施方案”是指结合该实施方案所述的特定特征、结构或特性可被包括在至少一个实施方案中。在本说明书中的各个位置出现短语“在一个实施方案中”不一定都是指同一个实施方案。在随后的附图中所描绘的过程由包括硬件(例如,电路、专用逻辑部件等等)、软件或这两者的组合的处理逻辑部件来执行。虽然下文按照某些顺序操作来描述该过程,但应当理解,所描述的某些操作可以不同的顺序执行。此外,某些操作也可并行执行而非按顺序执行。本文所述的各种实施方案涉及消息传送系统,诸如文本消息传送系统或“聊天”消息传送系统,或允许设备在设备之间传送消息的其他系统。例如,appleinc.(cupertino,california)的imessage为ios设备和mac(osx)计算机的消息传送服务的一个示例。通常,消息传送系统包括多个客户端设备,每个客户端设备包括至少一个消息传送应用程序和一组一个或多个消息传送服务器,所述一组一个或多个消息传送服务器可接收来自客户端设备的消息并将消息传输至客户端设备。图1a示出了客户端设备上的消息传送应用程序的用户界面的示例。客户端设备可以是通信设备10,其可以是智能电话或平板电脑,或台式计算机或膝上型计算机,可穿戴设备,机载计算机,或其他数据处理系统或其他消费电子设备。在一个实施方案中,设备可包括既可显示图像又可接受来自用户的触摸输入的传统触摸屏。通信设备上的触摸屏12可显示消息传送应用程序的用户界面,该用户界面可包括消息记录16以及消息记录16下方的屏幕键盘20。此外,消息传送应用程序的用户界面可包括指示接收人的用户名称14,在一个实施方案中,该接收人是从通信设备10发送的消息的接收人。此外,用户界面可包括文本输入区域18,该文本输入区域指示用户在发送文本之前输入的文本的内容;在某种意义上,文本输入区域18是一个文本暂存区,该区域指示准备发送给接收人的文本。图1b示出了通信设备10a上的消息传送应用程序的用户界面的更详细示例。在本实施方案中,用户界面显示在触摸屏12a上,并且包括屏幕键盘20a、文本输入区域18a、消息记录16a和显示发送消息和接收消息的一个或多个其他用户的姓名的用户名称14a。文本输入区域18a是针对内容诸如文本、贴纸、扩展应用程序内容、图像等中的一者或多者的暂存区,所述内容响应于用户选择发送命令而准备被发送(并且在一个实施方案中,可在暂存区中编辑该内容)。在图1b所示的示例中,来自freddy(用户名称14a)的消息显示在消息记录16a的左侧,并且由通信设备10a的用户发送的消息则显示在消息记录16a的右侧。因此,消息气泡17显示由通信设备10a的用户发送给freddy的消息“去哪吃?”,作为对来自freddy“今晚一起吃饭如何?”的消息的响应。消息气泡17中的消息使freddy通过消息气泡19中显示的“去这儿如何?”作出响应。字词“气泡”诸如消息气泡或会话气泡等的使用并不意味着暗示任何特定的形状或形式;相反,其意味着两个或更多个参与者之间的消息之间的任何形状或形式的分界,并且因此该分界可使用框或线或消息容器或不同颜色等。因此,短语“消息气泡”旨在涵盖两个或更多个参与者之间的消息之间的所有此类分界(或其他区分的方式),特别是在此类分界的情形中或在消息记录中用于区分作用的其他方式。在一个实施方案中,消息记录可上下滚动,并且消息记录中的消息根据其时间按顺序呈现,因此用户可通过向上或向下滚动视图随时间查看实际的聊天或对话。图1b中所示的用户界面还包括屏幕键盘20a上方和文本输入区域18a左侧的三个图标22、23和24。当选择时,扩展应用程序视图图标22使得显示可与消息传送应用程序一起操作的已安装的扩展应用程序的视图,并且所提供的视图可以是可浏览视图,诸如图4b中所示的可浏览视图157,以允许用户滚动通过多个页面,该多个页面显示被配置为根据本文描述的一个或多个实施方案与消息传送应用程序一起操作的所有安装的扩展应用程序。在一个实施方案中,成像应用程序图标23可以是当被选择时使得启动消息传送应用程序的插件的图标,该插件在消息传送应用程序的进程内提供图像创建,诸如图5a、图5b和图5c中所示的插件。在一个实施方案中,相机应用程序图标24在被选择时可使通信设备10a进入相机模式,其中设备的相机可捕获静止图像或视频图像,所述图像可被置于消息中以发送图像或视频。现在将结合图2提供消息传送系统的示例的简要概述。消息传送系统50可包括多个客户端设备,诸如客户端设备53和54。这些客户端设备中的每一者可包括至少一个消息传送应用程序,该消息传送应用程序被配置为根据本文描述的一个或多个实施方案与扩展应用程序一起操作,并且还针对与消息传送应用程序中的扩展应用程序架构不兼容的设备传送至少文本消息以及可选的资源定位符或图像或其他内容(例如,如相对于图13a所描述的)。在典型的消息传送系统中,可存在通过一组消息传送服务器进行通信的数百万个客户端设备。在一个实施方案中,多个消息传送服务器可被配置为从发送设备接收加密消息,然后将这些加密消息发送到接收设备。另一组服务器可被配置为接收非文本内容诸如图像或其他“附件”,并且响应于来自所述接收设备的对获得图像或附件的请求而通过下载操作将这些图像或附件提供给接收设备。在一个实施方案中,针对每个接收者的设备单独加密发送者的传出消息。在一个实施方案中,非对称rsa加密算法可用于执行加密。在一个实施方案中,能够从(由一个或多个消息传送服务器维护的)目录服务检索每个接收设备的公共rsa加密密钥,该目录服务包括数据库诸如耦接至一个或多个消息传送服务器51的数据库52。当客户端设备诸如客户端设备53试图向另一客户端设备发送消息时,其向所述一个或多个消息传送服务器51标识该另一客户端设备(诸如通过电子邮件地址或电话号码或其他标识符)。该标识符从客户端设备诸如客户端设备53发送到一个或多个消息传送服务器51,该消息传送服务器随后基于所提供的标识符在数据库52中执行查找操作以检索与该标识符对应的公钥。然后将该公钥传输回请求用于该特定接收设备的公钥的客户端设备,然后客户端设备可使用该公钥或使用可随机生成的另一密钥(例如,对称密钥)来加密消息,并且使用特定接收设备的公共rsa加密密钥来加密该另一密钥。在一个实施方案中,随机生成的密钥可针对每个消息随机生成。在一个实施方案中,所得到的消息(每个接收设备一个消息)包括加密的消息文本、加密的消息密钥和发送者的数字签名,然后将每个接收设备的所得消息上载至一个或多个消息传送服务器51,以用于递送至接收人客户端设备诸如客户端设备54。在一个实施方案中,消息传送系统50可被配置为通过“公共”网络进行操作,该“公共”网络包括公共wifi接入点(诸如咖啡店、机场等中的wifi接入点)以及互联网。客户端设备53和54中的每一者上的消息传送应用程序还可被配置为与由无线蜂窝电话运营商诸如verizon和at&t提供的“专用”网络一起操作,并且消息传送应用程序可被配置为在专用网络和公共网络的使用之间无缝切换,具体取决于每个网络的可用性,并且还取决于消息传送会话中每个客户端设备的兼容性。在一个实施方案中,消息传送服务器51可包括一组推送通知服务器,其接收上载的文本消息并将那些文本消息“推送”到接收设备。在一个实施方案中,客户端设备上的消息传送系统包括作为单独进程操作的消息传送应用程序和一个或多个扩展应用程序。在一个实施方案中,消息传送应用程序和一个或多个扩展应用程序可各自为在其自己的存储空间中操作或执行的单独的沙箱进程。此外,消息传送应用程序还可与插件诸如图5a中所示的图像创建插件一起操作,所述插件在与消息传送应用程序相同的进程和存储空间内操作。消息传送应用程序和每个扩展应用程序通过进程间通信诸如ios和macosx中提供的xpc框架彼此通信。消息传送应用程序被设计为在发送设备上从设备用户接收文本并且在消息记录中显示该文本,并且通过一组一个或多个消息传送服务器将文本发送到接收设备,该接收设备通过接收设备上的对应消息传送应用程序而在接收设备上的消息记录中显示接收的文本。接收设备和发送设备可各自具有相同扩展应用程序的副本,其被配置为根据特定的扩展应用程序创建特定类型的内容(或者在另选的实施方案中,每个可包括与其所使用的内容兼容的不同扩展应用程序的副本)。图3a示出了软件架构的示例,其中消息传送应用程序和一个或多个扩展应用程序一起操作以提供增强的消息传送系统。如图3a所示,消息传送系统75包括消息传送应用程序76和一组插件模块诸如组合模块77和数据传输模块79,所述模块被配置为通过进程间通信ipc81与一个或多个扩展应用程序83进行通信。如图3a所示,消息传送应用程序和组合模块77以及数据传输模块79在存储空间中的消息传送应用程序进程内操作,消息传送应用程序进程由执行消息传送系统75的通信设备上的内核控制。当消息气泡显示或以其他方式呈现通过ipc81传递给消息传送应用程序的内容时,组合模块77编写消息气泡的内容。数据传输模块79通过ipc81将内容和其他数据传递到扩展应用程序,并且通过ipc81从扩展应用程序接收内容和其他数据。在一个实施方案中,模块77和79两者可具有可扩展的插件架构,该架构允许为生成新内容或需要新数据传输进程的新扩展应用程序添加新的插件。在此上下文中,插件是在与消息传送应用程序相同的进程中运行的附加软件。组合模块77可使用模板来构造消息气泡,诸如下面关于图3c描述的“msmessagetemplatelayout”。内核可包括用于提供ipc81以允许在消息传送系统75和一个或多个扩展应用程序83之间进行通信的软件库或软件框架。在一个实施方案中,ipc框架可包括被称为扩展点的系统区域,该扩展点提供api以允许在两个不同的进程之间进行通信并且在允许的通信类型方面增强策略。在一个实施方案中,通过ipc的通信涉及通过一个进程将内容放置(写入)存储器区域中,并且ipc框架允许另一个进程从该存储器区域读取。在一个实施方案中,消息传送应用程序76可自动启动扩展应用程序并且可管理其寿命,包括那些进程的终止。在一个实施方案中,在扩展应用程序和消息传送应用程序之间其自身地址空间通信中运行的扩展应用程序83中的每一者使用由系统框架调解的ipc,并且其不能访问彼此的文件或存储空间。在一个实施方案中,每个扩展应用程序可为彼此分开的沙箱进程,并且消息传送应用程序76还可为与扩展应用程序的沙箱进程分开的独立沙箱进程。此外,扩展应用程序可提供相对于消息传送应用程序较少的系统权限,以便扩展应用程序在比消息传送应用程序更受限的环境中运行。关于使用扩展引用程序的进程间通信的更多信息可见于2014年9月16日提交的并且作为美国专利公布u.s.2015/0347748公布的美国专利申请号14/488,122,该专利申请以引用方式并入本文。在一个实施方案中,消息传送应用程序提供通过进程间通信从扩展应用程序获得的内容的视图。扩展应用程序可在其自己的进程中创建内容,然后以已知可为消息传送应用程序接受的格式(诸如标准图像格式或其他标准格式)提供该内容。这允许消息传送应用程序然后在消息记录内的一个或多个消息气泡内呈现来自扩展应用程序的内容(而不需要至少在接收设备上执行该扩展应用程序)。图3b示出了消息气泡17a的示例,该消息气泡包含由扩展应用程序创建并从扩展应用程序提供的内容,示出为内容85,该内容还可包括由扩展应用程序创建或由扩展应用程序提供的文本消息,诸如文本消息86。在一个实施方案中,消息气泡17a还可包括图标87,其可以是创建内容85的扩展应用程序的图标。在一个实施方案中,由扩展应用程序创建的对象在发送和接收设备上的消息记录中示出,而不启动扩展应用程序。扩展应用程序应提供足够的信息来构造消息气泡作为对象的一部分。该对象可包括在资源定位符中编码的一些不透明数据和作为msmessagetemplatelayout对象提供的布局规范。msmessagetemplatelayout是msmessagelayout的子类,并且表示一种指定消息气泡布局的方法。在一个实施方案中,msmessagetemplatelayout可具有如图3c所示的以下属性:1)图像或媒体文件url:作为uiimage或作为链接至图像文件的文件url或链接至视频的文件url提供的图像2)图像标题:将在图像或电影顶部呈现的字符串3)图像子标题:将在图像或电影顶部、imagetitle下面呈现的字符串4)标题:将在图像或电影下方的标题栏中呈现的字符串5)末尾标题:将在图像或电影下方的标题栏中右对齐呈现的字符串6)子标题:将在标题栏中在标题下方呈现的字符串7)末尾子标题:将在标题栏中在末尾标题下方右对齐呈现的字符串8)扩展图标:这不是作为msmessagetemplatelayout的一部分提供的,而是从创建msmessage的扩展应用程序的捆绑标识符衍生的。消息传送应用程序可使用此信息来构造类似于图3c中所示示例的消息气泡。msmessagetemplatelayout被序列化并且与不透明数据一起被传输至远程设备。接收到后,接收设备上的消息传送应用程序将使用序列化数据创建msmessagetemplatelayout,并且使用其在接收者的消息记录中绘制消息气泡。在一个实施方案中,被配置为与消息传送应用程序一起操作的扩展应用程序不能在消息传送应用程序之外执行,因此它们的生命周期完全由消息传送应用程序管理。此外,如下面进一步描述的,在一个实施方案中,可通过消息传送应用程序专门控制扩展应用程序的下载和安装。在一个实施方案中,每个扩展应用程序能够从应用程序市场或分销机构诸如消息扩展应用程序的appleappstore(商标)获得,并且可以从消息传送应用程序内启动。图4a示出根据一个实施方案的方法的示例,其中已安装的扩展应用程序能够从消息传送应用程序内浏览,并且特定的扩展应用程序可被启动以允许用户与特定的扩展应用程序进行交互。该方法能够从操作101开始,其中消息传送应用程序显示其消息记录和屏幕键盘。图1b示出了该消息传送应用程序的用户界面的示例。然后在操作103中,消息传送应用程序可接收输入,以在消息传送应用程序的视图内显示已安装的扩展应用程序的可浏览视图。例如,用户可轻击图标22(图1b中)以选择图标,这继而在操作105中使得显示可浏览视图。在一个实施方案中,已安装的扩展应用程序的可浏览视图取代屏幕键盘,并且从扩展注册表中检索已安装的扩展应用程序的列表,这使得显示每个已安装的扩展应用程序的图标。图4b示出了操作105的结果的示例,其中可浏览视图157被显示并且取代如图4b所示的消息传送应用程序的屏幕键盘。参考图4b,可以看出,可浏览视图157包括多个图标,每个图标表示可与提供图4b中所示用户界面的消息传送应用程序一起操作的已安装的扩展应用程序中的一者。图4b中所示的消息传送应用程序的用户界面包括消息记录153,该消息记录在执行消息传送应用程序的通信设备150上的触摸屏151的上部部分中示出。另一用户的用户名称155(从通信设备150发送的消息的接收人)显示在消息传送应用程序的用户界面的顶部。在消息记录153和可浏览视图157之间显示文本输入区域155(该区域显示被暂存或准备发送的文本或其他内容)。在一个实施方案中,通过在触摸屏上轻扫用户的手指,使得显示所安装的扩展应用程序的各种视图,从而浏览可浏览视图(并且在一个实施方案中,还可显示例如未安装的扩展应用程序,其中所述未安装的扩展应用程序要么需要完成下载进程,要么需要完成安装过程)。在一个实施方案中,用户界面底部的页面指示符159可显示已安装的扩展应用程序的当前页面。在一个实施方案中,可保留其中一个图标以启动或进入扩展应用程序市场,其示例在图14b中示出。在另一个实施方案中,响应于选择图标167,可在可浏览视图157中显示扩展应用程序市场。在图4b所示的实施方案中,图标167是扩展应用程序市场图标,可选择该图标以使得呈现扩展应用程序市场,诸如图14b中所示的扩展应用程序市场。在图4b所示的实施方案中,可选择图标169(例如,用户轻击图标169)以在可浏览视图中显示最近发送的贴纸或手写消息或其他最近发送的项目或最近使用的应用程序等。在一个实施方案中,最近发送的项目等的显示可由在消息传送应用程序的进程内操作的插件提供。其他扩展应用程序包括餐厅预订应用程序图标161,其可以是可用于参与餐厅预订服务诸如opentable的扩展应用程序。扩展应用程序的另一个示例由图标163表示,当该图标被选择时,启动餐厅评价应用程序,该餐厅评价应用程序提供对餐厅的评价并且该评价应用程序可类似于例如yelp提供的评价。其他扩展应用程序图标165和171表示安装的其他扩展应用程序,该扩展应用程序可通过选择那些扩展应用程序图标中的一者来启动。再次参考图4a,一旦通过操作105显示可浏览视图,用户可通过选择对应的图标来选择扩展应用程序中的一者,这继而使得在操作107中启动所选择的扩展应用程序。在一个实施方案中,消息传送应用程序调用系统服务以启动所选择的扩展应用程序,并且使用例如图3a所示的架构使其准备好作为消息传送应用程序的扩展应用程序来执行。一旦所选择的扩展应用程序已经启动并且正在执行,消息传送应用程序诸如消息传送应用程序76可通过如本文所述的ipc框架托管由正执行的扩展应用程序提供的内容的视图。例如,在图4a中所示的操作109中,消息传送应用程序可在消息传送应用程序的视图的一部分内显示由扩展应用程序提供的内容的视图。图5a至图5f现在将被描述为消息传送应用程序如何托管正执行的扩展应用程序的内容的视图的示例。图5a示出了托管消息传送应用程序的插件的视图的消息传送应用程序的示例,所述消息传送应用是通过选择图标207(例如,图标207被用户触摸或轻击或以其他方式选择)启动的图像创建应用程序。在另一个实施方案中,可通过选择图4b中所示的可浏览视图157中的图标中的一者来启动图5a中所示的用户界面的底部部分中所示的插件。虽然图5a中所示的示例可实现为消息传送应用程序的插件,但是在另一个实施方案中,图5a中所示的示例可以是扩展应用程序。在图5a中所示的示例中,插件(或扩展应用程序)的视图已取代了消息传送应用程序的屏幕键盘,但消息传送应用程序的消息记录仍可被查看并显示在用户界面中,从而允许用户滚动通过一个实施方案中的消息记录来查看整个记录。在另一个实施方案中,插件或扩展应用程序的视图为屏幕键盘顶部的叠加,其一部分可以是可见的。在一个实施方案中,记录被显示在通信设备200上的触摸屏202上。消息应用程序的用户界面还包括用户名称203,其在一个实施方案中呈现对话或聊天中的另一用户的名称。消息应用程序的用户界面还包括文本输入区域211,其类似于文本输入区域18a和文本输入区域155。插件(或扩展应用程序)包括画布215以及各种控件和选项,其可由用户选择以绘制或创建图像。如果选择略图选项217,则在一个实施方案中,绘图控件212可允许用户选择不同的颜色以在画布上绘制略图。如果选择了轻击选项221,则插件(或扩展应用程序)还可提供轻击作为消息。如果选择了心跳选项219,则插件(或扩展应用程序)还可提供心跳。在一个实施方案中,略图、心跳和轻击可类似于applewatch上可用的digitaltouch应用程序中的略图、心跳和轻击。插件(或扩展应用程序)还包括扩展视图图标223,当选择该图标时,可使插件(或扩展应用程序)从其在图5a中所示的当前紧凑视图切换到扩展视图,诸如图7b所示的扩展视图。在图5a所示的示例中,用户刚启动插件图像创建应用程序(或在另一个实施方案中,刚启动扩展应用程序)并且尚未创建任何内容。这与图5b所示的插件(或扩展应用程序)的状态形成对比,在图5b所示的插件(或扩展应用程序)中,用户已使用略图选项217或通过使用用户手指在画布215绘图而创建了笑脸略图。然后用户可将该图画发送至作为消息的接收人的另一用户(或多个用户)。因此,例如,设备200的用户能够从在通信设备200上执行的消息传送应用程序内选择发送命令,以使得由插件(或扩展应用程序)创建的内容被发送给接收人。发送操作的结果如图5c所示,其中笑脸已被发送至freddy,如用户名203所指示的那样。消息气泡230显示由插件(或扩展应用程序)创建的笑脸略图;在扩展应用程序的情况下,该创建的内容通过ipc框架从扩展应用程序传送到消息传送应用程序,然后在消息气泡230内呈现,以示出包含该内容的消息被发送给一个或多个接收人。在一个实施方案中,递送指示符231可指示消息已被递送并且可向用户提供保持控件232以允许用户在所述实施方案中保留消息记录中的内容,其中该内容可在一段时间之后自动消除。图5d、图5e和图5f示出响应于接收到如图5c所示的来自通信设备200的内容而在接收者的设备上发生的情况。另外,图6所示的流程图可示出在接收设备上执行的方法,该接收设备诸如图5d、图5e和图5f所示的通信设备250。现在参考图5d,可看出通信设备250(由freddy使用)已经接收到在消息气泡253中示出的笑脸内容。该内容由在通信设备200上执行的扩展应用程序创建,该扩展应用程序向在通信设备200上执行的消息传送应用程序提供笑脸内容,该消息传送应用程序继而通过消息传送服务(例如,一组消息传送服务器,诸如图2中所示的消息传送服务器51)将该内容发送至在通信设备250上执行的消息传送应用程序,该消息传送应用程序继而在消息气泡253中呈现该内容。在一个实施方案中,该内容可由消息传送应用程序呈现,因为其使用已知的标准格式(在一个实施方案中包括标准图像、音频和视频格式),因此不需要安装或执行扩展应用程序以显示由发送设备上的对应(远程)扩展应用程序创建的内容。因此,在如图5d所示的这种情况下,即使对应扩展应用程序可能未被执行或者甚至可能未安装在通信设备250上,消息气泡253仍可呈现该内容。图5d所示的消息传送应用程序在其用户界面中包括消息记录201a、文本输入区域211和屏幕键盘255。在一个实施方案中,即使安装了对应的扩展应用程序,从远程扩展扩展应用程序接收的内容也不会导致接收设备上的对应的扩展应用程序自动启动。在该实施方案中,可通过用户选择包含由远程扩展应用创建的内容的消息气泡来启动接收设备上的对应扩展应用程序。如果用户确实通过例如触摸或以其他方式选择消息气泡253来选择该内容,则将启动与远程扩展应用程序对应的扩展应用程序(如果安装在通信设备250上的话)。结果如图5e所示,其中扩展应用程序的用户界面已占据了先前显示屏幕键盘255的空间,并且在画布215内显示笑脸绘图,从而允许通信设备250的用户更改或以其他方式修改该略图,并且可在聊天会话或对话中将其发送回另一用户。另一方面,如果对应的扩展应用程序未安装在通信设备上,则在一个实施方案中,消息传送应用程序可向用户呈现通知,要求或提供安装针对所选择的特定消息气泡的应用程序。图5f中示出了这样的示例,其中通知259包括两个用户可选选项,其中一个用户可选选项将安装消息气泡所需的应用程序。在另一个实施方案中,显示来自扩展应用程序市场的信息的页面的表单可被显示在消息传送应用程序的视图内。在一个实施方案中,从远程设备发送到通信设备250的消息包含指定用于创建该内容的远程扩展应用程序的元数据。在一个实施方案中,该元数据可以是应用程序标识符,诸如由应用程序市场或可供下载和安装扩展应用程序的扩展应用程序市场提供的标识符,或者可以是可与由应用程序市场所使用的标识符相关联的不同标识符。在一个实施方案中,通知259可来自对消息气泡253的选择,而在另一个实施方案中,当通信设备250接收消息气泡253的内容时,如果未安装该内容的元数据中的应用程序标识符,则可自动产生通知。现在将结合图5d、图5e和图5f参考图6,以解释一个实施方案中的方法,其中接收设备处理由远程扩展应用程序诸如结合通信设备200上的消息传送应用程序执行的远程扩展应用程序创建的内容。在操作301中,通信设备可接收具有由扩展应用程序(诸如结合发送设备上的消息传送应用程序操作的远程扩展应用程序)创建的内容的消息。此外,通信设备还可接收元数据,该元数据可包括消息气泡标识符、会话标识符和扩展应用程序标识符以及潜在的其他数据,诸如可选资源定位符以及可与可选资源定位符相关联的其他数据(状态信息),并且该资源定位符还可包括编码到资源定位符中的状态信息。将结合图8、图9a和图9b提供关于资源定位符的使用以及与资源定位符相关联的数据的更多信息。然后,在操作303中,在操作301中接收到消息的通信设备处理内容并将内容显示在由消息气泡标识符标识的消息气泡中,并且消息气泡显示在消息记录中。在一个实施方案中,内容的处理可包括解密内容并呈现内容以在消息气泡内呈现和显示。在一个实施方案中,内容由消息传送应用程序显示而无需来自扩展应用程序的帮助;换句话说,可以不安装扩展应用程序或者如果安装的话不在通信设备上执行,因此在一个实施方案中显示屏幕键盘。然后,在操作305中,通信设备接收对显示由远程扩展应用程序创建的内容的消息气泡的选择。在一个实施方案中,参考图5d,用户可轻击触摸屏上的消息气泡或以其他方式选择(例如,用户在触摸屏上使用触笔或者针对台式计算机使用鼠标等)消息气泡253以引起操作305中的选择。响应于操作305,通信设备诸如通信设备250在操作307中确定是否安装了扩展应用程序。在一个实施方案中,这可通过检查由消息传送应用程序维护的已安装扩展应用程序的列表或注册表来执行。在一个实施方案中,在操作301中接收的元数据包括应用程序标识符,并且操作307中的消息传送应用程序搜索列表以确定列表中是否存在标识符。如果列表中不存在标识符,则消息传送应用程序确定未安装扩展应用程序,从而使通信设备执行操作309,其中可向用户显示图5f中所示的通知259,以提供下载并安装由应用程序标识符指定的应用程序,该应用程序标识符在操作301中作为元数据的一部分而被接收。如果用户选择选项“是”,则执行操作311,其中消息传送应用程序使通信设备访问扩展应用程序市场(诸如具有图14b所示的用户界面的扩展应用程序市场),以通过下载进程检索扩展应用程序的副本并使得安装该扩展应用程序。在一个实施方案中,操作311可完全在后台执行,使得消息传送应用程序在下载和安装进程期间保持为前台应用程序。图9c示出了在下载和安装进程期间保持在消息记录中的消息气泡471的示例,其中消息气泡包括指示下载和安装操作的进度的进度条473,同时消息传送应用程序仍然是在消息传送应用程序的消息记录中显示消息气泡471的前台应用程序。在操作311的另一个实施方案中,示出了来自扩展应用程序市场的信息的页面的表单可在消息传送应用程序上被显示(其中消息传送应用程序的一部分可选地仍然被显示),并且该表单可显示“购买”或安装或下载按钮,如果选择所述按钮,可导致下载和安装扩展应用程序,并且可通过选择解除命令或选择购买或安装或下载来撤销(从显示中移除)该表单。在下载并安装扩展应用程序之后,处理可前进到图6中的操作313,其中启动扩展应用程序并且通过消息传送应用程序将由远程扩展应用程序使用或创建的内容以及其他数据(经由ipc)传递到扩展应用程序,在一个实施方案中,该扩展应用程序以紧凑视图或扩展视图中的任一者显示,并且由远程扩展应用程序创建的内容显示在该视图内。如图6所示,如果操作307确定安装了扩展应用程序,则操作313也跟在操作307之后。图5e示出操作313的结果的一个示例。在一个实施方案中,消息传送应用可根据扩展应用程序的类型以不同方式启动不同类型的扩展应用程序。例如,响应于接收到包含来自具有特定预先确定类型的扩展应用程序的内容的消息气泡而可自动启动一种类型的扩展应用程序。在一个实施方案中,具有不同类型的其他扩展应用程序可仅响应于选择包含来自该扩展应用程序的内容的消息气泡而启动,或者通过在可浏览视图诸如可浏览视图571中选择表示该扩展应用程序的图标来启动。可能希望允许响应于接收到显示在消息记录内的内容而自动启动具有特定类型的特定扩展应用程序,但不自动启动其他类型的扩展应用程序。在另一个另选实施方案中,可允许一个或多个扩展应用程序在后台执行,并且可允许所述扩展应用程序更新在其相应消息气泡中呈现的相应用户界面,并且当用户选择这些消息气泡中的一个气泡时,扩展应用程序可出现在前台中(例如,替代屏幕键盘显示其ui)。在另选实施方案中,元数据可包括格式或扩展标识符诸如图像格式的标识符,其可用于确定可在接收设备上处理该图像格式的可用的扩展应用程序。图7a和图7b示出了本文描述的实施方案的另一方面,其中扩展应用程序可通过向消息传送应用程序发送通信以引起改变来使视图改变。在一个实施方案中,可在扩展应用程序和消息传送应用程序之间提供应用编程接口(api),以允许扩展应用程序调用该api以在托管扩展应用程序的视图的消息传送应用程序内改变其视图。在一个实施方案中,扩展应用程序可具有可包括紧凑视图和扩展视图的至少两个不同视图。在一个实施方案中,紧凑视图可以是取代消息传送应用程序的屏幕键盘的视图,同时消息记录保持显示在消息传送应用程序的用户界面中。在扩展视图中,不再显示消息记录,并且不显示屏幕键盘,但是显示消息传送应用程序的用户界面的某些其他组件诸如文本输入区域211和相机激活图标235。图7b示出了其中画布215a占据触摸屏的大部分空间的扩展视图的示例。如图7b所示,用户可选择紧凑视图图标223a,以使系统从图7b所示的扩展视图变回紧凑视图,诸如图5a所示的视图。图7a中所示的方法是示出可如何改变视图的一个实施方案,并且应当理解,在另选实施方案中,操作序列可以不同的次序执行,并且可具有省略步骤或中间步骤或附加步骤。在图7a的操作351中,可通过具有特定视图或样式的消息传送应用程序来显示扩展应用程序。在操作353中,扩展应用程序可调用消息传送应用程序以获得扩展应用程序的当前呈现视图/样式。在操作357中,消息传送应用程序可提供对操作353的调用的回送,并且该回送可指示扩展应用程序的当前呈现视图/样式。响应于在操作357中接收到的当前呈现,扩展应用程序可通过向消息传送应用程序提供调用以使改变发生来请求改变呈现视图/样式并且在操作361中接收调用。在一个实施方案中,消息传送应用程序最初可通过确认视图正在被改变或将被改变来对该调用作出响应。响应于该调用,在操作363中,消息传送应用程序改变呈现样式/视图以及在请求的视图呈现视图/样式内显示扩展应用程序,并且在操作365中,消息传送应用程序通知扩展应用程序已经完成视图的改变。再次参考图7b,如果用户选择紧凑视图图标223a,这可导致来自扩展应用程序的对消息传送应用程序的调用,以改变消息传送应用程序的用户界面内的扩展应用程序的视图。现在将相对于本文所述的实施方案的另一方面来描述图8、图9a、图9b和图9c。在该实施方案的一个方面,扩展应用程序与另一设备上的对应扩展应用程序可参与通信会话,并且在其通信会话中来回交换信息,并且所有这些都发生在由所述两个消息传送应用程序维护的消息记录的上下文内,所述两个消息传送应用程序如图8所示在两个扩展应用程序之间交互。在一个实施方案中,消息传送应用程序的插件还可按照类似的方式操作,并且通过处于会话中的两个消息传送应用程序在插件之间交换信息。图8所示的消息传送系统400包括至少两个客户端设备,即客户端设备401和客户端设备405,并且还包括一组一个或多个消息传送服务器403。客户端设备401和405可类似于图2中的客户端设备53和54,并且所述一组一个或多个消息传送服务器403可类似于图2中所示的一组消息传送服务器51。每个客户端设备可包括特定扩展应用程序的安装副本(例如,用于在餐厅进行预订的扩展应用程序),并且每个设备上的扩展应用程序可用于创建内容(例如,文本、图像、音频等),并且通过进程间通信框架将该内容传递给设备上的消息传送应用程序,用于特定客户端设备上的消息记录中的特定消息,其可以称为消息气泡。消息应用程序接收内容(以及可选地来自扩展应用程序的其他数据,包括例如扩展应用程序的标识符、资源定位符以及可选地供另一设备上的对应或远程扩展应用程序使用的元数据等),并且显示可显示的内容(诸如由扩展应用程序在消息记录中的消息气泡中提供的餐厅的图像,该扩展应用程序是餐厅预订应用程序诸如“opentable”)。实际上,消息传送应用程序在消息传送应用程序内托管视图,并且该视图的内容由扩展应用程序提供。在一个实施方案中,资源定位符和元数据对于消息传送应用程序是不透明的(例如,无法由消息传送应用程序所识别),但是可由每个设备上的扩展应用程序使用以维护扩展应用程序之间会话的状态信息,并且每个设备上的消息传送应用程序通过在扩展应用程序之间传递资源定位符和元数据来充当扩展应用程序之间的通信机制。在一个实施方案中,关于会话的状态信息可在资源定位符中编码,或者可在元数据中提供,或者可在两者中提供。在一个实施方案中,从每个设备上的会话创建的内容显示在消息记录中相同的单个消息气泡内(通过可由消息传送应用程序维护的会话标识符来标识),并且每次内容(基于来自任一设备的改变)改变时,所述更新的内容继续显示在该消息记录中的单个消息气泡中,并且在会话中显示内容的任何先前消息气泡可转换为面包屑,并且这些先前消息气泡还将包括相同的会话标识符作为新的、更新的消息气泡。现在将参考图9a描述图8中所示的组件的操作和功能,图9a示出了在一个实施方案中操作消息传送系统400的方法。在图9a的操作451中,扩展应用程序诸如扩展应用程序407可创建内容并且生成资源定位符和数据(或可修改现有内容、资源定位符或数据)。扩展应用程序可类似于扩展应用程序83并且在一个实施方案中在一个进程中执行,同时可类似于消息传送应用程序76的消息传送应用程序在另一个进程中执行,并且进程之间的通信通过ipc诸如ipc81发生,其可以是用于在两个不同进程之间提供进程间通信的软件框架或软件库。扩展应用程序407可以是例如餐厅预订应用程序,该餐厅预订应用程序通过网站创建预订,该网站可提供与资源定位符一起使用的状态信息(或者该状态信息可被编码到资源定位符中)。在一个实施方案中,具有资源定位符的数据可为从网站提供的状态信息,并且该状态信息可包括有关特定餐厅和预定时间以及预订人数的信息。扩展应用程序407可在紧凑视图或扩展视图中的任一者中呈现用于通过网站进行餐厅预订的用户界面,同时显示消息传送应用程序的其余部分,包括例如消息记录。因此,扩展应用程序407的用户可在与扩展应用程序和网站(通过扩展应用程序)交互以创建餐厅预订时在消息记录中查看对话的上下文。在一个实施方案中,用户能够浏览各个餐厅(在餐厅预订应用程序内)并且搜索餐厅。在扩展应用程序407的用户已选择了餐厅并且进入预订之后,扩展应用程序407可通过ipc415传递内容以及图8中所示的资源定位符和数据417,以用于设备401上的消息传送应用程序。这显示为图9a中的操作453。在操作455中,消息传送应用程序409将从扩展应用程序407接收的内容与消息气泡相关联,并且在消息传送应用程序409的用户界面中在消息记录的气泡中显示该内容。然后,在操作457中,响应于从用户接收的发送命令,消息传送应用程序409通过所述一个或多个消息传送服务器403将从扩展应用程序407接收的消息(如果有)和内容,以及标识应用程序407(以及可选地,应用程序407的图标)的应用程序标识符,以及资源定位符和数据(如果有)以及会话标识符发送至第二设备,一个或多个消息传送服务器将通信419传递至第二设备405(也称为客户端设备405)。在一个实施方案中,操作453和455可响应于消息传送应用程序接收到对发送命令的选择而作为操作457的一部分发生。即使未安装对应扩展应用程序,也可在接收设备上的消息气泡上显示应用程序407的图标;参见例如图3b中的图标87。在图9a中所示的操作459中,客户端设备405上的消息传送应用程序411从一个或多个消息传送服务器403接收内容,并且在由消息传送应用程序411的用户界面提供的消息记录中所标识的消息气泡421中显示内容。图9b示出了在一个实施方案中具有由餐厅预订扩展应用程序创建的内容的此类消息气泡471的更详细示例。在图9b所示的示例中,该内容包括餐厅的名称、预订时间和预订人数。在一个实施方案中,该内容可由消息传送应用程序显示,而无需启动扩展应用程序413。在一个实施方案中,直到客户端设备405的用户选择消息气泡421才启动扩展应用程序413,从而向客户端设备指示客户端设备405的用户打算与消息气泡421中的内容进行交互。在另选实施方案中,扩展应用程序413可在消息传送应用程序411接收到内容时启动但是保持在后台,并且当客户端设备405的用户输入命令以使扩展应用程序出现时准备执行。在操作461中,响应于对消息气泡421的选择,由通信419中提供的应用程序标识符所标识的扩展应用程序413(如果尚未启动)被启动,并且消息传送应用程序411通过ipc423将与消息气泡421相关联的内容以及资源定位符和数据425传递到消息传送应用程序413。在一个实施方案中,扩展应用程序413是与扩展应用程序407相同的对应扩展应用程序,而在另一实施方案中,其由于可处理相同类型的内容而可仅为兼容的。此时,扩展应用程序413可接收客户端设备405的用户的用户输入,并且可修改内容、资源定位符或数据中的一者或多者。例如,客户端设备405的用户可使扩展应用程序413访问一个或多个网站,以通过修改时间、人数、具体的餐厅等来修改餐厅预订。在一个实施方案中,扩展应用程序413以及扩展应用程序407还可通过将资源定位符和数据发送至web服务器并且从web服务器接收响应从而直接(但是单独地和独立地)与web服务器进行交互,其中所述响应可包括修改后的数据或修改后的资源定位符,或者新的数据和/或新的资源定位符等。在一个实施方案中,web服务器可存储在会话期间使用的数据,并且该存储的数据可包括同样可由会话中的两个扩展应用程序维护的状态信息中的一些或全部的信息。同样,如果扩展应用程序413被呈现以供在紧凑视图中显示,设备405的用户可在聊天或消息传送会话的上下文和对话被显示在消息传送应用程序411的消息记录中时与扩展应用程序413交互以进行餐厅预订。客户端设备405的用户可滚动通过消息记录,同时继续查看扩展应用程序413并与其交互。因此,扩展应用程序413可在操作463中接收用户输入并且可修改内容、资源定位符或数据中的至少一者,然后可在操作465中传递资源定位符和数据427(其可以是修改后的或新的)至消息传送应用程序411。继而,在操作467中,消息传送应用程序411可将可修改的内容以及应用程序标识符和资源定位符(可修改的)和数据(可修改的)和气泡id发送回客户端设备401。如操作469所示,在本文提供的示例中,当两个用户忙于安排餐厅预订时,可随时间重复该过程。应当理解,许多不同类型的扩展应用程序可在客户端设备401和405的用户之间提供协作环境以交换信息并一起协作,并且餐厅预订即是一种此类类型。因此,应当理解,相对于图8和图9a描述的餐厅预订示例仅仅是一种此类类型的扩展应用程序的示例,其可在消息传送应用程序的用户界面的上下文中提供协作环境。可提供类似协作环境的其他类型的扩展应用程序的示例包括例如:贴纸扩展应用程序;成像应用程序;绘图应用程序;内容创建应用程序;游戏;音乐创建应用程序;内容消费应用程序;轮询应用程序;地图应用程序;等。图8所示并且相对于图9a描述的协作环境可在一个或多个实施方案中利用面包屑,并且每个面包屑可由会话标识符来标识。面包屑表示已转换的消息气泡,并由与会话中的其他消息气泡共享的会话标识符来标识。在一个实施方案中,利用与新消息气泡相同的会话标识符所标识的每个先前消息气泡可转换为面包屑,该面包屑可与消息记录中所示的原始内容不同地出现。随着会话中的每个新消息气泡到达或被添加到消息记录,在一个实施方案中,可将用相同会话标识符所标识的先前消息气泡转换为面包屑,并且这在图9d、图9e、图9f、图9g和图9h所示的消息记录中示出。图9d和图9h示出joe的设备上的消息记录510,并且图9e、图9f和图9g示出lester的设备上的消息记录17。消息记录510示出lester的用户名511,并且消息记录517示出joe的用户名518。在图9d、图9e、图9f、图9g和图9h所示的示例中,lester和joe参与文本消息传送会话,并且各自使用扩展应用程序诸如图像创建应用程序或其他扩展应用程序。例如,lester可使用图8所示的扩展应用程序407,并且joe可使用图8所示的扩展应用程序413。lester的设备可使用消息传送应用程序409,而joe的设备可使用消息传送应用程序411。再次参考图9d,可看出消息记录510包括消息气泡512和消息气泡513,其指示消息记录510内的对话的内容。此外,joe已经使用扩展应用程序413创建附加到消息气泡514的内容515。例如,joe可能已经输入文本作为文本消息,并且还使用扩展应用程序413创建了内容,然后使得消息气泡514中示出的文本和内容515(在一个实施方案中,该内容与消息气泡514相关联或者是消息气泡的一部分)两者被发送至lester的设备。消息记录510的右侧示出了由joe发送的消息,而消息记录510的左侧示出了从lester接收的消息。现在参考图9e,可看出消息气泡513现在位于消息记录517的右侧,而消息气泡514和内容515位于lester设备上的消息记录517的左侧。因此,lester的设备已接收到消息气泡514内的文本消息,并且还已接收到由joe的设备上的扩展应用程序生成的内容515。然后,lester可轻击内容515以使得lester的设备上的相应的或对应的扩展应用程序启动。内容515与针对lester的设备上的扩展应用程序保持的会话标识符相关联。例如,此时在该过程中,在一个实施方案中,由于用户选择可显示在消息气泡内的内容515,可在lester的设备上执行图9a中所示的操作461。然后lester可使用lester设备上的扩展应用程序创建修改的内容或新内容,并将修改后的内容或新内容发送回joe。在图9f中,可看出lester已经创建了修改后的内容或新内容521,该内容显示在暂存区519内,该暂存区示出了响应于用户选择发送命令诸如图9f所示的发送按钮523而准备发送以及将要发送的文本和其他内容。当lester选择发送命令时(其中内容如暂存区519中所示),这使得文本消息520和新的或修改后的内容521发送给joe,并且这可在图9g中看出,其中消息气泡520a示出文本消息520位于消息记录517的右侧,还示出了内容521(在一个实施方案中,该内容与消息气泡520a相关联或者是消息气泡的一部分),该内容由lester使用lester设备上的扩展应用程序407修改或创建为新内容。从图9g中可以看出,内容515现在已被转换为面包屑515a。在一个实施方案中,这种转变可由消息传送应用程序执行或另选地由扩展应用程序执行。在一个实施方案中,扩展应用程序可提供出现在面包屑515a内的文本,并且消息传送应用程序将使用会话标识符以标识将被转换为面包屑的一个或多个消息气泡,并且这将导致内容转换为面包屑515a,并且在相关联的消息气泡514旁边显示面包屑515a,而不将消息气泡514中的文本消息转换为面包屑。因此,图9g示出了与先前消息气泡相关联的会话标识符或由扩展应用程序创建的内容可如何用于将一个或多个先前消息气泡转换为发送设备上的面包屑。图9h示出了在一个实施方案中如何在接收设备上显示转换。在图9h所示的附图中,消息气泡520a与来自lester设备上的扩展应用程序403的新内容或修改后的内容一起显示在消息记录510的左侧。joe的设备上的内容515已被转换为消息记录右侧的面包屑515a,并且显示在消息气泡514的旁边,该消息气泡在最初发送内容515时伴随该内容515。在操作459中,如果接收设备诸如客户端设备405能够安装和使用扩展应用程序(由通信419中提供的应用程序标识符标识)但扩展应用程序未安装在接收设备上,则接收设备可在消息传送应用程序的用户界面中提供下载并安装扩展应用程序(同样在接收设备上,由通信419中的应用程序标识符指定)。图9c示出了一个示例,其中来自扩展应用程序407的内容可显示在客户端设备405上的消息气泡471中,并且客户端设备405处于下载和安装由通信419中的应用程序标识符所标识的扩展应用程序的过程。在图9c所示的示例中,在扩展应用程序413被安装时,在消息气泡471内显示内容。在一个实施方案中,可在安装过程期间在消息气泡471内显示进度条473(或者另选地,进度圆)。在一个实施方案中,下载和安装过程可在后台执行,同时消息传送应用程序仍然是前台应用程序。如果接收设备无法安装或使用扩展应用程序,则在一个实施方案中,资源定位符和元数据可被传送至接收设备上的网络浏览器,并且该网络浏览器可成为前台应用程序并且允许用户与由资源定位符所指的网页进行交互。在一些实施方案中,可能期望向在客户端设备上执行的每个扩展应用程序提供每个用户的标识符,特别是在两个或更多个用户通过消息传送应用程序和扩展应用程序进行交互的协作环境的情况下。图10示出了方法的示例,该方法用于为每个扩展应用程序提供标识符,而不会导致用户隐私的损失。如图10所示的方法可由每个客户端设备上的每个消息传送应用程序来执行。在一个实施方案中,可响应于来自扩展应用程序的对应用编程接口(api)的调用而执行该方法,该调用可允许扩展应用程序请求本地用户的标识符。在一个实施方案中,该标识符可以是本地用户的电子邮件地址或电话号码或由消息传送系统使用的其他标识符。提供给扩展应用程序的标识符是在一个实施方案中通过图10所示的方法创建的模糊标识符。在操作501中,消息传送应用程序可响应于来自扩展应用程序的调用而生成针对特定扩展应用程序的盐值。在一个实施方案中,盐值可为与该特定扩展应用程序相关联的随机数字。然后,在操作503中,消息传送应用程序可生成用户或设备标识符与盐值的组合的散列(诸如sha-1散列)。例如,用户标识符可以是用户的电话号码或电子邮件地址,并且该电话号码或电子邮件地址与盐值组合,然后在操作503中针对该组合创建散列。然后,在操作505中,通过ipc向扩展应用程序提供散列,并且该散列值可用作具有资源定位符的数据,然后可将其发送到另一扩展应用程序以标识已经进行了更改或者创建了内容的用户。在另一个实施方案中,消息传送应用程序可通过保持标识符与针对每个扩展应用程序的随机生成的唯一标识符之间的映射来模糊该标识符。换句话说,对于给定的扩展应用程序,消息传送应用程序可针对扩展应用程序生成随机(和唯一)标识符,并且将该随机标识符与用户的标识符(例如,本地用户的电子邮件地址或电话号码或消息传送系统使用的其他标识符)相关联(例如,映射)。可以将给定扩展应用程序的随机标识符提供给扩展应用程序,但不向扩展应用程序提供该标识符。另一个扩展应用程序将接收到不同的随机生成的标识符。然后可将该扩展应用程序特定的标识符提供给另一设备上的对应扩展应用程序,使得所述两个扩展应用程序可跟踪哪些用户在会话或其他协作环境的上下文中执行了哪些动作。在一个实施方案中,本文描述的消息传送系统可向一个或多个扩展应用程序提供消息接收的确认,并且这在扩展应用程序需要确保远程扩展应用程序具有与本地扩展应用程序相同的已知状态的某些情况下可能是有用的。图11示出了用于提供接收确认的方法的示例。在操作551中,消息传送应用程序从用户接收“发送”命令,并且作为响应,本地扩展应用程序将内容提供给消息传送应用程序。继而,在操作553中,消息传送应用程序通过一个或多个消息传送服务器将消息和消息气泡标识符以及内容和资源定位符(如果有)发送到还包括消息应用程序的接收设备。在某一时刻,在操作555中,本地设备上的消息传送应用程序接收消息和内容和可选资源定位符的接收确认,然后可在操作557中通过ipc将接收确认传递给本地扩展应用程序,使得本地扩展应用程序知道当扩展应用程序提供其内容以便传输到远程扩展应用程序时,远程扩展应用程序具有相同的已知状态。图12示出了本文描述的实施方案的另一个方面,并且该方面涉及在消息记录中呈现多个消息气泡,其中不同的消息气泡具有由不同的扩展应用程序创建的内容,并且其中至少一个扩展应用程序可正在执行(并且使其内容显示在紧凑视图中),同时还显示消息传送应用程序的用户界面的消息记录。图12示出此方面的示例。该实施方案中的通信设备600包括触摸屏601,其显示包括两个消息气泡605和607的消息记录603。此外,消息传送应用程序呈现扩展应用程序的紧凑视图609,其在这种情况下为用于餐厅预订的扩展应用程序。在图12所示的示例中,用于餐厅预订的扩展应用程序已用于发送示出餐厅预订的内容的消息,其被描绘为消息气泡607。这可能是由于从使用另一个通信设备的另一个用户接收到消息而发生的,所述另一个通信设备提供来自另一个扩展应用程序的餐厅评价的内容。在图12所示的示例中,消息气泡605示出了由用于提供餐厅评价的远程扩展应用程序创建的内容,该远程扩展应用程序不同于用于进行餐厅预订的扩展应用程序。在一个实施方案中,两种扩展应用程序均在作为消息传送会话或聊天的一部分的通信设备上执行。本文所述的实施方案的另一方面涉及向后兼容性,并且该方面如图13a和图13b所示。某些旧设备可能与本文所述的扩展应用程序架构不兼容,或者可能不使用该架构或甚至可能并非智能手机。在一个实施方案中,发送消息的客户端设备能够自动提供另选内容,或者基于确定接收设备与扩展应用程序不兼容来提供另选内容。一种提供向后兼容性的方法如图13a所示。在操作651中,发送设备上的扩展应用程序在发送设备(第一设备)上创建内容,以通过消息传送应用程序和消息传送服务递送到第二设备。这一操作与图9a所示的操作451类似。响应于消息传送应用程序接收到用户的“发送”选择,在操作651中创建的内容可随后在操作653中通过进程间通信传递到消息传送应用程序。然后,在操作655中,消息传送应用程序可显示第一设备上的内容并且还确定第二设备与扩展应用程序不兼容。在一个实施方案中,这可由于从一个或多个消息传送服务器诸如图2中所示的一个或多个消息传送服务器51接收到关于接收设备(第二设备)的信息而确定,所述消息传送服务器可保持关于每个设备的状态的信息,诸如设备操作系统的版本或设备的类型等。由于确定第二设备与扩展应用程序不兼容,消息传送应用程序可在操作657中向第二设备发送另选内容,并且图13b提供了该另选内容的示例。图13b所示的通信设备675可为例如使用与本文所述的扩展应用程序不兼容的旧操作系统的旧智能手机。然而,通信设备675包括触摸屏679和文本输入区域683以及屏幕键盘685,其提供消息传送应用程序的功能,该消息传送应用程序还显示包括消息气泡687的消息记录681。消息气泡687包含由远程设备上的发送消息应用程序提供的另选内容。在这种情况下,内容包括图像689和资源定位符691,其可由用户选择以使得显示资源定位符691所引用的网页。换句话说,资源定位符691可由用户选择以调用通信设备675上的web浏览器,以允许通信设备675的用户通过web浏览器与网页进行交互,者在某些情况下可与扩展应用程序和网站交互具有相同影响。本文所述的实施方案的另一方面涉及一种服务,诸如根据本文所述的一个或多个实施方案的可提供多个不同扩展应用程序以供在消息传送应用程序内使用的应用程序市场。该服务或应用程序市场可呈现多个不同扩展应用程序和消息传送应用程序插件的可浏览视图,并提供关于那些各个扩展应用程序的信息,以及提供将那些扩展应用程序下载至客户端设备以允许客户端设备安装一个或多个扩展应用程序。图14a示出了用于使用此类服务或应用程序市场的方法的示例,并且图14b示出了消息传送扩展应用程序市场的用户界面的示例。在一个实施方案中,可从客户端设备上的消息传送应用程序的用户界面内的已安装扩展应用程序的可浏览视图调用图14b中所示的应用程序市场。例如,图4b中所示的对图标167的选择可使得呈现图14b中所示的消息传送扩展应用程序市场。然后,用户可以浏览消息传送扩展应用程序的一个或多个集合,并且选择可为免费的或可购买的一个或多个扩展应用程序。在图14b所示的示例中,消息传送扩展应用程序市场725可包括导航栏729和一个或多个消息传送扩展应用程序诸如在触摸屏727上显示的应用程序726、728和731的可浏览视图。在一个实施方案中,用户可通过在触摸屏上轻扫用户的手指或使用导航栏729来浏览应用程序。然后,用户可选择下载和安装扩展应用程序中的一个或多个,并且因此用户客户端设备上的消息传送应用程序可将表示新安装的扩展应用程序的图标添加到已安装的扩展应用程序的可浏览视图中,诸如图4b中所示的可浏览视图157。此外,消息传送应用程序可将已安装的扩展应用程序与由应用程序市场提供的应用程序的标识符(“应用程序标识符”)一起添加到已安装的扩展应用程序列表中。虽然图14b中所示的用户使用应用程序市场是安装扩展应用程序的一种方式,但是图14a中示出了另一种方式,其中安装过程由于用户与消息传送应用程序的消息记录中的消息进行交互而开始。现在参见图14a,操作701中的消息传送应用程序可接收由远程设备诸如第一设备上的扩展应用程序创建的内容(以及任选的资源定位符和数据),并且还可接收远程设备上扩展应用程序的应用程序标识符。在一个实施方案中,当扩展应用安装在第一设备上时,应用程序标识符可以是由应用程序市场提供的相同标识符,或者可以是与应用程序商店的标识符相关联的不同标识符。然后,在操作703中,第二设备上的消息传送应用程序可以在消息气泡中显示内容,并且可以保留资源定位符和数据(如果提供)。此时,该实施方案中的消息传送应用程序不会尝试启动扩展应用程序,该扩展应用程序实际上此时未安装在第二设备上。然后,在操作705中,消息传送应用程序接收对包含由来自第一设备的扩展应用程序提供的内容的消息气泡的选择,诸如轻击,并且消息传送应用程序确定(由接收的应用程序标识符所标识的)扩展应用程序未安装在第二设备上。此时,如在图14a的操作707中所示,消息传送应用程序提供在第二设备上下载和安装扩展应用程序,并且用户可选择安装由在操作701中接收的应用程序标识符所标识的那个扩展应用程序。在一些情况下,用户在下载和安装扩展应用程序之前可能需要购买该扩展应用程序。提供下载和安装在通知诸如图5f中所示的通知259中呈现,并且该通知可包括使得针对所选择的消息气泡下载和安装扩展应用程序的可选选项。然后在操作709中,第二设备下载和安装扩展应用程序并且可启动新安装的扩展应用程序。在一个实施方案中,可在消息传送应用程序保持在前台时在后台进行下载和安装。在一个实施方案中,下载和安装的进度可在进度条诸如在所选消息气泡内示出的进度条473中显示。在操作709完成之后,然后可在第二设备上使用新安装的扩展应用程序,并且消息传送应用程序可在操作711中将内容和可选资源定位符和数据提供给(消息传送应用程序托管的视图内的)第二设备上的扩展应用程序。在一个实施方案中,消息传送应用程序可使得已安装的扩展应用程序自动更新。在另一个实施方案中,消息传送应用程序可向用户提供某些扩展应用程序需要更新的提示或通知,并且在一个实施方案中,能够从扩展应用程序市场接收关于这些更新的通知。这样可使用户选择性地决定是否更新特定的消息传送应用程序。本文所述的实施方案的另一方面涉及贴纸扩展应用程序,并且图15、图16a、图16b和图16c示出这一方面的示例。贴纸扩展应用程序是作为消息传送应用程序诸如图3a中所示的消息传送应用程序76的扩展应用程序运行的应用程序,并且向消息传送应用程序提供与消息传送应用程序的消息记录中的消息气泡相关联的图像。在一个实施方案中的贴纸应用程序能够从消息传送扩展应用程序商店购买或以其他方式获得(例如,参见图14b),并且所购买的贴纸应用程序可包括一组贴纸。在一个实施方案中,图像的文件大小被约束为小于预先确定的数据量。在一个实施方案中,用户可在消息传送应用程序的视图内使用贴纸扩展应用程序创建图像,然后将图像从消息应用程序中的贴纸扩展应用程序的视图拖动到消息传送应用程序提供的记录中的消息气泡上。在一个实施方案中,在将图像拖动到消息气泡上之后,用户还可在所选择的消息气泡上缩放(例如,放大或缩小)并旋转贴纸图像。在一个实施方案中,用户还可将贴纸应用于消息气泡,该消息气泡被暂存以便发送但尚未被发送。在一个实施方案中,发送设备将加密的图像文件发送到消息传送服务器并接收下载令牌(以及相关的生存时间(ttl)值),其中令牌表示加密的图像文件。在一个实施方案中的图像文件如本文所述基于每个发送者进行加密,并且因此消息传送服务器可存储相同贴纸的多个实例,每个实例用不同发送设备的不同密钥进行加密并且各自具有生存时间值,当适当的发送设备发送(先前从服务器获得的)下载令牌到服务器以获得后续消息时,该生存时间值可由该适当的发送设备刷新。在一个实施方案中,贴纸可为动画。当发送设备首先将可被加密的贴纸图像发送到一个或多个消息传送服务器时,其接收下载令牌和生存时间值。图15所示的消息传送系统800可类似于图2所示的消息传送系统50。具体地讲,该组消息传送服务器801可类似于消息传送服务器51,并且发送设备803和接收设备805可类似于客户端设备53和54。此外,在一个实施方案中,发送设备803和接收设备805可使用图3a中所示的架构,其中消息传送应用程序76通过图3a所示的ipc与单独的扩展应用程序一起操作。当发送设备803首先向该组一个或多个消息传送服务器801发送811贴纸图像(可加密的)以及可加密的消息时,发送设备803接收812下载令牌和ttl值,该ttl值指示加密的贴纸图像在消息传送服务器801和发送设备803两者上的计划到期时间(同时)。如果发送设备803在ttl值尚未到期时再次在消息中向相同或不同接收设备发送819贴纸(相同贴纸),则发送设备803将不再上载贴纸图像而是发送819下载令牌至一个或多个消息传送服务器801,这也使得服务器801的生存时间值被刷新(并且还使得存储在发送设备803的ttl值被刷新)。如果生存时间值已经到期,则发送设备803将再次上载加密的贴纸图像(其可用不同的密钥加密),并且将从该组一个或多个消息传送服务器801接收另一个下载令牌。该组一个或多个服务器801可维护加密贴纸的数据库802,对于每个加密贴纸,该数据库具有对应的令牌和对应的生存时间值。具体地讲,加密的贴纸1可具有数据库802的行821中所示的对应的令牌值令牌1和对应的生存时间值ttl1。类似地,另一个加密的贴纸图像可在数据库802中针对其行823具有加密的贴纸2的副本,并且在行823中具有对应的令牌2和ttl2值。在另一个实施方案中,贴纸1和贴纸2可以是针对相同贴纸图像的加密图像,但是针对不同的接收者(但来自同一发送设备),并且用不同的密钥加密,因此分开存储在数据库的不同行中。虽然参考图15描述的实施方案针对贴纸使用ttl值,但应当理解,从消息传送应用程序发送的其他对象也可以相同的方式使用ttl值,并且这些其他对象可包括图像、文档、可执行文件(例如,游戏)等。图16a示出了根据一个实施方案的方法,其中发送设备803与该组一个或多个消息传送服务器801进行交互。在操作851中,贴纸扩展应用程序创建贴纸图像和图像的散列,并且可接收用户输入以确定图像元数据诸,如缩放和旋转元数据。在一个实施方案中,贴纸图像的创建可仅涉及从图16c中所示的可浏览贴纸视图835选择特定贴纸图像诸如贴纸图像841,并且将所选择的贴纸诸如贴纸841拖动到消息诸如消息气泡839上(或消息记录中或文本暂存区中的任何其他消息气泡),所述消息气泡可能已由通信设备831发送。类似地,在消息气泡839上创建花朵贴纸可仅涉及将贴纸843从可浏览贴纸视图835拖动到消息气泡839上(或消息记录中或文本暂存区中的任何其他消息气泡),并且在花朵位于消息气泡839上时执行任何图像操纵诸如缩放或旋转。再次参考图16a,在操作851中,消息传送应用程序从贴纸应用程序接收贴纸图像和图像元数据(例如,旋转元数据和缩放元数据)以及针对指定消息气泡上的位置的位置元数据,并且将气泡标识符(其可被标识为指定的消息气泡)和贴纸扩展应用程序标识符与贴纸图像相关联。然后,在操作853中,发送设备上的消息传送应用程序将加密的消息(如果有)和加密的贴纸图像和元数据上载到一个或多个消息传送服务器,以便递送至接收设备。该上载过程在图15中显示为发送811。然后,在操作855中,发送设备(诸如发送设备803)从一个或多个消息传送服务器801接收下载令牌,并且为对应的加密贴纸图像存储令牌和相关联的ttl值。这显示为图15中的接收812。在图16a的操作857中,发送设备还可任选地接收对消息接收的确认。然后,在操作859中,为了随后将相同图像贴纸发送到相同的接收设备或其他接收设备(在一个实施方案中),只要ttl值尚未到期,发送设备803可发送819该贴纸图像的相关令牌以递送至相同接收设备或其他接收设备(在一个实施方案中)。在一个实施方案中,发送令牌可刷新消息传送服务器和发送设备803两者处的ttl值。因此,一旦接收到用于第二次和后续发送的令牌,一个或多个消息传送服务器将刷新数据库802内的对应生存时间值。另一方面,如果生存时间值已经到期,发送设备803将再次上载加密贴纸图像的另一副本,并且从一个或多个消息传送服务器801接收新的下载令牌和新的生存时间值。图16b所示的方法可由接收设备805来执行。在操作875中,接收设备可接收加密消息和下载令牌以及对应的元数据,并且这在图15中示出为已接收813。在一个实施方案中,元数据可包括由远程贴纸扩展应用程序创建的散列以及贴纸扩展应用程序标识符和气泡标识符,以及指示所标识的消息气泡上的位置的位置元数据,以及供设备805上的消息传送应用程序使用以定位、缩放和旋转贴纸的缩放元数据和旋转元数据。在操作877中,消息传送应用根据在操作875中接收的散列确定接收设备是否具有存储在接收设备上的贴纸图像的本地副本。如果有,则在操作877之后执行操作881,使得处理跳转到操作891,如图16b所示。如果不存在本地副本,则在操作877之后执行操作879,并且接收设备805在操作879中将图15中所示发送815中的下载令牌发送到一个或多个消息传送服务器801,以检索加密的贴纸图像,然后消息传送应用程序在操作879中解密所加密的贴纸图像。然后,在操作891中,接收设备使用图像元数据生成最终贴纸图像,该最终贴纸图像可包括图像的一个或多个旋转和放大或缩小(或图像的其他修改);在一个实施方案中,接收设备上的消息传送应用程序执行操作891。然后,在操作893中,消息传送应用程序可在消息记录中的气泡上显示最终贴纸图像(在由气泡标识符所标识的气泡上)。图16c示出了用户已创建了两个贴纸图像并将它们放置在消息气泡839上的示例。在一个实施方案中,贴纸扩展应用程序可提供用户界面,该用户界面允许一个或多个用户从贴纸组件库中的贴纸的部分来组合贴纸,以便创建包括来自库的所选择部分的最终贴纸;该库可通过贴纸扩展应用程序提供。贴纸扩展应用程序可通过“向导”引导用户创建最终贴纸,该向导引导用户完成创建最终贴纸所涉及的各个阶段。此类贴纸扩展应用程序的一个示例描述于2016年6月12日提交的美国临时专利申请号62/349,091的附录ii中。图15所示的示例是将贴纸分发或发送至接收设备的一个实施方案,并且现在将描述两个另选的实施方案。在第一另选实施方案中,当贴纸扩展应用程序的开发者将扩展应用程序及其资源和资产(诸如贴纸图像)上载到分销机构/服务诸如应用程序在线商店时,分销机构/服务可提取资产并将其存储在基于云的存储系统中(例如,支持icloud存储的一个或多个服务器),并且为每个贴纸图像提供唯一标识符(诸如全局唯一标识符-guid),并将guid与对应的贴纸图像相关联。分销机构/服务还可将唯一标识符与贴纸扩展应用程序存储在一起(例如,作为包括贴纸扩展应用程序的包的一部分),使得发送设备(例如,设备803)可安装贴纸扩展应用程序,其中贴纸图像的唯一标识符包括在应用程序中。当发送设备发送具有贴纸扩展应用程序创建的贴纸的消息时,发送设备上的消息传送应用程序将贴纸的唯一标识符发送至接收设备上的消息传送应用程序。然后,接收设备上的消息传送应用程序可通过将唯一标识符发送到基于云的存储系统来检索贴纸图像(如果未本地存储在接收设备上),存储系统可通过将所标识的贴纸图像发送到接收设备来进行响应。第二另选实施方案支持可由用户生成的新贴纸(用户使用图像创建或捕获应用程序生成新贴纸),并且第二另选实施方案还可在接收设备请求贴纸时使用基于云的存储服务来检索贴纸图像,该基于云的服务使用贴纸图像的标识符(例如,贴纸图像的散列)。当发送设备(例如,发送设备803)发送贴纸时,其可检查其本地存储以获得先前发送到该组一个或多个消息传送服务器的贴纸列表,并且如果贴纸先前已被发送,发送设备将贴纸的标识符发送至接收设备。标识符可以是散列诸如贴纸图像的sha-1散列或md1散列,并且该标识符将取决于贴纸图像的内容,并且在几乎所有情况下都是贴纸图像的可靠且唯一的标识符。在从发送设备接收到标识符之后,接收设备可使用该标识符从基于云的存储服务中检索贴纸,在一个实施方案中,该接收设备使用标识符作为在数据库中查找贴纸图像的密钥,然后基于云的存储服务将检索到的贴纸图像发送到接收设备。当发送设备在检查其本地存储以获得先前发送的贴纸时,发送设备确定贴纸图像先前未由发送设备的消息传送应用程序发送,随后消息传送应用程序可将贴纸图像发送到基于云的存储服务(直接或通过一个或多个消息传送服务器),所述消息传送服务器可创建贴纸图像的散列(标识符)并将两者存储在基于云的存储服务中;发送设备还可将标识符(例如,贴纸图像的散列)发送至接收设备,该接收设备可使用该标识符从基于云的存储服务中检索贴纸图像。在一些实施方案中,可使用一个或多个应用编程接口(api)。api是由程序代码组件或硬件组件(在下文中称为“api实现组件”)来实现的接口,允许不同的程序代码组件或硬件组件(在下文中称为“api调用组件”)访问和使用由api实现组件提供的一个或多个函数、方法、流程、数据结构、类和/或其他服务。api可定义在api调用组件和api实现组件之间传递的一个或多个参数。api允许api调用组件的开发者(可以是第三方开发者)利用由api实现组件提供的指定特征。可以有一个api调用组件或可以有多于一个此类组件。api可以是计算机系统或程序库提供的源代码接口,以便支持来自应用程序的服务请求。操作系统(os)可具有多个api,以允许运行于os上的应用程序调用那些api中的一个或多个api,并且服务(例如程序库)可具有多个api,以允许使用服务的应用程序调用那些api中的一个或多个api。可按照在构建应用程序时能够解译或编译的编程语言来指定api。在一些实施方案中,api实现组件可提供多于一个api,每个api提供不同视图或具有不同方面,该不同方面访问由api实现组件实现的功能的不同方面。例如,api实现组件的一个api可提供第一函数集,并可暴露于第三方开发者,并且api实现组件的另一个api可被隐藏(不暴露)并提供第一函数集的子集,并且还提供另一函数集,诸如不在第一函数集中的测试或调试函数。在其他实施方案中,api实现组件本身可经由下层api调用一个或多个其它组件,因而既是api调用组件又是api实现组件。api定义在访问和使用api实现组件的指定特征时api调用组件所使用的语言和参数。例如,api调用组件通过被api暴露的一个或多个api调用或引用(例如由函数或方法调用实现)来访问api实现组件的指定特征,并经由api调用或引用使用参数来传递数据和控制信息。api实现组件可响应于来自api调用组件的api调用而通过api返回值。尽管api定义api调用的语法和结果(例如,如何引起api调用以及api调用能干什么),但api可不揭示api调用如何完成由api调用指定的函数。经由调用(api调用组件)和api实现组件之间的一个或多个应用编程接口来传输各种api调用。传输api调用可包括发出、发起、引用、调用、接收、返回或响应函数调用或消息;换句话讲,传输能够描述api调用组件或api实现组件中的任一者的动作。api的函数调用或其它引用可通过参数列表或其它结构发送或接收一个或多个参数。参数可以是常数、键、数据结构、对象、对象类、变量、数据类型、指针、数组、列表或指向函数或方法的指针或援引要经由api传递的数据或其它项目的另一种方式。此外,数据类型或类可由api提供并由api实现组件实现。因此,api调用组件可利用api中提供的定义来声明变量、使用指向这种类型或类的指针、使用或实例化这种类型或类的恒定值。通常,可使用api来访问由api实现组件提供的服务或数据,或启动执行由api实现组件提供的操作或计算。以举例的方式,api实现组件和api调用组件可各自为操作系统、库、设备驱动程序、api、应用程序或其它模块(应当理解,api实现组件和api调用组件可以是彼此相同或不同类型的模块)中的任一种。在一些情况下,可至少部分地在固件、微码或其它硬件逻辑部件中实现api实现组件。在一些实施方案中,api可允许客户端程序(例如,游戏中心应用程序)使用由软件开发工具包(sdk)库提供的服务。在其他实施方案中,应用程序或其他客户端程序可使用由应用程序框架提供的api。在这些实施方案中,应用程序或客户端程序可将调用结合到由sdk提供和由api提供的函数或方法中,或使用sdk中定义并由api提供的数据类型或对象。在这些实施方案中,应用程序框架可为程序提供主要事件循环,其对框架定义的各种事件作出响应。api允许应用程序利用应用程序框架来指定事件和对事件的响应。在一些具体实施中,api调用能够向应用程序报告硬件设备的能力或状态,包括与诸如输入能力和状态、输出能力和状态、处理能力、电源状态、存储容量和状态、通信能力等方面相关的能力或状态,并且api可部分地由固件、微码或部分地在硬件组件上执行的其它低电平逻辑部件实现。api调用组件可以是本地组件(即与api实现组件在同一数据处理系统上)或远程组件(即在不同于api实现组件的数据处理系统上),所述组件经由网络通过api与api实现组件进行通信。应当理解,api实现组件也可充当api调用组件(即,它可对被不同api实现组件暴露的api进行api调用),并且api调用组件也可通过实现暴露于不同api调用组件的api来充当api实现组件。api可允许以不同编程语言编写的多个api调用组件与api实现组件通信(从而api可包括用于转换api实现组件和api调用组件之间的调用和返回的特征);不过,可以特定的编程语言实现api。在一个实施方案中,api调用组件可调用来自不同提供商的api,例如来自os提供商的一组api和来自插件提供商的另一组api,以及来自另一提供商(例如软件库的提供商)或另一组api的创建者的另一组api。图17是示出示例性api架构的框图,该架构可在本发明的一个实施方案中使用。如图17中所示,api架构3200包括实现api3220的api实现组件3210(例如,操作系统、库、设备驱动程序、api、应用程序、软件或其他模块)。api3220指定可由api调用组件3230使用的api实现组件的一个或多个函数、方法、类、对象、协议、数据结构、格式和/或其它特征。api3220能够指定至少一个调用约定,该调用约定指定api实现组件中的函数如何从api调用组件接收参数以及函数如何向api调用组件返回结果。api调用组件3230(例如操作系统、库、设备驱动程序、api、应用程序、软件或其它模块)通过api3220进行api调用,以访问并使用由api3220指定的api实现组件3210的特征。api实现组件3210可响应于api调用而通过api3220向api调用组件3230返回值。应当理解,api实现组件3210可包括未通过api3220指定且对于api调用组件3230不可用的附加函数、方法、类、数据结构和/或其它特征。应理解,api调用组件3230可与api实现组件3210在同一系统上,或者可远程定位并通过网络来使用api3220访问api实现组件3210。尽管图32示出了单个api调用组件3230与api3220交互,但应理解,可用不同语言(或相同语言)编写的与api调用组件3230不同的其它api调用组件可使用api3220。api实现组件3210、api3220和api调用组件3230可存储在机器可读介质中(例如,计算机可读介质),其包括用于以机器(例如计算机或其他数据处理系统)可读的形式存储信息的任何机构。例如,机器可读介质包括磁盘、光盘、随机存取存储器;只读存储器、闪存存储器设备等。在图18(“软件栈”)中,在本发明的一个实施方案中,应用程序可使用若干服务api来调用服务a或b,以及使用若干osapi来调用操作系统(os)。服务a和b可使用若干osapi对os进行调用。注意,服务2具有两个api,其中一个(服务2api1)从应用程序1接收调用并返回值,另一个(服务2api2)从应用程序2接收调用并返回值。服务1(例如,可以是软件库)向osapi1进行调用并接收返回的值,并且服务2(例如,可以是软件库)向osapi1和osapi2两者进行调用并接收返回的值。应用程序2对osapi2进行调用并接收返回的值。本文所述的系统和方法可在各种不同的数据处理系统和设备中实现,所述数据处理系统和设备包括通用计算机系统、专用计算机系统,或者通用计算机系统和专用计算机系统的混合。可使用本文所述的方法中的任一种方法的示例性数据处理系统包括台式计算机、膝上型计算机、平板电脑、智能电话、蜂窝电话、个人数字助理(pda)、嵌入式电子设备或消费电子设备。图19为根据一个实施方案的数据处理系统硬件的框图。需注意,虽然图19示出了可结合到移动或手持设备的数据处理系统的各种组件,但这并不旨在表示将这些组件互连的任何特定的构造或方式,因为此类细节与本发明并无密切关系。还应理解,还可将具有比图19所示更少组件或更多组件的其他类型的数据处理系统与本发明一起使用。如图19所示,数据处理系统包括用于将系统的各种组件互连的一条或多条总线1309。一个或多个处理器1303如本领域中所公知地耦接到一条或多条总线1309。存储器1305可以是dram或非易失性ram,或者可以是闪存存储器或其他类型的存储器或此类存储器设备的组合。该存储器使用本领域已知的技术耦接到一条或多条总线1309。数据处理系统还可包括非易失性存储器1307,该非易失性存储器可以是硬盘驱动器或闪存存储器,或磁性光驱或磁性存储器,或光驱或者是甚至在系统断电之后仍维护数据的其他类型的存储器系统。非易失性存储器1307和存储器1305均使用已知的接口及连接技术耦接到一条或多条总线1309。显示控制器1322耦接到一条或多条总线1309,以便接收将显示在显示设备1323上的显示数据。显示设备1323可包括用于提供触摸屏的集成式触摸输入。数据处理系统还可包括一个或多个输入/输出(i/o)控制器1315,该i/o控制器为一个或多个i/o设备提供接口,所述一个或多个i/o设备为诸如一个或多个鼠标、触摸屏、触摸板、操纵杆和其他输入设备(包括本领域已知的那些),以及输出设备(例如,扬声器)。输入/输出设备1317如本领域中所公知地通过一个或多个i/o控制器1315耦接。虽然图19示出了非易失性存储器1307和存储器1305直接地而不是通过网络接口耦接到一条或多条总线,但应当理解,本发明可利用远离系统的非易失性存储器,诸如通过网络接口诸如调制解调器或以太网接口耦接到数据处理系统的网络存储设备。如本领域所熟知的,总线1309可通过各种网桥、控制器和/或适配器彼此连接。在一个实施方案中,i/o控制器1315包括用于控制usb外围设备的usb(通用串行总线)适配器、用于兼容ieee1394的外围设备的ieee1394控制器,或用于控制thunderbolt外围设备的thunderbolt控制器中的一者或多者。在一个实施方案中,一个或多个网络设备1325可耦接到总线1309。一个或多个网络设备1325可为有线网络设备(例如,以太网)或无线网络设备(例如,wi-fi、蓝牙)。通过本描述将显而易见的是,本发明的各方面可至少部分地在软件中体现。也就是说,响应于其处理器执行存储介质(诸如非暂态机器可读存储介质(诸如dram或闪存存储器))中包含的指令序列而可在数据处理系统中实施这些技术。在各种实施方案中,可将硬连线的电路与软件指令结合使用来实施本发明。因此,这些技术不限于硬件电路与软件的任何指定组合,亦不限于由数据处理系统执行的指令的任何特定源。此外,应当理解,在描述移动设备或手持设备的情况下,这种描述涵盖移动设备(例如膝上型电脑设备、平板设备)、手持设备(例如智能电话)以及适合用于可穿戴电子设备中的嵌入式系统。本公开认识到在本发明技术中使用个人信息数据可用于使用户受益。例如,该个人信息数据可用于递送用户较感兴趣的信息或目标内容。因此,使用此类个人信息数据可使得能够对所递送的内容进行有计划的控制。此外,本公开还设想到个人信息数据有益于用户的其他用途。本公开还设想负责此类个人信息数据的收集、分析、公开、发送、存储或其他用途的实体将遵守已确立的隐私政策和/或隐私实践。具体地,此类实体应当实行并坚持使用被公认为满足或超出对维护个人信息数据的隐私性和安全性的行业或政府要求的隐私政策和实践。例如,来自用户的个人信息应当被收集用于实体的合法且合理的用途,并且不在这些合法使用之外共享或出售。另外,此类收集应当仅在用户知情同意之后进行。另外,此类实体应采取任何所需的步骤,以保障和保护对此类个人信息数据的访问,并且确保能够访问个人信息数据的其他人遵守他们的隐私政策和程序。另外,这种实体可使其本身经受第三方评估以证明其遵守广泛接受的隐私政策和实践。不管前述情况如何,本公开还设想用户选择性地阻止使用或访问个人信息数据的实施方案。即本公开设想可提供硬件元件和/或软件元件,以防止或阻止对此类个人信息数据的访问。例如,就健康信息或广告递送服务而言,本发明的技术可被配置为在注册服务期间允许用户选择“加入”或“退出”参与对个人信息数据的收集。又如,用户可选择不为目标内容递送服务提供位置信息。再如,用户可选择不提供精确的位置信息,但准许传输位置区域信息。在上述说明书中,已描述特定示例性实施方案。显而易见的是,可在不脱离以下权利要求所给出的更广泛的实质和范围的情况下对那些实施方案作出各种修改。因此,说明书和附图应被认为是出于示例性目的而非限制目的。附录以下附录描述了使用来自appleinc.(cupertino,california)的ios操作系统的ios设备的应用编程接口的示例。该api提供本文描述的扩展应用程序和ios设备上的消息传送应用程序之间的交互。扩展应用程序的imessageapi修改摘要·重命名一些已定义的类型,将某些协议更改为类,反之亦然。受影响的类型是:○将msmessagecontext变为类并将其重命名为msconversation。此名称更准确地描述了该类所表示的内容。○将msmessagepayload重命名为msmessage。新名称更好地描述了类,因为此对象不仅表示待发送的消息有效载荷。○将msballoonlayout重命名为msmessagelayout。字词气球描述了当前的ui,这不应记录在api中。○将msballoontemplatelayout重命名为msmessagetemplatelayout。○将msmessagetemplatelayout变为协议,并且添加一个具有相同名称的实施该协议的类。采用api的开发人员在无法创建用于实施msballoonlayout协议的其自己的对象时感到困惑。此修改允许开发人员提供其自己的msmessagetemplatelayout符合对象。○将mssticker协议变为类。贴纸在概念上与uiimage类似,所以其也应该是一个具体的类。mssticker和msstickerview之间的关系应当类似于uiimage和uiimageview之间的关系。·新增功能:○添加新的mssession类。使用会话初始化的msmessages可参与“面包屑”行为。即利用相同会话在对话中创建的所有消息将更新对话记录中的单个气球,并且可选地在记录中留下面包屑条目的踪迹。在此提议之前,通过修改由msmessagecontext提供的输入消息并且将修改后的对象传递到-updatemessagepayload:completionhandler:来实现这种行为。○添加msconversationdelegate协议,该协议定义了针对msconversation代理的代理接口。当用户轻击发送按钮,同时msmessage已被暂存以用于发送,并且在用户从输入字段中删除暂存的msmessage时,该代理将接收回调。如果来自该扩展应用程序类型的新消息到达对话同时扩展应用程序活动时,该代理将接收回调。○在nsextensioncontext上添加类别,该类别允许扩展应用程序获取有关其呈现方式的信息并且请求修改呈现样式。这允许扩展应用程序请求展开或折叠的呈现并且请求完全解除。○使用在uiapplicationdelegate上建模的一组回调来替换msmessagepayloadprovider上的回调。○将-updatemessagepayload:completionhandler:重命名为-insertmessage:localizedchangedescription:completionhandler:。由于该方法在没有msmessage被暂存以用于发送时将插入新消息,字词更新似乎造成混淆。这还添加了localizedchangedescription参数,其允许开发人员提供面包屑文本。详细设计标头更新更新msmessagepayloadprovider.h添加msconversation.h替换msmessagecontext.h添加msmessage.h替换msmessagepayload.h添加msmessagelayout.h替换msballoonlayout.h添加msmessagetemplatelayout.h替换msballoontemplatelayout.h添加mssession.h更新mssticker.h更新msstickerbrowserview.h更新msstickerbrowserviewcontroller.h更新msstickerbrowserviewdatasource.h更新msstickerview.h用法示例发送简单消息发送会话消息发送文本发送贴纸当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1