CN110521187B - 活动馈送服务 - Google Patents
活动馈送服务 Download PDFInfo
- Publication number
- CN110521187B CN110521187B CN201880024505.8A CN201880024505A CN110521187B CN 110521187 B CN110521187 B CN 110521187B CN 201880024505 A CN201880024505 A CN 201880024505A CN 110521187 B CN110521187 B CN 110521187B
- Authority
- CN
- China
- Prior art keywords
- activity
- user
- application
- stream
- record
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/04—Processing captured monitoring data, e.g. for logfile generation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/535—Tracking the activity of the user
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3438—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment monitoring of user actions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/085—Retrieval of network configuration; Tracking network configuration history
- H04L41/0853—Retrieval of network configuration; Tracking network configuration history by actively collecting configuration information or by backing up configuration information
- H04L41/0856—Retrieval of network configuration; Tracking network configuration history by actively collecting configuration information or by backing up configuration information by backing up or archiving configuration information
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Data Mining & Analysis (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本文公开了与活动馈送服务有关的技术。在所公开技术的一个例子中,一种方法可以包括:接收对活动流的更新,其中各个活动流指示各个用户对于在连接到网络的各个客户端设备上执行的应用程序的参与。可以对与特定用户相关联的不同活动流进行合并,以生成与特定用户相关联的合并活动流。不同的接收到的活动流可以对应于不同的相应客户端设备。可以通过网络发送与特定用户相关联的合并活动流。
Description
背景技术
随着计算机功能变得越来越强大并且价格下降,用户可以在给定的计算设备上执行更多任务,并且每个用户可以使用多个计算设备。例如,用户可以在给定的一天中使用一个或多个计算设备,进行诸如观看视频、听音乐、浏览网络、使用即时消息传递或通信程序、处理文档或演示文稿、或者玩游戏之类的各种活动。用户可以在不同的活动之间切换和/或同时执行多个活动。例如,随着用户在不同位置之间移动或者执行更高优先级的任务,一项基于计算机的活动可能会发生中断。如果计算设备可以跟踪用户执行的活动和/或帮助用户返回在活动完成之前发生中断的活动,则用户的体验可能更积极,和/或可以提高用户的生产力。
发明内容
本文公开了与活动馈送服务有关的技术。在所公开技术的一个例子中,一种方法可以包括:接收对活动流的更新,其中各个活动流指示各个用户对于在连接到网络的各个客户端设备上执行的应用程序的参与。可以对与特定用户相关联的不同活动流进行合并,以生成与特定用户相关联的合并活动流。不同的接收到的活动流可以对应于不同的相应客户端设备。可以通过网络发送与特定用户相关联的合并活动流。
附图说明
图1是用于确定用户对一个或多个软件应用程序的参与的示例性系统的系统图。
图2示出了用于记录用户参与的各种数据结构的例子。
图3示出了用于确定用户对一个或多个软件应用程序的参与的各种信号的例子。
图4是用于确定用户对一个或多个软件应用程序的参与的示例性系统的系统图。
图5是用于确定跨计算设备和/或平台的用户参与的活动馈送服务的系统图。
图6示出了跨计算设备和/或平台共享用户参与的各种例子。
图7示出了在活动馈送服务器或服务处从计算设备(例如,活动馈送客户端)提取用户参与历史的示例性方法的序列图。
图8示出了向计算设备(例如,活动馈送客户端)通知用户参与历史的改变的示例性方法的序列图。
图9示出了使计算设备(例如,活动馈送客户端)与存储在活动馈送服务器或服务处的用户参与历史同步的示例性方法的序列图。
图10示出了确定用户对一个或多个软件应用程序的参与的示例性方法的流程图。
图11示出了与活动馈送服务通信的活动馈送客户端设备的示例性方法的流程图。
图12示出了与一个或多个活动馈送客户端设备通信的活动馈送服务的示例性方法的流程图。
图13是示出用于实现所公开的技术的一些实施例的适当计算环境的框图。
具体实施方式
通常考虑
在并非旨在以任何方式进行限制的代表性实施例的上下文中,阐述本公开内容。
如本申请中所使用的,单数形式“一个(a)”、“某个(an)”和“该(the)”包括复数形式,除非上下文另外明确说明。另外,术语“包括”意味着“包含”。此外,术语“耦合”涵盖机械、电气、磁性、光学以及其它将各项耦合或链接在一起的实践方式,并且其不排除在耦合的项之间存在中间元件。此外,如本文所使用的,术语“和/或”意味着短语中的任何一项或多项的组合。
不应以任何方式将本文所描述的系统、方法和装置解释为限制性的。替代的,本公开内容单独地以及以彼此的各种组合和子组合的方式,针对各种公开的实施例的所有新颖的和非显而易见的特征和方面。所公开的系统、方法和装置并不限于任何特定方面或特征或者其组合,所公开的事物和方法也不要求存在任何一个或多个特定优点或者要解决的问题。此外,所公开的实施例的任何特征或方面可以彼此以各种组合和子组合来使用。
虽然为了方便呈现起见,以特定的序列顺序描述了所公开方法中的一些的操作,但应当理解的是,这种描述方式涵盖重新排列,除非以下阐述的特定语言要求特定的顺序。例如,在一些情况下,可以重新排列或同时地执行顺序描述的操作。此外,为了简单起见,附图可能没有示出可以将所公开的事物和方法与其它事物和方法进行结合使用的各种方式。另外,说明书有时使用诸如“产生”、“生成”、“显示”、“接收”、“验证”、“执行”和“发起”之类的术语来描述所公开的方法。这些术语是对执行的实际操作的高级描述。对应于这些术语的实际操作将根据具体的实施方式而变化,并且本领域普通技术人员可以容易地辨别。
为了更好地理解,已经提供了在本文中参考本公开内容的装置或方法而呈现的操作理论、科学原理或其它理论描述,并且其不是对保护范围进行限制。所附权利要求中的装置和方法并不限于以这种操作理论所描述的方式进行工作的那些装置和方法。
所公开的方法中的任何一个可以实现为存储在一个或多个计算机可读介质(例如,诸如一个或多个光盘媒体、易失性存储器组件(如,DRAM或SRAM)、或非易失性存储器组件(如,硬盘驱动器))上并在计算机(例如,包括智能电话的任何商用计算机或者包括计算硬件的其它移动设备)上执行的计算机可执行指令。用于实现所公开技术的计算机可执行指令中的任何指令、以及在所公开的实施例的实现期间创建和使用的任何数据,可以存储在一个或多个计算机可读介质(例如,计算机可读存储介质)上。例如,计算机可执行指令可以是专用软件应用程序或通过web浏览器或其它软件应用程序(例如,远程计算应用程序)访问或下载的软件应用程序的一部分。例如,在单个本地计算机上或者使用一台或多台网络计算机在网络环境中(例如,经由互联网、广域网、局域网、客户端服务器网络(如,云计算网络)或其它此类网络),来执行该软件。
为清楚说明起见,仅描述了基于软件的实施方式的某些选定方面。省略了本领域公知的其它细节。例如,应当理解的是,所公开的技术并不限于任何特定的计算机语言或程序。例如,可以通过用C、C++、Java或任何其它适当的编程语言编写的软件,来实现所公开的技术。同样,所公开的技术并不限于任何特定的计算机或硬件类型。适当的计算机和硬件的某些细节是众所周知的,故不需要在本公开内容中详细阐述。
此外,任何基于软件的实施例(例如,包括用于使计算机执行所公开方法中的任何方法的计算机可执行指令)都可以通过适当的通信手段进行上传、下载或远程访问。这样适当的通信手段包括例如互联网、万维网、内联网、软件应用程序、电缆(其包括光纤光缆)、磁通信、电磁通信(其包括RF、微波和红外通信)、电子通信或其它这样的通信手段。
概述
如上所述,用户可以在给定的一天中使用一个或多个计算设备来在他或她的计算设备上执行各种活动。例如,用户可以在不同活动之间切换和/或同时执行多个活动。如果计算设备可以跟踪用户执行的活动和/或帮助用户返回到早些时候正在执行的活动,则用户的体验可能更积极,和/或可以提高用户的生产力。
在一些情况下,在计算设备上运行的单个应用程序或计算设备的操作系统可以提供一些有限的功能,允许用户尝试并跟踪其活动。举一个例子,操作系统组件可以允许用户查看最近创建或修改的文件的列表。再举一个例子,网络浏览器可以允许用户访问该用户访问的网页的历史。但是,某些使用信息可能是用户不可用的。例如,可能根本不会捕获用户与某些应用程序的交互,并且可能不会捕获应用程序内与内容相关的信息。即使当信息可用时,用户感兴趣的特定信息也可能与大量其它信息混杂在一起。例如,用户正在搜索的特定网页可能埋藏在显示用户最近访问过的很多其它网页的信息内。另外,即使在设备上提供了某些搜索功能,用户也可能希望查看或继续他或她在不同设备上的活动。例如,尽管用户的台式计算机可能保存该用户访问过的文档记录或该用户访问过的网站的记录,但是这些记录通常是用户在另一个计算设备(例如,移动计算设备)上不能获得的。此外,仅记录应用程序内用户交互历史的应用程序,不会捕获不同应用程序之间的关系。
如本文所述,可以跟踪用户对在计算设备上执行的软件应用程序的参与,从而可以跨时间和设备地确定用户活动的更完整视图。举一个例子,操作系统的组件或其它应用程序可以接收指示计算设备和在该计算设备上执行的软件应用程序的不同状态的多个信号。指示计算设备的不同状态的信号可以包括识别以下信息的信号:哪个应用程序视窗是各种输入设备的焦点、用户输入设备的活动、显示应用程序输出的视窗的位置、显示应用程序输出的视窗的状态、哪些视窗正在生成非可视输出(例如,音频回放)、光标位置、或者检测到的用户的眼睛位置。指示软件应用程序状态的信号对于应用程序可以是特定于内容的,例如,文档中的位置、正在访问的记录、游戏的级别、视频中的时间戳、应用程序中发生的活动等等。可以对这些信号进行组合以确定用户对在计算设备上执行的软件应用程序的参与。例如,可以对这些信号进行组合以形成关于以下的记录:如何使用应用程序、应用程序可能在其上操作的任何工件、以及与应用程序进行交互的类型和程度。可以将这些记录组合到表示用户对软件应用程序的参与历史的活动流(例如,用户参与日志)中。具体而言,可以使用启发法或其它方法来处理(例如,平滑)活动流的记录内存储的信息,使得活动流可以与如何使用计算设备上的应用程序的用户心理模型相匹配。另外,来自网络可访问(例如,云)服务的信号可以与基于启发法或其它方法的在本地计算设备上执行的本地服务相匹配,以便在内容来自于设备之外的软件服务时,潜在地改善用户活动的状况。
由于该处理而产生的用户活动流可以用于促进进一步的用户活动,例如恢复先前在同一设备或不同设备上开始的活动。具体而言,用户可以选择活动流的记录,并且操作系统可以将应用程序返回到与该活动流的记录相对应的状态。通过允许用户继续先前的活动,可以潜在地改善计算设备的人机界面,并潜在地减少计算设备的能耗,这是因为与用户手动恢复应用程序相比,可以用更少的步骤来恢复先前的活动。另外,可以使用活动流来搜索在同一设备或不同计算设备上发生的活动。活动流可以包括与多个不同软件应用程序相关联的活动。因此,与应用程序内的单个应用程序跟踪活动相比,活动流可以潜在地捕获有关用户如何使用计算设备的更完整视图。
在所公开技术的另一个方面,活动馈送服务可以与通过网络(例如,互联网)连接的一个或多个客户端设备进行通信。活动馈送服务可以接收对活动流的更新,其中各个活动流指示相应的用户对连接到网络的相应客户端设备上执行的应用程序的参与。活动馈送服务可以合并与特定用户相关联的不同活动流,以生成与特定用户相关联的合并活动流。因此,与特定用户相关联的合并活动流可以包括用户跨多个设备的活动。对活动流进行合并可以包括:解决对活动流内或活动流之间的活动的任何冲突改变。活动馈送服务可以将与特定用户相关联的合并活动流发送到用户的客户端设备。以这种方式,活动馈送服务可以帮助用户查看他或她的数字活动的完整图片并采取行动。具体而言,用户可以跨设备和平台访问参与历史和/或恢复应用程序的给定活动。如本文所使用的,平台可以指代某种类型的设备或操作环境(例如,诸如基于Windows的、基于Linux的、基于Android的或基于iOS的设备)。平台可以包括传统计算设备(例如,台式计算机、膝上型计算机、移动设备)和非传统计算设备(例如,可穿戴设备、手表、汽车、物联网设备等等)。
可以使用合并活动流来汇总用户参与消费的参与历史,还可以用于跟踪使用度量,以允许操作系统组件和/或活动馈送服务确定用户花费最多时间的活动或者他在多件事上一起花费时间的地方。例如,可以通过历史记录(例如,时间段)和活动来独立地搜索合并活动流的数据,从而可以向用户呈现一天中最相关的活动和/或活动的相关分组。可以根据上下文来确定活动的相关性。例如,当前相关的活动可以是基于当前正在计算设备上执行的其它活动、一天中的当前时间、在日历程序中记录的截止日期的邻近性、或者一组当前输入的搜索词。举一个特定的例子,搜索税收信息可以使恢复税收准备活动成为相关的活动。合并活动流可以包括与活动相关联的元数据,以允许主题识别。合并活动流可以包括:关于位置和其它上下文的元数据,以提供其它信息。例如,与在台式计算机上执行的活动相比,可以对在汽车中执行的活动进行不同地解释。再举一个例子,来自蜂窝电话或手表的位置信息或者正在收听的音乐类型可以添加其它上下文。
具体而言,可以生成合并活动流,以便将(一个设备或不同设备上的)离散参与事件进行分组以向用户显示单个相关活动,而靠近在一起发生的较小的离散参与事件可以分组为单个相关活动。可以对合并活动流中的信息进行分析以用于:基于一段时间内的用户参与度来识别并显示一段时间内活动的相关性;识别相关活动,并将用户时间汇总为这些活动的总和;识别活动的参与度(例如,长、短、深、浅等等),并使用识别出的参与度作为描述该用户时间的元数据;识别与特定人员进行互动(例如,通过电子邮件或即时消息传递)后发生的活动;并识别和主动地建议在一天或一个时间段、某次聚会、某个位置、某个应用程序、某个主题等等与设备高度相关或最相关的活动。活动馈送服务或客户端设备上的用户界面可以为用户提供查看和扩充合并活动流的工具。具体而言,用户界面可以提供用于在活动流的不同类型的视图之间进行切换的工具,其中一个视图可以呈现较少数量的高相关性活动,而另一个视图可以呈现更详细或更细粒度的日记样式视图活动。用户界面可以提供用于基于不同参数(例如,按时间、内容、应用程序、设备、主题、持续时间和协作者),对活动进行分组和标记的工具。可以使用元数据对分组的活动进行注释,以便可以搜索合并活动流,从而针对每个不同的参数来识别最相关的活动。用户界面可以提供用于使用户能够指定与他们最相关的活动,并在搜索或恢复合并活动流中的活动时,为这些相关项提供特殊的名称和/或其它属性以进行区分的工具。特定活动的相关性可以取决于上下文和/或可以随时间推移而变化。用户界面可以为用户提供用于在不同系统之间切换以规定活动的相关性的工具,或者活动馈送服务或客户端设备可以基于设备状态和/或在该设备上执行的应用程序状态来自动检测相关性的变化。用户界面可以基于活动的相关性来总结和呈现活动。另外,当与用户最相关的活动相关联的内容在用户执行不同活动时或者在用户空闲时以某种方式发生更改时,活动馈送服务或客户端设备可以发送通知。因此,可以提醒用户相关内容的改变,并且用户可以采取其它动作(例如,重新参与活动)。
用于确定用户参与的示例性架构
图1是用于确定用户对一个或多个软件应用程序的参与的示例性系统100的系统图。系统100可以包括计算设备110,该计算设备110包括用于执行操作系统(没有示出)和一个或多个应用程序120(例如,网络浏览器、文字处理程序、电子邮件程序或音乐播放器)的计算机硬件(例如,处理器和存储器)和软件。计算设备110可以通过网络160,与应用服务170和/或活动馈送服务180进行通信。
系统100可以用于捕获与计算设备110的用户相关联的活动流。活动流可以包括不同应用程序120内的用户活动的记录。可以基于来自应用程序120和/或监听器130的多个信号来生成这些记录。例如,应用程序120可以生成表示给定应用程序状态的信号,例如,应用程序中使用的内容(如,文档或统一资源定位符(URL))、应用程序中的用户操作或者应用程序的其它状况。另外,应用程序120可以生成令牌,该令牌可以用于使应用程序能恢复到生成该令牌时的状态。例如,令牌可以对参数值或其它键进行编码,其中这些参数值或其它键可以用作应用程序的启动命令的一部分,该命令会将应用程序返回到由参数值或键表示的状态。令牌可以用于表示诸如URL、文档名称、文档内的位置、视频或音频轨道内的时间戳等等之类的信息。监听器130可以生成表示计算设备110的状态的信号,例如,输入设备的活动、计算设备110的功率状态、shell视窗的焦点以及计算设备110的软件和/或硬件的其它状态。举一个例子,监听器130可以是操作系统的线程或进程,监听器130可以监测操作系统的各种状态。
仲裁器组件140可以接收来自监听器130和应用程序120的信号,仲裁器组件140可以处理(例如,组合)来自监听器130和应用程序120的多个信号,以产生用户的活动流。给定的活动流可以包括与一个或多个活动相关联的一个或多个记录。给定活动的数据结构包括应用程序与内容的配对。例如,活动可以表示加载了特定文档的文字处理程序、加载了特定视频的视频应用程序、或者加载了特定级别的游戏。给定活动的数据结构可以包括关于用户、应用程序和/或内容的其它信息。例如,给定活动的数据结构可以包括由应用程序生成的令牌,以将应用程序恢复在生成令牌时的状态。再举一个例子,给定活动的数据结构可以包括保留用户参与该活动的历史的历史记录(也称为参与记录)。历史记录可以跟踪用户直接参与活动和标记事件(例如,打印、共享、添加书签或完成活动)的时间段。仲裁器140可以基于从监听器130和应用程序120接收的信号来生成历史记录。因此,给定的活动流可以包括关于用户参与了哪些活动、以及这些活动的历史和/或持续时间的信息。
可以对活动流进行本地存储和/或发送到活动馈送服务180。例如,可以使用活动流来生成能存储在计算设备110上的用户参与历史150。再举一个例子,可以将活动流发送到活动馈送服务180以用于存储和/或用于其它处理。活动馈送服务180可以将与特定设备(例如,计算设备110)相关联的给定活动流与和不同设备(没有示出)相关联的另一个活动流进行合并。因此,可以将在不同设备(例如,工作计算机、家用计算机、移动计算设备或游戏控制台)上执行的给定用户的活动组合成合并活动流。另外,活动馈送服务180可以注释、消歧和/或合并来自不同设备的活动记录,和/或通过使用从应用程序服务170接收的信息来进行。例如,应用程序服务170可以与应用程序120协调地工作(例如,应用程序服务170可以支持应用程序),应用程序服务170可以提供关于活动的信息。应用程序服务170可以将该信息提供给计算设备110(例如,应用程序120和/或仲裁器140)和/或活动馈送服务180。
仲裁器140可以基于应用程序120、监听器130生成的信号、从应用程序服务170接收的信息、以及从活动馈送服务180接收的信息,来处理活动流。例如,仲裁器140可以合并活动流中的活动记录和/或历史记录。举一个具体的例子,可以通过组合暂停两侧的历史记录来消除活动中的暂停。再举一个例子,仲裁器140可以使用来自应用服务170或活动馈送服务180的其它信息来注释活动流。再举一个例子,仲裁器140可以用作活动流的接入点,使得活动流可以被编辑、搜索和/或用于恢复先前的活动。可以通过从活动流中删除不太重要的信息并将活动组织到任务中,来编辑活动流。任务是对零个或多个活动的引用的集合。一个活动可以被多个任务引用。用户可以通过与仲裁器140通信的用户界面(没有示出),来请求创建任务。另外地或替代地,仲裁器140可以基于不同活动之间的相关性来推断任务。这些任务可以用作活动流的搜索标准,和/或使用单个引用来恢复多个活动。
图2示出了用于记录活动流内的用户参与的各种数据结构的例子。可以使用活动流来表示用户在一段时间内对一个或多个计算设备上的一个或多个软件应用程序的参与。活动流数据结构可以是任务记录、活动记录和历史记录的完全或部分分层集合。举一个例子,任务记录可以在层次结构上比活动记录更高,而活动记录可以在层次结构上比历史记录更高。因此,给定的任务记录可以引用零个或多个活动记录,给定的活动记录可以引用零个或多个历史记录。活动流数据结构可以包括对各个任务记录和/或各个活动记录的引用,其中这些记录表示用户对设备的应用程序的参与程度和活动流所覆盖的时间段。再举一个例子,活动流数据结构可以是历史记录的集合,其中各个历史记录标识与该历史记录相关联的一个或多个活动和/或任务。因此,可以使用单一类型的记录来识别历史记录、任务和活动。再举一个例子,活动流数据结构可以是活动和历史记录的集合,其中各个活动记录标识与该活动记录相关联的一个或多个任务,并且活动记录引用与该活动相关联的历史记录。
通过维护多个数据结构和/或通过以不同方式组织记录,在对活动流数据执行不同功能时,可以或多或少地高效处理活动流。例如,将活动用作主记录(其中通过活动来引用历史记录),可以更高效地呈现与用户活动相关联的信息。举一个特定示例,主记录可以包括活动(例如,观看特定视频),并且可以通过主记录来引用参与或历史记录(例如,在上午10:00到上午11:00、上午11:20到上午11:50等等时间观看视频)。因此,可以对记录进行组织以高效地表示人在做什么。再举一个例子,历史记录可以是主记录,其中一个记录可以提供用户活动的描述,并且一组历史记录(其引用活动记录)可以提供有关用户何时进行该活动的数据。使用历史记录作为主记录,可以更高效地处理在给定时间范围内发生的活动。例如,可以对活动流数据的较早记录进行压缩,以潜在地节省存储空间,并匹配用户不完善的存储器(例如,在六个月后,可以将特定活动的所有历史记录缩减为单个记录,表示用户在给定的一天观看了特定视频,同时仍然保留完整的活动记录以恢复该视频)。
用于活动流数据结构的示例性模式200可以包括一个或多个字段。流标识符(StreamID)字段202可以用于将一个活动流与不同的活动流区分开。用户标识符(UserID)字段204可以用于将活动流与特定用户相关联。设备引用(DeviceRefs)字段206可以提供对指示与活动流相关联的任何设备的数据结构(例如,链表的头部)的引用。例如,活动流可以与单个设备相关联,或者活动流可以包括从与特定用户相关联的多个设备合并的信息。替代地,活动流可以是与设备无关的,其中没有设备标识符与活动流相关联。任务引用(TaskRefs)字段208可以提供对指示属于活动流的任务记录的数据结构的引用。活动引用(ActivityRefs)字段210可以提供对指示属于活动流的活动记录的数据结构的引用。对于活动流模式200而言,可能存在更少或更多的字段,例如,概括的字段(例如,指示活动流的时间段的字段)或者提供与活动流有关的信息的字段。
用于任务数据结构的示例性模式220可以包括一个或多个字段。任务标识符(TaskID)字段222可以用于将一个任务与另一个任务区分开。任务类型标识符(TaskTypeID)字段224可以用于识别任务的类型。例如,一种类型的任务可以用于在搜索过程中将相关活动分组在一起,而另一种类型的任务可以用于同时开始或恢复一组相关的活动。活动引用(ActivityRefs)字段226可以提供对指示属于该任务的活动记录的数据结构的引用。名称字段228可以用于为任务提供名称。任务可以由与用户界面进行交互的用户命名,或者可以自动地生成任务名称。例如,可以在呈现任务和搜索结果列表时显示该名称,或者该名称也可以用于恢复任务的活动。图像字段230可以提供对图像文件的引用,其中该图像文件用于显示对任务和用户界面的引用。相关性字段232可以用于将相关性与任务进行关联。举一个例子,相关性字段232可以提供任务的相对重要性,其中,可以基于执行任务的频率或者其它适当的标准来确定重要性。再举一个例子,相关性字段232可以提供对存储标签或者与任务相关联的其它信息的数据结构的引用。具体而言,可以使用这些标签来搜索与用户的标准匹配的任务。
活动数据结构的示例性模式240可以包括一个或多个字段。活动是应用程序与内容的配对。举一个例子,可以使用应用程序标识(AppIdentity)字段258来标识用于给定活动的应用程序,可以使用应用程序活动标识符(AppActivityID)字段244来标识内容。因此,用于搜索活动记录的主键可以是应用程序标识字段258和应用程序活动标识符字段244的并集。应用程序标识字段258可以是跨不同平台和/或设备的应用程序的持久可移植表示的列表。应用程序活动标识符字段244可以用于标识应用程序的内容。应用程序可以通过基于应用程序的实际内容,使用跨设备通用的语义标识符来控制活动的标识。使用由应用程序控制的公共语义标识符而不是由特定操作系统控制的标识符,可以使跨设备地维护活动标识符和与活动标识符相关联的内容的映射更加容易。应用程序可以在执行时,生成用于应用程序活动标识符字段244的值,使得可以恢复该应用程序和/或可以存储与该应用程序相关的历史界标。该信息可以称为令牌。举一个特定例子,应用程序可以是视频回放应用程序,内容可以是正在回放的特定视频。内容的详细程度可以是特定于应用程序的。例如,应用活动标识符字段244可以具有与正在回放的特定视频或者特定视频内的特定位置相对应的值(例如,视频内的五分钟)。因此,基于应用程序提供的信息,可以以不同的速率更新应用活动标识符字段244。例如,一个视频播放应用程序可能只标识开始或停止视频,而不同的视频播放应用程序可以标识开始、停止、继续和暂停视频。可以使用特定于应用程序的编码方案,对应用程序的内容进行编码。举一个例子,视频播放应用程序可以将在视频播放五分钟后观看视频,编码为“/watch/70248289”。在一个实施例中,一对应用程序标识字段258和应用程序活动标识符字段244可以向操作系统组件提供足够的信息,以在与存储在应用程序活动标识符字段244中的值相对应的点处恢复应用程序。在另一个实施例中,活动的标识可以与激活令牌分开。例如,应用程序活动标识符字段244可以标识正在视频播放应用程序中播放的视频,存储在web服务或另一个字段中的其它信息(例如,下面所描述的激活目标字段246)可以提供用于跟踪用户在视频中的位置的播放头(例如,时间戳)。因此,可以在创建应用程序活动标识符字段244时将其固定,并在更新应用程序中的用户上下文时更新其它字段。
示例性模式240可以包括其它字段,以使得能够存储、识别、搜索、显示、恢复或提供关于由活动数据结构表示的活动的信息。例如,活动标识符(ActivityID)字段242可以用于区分一个活动与另一个活动。具体而言,可以为每个活动分配活动标识符242的唯一编号或字符串。激活目标字段246可以用于调用应用程序。例如,当活动开始时,应用程序可以提供统一资源标识符(URI)或操作系统能够用于启动该应用程序的另一个目标。再举一个例子,如果未在本地设备上安装应用程序,则可以使用URI来安装或将用户带到用于远程安装或运行该应用程序的网页上。内容目标字段248可以用于启用诸如内容预览或可用性的功能。例如,内容可以是位于远程服务器上的文档,内容目标字段248可以是引用该文档的URI。当显示或搜索活动时,名称字段250可以用于为活动提供人类可读的名称。图像字段252可以提供针对要为该活动显示的图像的引用。另外,可以提供用于引用动画、声音或其它输出信息的字段。属性字段254可以用于存储关于活动或应用程序的属性。例如,属性字段254可以包括零个或多个名称值对,内容类型字段256可以描述活动的类别(例如,文档、网站、照片等等)。应用程序显示名称(AppDisplayName)字段260可以用于提供与该应用程序相关联的人类可读名称。应用程序图标(AppIcon)字段262可以提供对于与该应用程序相关联的图像或图标的引用。相关性字段264可以提供活动的相对重要性和/或对存储与任务相关联的标签或其它信息的数据结构的引用。历史引用(HistoryRefs)字段266可以提供对指示与活动流相关联的任何历史记录的数据结构的引用。
用于历史数据结构的示例性模式270可以包括一个或多个字段。特定的历史记录可以对应于活动中特定时间点的事件。例如,可以使用不同的相应历史记录,对诸如开始、打印、共享、添加书签或完成活动之类的事件进行标记。类型字段272可以用于对特定历史记录进行分类。例如,历史记录的类型可以包括用于用户参与、打印、共享、全屏、完成等等的类型。活动引用字段274可以提供到活动记录(例如,与历史记录相关联的活动记录)的链接(例如,委托器)。事件时段字段276可以指示历史记录覆盖的事件的时间范围。对于一些历史记录,持续时间为零可以是适当的。活动时间字段278可以指示应用程序处于活动状态的事件时段字段276期间的时间量。在应用程序处于活动状态时,用户可能参与该应用程序。举一个特定的例子,可以从上午10:00到上午11:00打开一个应用程序,活动持续时间可以是22分钟。因此,事件时段字段276可以指示活动持续了一个小时,而活动时间字段278可以指示存在22分钟的活动持续时间。报告源字段280可以指示导致生成历史记录的源应用程序。例如,源应用程序可以是应用程序、操作系统、网络可访问服务、数字助理等等。设备标识符字段282可以用于指示发生事件的设备。当显示历史记录时,可以使用显示文本字段284。报告时间字段286可以指示何时生成了历史记录或最后更新时间。可以使用本地相关性字段288来指示将记录与在相同时间段内处于活动状态的其它记录进行比较的相关性。例如,本地相关性字段288可以用于区分执行后台处理(例如,播放音频和背景)的应用程序与执行前台处理的应用程序(例如,处于操作系统焦点中的文字处理文档)。其它字段也是可能的,例如指示活动发生位置的设备位置字段等等。
图3描绘了一种示例性时序图,该时序图显示了用于确定用户对一个或多个软件应用程序的参与的各种信号301到307。具体而言,图3示出了随着用户在计算设备上执行不同活动,各种信号301到307如何发生改变的例子。信号301到307可以分类为应用程序信号301到304和操作系统信号305到307。每个应用程序信号301到304可以对应于不同的应用程序或者在计算设备上执行的应用程序的不同实例。例如,各个应用程序可以包括用于经由一个或多个信号与操作系统的活动平台接口的代理。这些信号可以在应用程序执行的各个点发生改变(例如,当应用程序启动、暂停、终止或者发生其它事件时)。另外,这些信号可以提供关于应用程序的信息,该信息可以用于在捕获该信息的点恢复应用程序。举一个特定例子,电子邮件应用程序可以产生电子邮件应用程序信号301,web浏览器可以产生浏览器信号302,音乐播放器应用程序可以产生音乐应用程序信号303,文字处理应用程序可以产生文字处理器信号304。
例如,操作系统信号305到307可以包括输入设备活动信号305、更改焦点信号306和功率状态转换信号307。输入设备活动信号305可以指示输入设备何时活动,例如何时在键盘上按下字符、何时单击或移动鼠标、或者何时在麦克风的输出处检测到语音。替代地,可以为每个输入设备生成单独的信号。操作系统用户界面的焦点可以是带有视窗的应用程序,其中该视窗位于用户界面的前台,并且可以接受来自输入设备的输入。更改焦点信号306可以指示焦点何时改变,例如何时将应用程序带到前台和/或何时将应用程序最小化。更改焦点信号306可以指示哪个应用程序正在进入焦点。如图3中所示,处于焦点的应用程序由阴影的相应应用程序信号来指示。功率状态转换信号307可以指示计算设备何时从较低功率状态转换为较高功率状态,或者何时从较高功率状态转换为较低功率状态。功率状态转换信号307可以指示计算设备正在转变成哪个功率状态。
可以通过监测不同的信号301到307并基于不同的信号301到307生成活动流来确定用户参与。例如,活动流可以包括针对在计算设备上启动的每个应用程序的活动。可以在启动应用程序时和/或在应用程序内或操作系统内发生不同事件时,将活动添加到活动流中。在创建活动时、以及在执行和/或终止应用程序时,可以更新活动记录。如图3中所示,可以在时间310创建用于电子邮件的活动,可以在时间320创建用于web浏览的活动,可以在时间330创建用于与音乐应用程序交互的活动,并且可以在时间340创建用于文档编辑的活动。
举一个信号如何变化的例子,在时间308,计算设备可以从低功率状态转换到高功率状态(例如,当计算设备开机时,或者从待机功率状态转换到活动功率状态时)。在时间310处,可以启动电子邮件应用程序,可以激活电子邮件应用程序信号301。电子邮件应用程序信号301的激活可以导致为电子邮件应用程序创建活动记录。用户可以使用电子邮件应用程序阅读电子邮件、归档电子邮件、回复电子邮件、以及在电子邮件应用程序中执行各种其它功能。可以对电子邮件应用程序信号301进行编码,以指示在电子邮件应用程序内发生的各种事件。举一个例子,电子邮件应用程序信号301可以仅提供粗粒度的信息,例如,何时在时间310启动电子邮件应用程序、以及何时在时间320暂停电子邮件应用程序。再举一个例子,电子邮件应用程序信号301可以提供细粒度的信息,例如正在阅读的电子邮件、正在答复的电子邮件、正在阅读的特定电子邮件、正在答复的特定电子邮件、正在将电子邮件移入文件夹等等。每当在电子邮件应用程序信号301上检测到事件时,就可以更新电子邮件应用程序的活动记录。
在时间320,操作系统用户界面的焦点从电子邮件应用程序更改为web浏览器应用程序。例如,用户可以启动web浏览器,将web浏览器置于操作系统的焦点并将电子邮件应用程序移出焦点。浏览器信号302可以指示浏览器内发生的事件,例如正在查看的特定URL。浏览器信号302的激活可以导致为浏览器应用程序创建活动记录。
在时间330,焦点从浏览器应用程序更改为音乐播放器应用程序。例如,用户可以正在搜索和/或购买音乐以使用音乐播放器应用程序进行播放。音乐播放器应用程序可以由音乐购买和分发服务提供支持,该服务可以提供能通过音乐应用程序信号303或不同信号进行传播的信息。当开始播放列表时,音乐应用程序信号303可以指示开始了音频回放。搜索音乐和播放音乐可以是单独的活动,也可以是同一活动的一部分。音频播放可以是在其它活动期间处于活动状态的后台活动。例如,可以在时间340启动文字处理应用程序,并且可以与音频回放活动同时地编辑文档。因此,编辑活动和音频回放活动可以同时活动。换言之,基于多个交互信号,系统可以确定用户同时地参与文字处理应用程序和音乐播放器应用程序。
文字处理器信号304可以指示在文字处理应用程序内发生的事件,例如,编辑、打印、保存等等。另外,文字处理器信号304可以指示应用程序的其它状态,该状态可以用于在记录该其它状态的点(例如,正在编辑的文档、用户正在编辑的位置、剪贴板信息、活动菜单等等)恢复文字处理应用程序。可以捕获、处理在文字处理器信号304中编码的信息,和/或存储在文字处理应用程序的活动记录中。
在时间350,焦点可以从文字处理应用程序更改为电子邮件应用程序。例如,用户可以看到新电子邮件消息已经到达的通知,用户可以打开电子邮件应用程序,读取和删除新电子邮件消息,然后在时间360最小化电子邮件应用程序以返回到文字处理应用程序。在该例子中,存在用于如何表征从时间350到时间360的电子邮件应用程序的使用情况的一些选项。举一个例子,从时间350到360的电子邮件应用程序的使用可以是从时间310到时间320与使用电子邮件应用程序不同的活动。再举一个例子,从时间350到360的电子邮件应用程序的使用可以是与从时间310到时间320使用电子邮件应用程序的相同活动的一部分。再举一个例子,可以完全忽略电子邮件应用程序从时间350到360的使用。从时间350到360的动作的处理可以是基于电子邮件应用程序内的分析和/或使用信号301到307中的一些或全部的分析。
在时间360,焦点可以返回到文字处理应用程序。与在时间350开始的事件一样,可以以多种不同的方式,对在时间360开始的事件进行分类。举一个例子,可以使用时间350与360之间的时间段的长度来判断在时间360开始的事件是否包括在从时间340开始的较大活动中,或者从时间360开始的事件是否是新活动。
在时间370,焦点可以返回到浏览器应用程序。在该例子中,用户正在查看相同的URL,因此可以将开始于时间370的事件与开始于时间320的相同活动包括在一起。替代地,可以将开始于时间320和370的事件分类为单独的活动。在时间380,焦点可以返回到文字处理器,并且在时间390,由输入设备活动信号305报告的输入可以结束。基于在给定时间内没有输入设备活动,计算设备可以进入待机状态或在时间392断电。当输入设备活动空闲或者当计算设备在时间392转换到低功率状态时,活动的活动(例如,文字处理活动)可以在时间390暂停或结束。
图4是用于确定用户对一个或多个软件应用程序440的参与的示例性系统400的系统图。系统400可以包括计算设备410,该计算设备410包括用于执行操作系统420和一个或多个应用程序440的计算机硬件(例如,处理器和存储器)和软件。计算设备410可以与诸如活动服务466和活动馈送服务462之类的网络可访问服务460进行通信。
网络可访问服务是通过网络(例如,互联网),在某个网络地址处提供的软件功能。例如,网络可访问服务可以在专用服务器计算机上执行,也可以在连接到网络的云环境中执行。客户端可以向服务器发起服务请求,服务器可以处理该请求并返回适当的响应。可以使用例如应用程序编程接口(API)请求来发起客户端服务请求。API请求是通常利用JSON或XML表示的已规定请求-响应消息系统的编程接口,该系统通常通过网络以基于HTTP的web服务器的方式进行公开。因此,在某些实现中,可以将API定义为一组超文本传输协议(HTTP)请求消息以及响应消息结构的定义,其中响应消息可以采用可扩展标记语言(XML)或JavaScript对象表示(JSON)格式。API可以指定执行某个动作的一组功能或例程,其包括完成特定任务或允许与软件组件进行交互。当服务从客户端设备接收到API请求时,该服务可以生成针对该请求的响应,并向请求中标识的端点发送响应。
操作系统420可以包括不同的软件例程、模块或组件,以用于管理程序(例如,应用程序440)的执行的不同方面以及用于与计算设备410的硬件进行接口。举一个例子,操作系统420可以包括用于与计算设备410的用户进行接口的shell 422和用于管理计算设备410的资源的内核例程426。例如,shell 422可以提供用于列出、启动、暂停和关闭使用一个或多个视窗的应用程序440的视窗系统和工具。shell 422可以提供用于打开、定位、定尺寸、最小化、选择和/或关闭视窗的工具。另外,shell 422可以提供用于列出与用户相关联的活动和/或用于恢复与用户相关联的活动的接口。例如,shell 422可以将用户参与历史呈现为在与用户相关联的时间轴内的时间顺序发生的活动。再举一个例子,shell 422可以从活动流中反应性地或主动地建议要恢复的活动。建议的活动可以是响应于搜索查询或由操作系统420识别的事件。特别地,当用户的机器被解锁时,可以列出建议恢复用户在当前机器或另一个设备上最后进行的活动。再举一个例子,如果打开文字处理文档,则shell 422可以建议打开与文字处理文档同时使用的网页。shell422可以包括数字助理,其可以使用语音命令来显示活动流的活动或者与之进行交互。另外地或替代地,作为与shell 422不同的应用程序的数字助理可以由shell 422启动。
内核例程426可以执行操作系统420的低层级(例如,接近硬件)和/或性能敏感例程。具体地说,内核例程426可以管理应用程序440和其它例程向计算设备410的存储器的加载和删除;内核例程426可以管理计算设备410的虚拟存储器和存储资源;内核例程426可以管理在计算设备410的处理器上执行的进程和/或线程;内核例程426可以管理计算设备410的功率状态;内核例程426可以为应用程序440和其它例程提供接口,以使用网络上的网络接口控制器来发送和接收网络分组;内核例程426可以启用在计算设备410上执行的不同例程之间的进程间通信。
操作系统420可以包括活动监测器组件,该活动监测器组件用于编译用户参与计算设备410上的软件应用程序440的历史。活动监测器组件的功能可以分布在各种其它组件(例如,监听器424、代理432、仲裁器430、用户活动历史高速缓存428和归档器434和活动馈送存储450)之中。在替代实施例中,可以将活动监测器组件的功能分配到更少或更多的组件中。
监听器424可以用于生成表示硬件和/或操作系统420状态的信号。例如,监听器可以合并到设备驱动程序中,以便计算设备410的硬件组件可以与活动监测器组件的其它组件进行交互。作为特定示例,用于键盘、鼠标、麦克风、摄像机和其它输入设备的设备驱动程序可以生成指示输入活动的信号。可以使用用户呈现的监听器来确定用户何时正在使用计算设备410。例如,用户呈现的监听器可以监测输入设备是否正在接收指示用户在场的输入(例如,击键或鼠标移动)。用户呈现的监听器可以测量自上一次输入事件以来已经过去的时间量,并且可以指示自上次输入事件以来用户已离开指定的时间量。应用程序视图监听器可以确定应用程序何时具有获取或失去操作系统420焦点的视图。应用程序视图标题更改监听器可以用于监测应用程序窗口标题的更改,并报告更改的标题名称。例如,应用程序窗口的标题可以用于描述活动和/或判断在活动中是否已发生事件。因此,监听器424可以生成指示各种状态的信号,例如,应用程序是否在操作系统420的焦点中、用户输入设备的特定活动、显示应用程序的输出的视窗的位置、显示应用程序的输出的视窗的状态、鼠标光标位置、音频输出、检测到的眼睛位置、检测到的手部位置(例如,指向、捏住、展开、滑动、轻拂或轻击)等等。
代理432可以管理活动监测器组件内的组件和进程,并且可以与shell和/或外部组件(例如,应用程序440)进行交互。具体而言,在活动监测器组件启动时,代理432可以创建其它组件的实例。代理432可以充当到shell 422的接口,例如当输入命令以查看活动或活动列表时。另外,代理432可以转发来自shell 422或应用程序440的请求以刷新活动流。在一个替代实施例中,代理432的功能可以分布在操作系统420的其它组件之中。
应用程序440可以使用在应用程序440内生成的信号,与活动监测器组件进行通信。具体地说,每个应用程序440可以包括用于与代理432和/或仲裁器430进行通信的活动馈送API 442。活动馈送API 442的接口可以用于对在应用程序440内生成的信号进行编码。这些信号可以包括与活动监测器组件接口的所有应用程序所共有的信息,例如,应用程序何时开始、暂停或结束。这些信号可以包括特定于特定应用程序的信息,例如,视频播放的状态、音频播放的状态、游戏级别、完成游戏级别、获得的成就、在银行软件中进行交易、共享文档、将用户添加到对话、事件类型、记录事件、保存事件、打印事件、编辑事件等等。
仲裁器430可以用于处理从监听器424和应用程序440接收的信号,以生成指示用户对应用程序440的参与的活动流。可以使用不同数量的阶段和/或信号的组合来处理这些信号。例如,快速变化的噪声信号可以通过低通滤波器,从而降低信号中的噪声。滤波后的信号可以与其它非滤波后的信号进行组合以确定用户参与度。再举一个例子,当另一个信号处于活动状态时,另一个信号可以被屏蔽。再举一个例子,可以基于另一个信号的值来放大一个信号。再举一个例子,可以基于一个或多个控制信号的值来复用信号组。具体而言,应用程序可以断言指示多个活动功能的多个信号,可以使用其它信号(例如,来自操作系统的信号)从活动信号组中选择这些信号之一。
仲裁器430可以创建和更新活动流数据结构(例如,上面参照图2所描述的),其包括针对任务、活动和/或事件历史的记录。活动流数据结构的记录可以存储在用户活动历史高速缓存428中,和/或传送到归档模块434以便本地或远程存储。用户活动历史高速缓存428可以为用户存储部分活动流。例如,部分活动流可以包括对活动流的最新和/或推测更新,当生成活动流的其它记录时,仲裁器430可以参考该更新。举一个特定例子,用户活动历史高速缓存428可以包括多个记录,这些记录指示给定活动正在进行中。随着给定活动的继续,仲裁器430可以将多个记录合并为针对该给定活动的更少或单个记录。可以基于各种事件(例如,刷新请求、活动终止、失去用户存在或者过去了指定时间段,对记录进行刷新或发布到归档模块434。
归档模块434可以将对活动流的更新传送到活动馈送存储450。活动馈送存储450可以存储活动流的本地副本,并可以使用从应用程序440和/或活动馈送服务462接收的信息来注释活动流。另外,活动馈送存储450可以从活动馈送服务462接收活动流(例如,从与用户相关联的另一个设备创建的活动流)。活动馈送存储450可以将不同的活动流合并到单个活动流中,或者其可以将接收到的活动流传送到仲裁器430,以便仲裁器430可以合并不同的活动流。活动馈送存储450可以使活动流或对活动流的更新发送到活动馈送服务462。各种同步事件都可以发生活动馈送存储450和活动馈送服务462之间的通信。例如,同步事件可以包括:将计算设备410转换为低功率状态或高功率状态、指定时间段的到期、给定活动的发起或终止、活动监测器组件的发起或终止、同步命令等等。
活动馈送服务462可以在长期存贮设备464中为用户发布活动流。活动服务466可以使用和/或注释存储在长期存贮设备464中的活动流。例如,活动服务466之一可以是用于应用程序440的支持服务,并且支持服务可以注释与应用程序440相关联的活动记录。替代地,支持服务可以与活动馈送服务462通信,使得只有活动馈送服务462可以修改存储在长期存贮设备464中的活动流。支持服务是应用程序调用的执行该应用程序的功能的网络可访问服务。另外地或替代地,支持服务可以将信息传送给应用程序440,并且可以经由应用程序440和活动监测组件之间的信号来传送该信息。
仲裁器430可以用于组合从监听器424和应用程序440接收的信号,以生成指示用户对应用程序440的参与的活动流。可以多种不同方式执行对信号进行组合来确定用户参与度,例如通过使用机器学习、统计技术、启发法和/或其它基于规则的处理。举一个例子,可以通过将一个或多个信号的模式与用户心理模型匹配来确定用户参与。对信号进行组合可以包括:在相同的时间点组合不同的信号、以及组合来自不同的时间点的不同信号。另外,可以对信号的重要性进行加权,并且该加权可以随时间改变。例如,加权可以基于信号表征特定活动的精确度的历史来改变。
通过组合来自监听器424和应用程序440的信号以生成活动流,与仅使用来自监听器424或仅来自应用程序440的信号相比,可以更准确地确定用户参与。例如,来自应用程序440的信号可以单独地指示特定于应用程序的信息,但是这些信号通常无法辨别用户是否在场、应用程序是否处于焦点、光标是否悬停在应用程序视窗上等等。来自监听器424的信号可以指示操作系统和设备状态(例如,哪些应用程序正在执行),但是这些信号通常无法辨别在应用程序内发生的活动。因此,通过组合来自监听器424和应用程序440的信号,可以确定用户参与的更完整视图。
可以基于在计算设备410上执行的软件应用程序的类型来确定用户参与。例如,可以将软件应用程序的类型分为诸如以下的大类:前台应用程序、后台应用程序和混合前后台应用程序。当用户通常参与该应用程序为操作系统的焦点的应用程序时,可以将该应用程序分类为前台应用程序;当用户参与几乎不需要交互的应用程序时和/或当其它应用程序是操作系统的焦点时,可以将该应用程序分类为后台应用程序;当使用来自应用程序、其它应用程序或操作系统的其它信号来判断用户是否参与该应用程序时,可以将该应用程序分类为混合应用程序。例如,文字处理应用程序可以是前台应用程序,音乐播放器应用程序可以是后台应用程序,电子邮件应用程序可以是混合应用程序。通常,当应用程序是操作系统的焦点并且存在来自输入设备的活动时,用户可以是在参与前台应用程序;而当应用程序正在执行并在执行能够与另一个应用程序同时执行的功能时,用户可以是在参与后台应用程序;用户可以基于特定于应用程序的一组规则来参与混合应用程序。举一个特定例子,当文档加载到应用程序和活动中、该应用程序是焦点、并且从输入设备检测到活动时,用户可以在使用文字处理应用程序。当正在播放歌曲或播放列表并且计算设备410未被静音时,用户可以是在参与音乐播放器应用程序。可以将后台应用程序分类为比前台应用程序更低的相关性活动。因此,当同时使用两个应用程序时,可以将文字处理应用程序分类为比音乐播放器应用程序更相关。即使发生短持续时间中断,用户也可以继续使用文字处理应用程序。例如,当接收到新电子邮件时,电子邮件应用程序可能成为焦点。但是,如果在返回到文字处理应用程序之前,电子邮件应用程序使用了短时间(例如,当用户仅查看电子邮件应用程序的收件箱或者删除新的不重要的电子邮件,然后将电子邮件应用程序最小化),则在使用电子邮件应用程序的期间内,用户可以继续使用文字处理应用程序。电子邮件应用程序可以是混合应用程序。例如,当用户阅读和/或响应指定数量的电子邮件或归档指定数量的电子邮件时,可以将用户分类为在使用电子邮件应用程序。当用户将电子邮件应用程序保持在焦点达到指定时间段内时,可以将该用户分类为在使用该电子邮件应用程序。但是,当仅在短时间内访问电子邮件应用程序和/或没有撰写电子邮件时,可以将用户分类为没有参与电子邮件应用程序。因此,在执行文字处理活动时与电子邮件应用程序的简短交互,可以被分类为低相关性活动或完全没有活动。
可以通过将信号的模式与用户心理模型相匹配,来确定用户参与。用户心理模型可以包括与用户行为模型相对应的多个状态。例如,用户心理模型可以包括用于编辑文档、观看视频、阅读文档、听音频、玩游戏、在场、空闲或不在场、处理中断等等的状态。可以根据用户模型的状态,来不同地解释与操作系统状态相对应的信号。例如,当文字处理应用程序成为焦点并且用户心理模型指示正在编辑文档时,输入设备活动可以指示文档正在继续进行编辑,而缺乏输入设备活动可以指示文档没有在编辑。再举一个例子,当音乐播放器应用程序正在播放音频轨道时,输入设备活动可能与用户是否继续收听音频无关。
可以通过以其它方式组合信号来确定哪些应用程序处于活动状态,来确定用户参与。举一个例子,可以使用视窗的方向来确定用户参与。具体而言,并排有两个非封闭窗口可以指示多个应用程序同时处于活动状态。使用眼动追踪技术,可以增加对两个应用程序都处于活动状态的决策的信心。例如,指向用户的摄像机可以检测用户的眼睛以及眼睛聚焦在计算设备410的显示屏上的哪里。如果用户的眼睛在不同窗口之间来回移动,则两个应用程序都可以是活动的,即使在任何给定时间只有一个应用程序成为焦点,用户仍可以同时在使用这两个应用程序。再举一个例子,可以使用不同应用程序的使用模式来确定用户参与。具体而言,用户可以在查看网络浏览器应用程序中的网页与编辑文档和文字处理应用程序之间来回切换。在来回切换期间,用户可以同时参与两个应用程序。再举一个例子,可以使用光标相对于应用程序窗口的位置来确定用户参与。
图5是用于确定跨计算设备和/或平台的用户参与的活动馈送服务500的系统图。活动馈送服务500可以包括:在专用服务器计算机上或者在连接到诸如互联网的网络的云环境内执行的一个或多个网络可访问服务。活动馈送服务500可以包括用于通过网络进行通信的网络接口510。例如,网络接口510可以检测去往活动馈送服务500的网络分组,可以将接收的网络分组路由到活动流接收服务520。网络接口510还可以对来自活动流传输服务560的分组进行格式化以用于通过网络进行传输。
活动流接收服务520可以从连接到活动馈送服务500的客户端设备接收消息。来自客户端设备的消息可以包括用于以下的消息:上传活动流;更新活动流;使客户端设备与上传的活动流同步;报告连接到活动馈送服务500的设备;报告与活动馈送服务500断开连接的设备;请求将设备与用户关联等等。活动流接收服务520可以对传入消息进行解码以确定消息的各种属性,例如用户标识符、设备标识符、活动流标识符和消息类型。对于与特定活动流相关联的消息,可以将来自消息的解码信息发送到活动流处理模块530以进行进一步处理。此外,活动流接收服务520可以与活动流发送服务560进行通信。例如,可以将与设备状态有关的消息(例如,与网络连接或断开连接)路由到活动流发送服务560。
活动流处理模块530可以使用一个或多个设备和/或平台,来管理一个或多个用户的活动流。对活动流进行管理可以包括:创建和/或存储活动流,基于来自用户的设备和/或应用服务的输入来更新活动流,在不同设备和/或平台之间同步活动流,合并来自给定用户的不同设备的活动流,注释或修改活动流,跟踪用户与设备之间的关联等等。
活动流处理模块530可以存储给定用户的活动流。可以基于用于创建新活动流的消息或者基于用于更新当前未存储在活动馈送服务500的活动流的消息,为用户创建新的活动流。例如,可以将活动流存储在存储的活动流数据库540,并通过各种属性(例如,用户标识符、设备标识符和/或活动流标识符)进行索引。当接收到更新消息时,可以使用该消息内的标识符来找到存储在所存储的活动流数据库540中的任何活动流。该更新消息可以包括活动记录、历史记录、任务记录、活动流的一部分(例如,与某个时间段相关联的一组记录)或完整的活动流。可以将更新消息中的信息与在存储的活动流数据库540中找到的信息进行合并,以便可以将更新的活动流写回到活动流数据库540。
活动流处理模块530可以用于使用从应用程序服务接收的信息和/或基于活动流的处理,来注释活动流。例如,设备可能具有关于活动的不完整信息,并且与该活动相关联的应用程序的支持服务可以直接与活动馈送服务500通信,而不是与执行该应用程序的设备进行通信。可以将来自支持服务的信息注释到活动流,以便活动流具有与活动相关联的更完整的信息集。另外,活动流处理模块530可以处理活动流以潜在地推断出更高阶的活动和/或任务。例如,一些客户端设备可能具有降低的处理能力和/或关于活动流的不完整信息,因此活动馈送服务500可以补充客户端设备的处理能力。另一方面,其它客户端设备可以具有增强的处理能力,因此可以在客户端设备上执行大多数活动流处理。通过在客户端设备处处理活动流,可以在将本地活动流传输到活动馈送服务500之前压缩与该设备相关联的本地活动,这可以潜在地减少活动馈送服务500中与客户端设备之间的通信相关联的带宽。
活动流处理模块530可以用于合并正在使用多个设备和/或平台的给定用户的活动流。例如,用户可以在不同的时间在不同的设备上执行相同的活动。举一个特定例子,用户可以在上下班途中阅读移动设备上的网页,然后用户可以在上班后在工作计算机上完成阅读该网页。这里,活动是阅读网页。工作计算机和移动设备可以是不同的平台,但是每个平台都可以为同一活动生成活动流。具体而言,工作计算机和移动设备可以将与用户在各个设备上阅读网页时的不同时间段相对应的活动的单独更新,发送到活动馈送服务500。活动馈送服务500可以识别出不同的更新属于共同的活动,故可以将不同的活动流合并为单个活动流。具体而言,可以通过确定从两个不同平台上的两个不同的web浏览器访问了相同的URL,来识别共同活动。工作计算机和移动设备都可以发送包括与阅读网页相关联的一个或多个历史记录的更新,活动馈送服务500可以将不同的历史记录合并为单个历史记录。
活动流处理模块530可以检测到已经对活动流进行了合并,故可以将更新调度回用于生成合并活动流的各个活动流的客户端设备。例如,可以注册属于用户的设备,并存储在用户和设备信息数据库550中。例如,用户可以通过下载app或安装旨在与活动馈送服务500进行通信的操作系统,来订阅活动馈送服务500。用户可以注册多个设备,并且活动馈送服务500可以生成与每个用户相关联的设备图。该设备图可以包括用户的设备、与每个设备相关联的平台、每个设备上安装的软件、设备的分类(例如,工作设备或家用设备)、以及与该设备和/或用户相关联的其它信息。活动流处理模块530可以识别与用户相关联的设备,并且可以将更新调度到用户的设备。
另外,活动流处理模块530可以判断是否对来自一个用户设备的活动流进行合并和/或发送到另一个用户设备。例如,用户可以具有工作计算机、用于工作的移动电话、家用计算机以及家用游戏控制台。活动流处理模块530可以分析设备的活动和特性,以判断活动流是将被合并还是保持分离。例如,与在游戏控制台上玩的游戏相对应的活动流可以在游戏控制台和家用计算机之间共享,但是不与工作计算机和用于工作的移动电话共享。再举一个例子,可以将与在工作计算机上编辑文档相对应的活动流发送到移动电话,而不发送到游戏控制台。活动流处理模块530可以基于存储在设备图中的特征,来自动地推断用于在设备之间共享活动流的规则。另外地或替代地,用户可以设置规则(例如,在注册过程中),以在用户的不同设备之间共享。
另外,活动流处理模块530可以在将活动流发送到用户设备之前,创建和/或修改与活动流相关联的元数据。举一个例子,可以基于从中捕获活动流中的活动或者向其发送活动流中的活动的设备,来调整活动流的相关性。例如,游戏控制台可以识别用户正在编辑的文字处理程序的文档(因为它在用户的活动流中),但是游戏控制台可能只建议恢复游戏,这是因为游戏对于游戏控制台来说更相关。再举一个例子,在家用PC上,最近的活动可以是在控制台上玩游戏,但是相反,系统可以建议恢复与工作有关的任务,这是因为与工作有关的任务与家用PC更相关。
活动流处理模块530还可以基于设备上安装的软件,来判断是否合并和/或共享设备之间的活动流。举一个例子,当给定的软件应用程序安装在第一设备而不是第二设备上时,与给定的应用程序相关联的活动流可以存储在第一设备上,并从第二设备中过滤掉。替代地,活动流处理模块530可以检测到第二设备没有安装该给定的应用程序,但是其能够执行该给定应用程序的构建。在这种情况下,可以将活动流与用于安装和运行应用程序的构建的信息一起发送到第二设备,以便可以在第二设备上继续进行该活动。例如,用户可以选择在第二设备上恢复该活动,并且该设备可以安装应用程序,并按照活动流所记录的状态恢复应用程序。
活动流发送服务560可以将活动流的调度更新发送到用户的各个设备。例如,活动流发送服务560可以包括:用于检测哪个用户的设备是活动的并且连接到网络的在线服务。可以在各种时间和/或各种条件下,将对活动流的更新发送到设备。例如,可以响应于检测到设备已从低功率状态转换到高功率状态(例如,当设备开机或退出待机模式时)来发送对活动流的更新。再举一个例子,可以响应于一个设备更新了存储在用户的其它设备上的活动流,来发送对活动流的更新。因此,可以在用户的设备之间几乎实时地无缝更新活动流。再举一个例子,可以响应于注册用户的新设备而发送活动流的更新,以便可以向新设备填充来自用户的其它设备的活动流的信息。因此,注册新设备可以使用户快速地使用新设备来继续在其它设备上开始的活动。
图6示出了跨计算设备和/或平台共享用户参与的各种例子。举例610,客户端设备611可以与web服务612和活动馈送服务(AFS)613进行通信。用户可以使用设备611来执行活动并生成活动流A。可以使用web服务612的功能来执行活动,web服务612可以使用信息A’来增强活动流A。可以将带注释的活动流AA’发送到活动馈送服务613,以进行存储和/或分发给其它设备。
举例620,客户端设备621可以与web服务622和活动馈送服务(AFS)623进行通信。用户可以使用设备621来执行活动并生成活动流A。可以使用web服务622的功能来执行活动,web服务622可以生成能表征和/或补充活动流A的信息A’。Web服务622可以将信息A’发送到活动馈送服务623。设备621可以将活动流A发送到活动馈送服务623,其中活动流A可以与信息A’合并以创建带注释的活动流AA’。可以将带注释的活动流AA’发送到设备621和用户的其它设备。
举例630,第一客户端设备631和第二客户端设备632可以与活动馈送服务(AFS)633进行通信。用户可以使用设备631来执行活动并生成活动流A。可以将活动流A从设备631发送到活动馈送服务633。类似地,用户可以使用设备632来执行活动并生成活动流B,该活动流B可以发送到活动馈送服务633。活动馈送服务633可以确定设备631和632与同一用户相关联,并且可以将更新发送到各个设备。举一个例子,活动馈送服务633可以确定活动流A和B与相同的活动相关联,故可以将这些活动流合并为单个活动流AB。由于合并了一些记录,因此与活动流A和B中的A的活动计数与B的活动计数的总和相比,活动流AB可以具有更少的记录。再举一个例子,活动馈送服务633可以确定活动流A和B与不同的活动相关联,故可以使用来自另一个设备的未修改的活动流来更新这些设备。因此,设备631和632中的每一个可以包括在设备631和632两者上的用户参与的记录。
举例640,第一客户端设备641和第二客户端设备642可以与活动馈送服务(AFS)643进行通信。用户可以使用设备641来执行活动并生成活动流A,该活动流A可以发送到活动馈送服务643。类似地,用户可以使用设备642来执行活动并生成活动流B,该活动流B可以发送到活动馈送服务643。活动馈送服务643可以确定设备641和642与同一用户相关联,故可以将更新发送到各个设备。举一个例子,活动馈送服务643可以确定活动流A和B与相同活动相关联,故可以将这些活动流合并为单个活动流AB。另外,活动馈送服务643可以使用附加信息A’和B’(例如,从在各个设备上执行的应用程序的支持服务接收的信息和/或由活动馈送服务643通过分析活动流A和B来提供的信息)来注释和/或补充合并活动流。可以将带注释的合并活动流ABA’B’发送给设备641和642中的每一个。再举一个例子,活动流A和B可以与不同的活动相关联,并且活动流ABA’B’可以表示两个不同活动的活动流。
举例650,第一客户端设备651和第二客户端设备652可以与活动馈送服务(AFS)653进行通信。用户可以使用设备651来执行活动并生成活动流A,该活动流A可以发送到活动馈送服务653。类似地,用户可以使用设备652来执行活动并生成活动流B,该活动流B可以发送到活动馈送服务653。活动馈送服务653可以确定设备651和652与同一用户相关联,故可以将更新发送给各个设备。可以将活动流A和B分类为在生成活动流A和B的相应设备上的不同活动。但是,活动馈送服务653使用来自支持服务或其它处理的信息,可以确定活动流A和B是具有活动流C的较大活动的子流。可以将活动流C下载到相应的设备651和652,并且可以代替最初生成的不完整活动流。举一个特定例子,设备651可以是台式计算机,设备652可以是能够接收文本消息的移动电话。作为多因素身份验证方案的一部分,计算机651可以用于输入网站的登录名和密码,电话652可以用于接收安全码。计算机651可以将活动分类为网页浏览,电话652可以将活动分类为发短信。但是,活动馈送服务653可以从支持服务(例如,与为该网页提供服务的web主机相关联的服务)接收信息,该信息指示使用多因素认证发生了对在线银行网站的登录。通过组合来自支持服务(没有示出)、计算机651和电话652的信息,活动馈送服务653可以将计算机651和电话652报告的活动重新分类为更广泛的活动,例如在线银行活动(例如,活动流C)。可以将用于在线银行活动的新的活动流下载到计算机651和电话652,可以将用于web浏览和发短信的各个活动流替换为用于在线银行活动的活动流。
示例性方法
图7示出了使用活动馈送服务720从客户端设备710提取用户参与历史的示例性方法700的序列图。客户端设备710可以包括用于执行应用程序(例如,活动馈送客户端应用程序)并通过网络与活动馈送服务710进行通信的计算机硬件和软件。活动馈送服务710可以包括在专用服务器计算机上或者连接到网络的云环境中执行的一个或多个网络可访问服务(例如,网络通知服务730、活动流处理服务740和活动存储服务750)。客户端设备710可以将网络通知服务730用作客户端设备710和活动馈送服务720之间的主要接口。
在701处,客户端设备710可以将用户参与历史记录上传到活动馈送服务720。例如,客户端设备710可以确定用户对于在客户端设备710上执行的应用的参与,故可以创建与用户参与相对应的活动流记录。当在指定时间或在指定条件期间创建活动流记录时,客户端设备710可以将活动流记录发送到活动馈送服务720。例如,可以在客户端设备710处于活动状态的每个小时、响应于在客户端设备710上发生的界标事件、或者响应于客户端设备710转换到低功率状态,上传用户参与历史。
可以使用符合代表性状态转移(REST)体系结构的API(例如,RESTful API),将用户参与历史记录传输到网络通知服务730。作为特定示例,可以使用针对网络通知服务730的POST、PUT或PATCH命令,将用户参与历史记录发送到活动馈送服务720。这些命令中的每一个可以包括各种数据字段,例如用于标识用户的字段(例如,ID)、设备、受影响的活动流(例如,活动ID)、活动记录(AR)和历史记录(HR)。可以使用更多或更少的字段。PUT命令可以用于为给定用户存储新的活动流,和/或使用用户参与历史记录替换给定用户的现有的活动流。POST命令可以用于使用另外的用户参与历史记录来更新给定用户的现有的活动流、PATCH命令可以用于修改给定用户的现有活动流的用户参与历史,例如,由于在先前的POST命令之后确定了关于活动的其它信息而修改较早的历史记录时。
网络通知服务730可以对客户端设备710发送的命令进行解码,在702处,可以将解码后的命令转发给活动流处理服务740。例如,网络通知服务730可以为要添加到新的或现有活动流中的用户参与历史记录,生成插入命令。再举一个例子,当检测到要修改存储的用户参与历史记录时(例如,当网络通知服务730接收到PATCH命令时),网络通知服务730可以生成更新命令。
活动流处理服务740可以使用用户标识符、设备标识符和/或活动标识符作为关键词来访问活动存储750,以便可以从活动存储750中读取与用户、设备或活动流相关联的记录。可以结合存储在活动存储750中的任何用户参与历史记录来处理客户端设备710上传的用户参与历史记录,以便可以在时间703,更新和存储与用户相关联的活动流。例如,可以将来自客户端设备710的活动流记录保持不变地存储在活动存储750内。再举一个例子,可以在将接收到的来自客户端设备710的活动流记录存储在活动存储750中之前,对其进行注释和/或修改(例如,当支持服务提供了关于活动流记录的其它信息时)。再举一个例子,从客户端设备710接收的活动流记录可以与从活动存储750检索的记录合并,然后可以将合并的记录写回到活动存储750。
在处理并存储了从客户端设备710上传的用户参与历史记录之后,可以在时间704,向客户端设备710返回确认。响应于接收到已成功地上传用户参与历史记录的确认,客户端设备710可以设置一个标记,以指示成功发送上次用户参与历史记录的时间。可以从标记递增地发送用户参与历史记录的其它更新。以这种方式,可以通过发送部分活动流而不是完整活动流,潜在地节省客户端设备710和活动馈送服务720之间的带宽。
图8示出了响应于计算设备(设备A)对用户参与历史的更新,使用活动馈送服务820向计算设备(设备B)890通知用户参与历史的改变的示例性方法800的序列图。设备810和890都可以与特定用户相关联。例如,设备810可以是用户的家用计算机,而设备890可以是用户的工作计算机。活动馈送服务820可以包括彼此协作的多个服务。举一个例子,活动馈送服务820可以包括网络通知服务830、活动流处理服务840、活动存储服务850、订阅存储860、存在服务870和网络连接服务880。
在801处,设备810可以向活动馈送服务820通知用户参与历史记录的改变。具体而言,设备810可以向网络通知服务830发送POST、PUT或PATCH命令。网络通知服务830可以处理该命令,并识别其针对活动流处理服务840。具体而言,在802处,网络通知服务830可以向活动流处理服务840发送和插入或更新命令。活动流处理服务840可以识别与该用户参与历史相关联的用户,处理用户参与历史,并更新存储的用户参与历史。具体而言,在803处,活动流处理服务840可以向活动存储850发出并插入或更新命令。活动流处理服务840可以通过向设备810发送回确认,确认对来自设备810的命令进行了处理。另外,在804处,活动流处理服务840可以判断是否对用户参与历史进行了添加或改变。如果进行了添加或改变,则在805处,活动流处理服务840可以检索与用户相关联的设备树。该设备树可以存储在订阅存储服务860中。该设备树可以包括关于与该用户相关联的所有设备的信息。
在806处,可以基于对用户参与历史的更新来处理设备树。举一个例子,可以使用更新的活动的类型和用户参与历史以及设备的类型和/或特征,来判断是否使用用户参与历史的改变来更新设备树中的设备。例如,可以将用户参与历史表示为能够在与用户相关联的时间轴内显示的一个或多个时间轴实体。在将用户参与历史发送到特定设备之前,可以过滤掉某些时间轴实体,以使过滤后的时间轴实体不会显示在特定设备上。举一个特定例子,某些活动可能严格地与工作相关,因此可以从家用设备中过滤与工作相关的活动。再举一个例子,某些活动可能严格地与工作无关,因此可以从工作设备中过滤掉与工作无关的活动。再举一个例子,某些活动可能与和特定设备不兼容的应用程序相关联,故可以在将用户参与历史记录发送到该设备之前过滤掉那些活动。再举一个例子,某些活动可能与未安装在特定设备上的应用程序相关联。在一个实施例中,可以在将活动发送到特定设备之前,过滤与未安装的应用程序相关联的活动。在另一个实施例中,可以利用用于在特定设备上安装未安装应用程序的构建的信息,来增强与该应用程序相关联的活动。
活动流处理服务840可以确定存储在活动馈送服务820中的用户参与历史和存储在本地设备上的用户参与历史之间的差异。在807处,活动流处理服务840可以向网络通知服务830发布一个或多个命令,以利用用户参与历史的改变来更新本地设备。具体而言,活动流处理服务840可以识别出针对每个设备的用户参与历史中已经改变的特定记录,并且可以将增量更新散开或发送给每个设备,从而可以潜在地用所有设备上的最新的和最准确的用户参与历史来更新所有设备。
网络通知服务830可以利用其它服务来确定哪些设备可以接收对用户参与历史的改变。例如,存在服务870可以用于确定哪些设备是活动的(例如,哪些设备连接到网络)。举一个例子,设备可以周期性地向存在服务870发送ping(试通),以指示设备已连接到网络。再举一个例子,存在服务870可以监听从设备到活动馈送服务820的业务,存在服务870可以将设备记录为自从该设备上次记录的业务以来存在了指定的时间段。通过跟踪存在哪些设备,活动馈送服务820可以潜在地减少带宽和/或增加活动馈送服务820所使用的带宽利用率。例如,如果将用户参与历史发送到不存在的设备(例如,设备已关闭电源或设备未连接到网络),即使不将用户参与历史传递到设备,也可能会占用带宽。存在服务870可以与网络连接服务880进行通信,网络连接服务880可以为设备树中的每个设备维护一个网络地址。在808处,可以使用由网络连接服务880提供的地址,将对用户参与历史的改变发送到设备890。设备890可以通过向网络连接服务880发送回确认,来确认已接收到对用户参与历史的改变。网络连接服务880可以向存在服务870发送用于指示设备890处于活动状态并已连接到网络的消息。
图9示出了使用活动馈送服务920,将客户端设备910与活动馈送服务920处存储的用户参与历史进行同步的示例性方法900的序列图。例如,当客户端设备910从低功率状态转变为高功率状态(例如,当设备加电或者在休眠模式之后恢复时),可以对客户端设备910进行同步。再举一个例子,当活动馈送服务920将客户端设备910注册到用户时,可以对客户端设备910进行同步。举一个特定例子,客户端设备910可以是由用户购买的或者分配给用户的新设备,或者客户端设备910可以具有订阅活动馈送服务920的新安装的操作系统或应用程序。
在901处,客户端设备910可以向网络通知服务930发送GET命令。该GET命令可以包括:用于指定要下载的用户参与历史的方面或特征的字段。具体而言,标识符字段可以用于标识用户和/或设备。标签字段可以指定设备的特征,例如平台或使用类型(例如,家庭或工作)。时间字段可以指定设备的最后更新时间或者请求用户参与历史的时间段。可能存在更多或更少的字段,来指定所请求的用户参与历史的其它各个方面。
在902处,网络通知服务930可以处理GET命令,并将该命令作为同步(Sync)命令转发到活动流处理服务940。活动流处理服务940可以处理该同步命令以识别与用户参与历史相关联的活动流。具体而言,在903处,活动流处理服务940可以从活动存储950请求用户参与记录。从活动存储950返回的记录可以包括:与在GET命令中指定的属性相对应的所有用户参与历史。在904处,活动流处理服务940可以基于客户端设备910的特征和返回的记录来执行另外的处理。举一个特定的例子,可以从活动记录中过滤或移除与设备910的不支持的应用程序相关联的活动。在905处,可以经由网络通知服务930,将处理后的记录返回给客户端设备910。以这种方式,可以使用用户的用户参与历史来更新新设备或最近恢复的设备,以便用户可以列出或恢复在另一个设备上启动的活动。
图10示出了确定用户对在计算机上执行的软件应用程序的参与的示例性方法1000的流程图。在1010处,可以接收指示计算机和软件应用程序的状态的信号。例如,指示计算机状态的信号可以包括指示以下各项的信号:操作系统焦点中的应用程序、用户输入设备的活动、显示应用程序输出的视窗的位置、显示应用程序输出的视窗的状态、光标位置或者检测到的眼睛位置。指示软件应用程序状态的信号可以包括指示以下各项的信号:活动类型、视频播放的状态、音频播放的状态、以及诸如保存文档、打印文档、编辑文档等等之类的界标事件。
在1020处,可以对接收到的信号进行组合以确定用户对软件应用程序的参与。可以通过多种方式来组合这些信号,例如通过使用机器学习技术、启发式算法或其它基于规则的算法。例如,用户参与可以是基于软件应用程序的类型、执行软件应用程序的计算机的特性、以及操作系统检测到的动作。与用户心理模型相比,可以对信号的模式进行分析。用户心理模型可以使用一组规则或启发法对用户的活动进行建模。举一个特定的例子,当用户输入设备信号不空闲时,用户心理模型可以指示前台应用程序(例如,文字处理应用程序)通常是活动的。当应用程序正在生成输出时(即使用户输入设备信号处于空闲),用户心理模型可以指示后台应用程序(例如,音乐播放器应用程序)可以处于活动状态。
在1030处,可以基于所确定的用户对软件应用程序的参与,来存储用户参与日志。用户参与日志可以包括:引用活动记录、任务记录和历史记录的活动流数据结构。可以将用户参与日志本地存储在执行应用程序的计算机上,和/或远程存储在诸如活动馈送服务处。可以响应于在应用程序中发生的界标事件、来自操作系统的shell的命令、来自应用程序服务或活动馈送服务的请求、指定时间段到期或者其它各种条件,来存储用户参与日志。用户参与日志可以包括与不同时间点和/或在应用程序中发生的不同事件相对应的多个记录,从而可以在一段时间内表示用户对软件应用程序的参与。换句话说,用户参与日志可以包括与用户在一段时间内对软件应用程序的参与相对应的事件的历史。
在1040处,可以呈现用户参与日志的表示,以呈现在计算机的输出设备上。举一个例子,可以在时间轴视图中,呈现用户参与日志的记录。再举一个例子,可以将来自用户参与日志并且与搜索关键词相对应的记录列表呈现为列表。
在1050处,用户可以选择参与日志的特定记录。参与日志的特定记录可以包括令牌,以用于使软件应用程序返回到由该令牌表示的状态。
在1060处,可以将软件应用程序返回到与参与日志的所选择的记录相对应的软件应用程序的状态。例如,可以使用令牌作为启动命令的参数,来启动软件应用程序。
图11示出了与活动馈送服务通信的活动馈送客户端设备的示例方法1100的流程图。在1110处,可以生成与特定用户相关联的本地活动流。例如,可以使用方法1000来生成本地活动流。
在1120处,可以发送本地活动流。例如,可以将本地活动流发送到活动馈送服务。可以响应于各种条件来发送本地活动流。例如,可以响应于在应用程序中发生的界标事件、来自操作系统的shell的命令、来自应用程序服务或活动馈送服务的请求、指定时间段到期或者其它各种条件,来发送本地活动流。因此,在将本地活动流上传到活动馈送服务之前,可以在本地设备上压缩本地活动流。通过压缩本地活动流,可以潜在地增加用户的隐私,并可以通过使用针对活动馈送服务的较少传输,来节省功率和带宽。可以将整个活动流发送到活动馈送服务,或者可以将活动流的一部分发送到活动馈送服务(例如,通过使用PUT、POST或PATCH命令)。
在1130处,可以接收与特定用户相关联的合并活动流。例如,该合并活动流可以包括由用户跨多个设备和平台执行的活动。因此,使用操作系统shell程序或活动馈送应用程序,本地设备的用户可以查看在其它设备上执行的活动。活动馈送应用程序的操作系统shell可以在时间轴视图中或者在用户请求的搜索结果中,显示来自合并活动流的活动。
在1140处,可以接收对来自合并活动流的活动的选择。例如,如上所述,用户可以点击在时间轴视图或搜索结果中显示的活动。
在1150处,可以将从合并活动流中选择的活动恢复到本地设备上。活动是应用程序和内容的配对。所选择的活动的记录可以包括用于恢复该活动的令牌,在启动与该活动相关联的应用程序时可以使用该令牌。可以通过多种方式来启动该应用程序。例如,所选择的活动可以是在本地设备上记录的活动,因此所记录的应用程序和启动的应用程序可以相同。再举一个例子,所选择的活动可以是记录在不同设备上的活动,因此记录的应用程序可能与启动的应用程序有所不同。具体而言,启动的应用程序可以是与记录的应用程序不同的平台的应用程序构建,或者启动的应用程序可以是同一平台的不同版本的应用程序。此外,在选择活动后,本地设备可能未安装有应用程序。但是,活动记录可以包括用于在本地设备上安装应用程序的信息。因此,活动的选择可以使操作系统或活动馈送应用程序安装所选择的应用程序,并在新安装的应用程序上恢复该活动的状态。换句话说,选择在不同设备上执行的活动,可以通过在本地设备上安装新应用程序并恢复为该活动记录的状态,来使本地设备重新进行该活动。
图12示出了与一个或多个活动馈送客户端设备通信的活动馈送服务的示例方法1200的流程图。在1210处,可以接收对活动流的更新。各个活动流可以指示相应的用户对在相应的客户端设备上执行的应用程序的参与。因此,一组活动流可以指示用户正在使用不同设备上的应用程序。
在1220处,可以接收来自与应用程序相关联的支持服务的信息。来自支持服务的信息可以与活动流相关联。例如,该信息可以扩增关于活动的信息,其对于在本地设备上执行的应用程序或本地设备的操作系统来说是不可用的。
在1230处,可以对不同的活动流进行合并。可以将不同的活动流与特定用户相关联,以便合并活动流可以包括用户在多个设备上执行的活动。此外,可以使用来自支持服务的信息对合并活动流进行注释。不同的活动流可以包括同一活动的记录。合并活动流将来自不同活动流的记录合并到单个记录中。因此,可以通过合并活动流中的单个记录,来表示在多个设备上执行的活动。举一个特定的例子,用户可以在上下班的路上,阅读他或她移动设备上的网页上的文章。用户可以在完成阅读文章之前上班。用户可以在工作计算机上完成文章的阅读。在该例子中,移动设备可以存储关于何时在移动设备上阅读文章的活动记录,而工作计算机可以存储关于何时在工作计算机上阅读文章的活动记录。但是,合并活动流可以将来自移动设备的记录和来自工作计算机的记录合并为单个记录,其中该单个记录包含跨这两个不同设备执行的活动。另外地或替代地,单个活动记录可以指示跨设备的合并活动,并且单个活动记录可以具有记录在不同的各个设备上发生的参与情况的单独历史记录。因此,可以在保留各个设备的历史记录的同时,对活动进行合并。
在1240处,可以将与特定用户相关联的合并活动流发送到与该用户相关联的客户端设备。可以响应于各种条件,来发送合并活动流。例如,可以响应于同步请求(例如,当客户端设备加电时),来发送合并活动流。再举一个例子,可以响应于第二设备更新了合并活动流的活动,将合并活动流发送到第一设备。
在1250处,可以存储合并活动流。例如,可以将合并活动流存储在本地设备上。再举一个例子,可以将合并活动流存储在活动馈送服务处。
在1260处,可以响应于来自客户端设备的同步请求,将存储的合并活动流发送到该客户端设备。例如,当客户端设备新注册为活动馈送服务的订阅服务时,或者当该设备从网络断开连接后变为联机时,客户端设备可以发出同步请求。
所公开技术的其它示例
根据上面所讨论的例子,来讨论本文所公开的主题的其它例子。
在一个实施例中,一种方法包括:接收指示在计算设备上执行的操作系统的状态的第一信号。可以从指示以下各项的信号中的一个或多个里选择指示操作系统状态的第一信号:处于操作系统焦点中的应用程序、用户输入设备的活动、显示应用程序输出的视窗的位置、显示应用程序输出的视窗的状态、光标位置或检测到的眼睛位置。第一信号可以是处理后的信号,并且该处理可以是基于用户心理模型。该方法包括:接收第二信号,其中第二信号指示在操作系统上执行的软件应用程序的状态。可以从指示以下各项的信号中的一个或多个里选择指示软件应用程序的状态的第二信号:活动类型、视频播放的状态、音频播放的状态、保存事件、打印事件或编辑事件。该方法包括:基于第一信号和第二信号确定用户对软件应用程序的参与。例如,基于第一信号和第二信号确定用户对软件应用程序的参与可以包括:将第一信号和第二信号的模式与用户心理模型进行比较。确定用户对软件应用程序的参与可以是进一步基于软件应用程序的类型和在操作系统上执行的其它软件应用程序的类型。另外,确定用户对软件应用程序的参与可以包括:基于第二信号的历史,为第二信号分配权重。该方法包括:基于所确定的用户参与和软件应用程序的状态,来存储用户参与日志。用户参与日志包括表示用户在一段时间内对软件应用程序的参与的多个记录。各个记录可以包括令牌,以用于使软件应用程序返回由该令牌表示的软件应用程序的状态。可以从URL、文档名称或文档内的位置中的一个或多个里,选择用于使软件应用程序返回到由令牌表示的软件应用程序的状态的令牌。该软件应用程序可以由网络可访问服务支持,并且该网络可访问服务可以提供用于确定用户对软件应用程序的参与的第三信号。
该方法还可以包括:使用户参与日志的表示呈现在计算设备的输出设备上。可以接收用户参与日志的记录的选择。可以将软件应用程序返回到与用户参与日志的所选择的记录相对应的软件应用程序的状态。
在另一个实施例中,存储计算机可执行指令的一个或多个计算机可读介质,当该指令由计算机执行时,使所述计算机执行操作。所述操作包括:接收指示计算机和在计算机上执行的软件应用程序的状态的多个信号。所述操作包括:对信号进行组合以确定用户对软件应用程序的参与。对信号进行组合以确定用户对软件应用程序的参与可以包括:将信号与用户心理模型进行匹配。另外地或替代地,可以通过将所述多个信号中的至少一个信号分类为用户心理模型的状态,来平滑所述至少一个信号。该软件应用程序可以与远程服务通信,并且对信号进行组合以确定用户对软件应用程序的参与可以包括:使用从远程服务接收的信息。所述操作包括:基于所确定的用户对软件应用程序的参与的历史来存储用户参与日志。用户参与日志可以包括多个记录,并且相应的记录可以包括用于使软件应用程序返回到软件应用程序的记录状态的参数。所述操作还可以包括:接收对用户参与日志的特定记录的选择;通过使用用于将软件应用程序返回到该软件应用程序的所记录状态的参数来启动软件应用程序,将软件应用程序返回到与用户参与日志的所选择的记录相对应的该软件应用程序的状态。
在另一个实施例中,一种计算系统包括处理器、监听器模块、软件应用程序和仲裁器模块。监听器模块被配置为在处理器上执行,并基于计算系统的状态来生成信号。软件应用程序被配置为在处理器上执行并基于软件应用程序的状态来生成信号。仲裁器模块被配置为在处理器上执行,并将基于计算系统的状态的信号与基于软件应用程序的状态的信号进行组合,以确定用户对软件应用程序的参与。仲裁器模块被配置为发布用户对软件应用程序的参与的历史。用户对软件应用程序的参与的已发布历史可以包括多个记录,并且各个记录可以包括用于使软件应用程序返回到与创建相应的记录的时间相对应的特定状态的参数。可以将用户参与的历史记录发布到远程服务。
在另一个实施例中,一种方法包括:接收与特定用户相关联的第一活动流。第一活动流指示用户对在第一平台上执行的第一应用程序的参与。该方法包括:接收与特定用户相关联的第二活动流。第二活动流指示用户对在第二平台上执行的第二应用程序的参与。该方法包括:合并第一活动流和第二活动流,以生成与特定用户相关联的合并活动流。该方法包括:将与特定用户相关联的合并活动流发送到第一平台。可以响应于接收到对第二活动流的更新,将合并活动流发送到第一平台。可以将合并活动流发送到与特定用户相关联的设备图中标识的所有设备。
合并第一活动流和第二活动流可以包括:识别第一活动流和第二活动流中的共同活动;将来自第一活动流的与共同活动相对应的第一记录和来自第二活动流的与共同活动相对应的第二记录组合到合并活动流的第三记录中。
该方法还可以包括:存储合并活动流;响应于来自第三平台的同步请求,将合并活动流发送到第三平台。该方法还可以包括:从与第一应用程序相关联的支持服务,接收与特定用户对第一应用程序的参与有关的信息。在将合并活动流发送到第一平台之前,可以使用所接收的信息来增强合并活动流。该方法还可以包括:确定第二活动流的活动关于第一平台的适用性。例如,合并第一活动流和第二活动流可以包括:从第二活动流中删除不适用于第一平台的活动。第二活动流的活动关于第一平台的适用性可以是基于与第一平台相关联的第一位置和与第二活动流的各个活动相关联的位置。第二活动流的活动关于第一平台的适用性可以是基于第二平台的构建是否可用于第一平台。
在另一个实施例中,一种方法包括:发送与特定用户相关联的本地活动流,其中该本地活动流指示用户对在第一平台上执行的第一应用程序的参与。可以响应于基于用户对第一应用程序的参与来更新本地活动流的记录,来发送本地活动流。该方法包括:接收与特定用户相关联的合并活动流,其中该合并活动流指示用户对在第二平台上执行的第二应用程序和在第一平台上执行的第一应用程序的参与。举一个例子,可以响应于第一平台从低功率状态转换为高功率状态,接收合并活动流。再举一个例子,可以响应于特定用户对在第二平台上执行的第二应用程序的参与,来接收合并活动流。该方法还可以包括:接收对来自合并活动流的活动的选择,以在第一平台上恢复;在第一平台上恢复来自合并活动流的该活动。来自合并活动流的所选择的活动可以对应于在第二平台上执行的第二应用程序,在第一平台上恢复所选择的活动可以包括:执行针对第一平台的第二应用程序的构建。在第一平台上恢复所选择的活动可以包括:在第一平台上安装针对第一平台的第二应用程序的构建。该方法还可以包括:生成本地活动流,其中生成本地活动流可以包括:在发送本地活动流之前,压缩与特定用户相关联的本地活动。
在另一个实施例中,一种活动馈送服务器计算机包括网络接口和与所述网络接口通信的处理器,其中网络接口被配置为通过网络进行通信。所述处理器被配置为:从网络接口接收对活动流的更新,其中各个活动流指示相应的用户对连接到网络的相应客户端设备上执行的应用程序的参与。所述处理器被配置为:合并与特定用户相关联的不同活动流,以生成与该特定用户相关联的合并活动流。所接收到的不同活动流对应于不同的各个客户端设备。合并不同的活动流可以包括:识别不同活动流之间的共同活动;将来自不同活动流的与共同活动相对应的记录组合到合并活动流的合并记录中。所述处理器被配置为:将与特定用户相关联的合并活动流发送到网络接口,以通过网络进行通信。可以响应于对于与特定用户相关联的不同客户端设备相关的活动流的更新,将合并活动流发送到与该特定用户相关联的第一客户端设备。
示例性计算环境
图13示出了适当计算环境1300的一般示例,在计算环境1300中,可以实现所描述的实施例、技术和方法,其包括支持多语言回放框架。
计算环境1300并不旨在建议关于该技术的使用范围或功能的任何限制,这是因为可以在各种通用或专用计算环境中实现该技术。例如,可以使用包括手持式设备、多处理器系统、可编程消费电子、网络PC、小型计算机、大型计算机等等的其它计算机系统配置,来实现所公开的技术。还可以在分布式计算环境中实践所公开的技术,其中在分布式计算环境中,通过通信网络链接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于本地和远程存储设备中。
参照图13,计算环境1300包括至少一个处理单元1310和存储器1320。在图13中,该最基本配置1330包括在虚线内。处理单元1310执行计算机可执行指令,其可以是真实或虚拟处理器。在多处理系统中,多个处理单元执行计算机可执行指令以增加处理能力,因此,多个处理器可以同时地运行。存储器1320可以是易失性存储器(例如,寄存器、高速缓存、RAM)、非易失性存储器(例如,ROM、EEPROM、闪存等)或两者的某种组合。存储器1320存储可以例如实现本文所描述的技术的软件1380、图像和视频。计算环境可以具有其它功能。例如,计算环境1300包括存储装置1340、一个或多个输入设备1350、一个或多个输出设备1360、以及一个或多个通信连接1370。诸如总线、控制器或网络之类的互连机制(没有示出)将计算环境1300的组件互连。通常,操作系统软件(没有示出)为在计算环境1300中执行的其它软件提供操作环境,并协调计算环境1300的组件的活动。
存储装置1340可以是可移动的或不可移动的,并且包括磁盘、磁带或盒式磁带、CD-ROM、CD-RW、DVD或者可用于存储信息并且可在计算环境1300内访问的任何其它介质。存储装置1340存储用于软件1380的指令、插件数据和消息,它们可以用于实施本文所描述的技术。
输入设备1350可以是触摸输入设备,例如键盘、小键盘、鼠标、触摸屏显示器、笔或跟踪球、语音输入设备、扫描设备、或者向计算环境1300提供输入的另一种设备。对于音频,输入设备1350可以是声卡或接受模拟或数字形式的音频输入的类似设备,或者是将音频样本提供给计算环境1300的CD-ROM读取器。输出设备1360可以是显示器、打印机、扬声器、CD刻录机、或者提供来自计算环境1300的输出的另一种设备。
通信连接1370使得能够通过通信介质(例如,连接网络)与另一个计算实体进行通信。通信介质在调制数据信号中,传送诸如计算机可执行指令、压缩的图形信息、视频或其它数据之类的信息。通信连接1370并不限于有线连接(例如,兆位或千兆以太网、无限带宽、通过电或光纤连接的光纤信道),但还包括无线技术(例如,经由蓝牙、WiFi(IEEE 802.11a/b/n)、WiMax、蜂窝、卫星、激光、红外的RF连接)和用于为所公开的代理、桥和代理数据使用者提供网络连接的其它适当通信连接。在虚拟主机环境中,通信连接可以是虚拟主机提供的虚拟网络连接。
可以使用在计算云1390中实现所公开技术的全部或一部分的计算机可执行指令,来执行所公开方法的一些实施例。例如,可以在位于计算环境1330中的处理单元1310上执行所公开的方法,或者可以在位于计算云1390中的服务器上执行所公开的方法。
计算机可读介质是可以在计算环境1300内访问的任何可用介质。举例而言但非做出限制,对于计算环境1300,计算机可读介质包括存储器1320和/或存储装置1340。应当容易理解的是,术语计算机可读存储介质包括用于数据存储的介质(例如,存储器1320和存储装置1340),而不包括传输介质(例如,调制的数据信号)。
鉴于所公开的主题的原理可以应用于许多可能的实施例,应当认识到,所示出的实施例仅是优选示例,并且不应被视为将权利要求的保护范围限制于这些优选示例。相反,所要求保护的主题的保护范围由所附权利要求进行界定。因此,要求落入这些权利要求的范围内的所有内容作为所公开的发明。
Claims (12)
1.一种方法,其包括:
接收与特定用户相关联的第一活动流,所述第一活动流包括所述特定用户在第一平台上执行的不同应用程序内参与的活动的记录;
接收与所述特定用户相关联的第二活动流,所述第二活动流包括所述特定用户在第二平台上执行的不同应用程序内参与的活动的记录;
通过以下操作来合并所述第一活动流和所述第二活动流,以生成与所述特定用户相关联的合并活动流:
识别所述第一活动流和所述第二活动流中的共同活动,以及
将来自所述第一活动流的与所述共同活动相对应的第一记录和来自所述第二活动流的与所述共同活动相对应的第二记录组合到所述合并活动流的第三记录中,
其中,所述合并活动流包括所述特定用户在所述第一平台上执行的不同应用程序以及在所述第二平台上执行的不同应用程序内参与的活动的记录;以及
将与所述特定用户相关联的所述合并活动流发送到所述第一平台,其中,来自所述合并活动流的记录中的记录选择将与所选择的记录相关联的应用程序返回到与所选择的记录相对应的状态。
2.根据权利要求1所述的方法,其中,将所述合并活动流发送到与所述特定用户相关联的设备图中标识的所有设备。
3.根据权利要求1所述的方法,其中,响应于接收到对所述第二活动流的更新,将所述合并活动流发送到所述第一平台。
4.根据权利要求1所述的方法,还包括:
从与第一应用程序相关联的支持服务,接收与所述特定用户对所述第一应用程序的所述参与有关的信息;以及
在将所述合并活动流发送到所述第一平台之前,使用所接收的信息来增强所述合并活动流。
5.根据权利要求1所述的方法,还包括:
确定所述第二活动流的活动关于所述第一平台的适用性,并且其中,合并所述第一活动流和所述第二活动流包括:从所述第二活动流中删除不适用于所述第一平台的活动。
6.根据权利要求5所述的方法,其中,所述第二活动流的所述活动关于所述第一平台的适用性是基于与所述第一平台相关联的第一位置和与所述第二活动流的各个活动相关联的位置的。
7.一种方法,其包括:
发送与特定用户相关联的本地活动流,所述本地活动流包括指示所述特定用户对在第一平台上执行的不同应用程序的参与的记录;
接收与所述特定用户相关联的合并活动流,所述合并活动流包括指示所述特定用户对在所述第一平台上执行的不同应用程序的参与的记录和指示所述特定用户对在第二平台上执行的不同应用程序的参与的记录,其中,来自所述合并活动流的记录中的记录选择将与所选择的记录相关联的应用程序返回到与所选择的记录相对应的状态;
接收对来自所述合并活动流的活动的选择,以在所述第一平台上恢复;以及
在所述第一平台上恢复来自所述合并活动流的所述活动。
8.根据权利要求7所述的方法,其中,来自所述合并活动流的所选择的活动对应于在所述第二平台上执行的所述不同应用程序中的一个应用程序,并且在所述第一平台上恢复所选择的活动包括:执行在所述第二平台上执行的所述不同应用程序中的所述一个应用程序的构建,所述构建针对所述第一平台。
9.根据权利要求8所述的方法,其中,在所述第一平台上恢复所选择的活动包括:在所述第一平台上安装所述构建。
10.根据权利要求7所述的方法,还包括:
生成所述本地活动流,并且其中,生成所述本地活动流包括:在发送所述本地活动流之前,压缩与所述特定用户相关联的本地活动。
11.根据权利要求7所述的方法,其中,接收所述合并活动流是响应于所述特定用户对在所述第二平台上执行的所述不同应用程序中一个应用程序的参与的。
12.一种活动馈送服务器计算机,其包括:
网络接口,其被配置为通过网络进行通信;以及
与所述网络接口通信的处理器,所述处理器被配置为:
从所述网络接口接收对活动流的更新,其中,各个活动流包括指示相应的用户对连接到所述网络的相应客户端设备上执行的不同应用程序的参与的记录;
通过以下操作来合并与特定用户相关联的不同活动流,以生成与所述特定用户相关联的合并活动流:
识别所述不同活动流之间的共同活动,以及
将来自所述不同活动流的与所述共同活动相对应的记录组合到所述合并活动流的合并记录中,
其中,所接收到的不同活动流包括指示所述特定用户对在不同的各个客户端设备上执行的不同应用程序的参与的记录;以及
将与所述特定用户相关联的所述合并活动流发送到所述网络接口,以通过所述网络进行通信,其中,来自所述合并活动流的记录中的记录选择将与所选择的记录相关联的应用程序返回到与所选择的记录相对应的状态。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762484723P | 2017-04-12 | 2017-04-12 | |
US62/484,723 | 2017-04-12 | ||
US15/590,858 | 2017-05-09 | ||
US15/590,858 US10693748B2 (en) | 2017-04-12 | 2017-05-09 | Activity feed service |
PCT/US2018/025776 WO2018191060A1 (en) | 2017-04-12 | 2018-04-03 | Activity feed service |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110521187A CN110521187A (zh) | 2019-11-29 |
CN110521187B true CN110521187B (zh) | 2022-09-13 |
Family
ID=63790473
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880024505.8A Active CN110521187B (zh) | 2017-04-12 | 2018-04-03 | 活动馈送服务 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10693748B2 (zh) |
EP (1) | EP3610629B1 (zh) |
CN (1) | CN110521187B (zh) |
WO (1) | WO2018191060A1 (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001093226A (ja) * | 1999-09-21 | 2001-04-06 | Sony Corp | 情報通信システムおよび方法、ならびに、情報通信装置および方法 |
US11580088B2 (en) | 2017-08-11 | 2023-02-14 | Microsoft Technology Licensing, Llc | Creation, management, and transfer of interaction representation sets |
US10909147B2 (en) * | 2018-04-17 | 2021-02-02 | Intuit, Inc. | User interfaces based on pre-classified data sets |
US11405468B2 (en) * | 2018-08-27 | 2022-08-02 | Box, Inc. | Forming activity streams across heterogeneous applications |
KR20200057235A (ko) * | 2018-11-16 | 2020-05-26 | 삼성전자주식회사 | 참조 신호 수신 방법 및 이를 위한 전자 장치 |
CN111209531B (zh) * | 2018-11-21 | 2023-08-08 | 百度在线网络技术(北京)有限公司 | 关联度的处理方法、装置和存储介质 |
US11270241B2 (en) | 2019-06-13 | 2022-03-08 | Nice Ltd. | Systems and methods for discovery of automation opportunities |
US11095735B2 (en) | 2019-08-06 | 2021-08-17 | Tealium Inc. | Configuration of event data communication in computer networks |
US11481420B2 (en) * | 2019-08-08 | 2022-10-25 | Nice Ltd. | Systems and methods for analyzing computer input to provide next action |
WO2021084668A1 (ja) * | 2019-10-30 | 2021-05-06 | 日本電信電話株式会社 | 送信制御装置、送信制御方法、および、送信制御プログラム |
WO2021119979A1 (en) * | 2019-12-17 | 2021-06-24 | Citrix Systems, Inc. | Time cost estimation for activity feed notifications |
CN112989168B (zh) * | 2021-02-08 | 2022-07-29 | 支付宝(杭州)信息技术有限公司 | 一种信息处理方法、装置、设备及介质 |
US11763228B2 (en) | 2021-04-06 | 2023-09-19 | Nice Ltd. | Systems and methods for analyzing and connecting automation sequences |
US20230007344A1 (en) * | 2021-06-30 | 2023-01-05 | On24, Inc. | Methods, Systems, And Apparatuses For User Engagement Analysis |
US20230004999A1 (en) * | 2021-06-30 | 2023-01-05 | On24, Inc. | Methods, Systems, And Apparatuses For User Segmentation And Analysis |
WO2023279355A1 (en) * | 2021-07-09 | 2023-01-12 | Citrix Systems, Inc. | History preview and shortcut to restore a work scene for a remote app |
US20230254225A1 (en) * | 2022-02-06 | 2023-08-10 | Arista Networks, Inc. | Generating hybrid network activity records |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102087615A (zh) * | 2009-12-03 | 2011-06-08 | 国际商业机器公司 | 消息队列中逻辑关联的消息的自动合并 |
CN104301203A (zh) * | 2014-09-10 | 2015-01-21 | 腾讯科技(深圳)有限公司 | 一种消息推送方法和设备 |
CN105718267A (zh) * | 2016-01-19 | 2016-06-29 | 深圳市多彩人生技术股份有限公司 | 一种多应用合并为单应用的实现方法及其实现系统 |
Family Cites Families (159)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5463774A (en) | 1993-06-28 | 1995-10-31 | Digital Equipment Corporation | Object oriented computer architecture using directory objects |
EP0733972B1 (en) | 1995-03-22 | 2003-07-09 | Sun Microsystems, Inc. | Method and apparatus for managing relationships among objects in a distributed object environment |
US6253252B1 (en) | 1996-07-11 | 2001-06-26 | Andrew Schofield | Method and apparatus for asynchronously calling and implementing objects |
US6018743A (en) | 1996-10-04 | 2000-01-25 | International Business Machines Corporation | Framework for object-oriented interface to record file data |
US5943496A (en) | 1997-05-17 | 1999-08-24 | Intertop Corporation | Methods for developing and instantiating object classes using a java virtual machine extension |
US6085205A (en) | 1997-11-12 | 2000-07-04 | Ricoh Company Limited | Calendar incorporating document retrieval interface |
US6044374A (en) | 1997-11-14 | 2000-03-28 | Informatica Corporation | Method and apparatus for sharing metadata between multiple data marts through object references |
US6093216A (en) | 1998-05-29 | 2000-07-25 | Intel Corporation | Method of run-time tracking of object references in Java programs |
US6633984B2 (en) | 1999-01-22 | 2003-10-14 | Sun Microsystems, Inc. | Techniques for permitting access across a context barrier on a small footprint device using an entry point object |
US6826760B1 (en) | 1999-06-16 | 2004-11-30 | Microsoft Corporation | Methods of factoring operating system functions, methods of converting operating systems, and related apparatus |
US6957395B1 (en) | 2000-01-04 | 2005-10-18 | Apple Computer, Inc. | Computer interface having a single window mode of operation |
US6993723B1 (en) | 2000-04-17 | 2006-01-31 | Accenture Llp | Listing activities in a graphical user interface in a collaborative work tool Architecture |
US7747782B2 (en) | 2000-04-26 | 2010-06-29 | Novarra, Inc. | System and method for providing and displaying information content |
US6772216B1 (en) | 2000-05-19 | 2004-08-03 | Sun Microsystems, Inc. | Interaction protocol for managing cross company processes among network-distributed applications |
US8161081B2 (en) | 2001-03-16 | 2012-04-17 | Michael Philip Kaufman | System and method for generating automatic user interface for arbitrarily complex or large databases |
US8566849B2 (en) | 2000-12-14 | 2013-10-22 | Borland Software Corporation | Name service object clustering |
US20020174134A1 (en) | 2001-05-21 | 2002-11-21 | Gene Goykhman | Computer-user activity tracking system and method |
US7970240B1 (en) | 2001-12-17 | 2011-06-28 | Google Inc. | Method and apparatus for archiving and visualizing digital images |
US7203909B1 (en) | 2002-04-04 | 2007-04-10 | Microsoft Corporation | System and methods for constructing personalized context-sensitive portal pages or views by analyzing patterns of users' information access activities |
US7809384B2 (en) * | 2002-11-05 | 2010-10-05 | Microsoft Corporation | User-input scheduling of synchronization operation on a mobile device based on user activity |
US7506355B2 (en) | 2002-11-22 | 2009-03-17 | Microsoft Corporation | Tracking end-user content viewing and navigation |
US20040153445A1 (en) | 2003-02-04 | 2004-08-05 | Horvitz Eric J. | Systems and methods for constructing and using models of memorability in computing and communications applications |
US7051042B2 (en) * | 2003-05-01 | 2006-05-23 | Oracle International Corporation | Techniques for transferring a serialized image of XML data |
US8131739B2 (en) | 2003-08-21 | 2012-03-06 | Microsoft Corporation | Systems and methods for interfacing application programs with an item-based storage platform |
US7627814B1 (en) | 2004-01-14 | 2009-12-01 | Microsoft Corporation | Hierarchical bit stream markup compilation and rendering |
US20050166143A1 (en) | 2004-01-22 | 2005-07-28 | David Howell | System and method for collection and conversion of document sets and related metadata to a plurality of document/metadata subsets |
US20050234986A1 (en) | 2004-04-09 | 2005-10-20 | Microsoft Corporation | Systems and methods for fragment-based serialization |
US20050235206A1 (en) | 2004-04-15 | 2005-10-20 | Udo Arend | User interface for a quick activity window |
WO2006009768A1 (en) | 2004-06-23 | 2006-01-26 | Oracle International Corporation | Efficient evaluation of queries using translation |
US7702730B2 (en) | 2004-09-03 | 2010-04-20 | Open Text Corporation | Systems and methods for collaboration |
US7451432B2 (en) | 2004-10-01 | 2008-11-11 | Microsoft Corporation | Transformation of componentized and extensible workflow to a declarative format |
US7647632B1 (en) | 2005-01-04 | 2010-01-12 | Arcsight, Inc. | Object reference in a system |
US7802205B2 (en) | 2005-01-07 | 2010-09-21 | At&T Intellectual Property I, L.P. | Graphical chronological path presentation |
US7716317B2 (en) | 2005-01-10 | 2010-05-11 | Samsung Electronics Co., Ltd. | Method and system for presenting a single view of content in a home network |
US20060224583A1 (en) | 2005-03-31 | 2006-10-05 | Google, Inc. | Systems and methods for analyzing a user's web history |
US7890513B2 (en) | 2005-06-20 | 2011-02-15 | Microsoft Corporation | Providing community-based media item ratings to users |
US7693817B2 (en) | 2005-06-29 | 2010-04-06 | Microsoft Corporation | Sensing, storing, indexing, and retrieving data leveraging measures of user activity, attention, and interest |
US8571999B2 (en) | 2005-11-14 | 2013-10-29 | C. S. Lee Crawford | Method of conducting operations for a social network application including activity list generation |
US20070143123A1 (en) | 2005-12-06 | 2007-06-21 | Arkiva, Inc. | System, method and service for recording household assets |
US20070211871A1 (en) | 2006-03-08 | 2007-09-13 | David Sjolander | Method and system for organizing incident records in an electronic equipment |
US7761393B2 (en) | 2006-06-27 | 2010-07-20 | Microsoft Corporation | Creating and managing activity-centric workflow |
US8364514B2 (en) | 2006-06-27 | 2013-01-29 | Microsoft Corporation | Monitoring group activities |
US20070299631A1 (en) | 2006-06-27 | 2007-12-27 | Microsoft Corporation | Logging user actions within activity context |
US7620610B2 (en) * | 2006-06-27 | 2009-11-17 | Microsoft Corporation | Resource availability for user activities across devices |
US20070297590A1 (en) | 2006-06-27 | 2007-12-27 | Microsoft Corporation | Managing activity-centric environments via profiles |
US20080046218A1 (en) | 2006-08-16 | 2008-02-21 | Microsoft Corporation | Visual summarization of activity data of a computing session |
US8121585B2 (en) * | 2006-08-25 | 2012-02-21 | International Business Machines Corporation | Technique for synchronizing data with a mobile device based on a synchronization context |
US8037457B2 (en) | 2006-09-29 | 2011-10-11 | Sap Ag | Method and system for generating and displaying function call tracker charts |
US7941789B2 (en) | 2006-09-29 | 2011-05-10 | Sap Ag | Common performance trace mechanism |
US7881990B2 (en) | 2006-11-30 | 2011-02-01 | Intuit Inc. | Automatic time tracking based on user interface events |
US8732161B2 (en) | 2007-04-27 | 2014-05-20 | The Regents Of The University Of California | Event based organization and access of digital photos |
US20080276179A1 (en) * | 2007-05-05 | 2008-11-06 | Intapp Inc. | Monitoring and Aggregating User Activities in Heterogeneous Systems |
US9317110B2 (en) | 2007-05-29 | 2016-04-19 | Cfph, Llc | Game with hand motion control |
US9542394B2 (en) | 2007-06-14 | 2017-01-10 | Excalibur Ip, Llc | Method and system for media-based event generation |
US8037046B2 (en) | 2007-06-29 | 2011-10-11 | Microsoft Corporation | Collecting and presenting temporal-based action information |
US20090043646A1 (en) | 2007-08-06 | 2009-02-12 | International Business Machines Corporation | System and Method for the Automated Capture and Clustering of User Activities |
US9256654B2 (en) | 2007-12-07 | 2016-02-09 | Microsoft Technology Licensing, Llc | Dynamic schema content server |
US8353012B2 (en) | 2008-02-26 | 2013-01-08 | Alejandro Emilio Del Real | Internet-based group website technology for content management and exchange (system and methods) |
US20090228427A1 (en) | 2008-03-06 | 2009-09-10 | Microsoft Corporation | Managing document work sets |
US20090241048A1 (en) | 2008-03-21 | 2009-09-24 | Augustine Nancy L | Systems and methods for displaying a data modification timeline |
US20090313304A1 (en) | 2008-06-13 | 2009-12-17 | Rodney Goodger | Systems and Methods for Capturing, Organizing, and Sharing Data |
US20100235306A1 (en) | 2008-08-11 | 2010-09-16 | Seth Wagoner | Adaptive timelog system |
US20100070527A1 (en) | 2008-09-18 | 2010-03-18 | Tianlong Chen | System and method for managing video, image and activity data |
US20100250322A1 (en) | 2009-03-27 | 2010-09-30 | Michael Roy Norwood | Simplified user interface and method for computerized task management systems |
US8612435B2 (en) | 2009-07-16 | 2013-12-17 | Yahoo! Inc. | Activity based users' interests modeling for determining content relevance |
US9544379B2 (en) | 2009-08-03 | 2017-01-10 | Wolfram K. Gauglitz | Systems and methods for event networking and media sharing |
US8538484B2 (en) * | 2009-08-14 | 2013-09-17 | Google Inc. | Providing a user with feedback regarding power consumption in battery-operated electronic devices |
US8341175B2 (en) | 2009-09-16 | 2012-12-25 | Microsoft Corporation | Automatically finding contextually related items of a task |
US9754240B2 (en) | 2009-11-20 | 2017-09-05 | Palo Alto Research Center Incorporated | Method for quickly recovering from task interruption |
EP2343651A1 (en) | 2009-12-15 | 2011-07-13 | Accenture Global Services Limited | Monitoring and tracking application usage |
US20110289117A1 (en) | 2010-05-19 | 2011-11-24 | International Business Machines Corporation | Systems and methods for user controllable, automated recording and searching of computer activity |
US20120084248A1 (en) * | 2010-09-30 | 2012-04-05 | Microsoft Corporation | Providing suggestions based on user intent |
US8819726B2 (en) * | 2010-10-14 | 2014-08-26 | Cyandia, Inc. | Methods, apparatus, and systems for presenting television programming and related information |
US8738489B2 (en) | 2010-10-27 | 2014-05-27 | Oracle International Corporation | Managing schedules in a financial close management system |
AU2011335849A1 (en) | 2010-12-03 | 2013-07-18 | Titus Inc. | Method and system of hierarchical metadata management and application |
US9336380B2 (en) | 2010-12-15 | 2016-05-10 | Microsoft Technology Licensing Llc | Applying activity actions to frequent activities |
US20120159515A1 (en) | 2010-12-16 | 2012-06-21 | Microsoft Corporation | Sharing object representations |
US9098612B2 (en) | 2010-12-30 | 2015-08-04 | Qwest Communications International Inc. | End-to-end application tracking framework |
US10204327B2 (en) | 2011-02-05 | 2019-02-12 | Visa International Service Association | Merchant-consumer bridging platform apparatuses, methods and systems |
US8930300B2 (en) | 2011-03-31 | 2015-01-06 | Qualcomm Incorporated | Systems, methods, and apparatuses for classifying user activity using temporal combining in a mobile device |
CN102739708B (zh) * | 2011-04-07 | 2015-02-04 | 腾讯科技(深圳)有限公司 | 一种基于云平台访问第三方应用的系统及方法 |
US8630994B2 (en) | 2011-04-07 | 2014-01-14 | Evan Greene | System for multiple tasks on a display |
US8874525B2 (en) | 2011-04-19 | 2014-10-28 | Autodesk, Inc. | Hierarchical display and navigation of document revision histories |
US9727124B2 (en) * | 2011-04-19 | 2017-08-08 | Apple Inc. | Power saving application update in a portable electronic device |
US8789014B2 (en) | 2011-05-13 | 2014-07-22 | Microsoft Corporation | Managing a working set in an integrated development environment |
US8346810B2 (en) | 2011-05-13 | 2013-01-01 | Simplivity Corporation | Reference count propagation |
US9317390B2 (en) * | 2011-06-03 | 2016-04-19 | Microsoft Technology Licensing, Llc | Collecting, aggregating, and presenting activity data |
US20120331407A1 (en) | 2011-06-21 | 2012-12-27 | Google Inc. | Temporal Task-Based Tab Management |
US9384464B2 (en) | 2011-07-05 | 2016-07-05 | AutoDocs, L.L.C. | Web based template reporting system |
WO2013009337A2 (en) | 2011-07-08 | 2013-01-17 | Arnold Goldberg | Desktop application for access and interaction with workspaces in a cloud-based content management system and synchronization mechanisms thereof |
US8949873B1 (en) | 2011-07-31 | 2015-02-03 | Google Inc. | Systems and methods for sharing media content viewing history |
US20130067346A1 (en) | 2011-09-09 | 2013-03-14 | Microsoft Corporation | Content User Experience |
US20130212491A1 (en) | 2011-09-12 | 2013-08-15 | Gface Gmbh | Computer-implemented method for displaying an individual timeline of a user of a social network, computer system and computer-readable medium thereof |
US10127563B2 (en) | 2011-09-15 | 2018-11-13 | Stephan HEATH | System and method for providing sports and sporting events related social/geo/promo link promotional data sets for end user display of interactive ad links, promotions and sale of products, goods, gambling and/or services integrated with 3D spatial geomapping, company and local information for selected worldwide locations and social networking |
US9613321B2 (en) | 2011-09-23 | 2017-04-04 | Sam David Molyneux | System and method for establishing a dynamic meta-knowledge network |
WO2013048986A1 (en) | 2011-09-26 | 2013-04-04 | Knoa Software, Inc. | Method, system and program product for allocation and/or prioritization of electronic resources |
KR20130035603A (ko) * | 2011-09-30 | 2013-04-09 | 삼성전자주식회사 | 적어도 하나의 어플리케이션 데이터를 동기화하기 위한 장치 및 방법 |
WO2013048456A1 (en) | 2011-09-30 | 2013-04-04 | Hewlett-Packard Development Company, L.P. | Extending a conversation across applications |
US9600834B2 (en) | 2011-10-26 | 2017-03-21 | Yahoo! Inc. | Aggregating data from multiple devices belonging to one user for directed ad targeting |
US8745057B1 (en) | 2011-11-28 | 2014-06-03 | Google Inc. | Creating and organizing events in an activity stream |
US20130139113A1 (en) | 2011-11-30 | 2013-05-30 | Microsoft Corporation | Quick action for performing frequent tasks on a mobile device |
US8782218B1 (en) | 2011-12-22 | 2014-07-15 | Emc Corporation | Activity stream based alert processing for information technology infrastructure |
ES2544465T3 (es) | 2011-12-23 | 2015-08-31 | Deutsche Telekom Ag | Supervisión de la actividad del usuario en dispositivos móviles inteligentes |
EP2804530B1 (en) | 2012-01-19 | 2018-04-18 | NIKE Innovate C.V. | Multi-activity platform and interface |
US9235603B2 (en) | 2012-03-27 | 2016-01-12 | Verizon Patent And Licensing Inc. | Activity based search |
US8950009B2 (en) * | 2012-03-30 | 2015-02-03 | Commvault Systems, Inc. | Information management of data associated with multiple cloud services |
US9054919B2 (en) | 2012-04-05 | 2015-06-09 | Box, Inc. | Device pinning capability for enterprise cloud service and storage accounts |
US9307006B2 (en) * | 2012-04-11 | 2016-04-05 | Salesforce.Com, Inc. | System and method for synchronizing data objects in a cloud based social networking environment |
US9098357B2 (en) | 2012-04-11 | 2015-08-04 | Nokia Technologies Oy | Method and apparatus for activity management across multiple devices |
CN103457905B (zh) * | 2012-05-28 | 2015-09-09 | 腾讯科技(深圳)有限公司 | 数据同步方法、系统及设备 |
US9729673B2 (en) * | 2012-06-21 | 2017-08-08 | Calgary Scientific Inc. | Method and system for providing synchronized views of multiple applications for display on a remote computing device |
US20140012574A1 (en) | 2012-06-21 | 2014-01-09 | Maluuba Inc. | Interactive timeline for presenting and organizing tasks |
CN104541261B (zh) | 2012-06-22 | 2018-04-17 | 谷歌有限责任公司 | 聚合线上活动 |
US9720495B1 (en) * | 2012-06-22 | 2017-08-01 | Google Inc. | Aggregating online activities |
US9342209B1 (en) | 2012-08-23 | 2016-05-17 | Audible, Inc. | Compilation and presentation of user activity information |
US20140068443A1 (en) | 2012-08-28 | 2014-03-06 | Private Group Networks, Inc. | Method and system for creating mnemonics for locations-of-interests |
US9363325B2 (en) * | 2012-08-29 | 2016-06-07 | Yammer, Inc. | Method for generating social network activity streams |
US9106721B2 (en) * | 2012-10-02 | 2015-08-11 | Nextbit Systems | Application state synchronization across multiple devices |
US9776078B2 (en) * | 2012-10-02 | 2017-10-03 | Razer (Asia-Pacific) Pte. Ltd. | Application state backup and restoration across multiple devices |
US9141188B2 (en) | 2012-10-05 | 2015-09-22 | Elwha Llc | Presenting an augmented view in response to acquisition of data inferring user activity |
US20140108585A1 (en) | 2012-10-15 | 2014-04-17 | InVisioneer, Inc. | Multimedia content management system |
US20150295808A1 (en) | 2012-10-31 | 2015-10-15 | Matt O'Malley | System and method for dynamically monitoring, analyzing, managing, and alerting packet data traffic and applications |
US20140122697A1 (en) * | 2012-11-01 | 2014-05-01 | Google Inc. | Providing content to linked devices associated with a user |
US9824363B1 (en) | 2012-11-16 | 2017-11-21 | Lu Wang | Method and system for electronically engaging customers |
EP2939082A4 (en) | 2012-12-28 | 2016-10-26 | Fabtale Productions Pty Ltd | METHOD AND SYSTEM FOR ANALYZING THE LEVEL OF A USER ENGAGEMENT WITHIN AN ELECTRONIC DOCUMENT |
US20140207962A1 (en) | 2013-01-21 | 2014-07-24 | Disney Enterprises, Inc. | Aggregation of User Activity Data Into a User Activity Stream |
US20140229391A1 (en) | 2013-02-08 | 2014-08-14 | XTime, Inc. | Predictive service timeline |
US9100337B1 (en) * | 2013-02-20 | 2015-08-04 | Google Inc. | Enabling cookies for a website |
US9779063B1 (en) * | 2013-03-15 | 2017-10-03 | Not Invented Here LLC | Document processor program having document-type dependent interface |
US20140325070A1 (en) * | 2013-04-24 | 2014-10-30 | Zynga Inc. | Usage consumption for an invitee of a cloud system |
US20140359637A1 (en) * | 2013-06-03 | 2014-12-04 | Microsoft Corporation | Task continuance across devices |
US9565584B2 (en) * | 2013-06-24 | 2017-02-07 | Cisco Technology, Inc. | Human mobility rule-based device location tracking |
US9195703B1 (en) | 2013-06-27 | 2015-11-24 | Google Inc. | Providing context-relevant information to users |
US9125015B2 (en) | 2013-06-28 | 2015-09-01 | Facebook, Inc. | User activity tracking system and device |
WO2015035396A1 (en) * | 2013-09-09 | 2015-03-12 | Layer, Inc. | Federated authentication of client computers in networked data communications services callable by applications |
US10021169B2 (en) | 2013-09-20 | 2018-07-10 | Nuance Communications, Inc. | Mobile application daily user engagement scores and user profiles |
US9635398B2 (en) | 2013-11-01 | 2017-04-25 | Adobe Systems Incorporated | Real-time tracking collection for video experiences |
US20150235258A1 (en) | 2014-02-20 | 2015-08-20 | Turn Inc. | Cross-device reporting and analytics |
US20150235275A1 (en) | 2014-02-20 | 2015-08-20 | Turn Inc. | Cross-device profile data management and targeting |
US20150256423A1 (en) | 2014-03-10 | 2015-09-10 | Charles Carey Stearns | Data collection, aggregation, and analysis for parental monitoring |
WO2015137620A1 (en) | 2014-03-12 | 2015-09-17 | Samsung Electronics Co., Ltd. | Method and apparatus for providing calendar displaying work history of document |
US20150286694A1 (en) * | 2014-04-08 | 2015-10-08 | International Business Machines Corporation | Integrating a mobile payment application with other applications utilizing analytic analysis |
US20150294634A1 (en) | 2014-04-15 | 2015-10-15 | Edward K. Y. Jung | Life Experience Memorialization with Alternative Observational Opportunity Provisioning |
EP3146495A4 (en) | 2014-05-20 | 2017-11-08 | Google LLC | Generating activity summaries |
US10313264B2 (en) * | 2014-05-28 | 2019-06-04 | Apple Inc. | Sharing account data between different interfaces to a service |
CN105208434A (zh) | 2014-06-11 | 2015-12-30 | 阿里巴巴集团控股有限公司 | 媒体投影方法、媒体投影设备、控制终端以及云端服务器 |
US9851901B2 (en) | 2014-09-26 | 2017-12-26 | Western Digital Technologies, Inc. | Transfer of object memory references in a data storage device |
US9753816B2 (en) * | 2014-12-05 | 2017-09-05 | Commvault Systems, Inc. | Synchronization based on filtered browsing |
US10025702B1 (en) | 2014-12-10 | 2018-07-17 | Amazon Technologies, Inc. | Browser capable of saving and restoring content item state |
US9866508B2 (en) * | 2015-04-02 | 2018-01-09 | Dropbox, Inc. | Aggregating and presenting recent activities for synchronized online content management systems |
US9743368B2 (en) * | 2015-04-10 | 2017-08-22 | Time Warner Cable Enterprises Llc | Methods and apparatus for synchronized viewing experience across multiple devices |
US10394953B2 (en) | 2015-07-17 | 2019-08-27 | Facebook, Inc. | Meme detection in digital chatter analysis |
US10089609B2 (en) * | 2015-12-14 | 2018-10-02 | Visa International Service Association | System and methods for online/offline synchronization |
US9537952B1 (en) | 2016-01-29 | 2017-01-03 | Dropbox, Inc. | Apparent cloud access for hosted content items |
US10860988B2 (en) | 2016-04-11 | 2020-12-08 | Samsung Electronics Co., Ltd. | Managing data items contributed by a plurality of applications |
US11112963B2 (en) * | 2016-05-18 | 2021-09-07 | Apple Inc. | Devices, methods, and graphical user interfaces for messaging |
US10467230B2 (en) | 2017-02-24 | 2019-11-05 | Microsoft Technology Licensing, Llc | Collection and control of user activity information and activity user interface |
US20190050378A1 (en) | 2017-08-11 | 2019-02-14 | Microsoft Technology Licensing, Llc | Serializable and serialized interaction representations |
US11580088B2 (en) | 2017-08-11 | 2023-02-14 | Microsoft Technology Licensing, Llc | Creation, management, and transfer of interaction representation sets |
-
2017
- 2017-05-09 US US15/590,858 patent/US10693748B2/en active Active
-
2018
- 2018-04-03 EP EP18722777.2A patent/EP3610629B1/en active Active
- 2018-04-03 WO PCT/US2018/025776 patent/WO2018191060A1/en unknown
- 2018-04-03 CN CN201880024505.8A patent/CN110521187B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102087615A (zh) * | 2009-12-03 | 2011-06-08 | 国际商业机器公司 | 消息队列中逻辑关联的消息的自动合并 |
CN104301203A (zh) * | 2014-09-10 | 2015-01-21 | 腾讯科技(深圳)有限公司 | 一种消息推送方法和设备 |
CN105718267A (zh) * | 2016-01-19 | 2016-06-29 | 深圳市多彩人生技术股份有限公司 | 一种多应用合并为单应用的实现方法及其实现系统 |
Also Published As
Publication number | Publication date |
---|---|
US10693748B2 (en) | 2020-06-23 |
US20180302302A1 (en) | 2018-10-18 |
CN110521187A (zh) | 2019-11-29 |
EP3610629B1 (en) | 2023-01-04 |
EP3610629A1 (en) | 2020-02-19 |
WO2018191060A1 (en) | 2018-10-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110521187B (zh) | 活动馈送服务 | |
US10853220B2 (en) | Determining user engagement with software applications | |
US11017813B2 (en) | Storyline experience | |
US10467230B2 (en) | Collection and control of user activity information and activity user interface | |
US10671245B2 (en) | Collection and control of user activity set data and activity set user interface | |
US20140280603A1 (en) | User attention and activity in chat systems | |
CN108781311B (zh) | 用于媒体分发和管理平台的视频播放器框架 | |
US10600448B2 (en) | Streaming digital media bookmark creation and management | |
US20190050378A1 (en) | Serializable and serialized interaction representations | |
US11580088B2 (en) | Creation, management, and transfer of interaction representation sets | |
CN110476162B (zh) | 使用导航助记符控制显示的活动信息 | |
US20150120816A1 (en) | Tracking use of content of an online library | |
US9152707B2 (en) | System and method for creating and providing media objects in a navigable environment | |
US20120311538A1 (en) | Capturing Rich Actionable Feedback on Working Software | |
US20170017382A1 (en) | System and method for interaction between touch points on a graphical display | |
CN108073638B (zh) | 数据诊断方法及装置 | |
US20170048341A1 (en) | Application usage monitoring and presentation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |