用于自动同步设备上响应与条件的系统和方法与流程

文档序号:19418560发布日期:2019-12-14 01:11阅读:277来源:国知局
用于自动同步设备上响应与条件的系统和方法与流程

相关申请的交叉引用

本申请是2017年11月9日提交的美国专利申请no.15/808,153的继续申请,其公开内容通过引用结合于此。



背景技术:

已经提出了“临时”计算系统,其中,可以根据需要下载程序和数据。例如,如果用户设备上的空间不足,则系统可以将应用及其关联的数据复制到云中,并且从设备中删除应用的本地副本及其关联的数据。响应于用户指示他们想要运行该应用,该设备可以从云自动地下载该应用及其相关联的数据并且启动执行。

已经提出了用于在多个设备之间同步数据的各种系统。例如,可以在由该用户使用的其他设备上自动地复制用户在一个设备上存储的文档文件的创建和修改。



技术实现要素:

本文的技术的一个方面涉及一种安装程序的方法。该方法包括:通过一个或多个计算设备访问存储在存储器中的触发器,触发器是参数集和程序之间的关联,通过一个或多个计算设备基于在第一设备处接收到的信息与触发器相关联的参数集的比较,确定是否发生了条件;当确定所述条件已经发生时,通过所述一个或多个计算设备确定与触发器相关联的程序是否被安装在第一设备上;当与触发器相关联的程序未被安装在第一设备上时,提供对与触发器相关联的程序的请求,并且响应于请求,在第一设备处,经由网络从第二设备接收程序的安装文件;基于安装文件,在第一设备上安装与触发器相关联的程序;以及在安装与触发器相关联的程序之后,通过一个或多个计算设备,向与触发器相关联的程序提供与触发器相关联的消息。

该技术的另一方面涉及包括一个或多个处理器和存储指令的第一存储器的第一计算设备。指令可由一个或多个处理器执行,并且包括:从安装在第一计算设备上的第一程序接收第一条件参数集和第一消息数据;将第一触发器数据存储在第一存储器中,其中,触发器数据包括条件参数集、程序标识值和消息数据,并且其中,第一触发器数据的条件参数集包括第一条件参数集,第一触发器数据的程序标识值与第一程序的标识符相关联,并且第一触发器数据的消息数据包括第一消息数据;将第一触发器数据提供给第二计算设备;接收存储在第二计算设备上的第二触发器数据,其中,第二触发器数据包括由安装在第二计算设备上的第二程序提供的第二条件参数集,第二触发器数据的程序标识值与第二程序的标识符相关联,并且第二触发器数据的消息数据包括由第二程序提供的第二消息数据;将第二触发器数据存储在第一存储器中;确定是否满足第一条件参数集;当确定满足第一条件参数集时,将基于第一消息数据的数据提供给第一程序;确定是否满足第二条件参数集;以及当确定满足第二条件参数集时,将基于第二消息数据的数据提供给存储在第一计算设备上的第二程序的副本。

该技术的另一方面涉及一种非瞬时性计算设备可读存储介质,其上存储了计算设备可读指令。指令当被一个或多个计算设备执行时,使一个或多个计算设备执行一种方法,该方法包括:在多个计算设备的给定设备上,使存储在给定设备上的触发器集合与存储在多个计算设备中的其他计算设备上的触发器集合同步,其中,每个触发器包括当条件发生时,将可由给定设备检测的条件与提供给安装在给定设备上的程序的信息相关联的数据;在多个计算设备的给定设备处,确定该组触发器中的第一触发器的第一条件是否已经发生,第一触发器包括响应于确定第一条件已经发生而提供给程序的第一信息;当给定设备上的程序的副本无法接收第一信息时,通过(a)如果给定设备未安装程序,将程序的副本下载并安装到给定设备上;以及(b)如果程序未运行,则在给定设备上运行程序的副本,使得给定设备上的程序的副本能够接收第一信息;以及当副本能够接收第一信息时,将第一信息提供给给定设备上的程序的副本。

附图说明

图1是根据本公开的方面的系统的功能图。

图2是在多个设备之间同步触发器数据的示例。

图3是可以响应于发生与触发相关联的条件,在设备上显示的信息的示例。

图4是可以响应于发生与触发相关联的条件,在另一设备上显示的信息的示例。

图5是根据本公开的方面的流程图。

具体实施方式

i.概述

本文所述的技术的方面涉及不同设备类似地响应事件的发生的系统和方法,尽管设备及其当时的相关程序和数据彼此不同。

根据本文所述的技术的各方面,提供了允许具有不同应用的不同设备以类似方式响应条件的发生的系统和方法。举例来说,触发器数据可以在多个设备之间同步,其中,触发器数据响应于条件的发生,识别要提供给程序的信息。如果在触发发生时未在特定设备上安装或运行程序,则该设备自动地安装并执行该应用。

举例来说,如图2所示,设备120可以存储将程序(例如应用210b和215b)与可能发生的条件(例如分别为条件261b和262b)相关联的触发器251b和252b。框架205b可以告知相关应用相关条件是否和何时发生,并且如图3和4所示,应用可以告知用户或采取其他动作。

特定触发器可以与特定用户相关联,并且用户触发器可以在用户的设备之间复制。例如,每次设备120上的另一个应用向与用户150(用户b)相关联的分类账240b添加新的触发器时,可以将相同的触发器添加到用户150所使用的另一设备例如设备130上的分类账240c中。

在安装触发器的相关程序之前,可以在设备上加载和监视触发器。例如,如果由于在设备120上创建了相应的触发器251b而将触发器251c安装在设备130上,并且如果在与触发器251c相关联的应用210c发生之前触发器251c发生,则设备130可以在设备120上自动地安装应用210c并且将触发器发生告知该应用。

如图4所示,在用户设备之中,响应于触发器的发生的用户体验可能基本相同。例如,无论是否一个设备是手机而另一设备是桌面型计算机,以及无论设备中的一个在触发器发生时是否具有应用的副本,当触发器的确发生时,用户仍可能在两个设备上均会收到基本上类似的通知。

ii.示例系统

诸如上文所述的系统可以包括一个或多个计算设备。例如,图1提供了系统100的示例,其包括计算设备110、120和130。计算设备被配置为接受信息、基于该信息执行操作,并且作为响应,采取行动或提供附加信息。计算设备可以是或包括处理器,该处理器能够将表示被表达为数值的信息的一个或多个电信号接收为输入,根据指令基于该输入来确定数值,并且将表示所确定的数值的一个或多个电信号提供为输出。设备110包括处理器111,其可以是市售的中央处理单元(cpu)、专用集成电路(asic)或现场可编程门阵列。

计算设备使用的指令包括由计算设备访问和执行的一个或多个指令的任意集合。举例来说,设备110存储表示指令113的值,并且处理器111能够访问那些值并执行或使设备110或系统100的其他组件自动地执行与那些指令相关联的操作。指令113可以以在有或没有附加处理的情况下能够由处理器111执行的格式存储,例如机器代码、目标代码、脚本或按需解释的独立源代码模块。以一种格式表示为单个指令的操作可以与以另一种格式的多个指令相对应,例如,执行脚本中的单个命令可能需要执行多个机器代码指令。本文所述的一些操作可能涉及执行由操作系统提供的指令。

指令可以被存储在存储器中。例如,指令113被存储在存储器112中。存储器可以是能够在可以由计算设备读取的非瞬时性存储介质上存储信息的任何组件,例如,由处理器111提供的寄存器、诸如ram(随机存取存储器)的易失性存储器、诸如闪存的非易失性存储器(例如,安全数字(sd)卡)、硬盘驱动器、固态驱动器、光存储或磁带备份。设备110、处理器111和存储器112被配置成处理器111可以读取、修改、删除和添加存储在存储器112中的值。存储器可以被配置为提供比存储器112的示例更少的访问,例如,存储器可以是只读的。

存储器可以存储由计算设备执行的操作使用的信息或来自由计算设备执行的操作的结果。举例来说,存储器112存储数据114,数据114包括由处理器111根据指令113检索或存储的值,诸如当执行本文所述的一些操作时由设备110要求或确定的信息。可以根据一个或多个数据结构来存储在存储器112中存储的值。例如,在存储器112中存储的值可以表示单个数值(例如,二进制数、整数、浮点数、表示文本的单个字符的unicode值、数字或标点符号,或者表示单个机器代码指令的值)、多个数值的集合(例如,数字的数组、文本字符串、xml格式的数据或文件),或者可由其获得根据指令113将处理的值的信息(例如,存储在远程位置的值的引用或由其计算所需值的函数的参数)。

计算设备可以包括用于从设备周围的物理环境接收信息以允许用户直接向设备输入的组件。与设备110相似,设备120包括处理器121、存储器122、指令123和数据124。设备120还包括检测与放置该组件的物理环境有关的信息的组件,并且该信息可以包括由用户150提供的信息。设备110包括用户输入组件125,该用户输入组件125具有被配置为从用户150接收输入诸如以触觉方式提供的信息的电路和其他组件(例如,鼠标、键盘、小键盘、按钮或触摸屏)。用户输入组件可以执行不主要针对用户输入的功能。举例来说,相机127可以被用来捕获用户命令(例如,手势)和其他视觉信息(例如,山的视觉特征)。麦克风126可以被用来捕获用户命令(例如,口头命令)和其他音频信息(例如,瀑布的声音)。

计算设备可以包括用于经由设备周围的物理环境提供信息以将输出直接提供给用户的组件。例如,组件可以包括向设备的用户输出视觉、音频或触觉(例如,触感)信息的电路,诸如显示器140(例如,计算机监视器、触摸屏、投影仪或用来响应于信号而改变视觉特征的其他组件)、扬声器128或使设备振动的致动器129。

计算设备可以包括用于与其他计算设备通信的一个或多个组件。举例来说,设备110、120和130包括将每个设备连接到通信网络190的不同节点的电路(例如,网络接口)。网络190可以由使用不同通信协议的多个网络组成。例如,当设备110向设备120发送信息时,该信息可以通过因特网(例如,经由根据传输控制协议(tcp)和网际协议(ip)的核心因特网路由器)、蜂窝网络(例如,根据lte(长期演进)标准)、局域网(例如,以太网或wi-fi网络)或蓝牙连接中的一个或多个发送。设备可以经由其他设备向用户提供信息,例如,设备110可以通过经由网络190将信息发送给设备120以在显示器140上显示来向用户150显示信息。计算设备还可以在不使用网络的情况下,向另一计算设备提供信息。举例来说,一个计算设备可以通过显示器输出信息,而另一计算设备可以通过相机来检测该信息。尽管在图1中仅图示了少数几个计算设备,但是系统可以包括在大量节点处连接到网络的大量计算设备。

尽管图1将计算设备110和120示为单独的块,每个块都包含其自己的处理器和存储器,但是本文所述的操作可以涉及单个计算设备或多个计算设备,例如在“云”中。例如,下文描述为涉及单个计算设备(例如,单个服务器中的单个中央处理单元(cpu))的各种操作可以涉及多个计算设备(例如,负载平衡服务器场中的多个处理器或以其他方式具有分布式配置)。类似地,不同位置处的存储器组件可以存储指令113的不同部分,并且共同形成用于存储指令的介质。作为进一步的示例,被描述为涉及多个计算设备的操作可以由单个计算设备执行,例如,不是将数据发送到设备110以处理,而是设备120本身可以处理数据。替选地,设备120可以充当“瘦”客户端,其中,设备110执行不是直接涉及经由用户输入组件125和显示器140接收信息并且向用户150提供信息的所有或几乎所有操作。本文描述为由计算设备执行的各种操作可以由虚拟机执行。举例来说,指令113可以特定于windows服务器,但是相关的操作可以由运行模拟windows服务器的管理程序的linux服务器执行。操作还可以由容器例如不依赖于绑定到特定类型的硬件的操作系统的计算环境执行。

在本文所述的许多示例中,设备110是服务器,而设备120、130是客户端设备。例如,设备110可以是web服务器,而设备120可以是桌面型计算机系统,例如,处理器121和存储器122可以被包含在桌面型个人计算机中,显示器140可以是通过电缆连接到个人计算机的外部监视器,并且用户输入组件125可以是经由蓝牙与计算机通信的外部键盘。替代地,设备120可以是具有充当显示器130和用户输入组件125的触摸屏的无线电话。其他客户端设备可以包括例如手提电脑、笔记本电脑、上网本、平板电脑、机顶盒(例如,连接到电视的有线电视机顶盒)以及可穿戴设备(例如,智能手表)。就这一点而言,计算设备可以包括通常存在于此类设备或通用计算机中但本文未明确描述的其他组件。

存储在存储器中的数据可以包括可能发生的条件与程序之间的关联(这种关联在下文中称为“触发器”)。例如,与触发器的程序相关联的数据可以包括识别应用、例程或其他指令的值。程序标识符可以是唯一标识符,诸如从中或可以从中检索到程序的二进制代码的url、程序在设备上的位置、由应用源(例如,基于服务器的应用商店)提供的唯一标识符等。条件可以被表示为一个或多个参数值。例如,如果触发器的关联程序是设备上安装的电子邮件应用,则触发器的条件可能是新电子邮件到达与设备的用户相关联的电子邮件账户,以及条件的参数可能包括表示新电子邮件事件的服务器令牌。触发器可以基于可由设备检测的任何条件或条件集。

当条件发生时,触发器的数据也可以与要提供给相关程序的消息值相关联。例如,触发器可能与参数集相关联,该参数集定义了要包含在消息中的信息,诸如导致触发器发生的电子邮件的发件人和主题行。替选地,触发器可以不定义消息的内容,在这种情况下,消息可以仅包括与触发器相关联的条件已经发生的指示。

单个设备可以存储不同类型的触发器。例如,新的电子邮件触发器可能依赖于来自电子邮件服务器的推送通知以确定是否满足条件。另一种类型的触发器可以基于进程间通信(ipc),例如,当设备的时钟(诸如时钟141)提供的当前时间与由触发器的参数定义的日期/时间匹配时满足其条件的触发器。

可以在多个设备之间复制一个或多个触发器的集合(在下文中,这种集合被称为“分类账”),并且每个分类账可以与一个或多个用户相关联。例如,图2提供了系统的示例,其中,每个计算设备120、130和290存储与特定用户相关联的分类账,即分别为分类账240b、240c和240d。系统100可以同步分类账,使得在其他设备上存储的用户分类账例如分类账240c和240d中反映对存储在一个设备上的用户的分类账诸如分类账240b中的触发器所做的更改。单个设备可以存储一个以上分类账,例如,计算设备120存储与两个不同的用户标识值即分类为用户id231b(“b”)和用户id282c(“c”)相关的两个不同的分类账240b和283c。触发器也可以与分类账分开存储或处理,例如,触发器可以在本地内存中是瞬态的、可以持久存储到存储介质中、可以从存储介质中恢复或通过通信通道进行传输。

如下文更详细地说明,指令113可以包括用于管理触发器的指令。作为示例并且如下文更详细说明,特定设备上的指令可以包括例程集合,所述例程集合被配置为:处理来自设备上的相关联程序的请求以将触发器添加到设备的分类账中,通过将来自位于设备上或设备外的组件的数据或信号与触发器的条件参数进行比较来确定触发器是否发生,在触发器发生时向设备上的关联程序提供消息,向设备的用户提供触发器何时发生的通知,使存储在设备上的分类账中的数据与存储在不同设备上的分类账同步,并且告知触发器何时已经发生。为了便于参考,在图2中由标记为框架205b的单个方框表示执行这些功能的指令。尽管框架205b被示为与分类账283c分离的块,而包含分类账283c的块仅包含数据,但是系统可以以与图2所示不同的组合存储和处理与触发器相关的指令和数据。例如,分类账283c可以被实例化为一个或多个对象,这些对象封装触发器数据并且包含用于管理触发器数据的例程,这些例程可以由其他程序调用或响应系统的其他组件引发的事件。

框架可以被配置为api(应用编程接口),其中,通过调用框架的例程来调用框架的功能。如下文更详细讨论,框架的一些例程可能是幂等的。该框架还可以被配置为设备的操作系统的一部分。框架可以进一步包括代理应用,该代理应用向设备上的其他应用提供服务或从设备上的其他应用接收服务。

iii.示例方法

现在将描述根据该方法的各个方面的操作。应当理解到,不必以下文所述的精确顺序执行以下操作。相反,可以以不同顺序或同时处理各个步骤。

可以响应于来自存储在设备上的程序或其他组件的请求,将触发器添加到设备。举例来说,如图2所示,用户b通过使用用户输入组件125提供他或她的用户id,可以作为设备120的当前用户220登录。用户b还可以通过请求和接收位于设备110上的url“a.com/20”的电子邮件应用210a的本机二进制代码版本的副本,下载电子邮件应用210b。当用户首次执行电子邮件应用210b时,应用可以调用框架205a的例程,该例程指示应用希望在用户b接收由电子邮件服务器280托管的用户b的电子邮件账户281中的新电子邮件的情况下被告知。作为响应,框架205b可以将触发器251b登记在与用户b的用户id231相关联的分类账240b中。框架可以通过将条件261b和关联的程序标识符271b之间的关联存储在设备120的存储器中来登记触发器251b。条件261b的参数可以表示推送通知,诸如来自电子邮件服务器280的推送通知,其内容指示与用户b相关联的电子邮件账户281接收到新电子邮件。关联程序271b可以由其url来标识,例如,设备120的存储器可以指示响应于对url“a.com/20”的请求,检索电子邮件应用210b。如果条件发生,系统还可以存储要提供给关联程序的消息275b的参数。

作为进一步的示例,用户b可以使用现有警告应用215b来在特定日期和时间请求告警。作为响应,应用215b可以调用在特定日期和时间请求通知的框架205b的例程。框架205b可以将新触发器存储在将电子邮件应用210b的唯一标识符(例如,url“a.com/21”)与条件262b相关联的分类账240b中。触发器条件262b的参数可以表示将设备时钟的输出与用户定义的时刻比较的布尔方程。

还可以基于其他设备提供的与触发器相关的数据,将触发器添加到设备。例如,可以在多个设备之间同步与特定用户分类账相关联的触发器。举例来说,当设备120将存储在用户150的分类账240b中的触发器数据修改为包括新的电子邮件触发器251b时,框架205b可以将表示修改的数据发送给存储与具有与用户b相同的用户id231b的用户相关联的分类账的任何其他设备。响应于被告知该修改,设备130可以将触发器251c添加到存储在设备130中并与用户b的用户id231c相关联的分类账240c。存储在设备130上的条件的参数261c、相关联的程序标识符271c和消息275c可以与存储在设备120上的条件的参数261b、相关联的程序标识符271b和消息275b相同。

相对于存储在云中的特定副本,在对等的基础上,或在另一基础上,可以在多个设备之间同步存储在分类账中的触发器数据。例如,设备120可以将对分类账240b的修改发送到框架服务器290,并且服务器290可以修改存储在其分类账240d中的触发器数据以匹配分类账240b。服务器290还可以将此修改告知设备130,使得设备130可以将其分类账240c与存储在服务器290上的分类账同步。如果在修改另一设备上的分类账时,设备处于脱机状态或以其他方式不可用,则可以在设备变得可用时同步分类账。

用户可以识别将存储用户的触发器数据的设备。举例来说,当用户b首次使用设备120时,用户b可以通过经由用户输入组件125输入他或她的用户标识和密码验证该设备。作为响应,框架205b可以查询服务器290是否具有与用户b的用户id相关联的分类账的副本。如果是,则框架205b可以将分类账的副本从服务器290下载到设备120。如果不是,则设备120可以为用户b创建新的分类账,并且将分类账的副本上传到服务器290。服务器290还可以存储由用户b认证的所有设备的列表,使得当设备连接到网络190时可以定位这些设备并接收其分类账的更新。就此而言,在系统的一些方面中,设备可以在将应用本身安装在设备上之前,下载用于应用的触发器的副本。

每个设备可以确定是否以及何时满足存储在该设备上的触发器的条件。举例来说,设备120可以从电子邮件服务器280接收推送通知,其中,该推送通知的内容指示在与用户b相关联的电子邮件账户281中接收到电子邮件。在接收到该通知时,框架205b可以将推送通知的内容与存储在分类账240b中的条件261b和条件262b的参数进行比较。响应于确定推送通知与新电子邮件触发器251b的条件261b的参数相匹配,框架205b可以基于相关联的程序标识符271b来识别相关联的程序(例如,电子邮件应用210b)。然后,框架205b可以向电子邮件应用210b提供符合消息275b的参数的消息。作为进一步的示例,框架205b可以周期性地将当前日期和时刻与包含在闹钟触发器252b的条件262b中的特定日期和时刻进行比较。如果设备120确定日期和时间匹配,则框架可以告知闹钟应用215b该触发器252b已经发生。

在一些方面中,除非触发器与设备的当前用户或设备的所有用户相关联,否则系统可能不响应于触发器的发生而告知程序或用户。举例来说,设备120可以存储关于另一用户的信息,诸如与用户160(用户c)相关联的用户id282c和分类账283c。由于当前用户标识符231b不会将用户c识别为设备120的当前用户,并且由于触发器284c特定于用户c,因此框架205b可能不会校验与触发器284c相关联的条件是否发生,或者当条件的确发生时,可能会放弃向触发器相关联的应用提供消息。

系统对触发器的响应可能特定于触发器的关联程序。继续上述示例,电子邮件应用210b可以被配置为在从框架205b接收到由电子邮件应用登记的新电子邮件触发器已经发生的通知后,更新存储在设备120上的收件箱。如图3所示,电子邮件应用可以通过在设备的显示器140上显示通知351来告知用户已经接收到新的电子邮件。关联程序也可以被配置为显示触发器消息的一些内容。类似地,闹钟应用215b可以通过显示通知352、经由扬声器128播放闹钟声音并且激活致动器129来振动设备,来对触发器252b的发生做出响应。就此而言,从用户界面的角度来看,对触发器的响应可能取决于触发器的关联程序的特征。

如果当关联程序处于睡眠状态或未运行时触发,则设备可以唤醒或执行该应用。例如,如果当触发器251b发生时电子邮件应用210b没有运行,则框架205b可以向设备120的操作系统发出命令以在框架告知应用该触发器的发生之前上传并执行该应用。

设备对触发器的响应也可以独立于关联程序。举例来说,如果当触发器发生时框架无法访问触发器的关联程序,则框架可以将消息转换为人类可读的文本,并且将该文本显示在设备的显示器上。

是否向用户告知触发器可以取决于触发器的关联程序如何响应该触发器。例如,在闹钟应用的情况下,该应用可以通过向用户显示通知来响应基于时间的触发器的发生。但是,用于查看新闻报道的应用可以记录基于时间的触发器,并且可以下载和更新新闻报道的本地存储而不是警告用户由触发器的参数定义的日期/时间已经发生。触发器的关联程序将执行已经响应触发器的发生而编程以执行的任务。

系统可以响应于触发器的发生,同步指示设备是否完成了特定动作的数据。例如,触发器还可以与表示用户是否采取了指示用户确认该发生的动作的值相关联。就此而言,如果用户关闭与触发器252b相关联的闹钟,则闹钟应用215b可以通知框架205b已经确认该触发器。框架可以相应地修改设备120的分类账240b。当设备130上的分类账240c与分类账240b同步时,设备130可以取消闹钟应用215c通常会采取的操作,例如,设备的框架可能不会告知应用该触发器已发生,框架可以告知闹钟应用该触发器已被确认,或者闹钟应用可以在提醒设备130的用户确认闹钟之前查询触发器的状态。

如果在关联程序已经被安装在相关设备上之前触发器发生,则可以自动地安装关联程序。例如,尽管可以响应于用户在设备120上安装电子邮件应用210b而将新的电子邮件触发器251b添加到分类账240b,但是由于分类账240c的内容与分类账240b的内容同步,因此可以将新的电子邮件触发器251c添加到设备130的分类账240c。当设备130确定已经满足触发器251c的条件261c时,设备可以确定触发器的关联应用是否能够接收触发器的消息。例如,设备可以确定是否安装了该应用,例如,该设备的处理器是否能够在不访问外部网络的情况下,从存储器加载和执行用于显示电子邮件的应用的指令。结果,特别是如果设备130仅在最近由用户b认证,当设备130确定已经满足触发器251c的条件261c时,设备130的存储器可以不包括由关联程序标识符271c标识的电子邮件应用的副本。

系统可以使用与触发器相关联的程序标识符来确定如何启动安装或相关程序。举例来说,程序标识符可以标识可以从其获得该应用的安装文件(例如,应用本身或可以用来下载、提取和安装应用的文件的本机代码的副本)的网络190上的位置(例如url)。就此而言,如果当触发器251c发生时,框架205c无法识别关联的电子邮件应用的位置,则框架可以使用关联的程序标识符271c的值(例如url“a.com/20”)来请求应用的副本。在从应用服务器(例如,设备110)接收到安装文件时,框架205c可以自动地安装电子邮件应用210c。

如上所述,如果由于应用未运行而导致应用无法对来自触发器的消息进行操作,则框架可以通过启动应用的执行来使应用对消息进行操作。就此而言,在安装电子邮件应用210c之后,框架可以执行该应用并且通知它与该应用相关联的触发器已经发生。

安装相关联的程序可以响应于触发器而自动地发生,不需要用户采取任何额外的动作。例如,从用户的角度来看,尽管在接收到电子邮件时设备120不包括电子邮件应用的副本的事实,但设备130仍可以以与设备120完全相同的方式响应新电子邮件。在系统的其他方面中,在将应用的副本安装到与最初安装它们的设备不同的设备上之前,某些触发器可能需要用户批准所有或某些类型的应用。

设备可以仅安装特定于处理触发器的功能,而不是响应于触发器的发生而安装整个关联程序。举例来说,关联的程序标识符272b可以仅识别电子邮件应用210a中用户阅读电子邮件所必需的部分。设备130可以在以后的时间例如当设备空闲时或当用户试图访问该应用的其他功能时,检索电子邮件应用的其余部分。

系统的各个方面可以是幂等的。举例来说,框架可以包括仅存储触发器的一个副本的api,而不管应用尝试登记具有相同条件参数和关联程序标识符的触发器多少次。作为进一步的示例,在关联程序可以调用框架的api并请求在给定时间段内发生的触发器的列表的范围内,api可以为每个触发器仅返回一条消息,而不管程序多久调用一次api的相关例程。删除触发器也可以是幂等的,例如,可以在多个设备上多次删除触发器,但是删除触发器的效果是相同的。

图5是上文讨论的一些操作的流程图。图5是一些前述操作的流程图。在框510,接收要提供给安装在第一计算设备上的第一程序的条件参数集和第一消息数据。在框520,存储将条件参数集与第一程序的第一程序标识值和第一通知数据相关联的第一触发器数据。在框530,将第一触发器数据提供给第二计算设备。在框540,接收存储在第二计算设备上的第二触发器数据,其中,第二触发器数据将第二条件集与第二程序的第二程序标识值和第二消息数据相关联。在框550,第二触发器被存储在第一计算设备的存储器中。在框551和560,系统基于条件参数与在第一计算设备处接收到的信息的比较来确定是否已经满足第一和第二条件参数集。在框552,如果满足第一条件参数集,则将基于第一消息数据的数据提供给第一程序。框570、580和590基于已经满足第二条件参数集的前提。在框570,如果第二程序未安装在第一设备上,则第二程序被安装在该设备上。在框580,如果第二程序没有运行,则运行第二程序。在框590,第二消息数据被提供给第二程序。

前述特征的组合可以提供特定的优点。举例来说,通过在多个设备之间自动地同步触发信息,但是直到触发器发生后才下载和执行关联应用,系统可以为单个用户提供使用就象是同一设备一样起使用和反应的多个设备的体验。例如,如图4所示,设备130可以响应于实际上与设备120的显示器140上的通知451相同的新电子邮件,在监视器440上显示新电子邮件,尽管设备120可能是手机,设备130可以是桌面型计算机,并且在用户的电子邮件账户中接收到电子邮件时设备130不包括电子邮件应用的副本。

由于可以在不背离所要求保护的主题的情况下利用以上讨论的特征的这些和其他变形以及组合,因此,应当通过示例而非限制的方式进行实施例的前述描述。提供示例(以及用“诸如”、“例如”、“包括”等措词的短语)不应当解释为将权利要求限定于特定示例;相反,这些示例旨在仅示出许多可能方面中的一些。除非有相反的明确说明,否则项目的“集合”可以包含单个项目。对“基于”等的引用是指“至少部分基于”。

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