CN109791663A - 用于远程状态机的无状态维护的系统和方法 - Google Patents

用于远程状态机的无状态维护的系统和方法 Download PDF

Info

Publication number
CN109791663A
CN109791663A CN201780053359.7A CN201780053359A CN109791663A CN 109791663 A CN109791663 A CN 109791663A CN 201780053359 A CN201780053359 A CN 201780053359A CN 109791663 A CN109791663 A CN 109791663A
Authority
CN
China
Prior art keywords
notice
state
application
client device
user interface
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.)
Granted
Application number
CN201780053359.7A
Other languages
English (en)
Other versions
CN109791663B (zh
Inventor
J.刘易斯
J.科恩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Publication of CN109791663A publication Critical patent/CN109791663A/zh
Application granted granted Critical
Publication of CN109791663B publication Critical patent/CN109791663B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/04847Interaction techniques to control parameter settings, e.g. interaction with sliders or dials
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/02Marketing; Price estimation or determination; Fundraising
    • G06Q30/0241Advertisements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/02Marketing; Price estimation or determination; Fundraising
    • G06Q30/0241Advertisements
    • G06Q30/0272Period of advertisement exposure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/545Gui

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Accounting & Taxation (AREA)
  • Development Economics (AREA)
  • Finance (AREA)
  • Strategic Management (AREA)
  • Human Computer Interaction (AREA)
  • Multimedia (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Game Theory and Decision Science (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • General Business, Economics & Management (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

提供了使用传递到计算机网络环境中的客户端设备的电子通知来实施有限状态机的系统和方法。能够接收内容项以及与该内容项相关联的第一通知和第二通知。第一通知和第二通知能够被存储在队列中。在一些实施方式中,能够维护状态机,其中至少一些状态可以使得第一通知或第二通知被显示,并且其中状态之间的转移条件可以至少部分地取决于用户与显示的通知的交互。

Description

用于远程状态机的无状态维护的系统和方法
相关申请
本申请要求于2016年12月5日提交的题为“用于远程状态机的无状态维护的系统和方法”的美国临时申请第62/430,331号的优先权,其全部内容通过引用合并于本文。
背景技术
系统能够被表示为有限状态机(本文有时称为状态机)。例如,在计算机网络环境中,在客户端设备上运行的应用可以被建模为状态机。客户端设备能够从远程服务器发送和接收与应用有关的信息。然而,对于服务器和客户端两者来说,准确地维护和更新关于状态机的当前信息在计算上是复杂的,特别是在使用无状态通信协议时。
发明内容
为了减少所需的带宽使用和计算复杂性,能够使用电子通知队列来实施表示应用的状态机。例如,一个或多个电子通知能够存储在队列中,并且能够以与状态机的适当状态转移相对应的顺序传递给客户端设备的用户。在一些实施方式中,可以将通知作为任何形式的视觉信息(诸如弹出窗口)传递给客户端设备的用户。通知可以包括诸如文本、图像和诸如超链接或按钮的交互式内容的信息,用户可以选择这些信息以便影响状态转移。通知能够以先进先出(first-in-first-out,FIFO)顺序传递给用户。能够在将通知传递给用户时从队列中移除通知。在一些实施方式中,通知的传递可以同时引起当前对用户可见的任何活动通知的解除,使得不一次向用户呈现多个通知。使用通知队列的通知的传递和解除能够基于与状态机的转移条件相对应的条件(例如,用户输入或经过的计时器信息)而发生。因此,通知队列能够用于简化服务器和客户端设备之间所需的通信,以根据其相关联的状态机表示在客户端设备上适当地呈现应用。
至少一个方面涉及用于经由通知队列维护客户端状态机的方法。该方法能够包括由计算设备上运行的应用从服务器接收内容项的标识、第一通知和第二通知。该方法能够包括由应用将第一通知和第二通知存储在计算设备的存储器中的通知队列中。该方法能够包括响应于在计算设备上运行的第二应用对内容项的显示,确定计算设备处于第一状态。该方法能够包括响应于内容项的部分在计算设备的显示屏幕上不可见,由应用确定计算设备处于第二状态。该方法能够包括由应用在计算设备的显示屏幕上显示第一通知。第一通知能够从通知队列中移除。该方法能够包括响应于计时器的到期,由应用确定计算设备处于第三状态。该方法能够包括响应于计算设备处于第三状态的确定,由应用解除第一通知。该方法能够包括由应用在计算设备的显示屏幕上显示第二通知。第二通知能够从通知队列中移除。
在一些实施方式中,内容项能够包括视频内容。在一些实施方式中,该方法能够包括响应于第二应用对内容项的显示,将计时器设置为与视频内容的不可跳过部分的持续时间相对应的预定值。
在一些实施方式中,第一通知能够包括第一用户界面元素。该方法还能够包括在计算设备处于第二状态时由应用检测与第一用户界面元素的交互。该方法还能够包括响应于检测到与第一用户界面元素的交互,激活包括视频内容的第二应用的窗口。
在一些实施方式中,第一通知能够包括第二用户界面元素。该方法还能够包括由应用检测与第二用户界面元素的交互。该方法还能够包括响应于检测到与第二用户界面元素的交互,由应用向第二应用提供暂停视频内容的命令。
在一些实施方式中,第一通知能够包括第三用户界面元素。该方法还能够包括由应用检测与第三用户界面元素的交互。该方法还能够包括响应于检测到与第三用户界面元素的交互,由应用向第二应用提供传输对第二内容项的请求的命令。
在一些实施方式中,第二通知能够包括第四用户界面元素。该方法还能够包括由应用检测与第四用户界面元素的交互。该方法还能够包括响应于检测到与第四用户界面元素的交互,由应用向第二应用提供跳过视频内容的剩余部分的命令。
在一些实施方式中,通知队列能够存储第三通知。该方法还能够包括响应于计算设备处于第一状态的确定,由应用从队列移除第三通知。在一些实施方式中,由应用在计算设备的显示屏幕上显示第一通知还能够包括由应用向第二服务器发送远程过程调用(Remote Procedure Call,RPC),该RPC包括标识计算设备并使第二服务器向计算设备发送第一通知的信息。在一些实施方式中,该方法还能够包括与内容项的显示基本上同时地激活计时器。
至少一个方面涉及用于经由通知队列维护客户端状态机的系统。该系统能够包括客户端设备,该客户端设备包括运行通知应用、第二应用和计时器的处理器。该系统能够包括包含通知队列的存储器设备。该系统能够包括通信地耦合到服务器的网络接口。网络接口能够被配置为从服务器接收内容项的标识、第一通知和第二通知。通知应用能够被配置为将第一通知和第二通知存储在通知队列中。通知应用能够被配置为响应于第二应用对内容项的显示,确定客户端设备处于第一状态。通知应用程序能够被配置为响应于内容项的部分在客户端设备的显示屏幕上不可见,确定客户端设备处于第二状态。通知应用能够被配置为在客户端设备的显示屏幕上显示第一通知,第一通知从通知队列中移除。通知应用能够被配置为响应于计时器的到期,确定客户端设备处于第三状态。通知应用能够被配置为响应于客户端设备处于第三状态的确定,解除第一通知。通知应用能够被配置为在客户端设备的显示屏幕上显示第二通知,第二通知从通知队列中移除。
在一些实施方式中,内容项能够包括视频内容。在一些实施方式中,计时器能够被配置为具有与视频内容的不可跳过部分相对应的预定持续时间。
在一些实施方式中,第一通知能够包括第一用户界面元素。通知应用还能够被配置为在客户端设备处于第二状态时检测与第一用户界面元素的交互。通知应用还能够被配置为响应于检测到与第一用户界面元素的交互,激活包括视频内容的第二应用的窗口。
在一些实施方式中,第一通知能够包括第二用户界面元素。通知应用还能够被配置为检测与第二用户界面元素的交互。通知应用还能够被配置为响应于检测到与第二用户界面元素的交互,提供暂停视频内容的命令。
在一些实施方式中,第一通知能够包括第三用户界面元素。通知应用还能够被配置为检测与第三用户界面元素的交互。网络接口还能够被配置为响应于检测到与第三用户界面元素的交互,传输对第二内容项的请求。
在一些实施方式中,第二通知能够包括第四用户界面元素。通知应用还能够被配置为检测与第四用户界面元素的交互。通知应用还能够被配置为响应于检测到与第四用户界面元素的交互,提供跳过视频内容的剩余部分的命令。
在一些实施方式中,通知队列能够存储第三通知。通知应用还能够被配置为响应于客户端设备处于第一状态的确定,从通知队列移除第三通知。在一些实施方式中,网络接口还能够被配置为向第二服务器发送远程过程调用(RPC)。RPC能够包括标识客户端设备并使第二服务器向客户端设备发送第一通知的信息。在一些实施方式中,计时器还能够被配置为与内容项的显示基本上同时地激活。
下面详细讨论这些和其它方面和实施方式。前述信息和以下详细描述包括各种方面和实施方式的说明性示例,并提供用于理解所要求保护的方面和实施方式的性质和特性的概述或框架。附图提供了对各个方面和实施方式的说明和进一步理解,并且被并入且构成本说明书的一部分。
附图说明
附图不旨在按比例绘制。各个附图中相同的附图标记和名称指示相同的元素。为了清楚的目的,在每个附图中可以不标记每个组件。在附图中:
图1A是根据说明性实施方式的示例有限状态机的状态转移图;
图1B是根据说明性实施方式的能够用于实施由图1A的状态转移图表示的状态机的通知队列的示例表示;
图1C是根据说明性实施方式的可以存在于图1B中所示的通知队列中的通知的有效载荷的示例表示;
图2是示出根据说明性实施方式的与图1A中所示的状态转移图相对应的示例方法的流程图;
图3是示出根据说明性实施方式的可以用于实施本文描述和示出的系统和方法的元素的计算环境的一般体系结构的框图;
图4是根据说明性实施方式的示例有限状态机的状态转移图,该有限状态机表示允许用户经由计算机网络与传递到客户端设备的内容交互的系统;以及
图5是根据说明性实施方式的来自能够用于实施图4中所示的状态转移图的通知的队列的电子通知的示例图形表示。
具体实施方式
本公开一般涉及用于使用传递到计算机网络环境的客户端设备的电子通知来实施有限状态机的系统和方法。由计算机网络环境中的客户端设备运行(或在其上呈现)的许多应用能够被建模为状态机。也就是说,应用的行为能够被表示和分析为在一个或多个可能状态中发生的一系列事件。通常,在给定时间,应用将仅存在于一个状态(称为当前状态)中。状态之间的转移能够作为触发事件或条件的结果而发生。在一些实施方式中,表示计算机应用的状态机的各种状态之间的转移能够作为在其上呈现应用的客户端设备的用户采取的动作的结果而发生。
在一些实施方式中,应用可以远程运行,例如通过经由诸如因特网的计算机网络环境通信地耦合到客户端设备的服务器运行。在应用是交互式的实施方式中,与客户端设备的用户采取的动作相对应的信息可以被传输到服务器并且可以使应用改变其当前状态(即,作为用户采取的动作的结果而转移到新的状态)。因此,在服务器和客户端设备之间传输的通信对于表示应用的状态机的功能可能是必不可少的。然而,客户端和服务器两者都难以同时维护状态机的当前状态的准确表示。特别地,在服务器和客户端设备之间为服务器和客户端设备两者传输足够的信息以维护状态机的准确表示可能需要大量带宽。另外,当客户端设备和服务器之间的通信是根据无状态通信协议进行时,服务器和客户端设备两者维护状态机(这是应用在客户端设备上正确呈现所需的)可能在计算上很复杂。
为了减少所需的带宽使用和计算复杂性,能够使用电子通知队列来实施表示应用的状态机。例如,一个或多个电子通知能够存储在队列中,并且能够以与状态机的适当状态转移相对应的顺序传递给客户端设备的用户。在一些实施方式中,可以将通知作为任何形式的视觉信息(诸如弹出窗口)传递给客户端设备的用户。通知可以包括诸如文本的信息。通知可以包括一个或多个图像。通知可以包括诸如超链接或按钮的交互式内容。在一些实施方式中,用户可以选择交互式内容以便影响状态转移。在一些实施方式中,能够以先入先出(FIFO)顺序将通知传递给用户。能够在将通知传递给用户时从队列中移除通知。在一些实施方式中,通知的传递可以同时引起当前对用户可见的任何活动通知的解除,使得不一次向用户呈现多个通知。因此,这些实施方式还提供了改进的用户界面,以用于在使用期间与和状态机的当前状态有关的通知进行实时交互。通常,活动通知可以指当前显示在客户端设备的显示屏幕上的通知。使用通知队列的通知的传递和解除能够基于与状态机的转移条件相对应的条件(例如,用户输入或经过的计时器信息)而发生。因此,通知队列能够用于简化服务器和客户端设备之间根据其相关联的状态机表示在客户端设备上适当地呈现应用所需的通信。
因此,本公开的实施例能够解决与实施有限状态机相关联的技术问题,其中该有限状态机表示在计算机网络环境中的客户端设备上呈现的应用。
图1A是根据说明性实施方式的示例有限状态机的状态转移图100。在一些实施方式中,与状态转移图100相对应的状态机可以表示在计算机网络环境中的客户端设备上呈现的应用。状态转移图100包括四个状态,包括第一状态102、第二状态104、第三状态106和第四状态108。在其它实施方式中,状态机可以具有较少的状态,诸如第一状态102、第二状态104和第三状态106。在一些实施方式中,状态机可以具有更多状态,诸如第五状态(未示出)。因此,状态机可以具有任何数量的状态和状态之间的转移。每个状态可以包括相关联的动作,该相关联的动作可以与当状态机处于其相应的状态中的每一个时发生的事件相对应。状态转移图100的状态之间的箭头表示引起状态机从一个状态转移到下一状态的转移条件。状态转移图100的操作在下面进一步描述。
由状态转移图100表示的状态机在第一状态102中开始,在该状态102中执行动作1。在一些实施方式中,动作1可以在进入第一状态102时执行一次,但是在状态机保持在第一状态102时可以不重复动作1。在一些其它实施方式中,可以在状态机处于第一状态102时重复执行动作1。在一些实施方式中,动作1可以对应于例如在客户端设备上呈现的应用内执行的动作。在一些其它实施方式中,动作1可以对应于在客户端设备上呈现的应用的外部执行的动作(例如,动作1可以对应于在应用的外部显示或移除呈现给用户的信息)。状态机将保持在第一状态102,直到转移条件1变为真,或转移条件2变为真。如果转移条件1为真,则状态机将转移到第二状态104。如果条件2为真,则状态机将转移到第三状态106。
在一些实施方式中,转移条件1和转移条件2可以各自与客户端设备的用户执行的动作的发生的相对应。在一些其它实施方式中,转移条件1和转移条件2可以替代地与独立于用户采取的动作而存在的条件相对应。例如,转移条件1和转移条件2可以与预定时间量的通过相对应,或者与客户端设备的显示屏幕上的应用的可见性条件相对应。
第二状态104包括相关联的动作,标记为图1A中的动作2。因此,动作2可以作为转移到第二状态104的结果而被执行。在一些实施方式中,动作2可以在进入第二状态104时执行一次,但是在状态机保持在第二状态104时可以不重复动作2。在一些其它实施方式中,可以在状态机处于第二状态104时重复执行动作2。在一些实施方式中,动作2可以对应于例如在客户端设备上呈现的应用内执行的动作。在一些其它实施方式中,动作2可以对应于在客户端设备上呈现的应用的外部执行的动作。例如,动作2可以对应于在应用的外部显示或移除呈现给用户的信息。状态机将保持在第二状态104,直到转移条件3-5中的一个变为真。如果转移条件3变为真,则状态机将转移回第一状态102。如果转移条件4变为真,则状态机将转移到第三状态106。如果转移条件5变为真,则状态机将转移到第四状态108。
类似于上述转移条件,转移条件3-5可以各自对应于客户端设备的用户执行的动作的发生。在一些其它实施方式中,转移条件3-5可以替代地与独立于用户采取的动作而存在的条件相对应。例如,转移条件3-5可以与预定时间量的通过相对应,或者与客户端设备的显示屏幕上的应用的可见性条件相对应。
第三状态106包括相关联的动作,标记为图1A中的动作3。动作3可以作为转移到第三状态106的结果而被执行。在一些实施方式中,动作3可以在进入第三状态106时执行一次,但是在状态机保持在第三状态106时可以不重复动作3。在一些其它实施方式中,可以在状态机处于第三状态106时重复执行动作3。在一些实施方式中,动作3可以对应于例如在客户端设备上呈现的应用内执行的动作。在一些其它实施方式中,动作3可以对应于在客户端设备上呈现的应用的外部执行的动作。例如,动作3可以对应于在应用的外部显示或移除呈现给用户的信息。状态机将保持在第三状态106,直到转移条件6-8中的一个变为真。如果转移条件6变为真,则状态机将转移到第一状态102。如果转移条件7变为真,则状态机将转移到第二状态104。如果转移条件8变为真,则状态机将转移到第四状态108。
类似于上述转移条件,转移条件6-8可以各自对应于客户端设备的用户执行的动作的发生。在一些其它实施方式中,转移条件6-8可以替代地与独立于用户采取的动作而存在的条件相对应。例如,转移条件6-8可以与预定时间量的通过相对应,或者与客户端设备的显示屏幕上的应用的可见性条件相对应。
第四状态108包括相关联的动作,标记为图1A中的动作4。动作4可以作为转移到第四状态108的结果而被执行。在一些实施方式中,动作4可以在进入第四状态108时执行一次,但是在状态机保持在第四状态108时可以不重复动作4。在一些其它实施方式中,可以在状态机处于第四状态108时重复执行动作4。在一些实施方式中,动作4可以对应于例如在客户端设备上呈现的应用内执行的动作。在一些其它实施方式中,动作4可以对应于在客户端设备上呈现的应用的外部执行的动作。例如,动作4可以对应于在应用的外部显示或移除呈现给用户的信息。状态机将保持在第四状态108,直到转移条件9和转移条件10中的一个变为真。如果转移条件9变为真,则状态机将转移到第一状态102。如果转移条件10变为真,则状态机将转移到第二状态104。
类似于上述转移条件,转移条件9和转移条件10可以各自对应于客户端设备的用户执行的动作的发生。在一些其它实施方式中,转移条件9和转移条件10可以替代地与独立于用户采取的动作而存在的条件相对应。例如,转移条件9和转移条件10可以与预定时间量的通过相对应,或者与客户端设备的显示屏幕上的应用的可见性条件相对应。
在一些实施方式中,状态机能够随时间基于转移条件1-10的出现而无限地在第一状态102、第二状态104、第三状态106和第四状态108之间转移。例如,在状态机表示应用的实施方式中,状态机能够在状态转移图100中示出的状态之间转移,直到应用终止。应该注意,状态转移图100旨在为其各自的状态机提供状态和转移条件的完整列表。也就是说,状态机不能转移到状态转移图100中未示出的任何状态,并且退出每个状态的转移条件表示当状态机处于每个相应状态时的可能条件的完整列表。然而,还应该注意,状态转移图100仅是说明性的,并且在一些实施方式中可以包括更多或更少的状态而不脱离本公开的范围。此外,每个状态可以包括任意数量的相关联的动作。状态可以包括不同数量的动作(例如,第一状态102可以包括一个动作,第二状态104可以包括两个动作,反之亦然)。在一些实施方式中,电子通知队列可以用于实施由状态转移图100表示的状态机,如下面结合图1B和图1C进一步描述的。
图1B是根据说明性实施方式的能够用于实施由图1A的状态转移图100表示的状态机的通知队列120的示例表示。通知队列120包括标记为122a-122n的顺序编号的通知(通常称为通知122)。每个通知122包括相应的有效载荷和相应的时间戳。图1C是根据说明性实施方式的可以存在于图1B中所示的通知队列120中的通知122的有效载荷的示例表示。下面参考图1A中所示的状态转移图100一起描述图1B和图1C。
在一些实施方式中,通知队列120可以维护在计算机存储器中。例如,通知队列120能够被实施为存储在计算机存储器中并可由与计算设备相关联的处理器访问的任何类型的数据结构,诸如阵列、链表或循环缓冲器,其中该计算设备可以是在其上呈现应用的客户端设备。在一些其它实施方式中,队列可以替代地从客户端设备远程维护,例如在通信地耦合到客户端设备的服务器上维护。通知122可以由服务器生成并以顺序次序存储在队列中。在一些实施方式中,可以根据通知应用编程接口(Application Programming Interface,API)来格式化每个通知122。一些通知API可以作为计算机操作系统(诸如由微软公司开发的Windows操作系统或由苹果公司开发的MacOS操作系统)的一部分来提供。在一些其它实施方式中,通知API可以作为移动操作系统(诸如由苹果公司开发的iOS操作系统或由Alphabet公司开发的Android操作系统)的一部分来提供。在其它实施方式中,通知API可以作为应用(诸如网络浏览器)的一部分来提供。例如,通知可以作为Alphabet公司开发的Chrome网络浏览器应用的一部分来提供。
每个通知122可以包括通常称为有效载荷的数据。如图1C所描绘,通知122的有效载荷能够包括参数-值对132。在一些实施方式中,有效载荷可以包括选项134。在一些实施方式中,有效载荷可以包括文本136。在一些实施方式中,有效载荷可以包括图像138。在一些实施方式中,有效载荷可以包括位图140。在一些实施方式中,有效载荷可以包括超链接142。应该理解,图1C中所示的有效载荷的组件仅是说明性的,并且可以包括其它组件,或者包括组件的子集,诸如文本和超链接、图像和选项、文本和图像等。在一些实施方式中,通知队列120中的一个或多个通知122可以包括比图1C中所示的组件更多或更少的组件。通常,通知的有效载荷的组件表示能够用于显示通知、退出(retire)通知和/或允许用户与通知交互的信息。例如,文本136可以包括要与通知一起显示以向用户提供信息的文本数据,而图像138和位图140可以包括要作为图形内容显示给用户的信息,其可以对应于,例如,可选择的按钮。可以显示超链接142并由客户端设备的用户选择超链接142来传输分组或请求(例如,超文本标记语言(Hyptertext Markup Language,HTML)请求、API请求或其它应用或会话层请求等)以使远程服务器执行动作。各种其它信息可以被包括在选项134和参数-值对132中。例如,在一些实施方式中,参数-值对132和选项134可以包括与它们相应的通知122将在客户端设备上显示的持续时间、或者与它们相应的通知将由通知API退出的特定时间相对应的信息。
通知队列120能够用来便于由状态转移图100表示的状态机的实施。例如,通知122能够用作满足在状态转移图100中的状态之间移动的转移条件的触发器或事件。在一些实施方式中,例如,通知122的传递能够是可以满足(或部分满足)状态转移图100的一个或多个转移条件的事件。类似地,通知122的退出也能够是可以满足状态转移图100的一个或多个转移条件的事件。在一些实施方式中,转移条件也可以在用户与活动通知122交互时(诸如通过选择与活动通知122相关联的按钮或超链接)满足。
在一些实施方式中,可以将定时合并到状态转移图100的转移条件中。每个通知122的时间戳能够帮助确定何时满足这样的时间敏感条件。例如,在一些实施方式中,每个通知122可以在与其时间戳相关联的时间传递,并且生成通知122的服务器可以被配置为确保顺序通知122具有以预定时间间隔的时间戳。在一些实施方式中,每个通知122还可以包括与在显示通知122之后通知122应该退出的时间相对应的时间戳信息。在一些其它实施方式中,能够在传递下一个通知122时自动退出活动通知122。
图2是示出根据说明性实施方式的与图1A中所示的状态转移图100相对应的示例方法200的流程图。在图2中,矩形框能够表示在各种状态中执行的动作,菱形框表示在状态转移图100的状态之间转移的条件。如上所讨论,应该注意,状态转移图100旨在为其各自的状态机提供状态和转移条件的完整列表。因此,假定状态机不能转移到的状态转移图100中未示出的任何状态,并且退出每个状态的转移条件表示当状态机处于每个相应状态时的可能条件的完整列表。这些假设也适用于图2中所示的流程图。
再次参考图1A和图2,方法200通过进入框205开始,在框205中,第一通知和第二通知例如由客户端设备接收。在一些实施方式中,通知能够由通信地耦合到客户端设备的远程服务器生成和传输,并且可以与要在客户端设备的显示屏幕上显示的内容项一起被传递到客户端设备。在一些实施方式中,通知可以类似于上面结合图1B和图1C描述的通知122。方法200从框205前进到框210,在框210中,客户端设备将第一通知和第二通知存储在队列中。例如,第一通知和第二通知能够存储在类似于图1B中所示的通知队列120的队列中,该队列能够被实施为任何类型的数据结构。在一些实施方式中,在框205和框210中执行的方法200的步骤可以与状态转移图100的第一状态102的动作1相对应。
如上所述,当转移条件1或转移条件2变为真时,状态机转移出第一状态102。这由框215表示,在框215中客户端设备能够确定转移条件1是否为真。如果是,则方法200前进到框220,其能够与状态转移图100的第二状态104相对应。如果转移条件1不为真,则在框215处转移条件2必须为真,并且方法200前进到框235和框240,其可以与状态转移图100的第三状态106相对应。在一些实施方式中,转移条件1和转移条件2可以各自与在客户端设备的显示屏幕上显示的内容项的可见性状态相对应。例如,转移条件1可以与内容项在显示屏幕上可见相对应,并且转移条件2可以与内容项被显示屏幕上的其它应用隐藏(或部分隐藏)相对应。
在框220处,对应于状态转移图100的第二状态104,客户端设备使得任何活动通知被解除。例如,在转移条件1与内容项可见相对应的实施方式中,由于可见内容项能够容易地直接与用户交互,所以可以执行该步骤,因为客户端设备的用户不必与通知交互。如上所述,当条件3-5中的任何一个为真时,由状态转移图100表示的状态机转移出第二状态104。这由框225和框230表示。因此,在框225处,客户端设备能够确定转移条件3是否为真,并且如果转移条件3为真,则方法返回到能够表示第一状态102的框205。如果转移条件3不为真,则方法200前进到框230,在框230中客户端设备能够确定转移条件4是否为真。如果转移条件4为真,则方法前进到能够表示第三状态106的框235。否则,因为确定转移条件3和转移条件4不为真,所以转移条件5必须为真,并且方法200前进到框255,表示状态转移图100的第四状态108。
再次参考框235,其能够表示在第三状态106中执行的动作,客户端设备能够使得任何活动通知被解除,并且然后方法能够前进到框240,在框240中客户端设备能够使得第一通知显示在客户端设备的显示屏幕上。框235和框240中所示的方法200的步骤能够一起对应于在状态转移图100的第三状态106中执行的动作3。在一些实施方式中,客户端设备能够在与显示第一通知基本相同的时间从队列中移除第一通知,仅留下第二通知剩余在队列中。在一些实施方式中,第一通知可以包括一个或多个交互元素(诸如可选择的超链接或按钮),客户端设备的用户可以使用定点设备来选择这些交互元素。这样的交互元素可能在以下情况有用:内容项对视图是隐藏的并且可能不能被用户直接访问。因此,在第三状态106中执行的动作3(即,方法200的框235和框240)可以通过提供在客户端设备的显示屏幕上显示的第一通知来允许用户与隐藏的内容项交互。
如上所述,当转移条件6-8之一为真时,发生第三状态106的转移出。这由框245和框250表示。因此,在框245处,客户端设备能够确定转移条件6是否为真,并且如果转移条件6为真,则方法返回到能够表示第一状态102的框205。如果转移条件6不为真,则方法200前进到框250,在框230中客户端设备能够确定转移条件7是否为真。如果转移条件7为真,则方法前进到能够表示第四状态108的框255。否则,因为确定转移条件6和转移条件7不为真,所以转移条件8必须为真,并且方法200前进到框220,表示状态转移图100的第二状态104。
现在参考框255,其能够表示在第四状态108中执行的动作,客户端设备能够使得任何活动通知被解除,并且然后方法能够前进到框260,在框260中客户端设备能够使得第二通知显示在客户端设备的显示屏幕上。框255和框260中所示的方法200的步骤能够一起对应于在状态转移图100的第四状态108中执行的动作4。在一些实施方式中,客户端设备能够在与显示第二通知的基本相同的时间从队列中移除第二通知。在一些实施方式中,第二通知可以包括一个或多个交互元素(诸如可选择的超链接或按钮),客户端设备的用户可以使用定点设备来选择这些交互元素。这样的交互元素可能在以下情况有用:内容项对视图是隐藏的并且可能不能被用户直接访问。因此,在第四状态108中执行的动作4(即,方法200的框255和框260)可以通过提供在客户端设备的显示屏幕上显示的第一通知来允许用户与隐藏的内容项交互。在一些实施方式中,第二通知中包括的交互元素可以与第一通知中包括的交互元素不同。例如,可以在先前已经显示第一通知之后显示第二通知,此时用户可以具有用于与内容项交互的附加或不同选项。在一些实施方式中,第二通知的交互元素中的至少一个可以允许用户跳过当前正在客户端设备上播放的内容项(例如,媒体文件)。
如上所述,当转移条件9或转移条件10变为真时,状态机转移出第四状态108。这由框265表示,在框265中客户端设备能够确定转移条件9是否为真。如果转移条件9为真,则方法200前进到框205,框205能够与状态转移图100的第一状态102相对应。如果转移条件9不为真,则在框265处转移条件10必须为真,并且方法200前进到框220,框220可以与状态转移图100的第二状态104相对应。在一些实施方式中,转移条件9可以与正在客户端设备的显示屏幕上显示的新内容项相对应。因此,方法200返回到框205,在框205中能够接收与新内容项相关联的第一通知和第二通知。转移条件10可以对应于内容项在显示屏幕上变得可见。当内容项变得可见时,可以不需要显示通知,因为用户能够替代地直接与内容项交互,而不是经由通知。因此,方法200能够前进到框220,在框220中解除任何活动通知。
图3是示出根据说明性实施方式的可以用于实施本文描述和示出的系统和方法的元素的计算环境300的一般体系结构的框图。环境300能够包括能够经由网络305彼此通信地耦合的若干计算设备,包括客户端设备330、内容发布者360和通知服务器370。客户端设备330、内容发布者360和通知服务器370中的每一个能够包括单独的计算机或服务器、或者多个计算机或服务器。在后一种情况下,多个计算机或服务器能够一起驻留在诸如数据中心的单个位置中,或者分布在多个数据中心。在一些实施方式中,客户端设备330、内容发布者360和通知服务器370中的两个或多个的功能能够组合在单个计算系统中。例如,在一些实施方式中,内容发布者360和通知服务器370的功能能够由单个、共享服务器或数据中心执行。
客户端设备330能够包括媒体播放器320,该媒体播放器320能够被配置为播放诸如音频和/或视频文件的内容项。客户端设备330包括网络浏览器327,该网络浏览器327能够被配置为显示在线文档以及被配置为呈现诸如流式音频和/或视频文件的多媒体内容。客户端设备330还包括通知API 325。如上所讨论,在一些实施方式中,通知API 325可以作为计算机操作系统、移动操作系统的一部分来提供,或者作为诸如网络浏览器327的应用的一部分来提供。
客户端设备330还能够包括通信地耦合到至少一个存储器335、一个或多个通信接口355、一个或多个输出设备345(例如,一个或多个显示单元)和一个或多个输入设备340(例如,一个或多个触摸屏、键盘、麦克风等)的一个或多个处理器350。存储器335能够包括计算机可读存储介质,并且能够存储计算机指令(诸如处理器可运行指令),以用于实施本文描述的操作。例如,存储器335能够被配置为存储从内容发布者360和通知服务器370接收的数据。至少一个处理器350能够运行存储在存储器335中的指令,并且能够读取或写入依照指令的运行处理和/或生成的存储器信息。
处理器350能够通信地耦合到或者能够控制至少一个通信接口355,以依照指令的运行来传输或接收信息。例如,通信接口355能够耦合到有线或无线网络、总线或其它通信装置,并且能够允许客户端设备330向内容发布者360和通知服务器370传输信息或者从内容发布者360和通知服务器370接收信息。因此,一个或多个通信接口355能够便于环境300的组件之间的信息流。通信接口355的示例包括用户界面。
一个或多个输出设备345能够结合指令的运行允许查看或感知信息。一个或多个输入设备340能够在指令的运行期间允许用户进行手动调整、进行选择、输入数据或其它信息、或者以任何各种方式与处理器交互。
内容发布者360能够发布包括诸如音频和/或视频文件的多媒体内容的主要内容,以供客户端设备330使用。客户端设备330能够从内容发布者360请求内容项,并且能够例如使用媒体播放器320或网络浏览器327呈现内容项以供显示。例如,为了检索用于在网页的视频框中显示的内容项,客户端设备330能够向内容发布者360发送请求。响应于该请求,客户端设备330能够接收用于在视频框中显示的流式视频。
例如,在网络浏览器327或媒体播放器320中显示的视频内容能够包括允许用户与视频内容互动的用户可选择的内容。例如,用户可以能够打开与视频内容相关联的不同网页,或者可以在仅查看视频内容的一部分之后选择跳过剩余的视频内容。然而,当视频内容正在客户端设备330上的后台应用或者在不处于焦点(诸如,在窗口系统中的最前面或在其中活动、在未覆盖的窗口中可见、在浏览器的前面标签(tab)中,特别是在诸如移动操作系统等的完整屏幕操作系统中)中的浏览器标签中播放时,用户可能难以定位视频内容的源,并且因此可能不能与其进行互动。
为了允许用户与这样隐藏或部分隐藏的内容交互,通知能够被传递给用户并用于以类似于上面结合图1A-1C和图2描述的方式来维护内容的状态机表示。通知能够允许用户与背景视频内容项互动,而不必定位网络浏览器327的浏览器标签或作为视频内容的源的媒体播放器320。例如,通知能够包括按钮或可选择的超链接,其被配置为执行诸如将背景视频内容带入设备上的焦点、暂停背景视频内容、使背景视频内容静音或跳过背景视频内容的动作。在一些实施方式中,一对通知能够由通知服务器370生成,被传输到客户端设备330,并且被存储在客户端设备330上的队列中。在一些其它实施方式中,通知队列能够替代地由通知服务器370维护。第一通知能够在视频内容开始在后台播放之后立即显示在客户端设备330上,并且能够包括允许用户将视频内容带入焦点或者打开与视频内容有关的新网页的交互元素。在一些实施方式中,在预定持续时间之后,能够在客户端设备330上显示第二通知。第二通知能够包括允许用户跳过视频内容项的交互元素。在一些实施方式中,例如,能够使用通知API 325来传递通知。下面结合图4和图5更全面地描述该功能。
图4是根据示例性实施方式的示例性有限状态机的状态转移图400,该有限状态机表示允许用户经由计算机网络与传递到客户端设备的内容交互的系统。在一些实施方式中,内容可以例如由诸如内容发布者360的内容发布者生成并且被传递到诸如图3中所示的客户端设备330的客户端设备。状态转移图400能够表示图1中所示的更通用的状态转移图100的特定示例,并且能够允许经由使用诸如图1B中所示的通知队列120的通知队列在客户端设备上维护一个或多个内容项的状态机表示。
状态转移图400包括四个状态:新内容状态402、内容可见状态404、内容隐藏状态406和跳过按钮可见状态408。状态之间的箭头标记有足以引起从一个状态转移到下一状态的条件。通常,状态转移图400在新内容状态402中开始,或者可以在初始化、启动、实例化等时进入状态402。在这种状态下,任何活动通知都被解除。在一些后续时间,在处于此状态的同时,可以由客户端设备接收新通知。例如,在一些实施方式中,客户端设备可以接收对应于新内容项的两个通知。每个通知可以包括诸如可选择的按钮的交互元素,以允许客户端设备的用户在内容项可能从客户端设备的显示屏幕内的视图隐藏(或部分隐藏)时经由通知与内容项交互。在解除活动通知并且接收到新通知之后,状态机取决于内容项是否在客户端设备的显示屏幕上可见而转移到内容可见状态404或内容隐藏状态406,如由退出新内容状态402的箭头所示。在内容可见状态404中,执行的唯一动作是解除与内容项相关联的活动通知。例如,因为内容在显示屏幕上(例如,在客户端设备上运行或以其它方式呈现的网络浏览器或媒体播放器应用内)可见,所以用户能够容易地直接与内容项交互,并且因此与内容项相关联的通知是不必要的。
另一方面,在内容隐藏状态406中,用户可能无法直接与内容交互,因为内容在客户端设备的显示屏幕上不可见。结果,在内容隐藏状态406中,解除活动通知以及显示交互通知。交互通知可以是例如包括允许用户与隐藏内容项交互的交互元素的弹出窗口。在一些实施方式中,交互元素可以包括使用户能够暂停内容项的回放或者改变内容项的音量的按钮。交互元素还可以包括到与内容项相关联的网页的超链接。例如,交互通知可以包括到与内容项的发布者相关联的网站的超链接。
在一些实施方式中,客户端设备可以存储交互通知,并且可以在进入内容隐藏状态406时传递交互通知。在一些实施方式中,客户端设备可以请求由另一计算设备(诸如远程服务器)传递交互通知。在内容项是网站内的嵌入的媒体文件的实施方式中,客户端设备可以请求托管网站的服务器向客户端设备传递交互通知。在一些实施方式中,托管某些域的服务器可能不能向客户端设备传递通知。因此,客户端设备可以替代地请求另一服务器(例如,托管媒体文件的服务器而不是托管在其上嵌入媒体文件的网站的服务器)传递交互通知。
从内容可见状态404,状态机可以转移到新内容状态402、内容隐藏状态406或跳过按钮可见状态408。例如,如果新内容项开始播放,则状态机转移到新内容状态402,在新内容状态402中解除活动通知并且客户端设备接收与新内容项相关联的新通知。如果内容在处于内容可见状态404时被隐藏,则状态机取决于与内容项相关联的经过的时间转移到内容隐藏状态406或转移到跳过按钮可见状态408。例如,在一些实施方式中,内容项可以在预定时间段之后变得可跳过,但是可以在预定时间段之前不可跳过。因此,如果内容变得隐藏并且经过的时间小于预定阈值,则状态机从内容可见状态404转移到内容隐藏状态406。然而,如果内容变得隐藏并且经过的时间超过预定阈值(即,内容项是可跳过的),则状态机从内容可见状态404转移到跳过按钮可见状态408。
在跳过按钮可见状态408中,解除活动通知并在客户端设备上显示跳过通知。在一些实施方式中,除了允许用户跳过内容项的交互元素之外,跳过通知可以包括上面结合在内容隐藏状态中显示的交互通知描述的任何交互元素。
从内容隐藏状态406,如果新内容开始播放,则状态机能够转移到新内容状态402。如果现有内容变得可见,则状态机能够替代地转移到内容可见状态404,在内容可见状态404中活动通知被解除。如果内容保持隐藏并且没有新内容开始,则当内容项的经过的时间超过预定阈值时,状态机从内容隐藏状态406转移到跳过按钮可见状态408,从而使内容项可跳过。类似地,从跳过按钮可见状态408,如果新内容开始播放,则状态机能够转移到新内容状态402。如果现有内容变得可见,则状态机能够替代地转移到内容可见状态404,在内容可见状态404中活动通知被解除。
图5是根据说明性实施方式的来自能够用于实施图4中所示的状态转移图的通知的队列的电子通知500的示例图形表示。通知500能够包括文本信息502、经过的时间信息504、暂停按钮506、跳过按钮508和更多信息按钮510。在一些实施方式中,通知500能够作为客户端设备的显示屏幕上所示的弹出窗口来传递。应该理解,图5中所示的通知500的格式仅是说明性的。在一些实施方式中,通知500可以包括图5中所示的附加或不同的组件。
文本信息502可以包括与内容项相关的任何基于文本的信息。例如,在一些实施方式中,文本信息502可以包括正在播放的音频内容项的歌曲标题、专辑标题或艺术家名称。在一些其它实施方式中,文本信息502可以包括与创建或发布内容项的人或机构有关的信息。在其它实施方式中,文本信息502可以包括与和内容项相关联的促销有关的信息。例如,文本信息可以包括广告关于与内容项相关联的产品或服务的折扣或其它促销定价的信息。在这样的实施方式中,用户可以选择更多信息按钮510,以便显示允许用户获得广告的折扣的网页。经过的时间信息504能够显示内容项已经被显示的总时间。
暂停按钮506、跳过按钮508和更多信息按钮510中的每一个能够是用户能够例如使用与客户端设备相关联的输入设备来选择的交互元素。选择暂停按钮506可以停止内容项的回放,而选择跳过按钮508可以使得内容项被跳过并且改为启动新的内容项。应该理解,在一些实施方式中,通知可以不包括跳过按钮508。例如,如上所述,内容项可以仅在内容项已经播放的经过的时间超过预定阈值之后才变得可跳过。因此,在经过的时间超过预定阈值之前显示的通知可以不包括跳过按钮508。还应该理解,通知500可以包括图5中未示出的附加或不同的按钮。在一些实施方式中,通知500可以包括静音按钮,其可以由客户端设备的用户选择以静音与内容项相关联的音频。还应该理解,通知500的组件可以以不同的格式显示。例如,在一些实施方式中,通知500可以被显示为沿着其中正在播放内容项的网络浏览器应用的边缘呈现的条(banner)。
经由通知队列维护客户端侧状态机的以下示例实施方式是出于说明性目的而提供的,但不旨在以任何方式限制本公开的范围。相反,以下描述表示一个可能的用例或环境,其中基于通知队列的状态机可能是有帮助的。特别地,随后的实施方式通过减少或消除通常在各种呈现状态之间转移所需的许多客户端-服务器通信而允许显著的带宽和能量节省。
再次参考图4和图5,用户可以在客户端设备上查看网络浏览器应用中的内容项。在一些实施方式中,网络浏览器应用可以被配置为允许同时打开多个标签,并且客户端设备可以被配置为允许多个不同的应用与网络浏览器应用一起同时运行和显示。使用网络浏览器应用,用户可以例如通过选择打开播放嵌入的视频文件的网页的链接来开始新的内容项。能够使用图4中所示的状态转移图400来建模使用网络浏览器应用来播放这样的视频文件。
作为用户启动视频文件的结果,状态转移图能够进入新内容状态402。在此状态下,能够解除活动通知,并且能够在客户端设备处接收新通知。如上所述,新通知可以包括交互通知和跳过通知。在一些实施方式中,通知可以存储在客户端设备上维护的通知队列中。
如果用户通过选择网络浏览器应用的活动标签中的链接来启动视频文件,则视频将可能在客户端设备的显示器上可见。结果,状态转移图从新内容状态402转移到内容可见状态404。在此状态下,再次解除活动通知。通常,当内容项在客户端设备上不可见时,通知可以允许用户与内容项交互。然而,在内容可见状态404中,这是不必要的,因为用户可以直接与可见内容交互,并且因此能够解除与内容相关联的活动通知。在该示例中,用户之后可以采取使视频不可见的动作,诸如选择另一浏览器标签或重叠网络浏览器的另一应用,使得视频变得隐藏或至少部分隐藏。
如上所述,可能存在视频变为可跳过的预定时间阈值。也就是说,用户可以选择在视频播放了预定时间阈值之后跳过视频,但是可以在视频播放预定持续时间之前不选择跳过视频。在该示例中,如果内容在其开始播放之后不久(即,在预定时间阈值已经过去之前)变为隐藏,则状态转移图400转移到内容隐藏状态406。
在内容隐藏状态406中,解除活动通知,并且显示交互通知。在一些实施方式中,交互通知可以与其在客户端设备上的显示基本上同时地从队列中移除。交互通知可以包括上面结合图5描述的通知500的许多特征,诸如暂停按钮506和更多信息按钮510。然而,交互通知可以不包括跳过按钮508,因为视频尚未到达可跳过部分(即,尚未经过预定阈值)。用户可以经由交互通知与视频交互。用户可以选择暂停按钮506以暂停视频,或者可以选择更多信息按钮510以请求与视频的提供者有关的网页。当经过的时间超过预定阈值时,状态转移图400转移到跳过按钮可见状态408。
在跳过按钮可见状态408中,解除活动通知(即,在内容隐藏状态406中显示的交互通知),并且显示跳过通知。在一些实施方式中,跳过通知可以与其在客户端设备上的显示基本上同时地从队列中移除。跳过通知可以包括上面结合图5描述的通知500的许多特征,这些特征包括跳过按钮508,跳过按钮508能够允许用户经由跳过通知跳过视频。如果视频再次变为可见,则状态转移图400转移回状态404。如果新内容项开始播放(例如,如果用户选择跳过按钮,则使新内容项开始),则状态转移图400转移回新内容状态402。
因此,通过使用客户端侧通知队列来存储状态机的当前状态的表示(例如,标识内容项的回放和可见性),服务器不需要为客户端设备维护单独的状态机。这可以节省服务器上的存储器,以及减少设备间通信所需的带宽。另外,这可以为可扩展性提供实质性益处:因为服务器不需要为每个客户端设备维护状态机,所以服务器可以同时和异步地服务数千、数万、数十万或数百万个客户端设备而无需在存储器中维护相应的数千、数万、数十万或数百万个状态机。这可以类似地减少服务器上的处理器负载,以及减少服务器功耗或余热生成。
本文描述的主题和操作能够以数字电子电路实施,或者以计算机软件、固件或硬件实施,包括本说明书中公开的结构及其结构等同物,或者它们中的一个或多个的组合。本说明书中描述的主题能够实施为编码在计算机存储介质上、用于由数据处理装置运行或控制数据处理装置的操作的一个或多个计算机程序,例如计算机程序指令的一个或多个模块。程序指令能够编码在人工生成的传播信号上,例如机器生成的电信号、光信号或电磁信号,该信号被生成以编码用于传输到合适的接收机装置以供数据处理系统或装置运行的信息。计算机存储介质能够是或者被包括在计算机可读存储设备、计算机可读存储基板、随机或串行存取存储器阵列或设备、或者它们中的一个或多个的组合中。虽然计算机存储介质不是传播信号,但是计算机存储介质能够是以人工生成的传播信号编码的计算机程序指令的源或目的地。计算机存储介质也能够是或者被包括在一个或多个单独的物理组件或介质(例如,多个CD、磁盘或其它存储设备)中。本说明书中描述的操作能够被实施为由数据处理装置对存储在一个或多个计算机可读存储设备上或从其它源接收的数据执行的操作。
对于本文所讨论的系统收集关于用户的个人信息或者可以利用个人信息的情况,可以向用户提供控制可以收集个人信息(例如,关于用户的社交网络的信息、社交行为或活动、用户的偏好或用户的位置)的程序或特征的机会,或者控制是否或如何从内容服务器或其它数据处理系统接收可能与用户更相关的内容的机会。此外,某些数据可以在存储或使用之前以一种或多种方式匿名化,使得在生成参数时移除个人可标识信息。诸如,用户的身份可以是匿名的,使得不能为用户确定个人可标识信息,或者可以在获得位置信息的地方(诸如,城市、邮政编码或州级别)一般化用户的地理位置,使得无法确定用户的特定位置。因此,用户可以控制如何收集关于他或她并由内容服务器使用的信息。
术语“数据处理系统”或“计算装置”、“模块”、“引擎”或“组件”包括用于处理数据的装置、设备和机器,包括例如可编程处理器、计算机、片上系统或者前述的多个或组合。装置能够包括专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。除了硬件之外,装置还能够包括为所讨论的计算机程序创建运行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、跨平台运行环境、虚拟机或其组合的代码。装置和运行环境能够实现各种不同的计算模型基础结构,诸如网络服务、分布式计算和网格计算基础结构。客户端设备330或其组件能够包括或共享一个或多个数据处理装置、系统、计算设备或处理器。
计算机程序(也称为程序、软件、软件应用、应用、脚本或代码)能够以任何形式的编程语言编写,包括编译或解释语言、声明或过程语言,并且能够以任何形式部署,包括作为独立程序或作为模块、组件、子例程、对象或适用于计算环境的其它单元。计算机程序能够对应于文件系统中的文件。计算机程序能够存储在保存其它程序或数据的文件的一部分中(例如,存储在标记语言文档中的一个或多个脚本),存储在专用于所讨论的程序的单个文件中,或者存储在多个协调文件中(例如,存储一个或多个模块、子程序或代码部分的文件)。能够部署计算机程序以在一个计算机上或者在位于一个站点上或分布在多个站点上并由通信网络互连的多个计算机上运行。
本说明书中描述的过程和逻辑流程能够由运行一个或多个计算机程序的一个或多个可编程处理器(例如,客户端设备110的组件)运行,以通过对输入数据进行操作并生成输出来执行动作。过程和逻辑流程也能够由专用逻辑电路执行,并且装置也能够被实施为专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。
本文描述的主题能够在包括后端组件,或者包括中间件组件,或者包括前端组件,或者一个或多个这样的后端、中间件或前端组件的组合的计算系统中实施,该后端组件例如作为数据服务器,该中间组件例如是应用服务器,该前端组件例如是具有用户能够通过其与本说明书中描述的主题的实施方式交互的网络浏览器或者图形用户界面的客户端计算机。系统的组件能够由任何形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(Local Area Network,LAN)和广域网(Wide Area Network,WAN)、互联网络(例如,因特网)和对等网络(例如,点对点对等网络)。
环境300能够包括客户端和服务器。客户端和服务器通常彼此远离,并且典型地通过通信网络(例如,网络305)进行交互。客户端和服务器的关系借助于在各个计算机上运行并且彼此具有客户端-服务器关系的计算机程序而产生。在一些实施方式中,服务器向客户端设备传输数据(例如,HTML页面)(例如,用于向与客户端设备交互的用户显示数据以及从其接收用户输入的目的)。能够在服务器处从客户端设备接收在客户端设备处生成的数据(例如,用户交互的结果)(例如,由客户端设备330从内容发布者360或服务器370接收)。
虽然在附图中以特定顺序描绘了操作,但是不需要以所示的特定顺序或按顺序次序来执行这些操作,并且不需要执行所有示出的操作。本文描述的动作能够以不同的顺序执行。
在所有实施方式中,各种系统组件的分离不必需要分离,并且描述的程序组件能够被包括在单个硬件或软件产品中。例如,媒体播放器320、通知API 325或网络浏览器327能够是单个模块、具有一个或多个处理电路的逻辑设备、或者客户端设备330的一个或多个服务器的一部分。
现在已经描述了已经通过示例的方式呈现的一些说明性实施方式,显而易见的是,前述内容是说明性的而非限制性的。特别地,尽管本文呈现的许多示例涉及方法动作或系统元素的特定组合,但是那些动作和那些元素可以以其它方式组合以达到相同的目标。结合一个实施方式所讨论的动作、元素和特征不旨在从其它实施方式或实施方式中的类似角色中排除。
本文使用的措辞和术语是出于描述的目的,并且不应该被视为限制。本文中“包括”、“包含”、“具有”、“含有”、“涉及”、“特征在于”、“表征为”及其变形的使用意味着包括其后列出的项目、其等同物和附加项目、以及由其后专门列出的项目组成的替代实施方式。在一个实施方式中,本文描述的系统和方法包括一个描述的元素、动作或组件,多于一个或所有描述的元素、动作或组件的每个组合。
以单数形式提及的本文中的系统和方法的实施方式或元素或动作的任何引用也可以包含包括多个这些元素的实施方式,并且本文中的任何实施方式或元素或动作的任何复数引用也可以包含仅包括单个元素的实施方式。单数或复数形式的引用并不旨在将当前公开的系统或方法、它们的组件、动作或元素限制为单个或多个配置。对基于任何信息、动作或元素的任何动作或元素的引用可以包括其中动作或元素至少部分地基于任何信息、动作或元素的实施方式。
本文公开的任何实施方式可以与任何其它实施方式或实施例组合,并且对“实施方式”、“一些实施方式”、“替代实施方式”、“各种实施方式”、“一个实施方式”等的引用不一定是相互排斥的,并且旨在指示结合实施方式描述的特定特征、结构或特性可以被包括在至少一个实施方式或实施例中。本文使用的这些术语不一定都指的是相同的实施方式。任何实施方式可以以与本文公开的方面和实施方式一致的任何方式包含或排他地与任何其它实施方式组合。
对“或”的引用可以被解释为包含性的,使得使用“或”描述的任何术语可以指示单个、多于一个和所有描述的术语中的任何。对术语的联合列表中的至少一个的引用可以被解释为包含性的“或”以指示单个、多于一个和所有描述的术语中的任何。例如,对“‘A’和‘B’中的至少一个”的引用可以包括仅‘A’、仅‘B’以及‘A’和‘B’两者。
在附图、具体实施方式或任何权利要求中的技术特征后面附有参考标记的情况下,已经包括附图标记以增加附图、具体实施方式和权利要求的可理解性。因此,参考标记和它们的缺失都不会对任何要求包括的元素的范围产生任何限制影响。
在不脱离其特性的情况下,本文描述的系统和方法可以以其它特定形式体现。前述实施方式是说明性的而非限制描述的系统和方法。因此,本文描述的系统和方法的范围由所附权利要求而不是前面的描述指示,并且落入权利要求的等同物的含义和范围内的变化被包含在其中。

Claims (20)

1.一种经由通知队列维护客户端状态机的方法,包括:
由计算设备上运行的应用从服务器接收内容项的标识、第一通知和第二通知;
由所述应用将所述第一通知和所述第二通知存储在所述计算设备的存储器中的通知队列中;
响应于在所述计算设备上运行的第二应用对内容项的显示,由所述应用确定所述计算设备处于第一状态;
响应于内容项的一部分在所述计算设备的显示屏幕上不可见,由所述应用确定所述计算设备处于第二状态;
由所述应用在所述计算设备的显示屏幕上显示所述第一通知,所述第一通知从所述通知队列中移除;
响应于计时器的到期,由所述应用确定所述计算设备处于第三状态;
响应于所述计算设备处于第三状态的确定,由所述应用解除所述第一通知;以及
由所述应用在所述计算设备的显示屏幕上显示所述第二通知,所述第二通知从所述通知队列中移除。
2.如权利要求1所述的方法,其中,所述内容项包括视频内容。
3.如权利要求2所述的方法,还包括:响应于所述第二应用对所述内容项的显示,将所述计时器设置为与视频内容的不可跳过部分的持续时间相对应的预定值。
4.如权利要求3所述的方法,其中,所述第一通知包括第一用户界面元素,所述方法还包括:
在所述计算设备处于第二状态时,由所述应用检测与所述第一用户界面元素的交互;以及
响应于检测到与所述第一用户界面元素的交互,激活包括视频内容的第二应用的窗口。
5.如权利要求2所述的方法,其中,所述第一通知包括第二用户界面元素,所述方法还包括:
由所述应用检测与所述第二用户界面元素的交互;以及
响应于检测到与所述第二用户界面元素的交互,由所述应用向所述第二应用提供暂停视频内容的命令。
6.如权利要求2所述的方法,其中,所述第一通知包括第三用户界面元素,所述方法还包括:
由所述应用检测与所述第三用户界面元素的交互;以及
响应于检测到与所述第三用户界面元素的交互,由所述应用向所述第二应用提供传输对第二内容项的请求的命令。
7.如权利要求2所述的方法,其中,所述第二通知包括第四用户界面元素,所述方法还包括:
由所述应用检测与所述第四用户界面元素的交互;以及
响应于检测到与所述第四用户界面元素的交互,由所述应用向所述第二应用提供跳过视频内容的剩余部分的命令。
8.如权利要求1所述的方法,其中,所述通知队列存储第三通知,所述方法还包括:响应于所述计算设备处于第一状态的确定,由所述应用从所述队列中移除所述第三通知。
9.如权利要求1所述的方法,其中,由所述应用在所述计算设备的显示屏幕上显示所述第一通知还包括:
由所述应用向第二服务器发送远程过程调用(RPC),RPC包括标识所述计算设备并使所述第二服务器向所述计算设备发送所述第一通知的信息。
10.如权利要求1所述的方法,还包括:与所述内容项的显示基本上同时地激活所述计时器。
11.一种经由通知队列维护客户端状态机的系统,包括:客户端设备,其包括运行通知应用、第二应用和计时器的处理器;包括通知队列的存储器设备;以及通信地耦合到服务器的网络接口;
其中,所述网络接口被配置为从所述服务器接收内容项的标识、第一通知和第二通知;
其中,所述通知应用被配置为:
将所述第一通知和所述第二通知存储在所述通知队列中,
响应于所述第二应用对内容项的显示,确定所述客户端设备处于第一状态,
响应于内容项的一部分在所述客户端设备的显示屏幕上不可见,确定所述客户端设备处于第二状态,
在所述客户端设备的显示屏幕上显示所述第一通知,所述第一通知从所述通知队列中移除,
响应于所述计时器的到期,确定所述客户端设备处于第三状态,
响应于所述客户端设备处于第三状态的确定,解除所述第一通知,以及
在所述客户端设备的显示屏幕上显示所述第二通知,所述第二通知从所述通知队列中移除。
12.如权利要求11所述的系统,其中,所述内容项包括视频内容。
13.如权利要求12所述的系统,其中,所述计时器配置有与所述视频内容的不可跳过部分相对应的预定持续时间。
14.如权利要求13所述的系统,其中,所述第一通知包括第一用户界面元素;并且其中所述通知应用还被配置为:
在所述客户端设备处于第二状态时,检测与所述第一用户界面元素的交互,以及
响应于检测到与所述第一用户界面元素的交互,激活包括所述视频内容的第二应用的窗口。
15.如权利要求12所述的系统,其中,所述第一通知包括第二用户界面元素;并且其中所述通知应用还被配置为:
检测与所述第二用户界面元素的交互;以及
响应于检测到与所述第二用户界面元素的交互,提供暂停所述视频内容的命令。
16.如权利要求12所述的系统,其中:
所述第一通知包括第三用户界面元素;
所述通知应用还被配置为检测与所述第三用户界面元素的交互;以及
所述网络接口还被配置为响应于检测到与所述第三用户界面元素的交互,传输对第二内容项的请求。
17.如权利要求12所述的系统,其中,所述第二通知包括第四用户界面元素;并且其中所述通知应用还被配置为:
检测与所述第四用户界面元素的交互;以及
响应于检测到与所述第四用户界面元素的交互,提供跳过视频内容的剩余部分的命令。
18.如权利要求11所述的系统,其中,所述通知队列存储第三通知,所述通知应用还被配置为响应于所述客户端设备处于所述第一状态的确定,从所述通知队列中移除所述第三通知。
19.如权利要求11所述的系统,其中,所述网络接口还被配置为向第二服务器发送远程过程调用(RPC),RPC包括标识所述客户端设备并使所述第二服务器向所述客户端设备发送所述第一通知的信息。
20.如权利要求11所述的系统,其中,所述计时器还被配置为与所述内容项的显示基本上同时地激活。
CN201780053359.7A 2016-12-05 2017-01-27 用于远程状态机的无状态维护的系统和方法 Active CN109791663B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201662430331P 2016-12-05 2016-12-05
US62/430,331 2016-12-05
PCT/US2017/015457 WO2018106271A1 (en) 2016-12-05 2017-01-27 Systems and methods for stateless maintenance of a remote state machine

Publications (2)

Publication Number Publication Date
CN109791663A true CN109791663A (zh) 2019-05-21
CN109791663B CN109791663B (zh) 2023-12-26

Family

ID=58057250

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780053359.7A Active CN109791663B (zh) 2016-12-05 2017-01-27 用于远程状态机的无状态维护的系统和方法

Country Status (4)

Country Link
US (2) US11573843B2 (zh)
EP (1) EP3485449B1 (zh)
CN (1) CN109791663B (zh)
WO (1) WO2018106271A1 (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1613009A1 (en) * 2004-06-30 2006-01-04 Microsoft Corporation When-Free Messaging
EP1986086A1 (en) * 2006-02-13 2008-10-29 International Business Machines Corporation Control device, control program, and control method for controlling display of display device for displaying superimposed windows
CN105453048A (zh) * 2013-06-13 2016-03-30 微软技术许可有限责任公司 管理并使用移动设备上的远程应用
US9426519B1 (en) * 2014-06-05 2016-08-23 Google Inc. Synchronized advertisement playback across navigation experiences and transitional states

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6311206B1 (en) * 1999-01-13 2001-10-30 International Business Machines Corporation Method and apparatus for providing awareness-triggered push
US7877766B1 (en) * 2000-05-04 2011-01-25 Enreach Technology, Inc. Method and system of providing a non-skippable sub-advertisement stream
US7240212B2 (en) * 2003-02-18 2007-07-03 Ubs Painewebber, Inc. Method and system for secure alert messaging
US9425988B2 (en) * 2007-06-15 2016-08-23 Blackberry Limited Device for communicating in multiple modes using multi-mode applications
US8713608B2 (en) * 2007-07-12 2014-04-29 At&T Intellectual Property I, Lp System for presenting media services
US8886787B2 (en) * 2009-02-26 2014-11-11 Microsoft Corporation Notification for a set of sessions using a single call issued from a connection pool
US8788606B2 (en) * 2010-04-09 2014-07-22 Weather Decision Technologies, Inc. Multimedia alerting
US8468056B1 (en) * 2010-04-21 2013-06-18 Google Inc. Ad skip feature for characterizing advertisement effectiveness
CA2757527A1 (en) * 2010-11-12 2012-05-12 Research In Motion Limited Motion gestures interface for portable electronic device
US9049494B2 (en) * 2011-01-31 2015-06-02 Cbs Interactive, Inc. Media playback control
US8554855B1 (en) * 2011-06-14 2013-10-08 Urban Airship, Inc. Push notification delivery system
US8838808B2 (en) * 2011-09-30 2014-09-16 Apple Inc. Asynchronous communication in web applications
US9479387B2 (en) * 2012-06-22 2016-10-25 Salesforce.Com, Inc. Methods and systems for priority-based notifications for mobile devices
US9780994B2 (en) * 2013-07-18 2017-10-03 International Business Machines Corporation Notification normalization
US20150026715A1 (en) * 2013-07-22 2015-01-22 Visible Measures Corp. In-stream video advertising using a user-choice-based ad unit
US10021698B2 (en) * 2013-10-30 2018-07-10 Qwasi, Inc. Systems and methods for delivering messages via SMPP bridge for multiple delivery channels
EP3127060A1 (en) * 2014-03-31 2017-02-08 PCMS Holdings, Inc. System and method for updating notifications across devices and applications
US9942177B1 (en) * 2015-03-22 2018-04-10 SYNQQ, Inc. Method and system for real-time data updates
US10627976B2 (en) * 2015-09-18 2020-04-21 Microsoft Technology Licensing, Llc Smart notifications

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1613009A1 (en) * 2004-06-30 2006-01-04 Microsoft Corporation When-Free Messaging
EP1986086A1 (en) * 2006-02-13 2008-10-29 International Business Machines Corporation Control device, control program, and control method for controlling display of display device for displaying superimposed windows
CN105453048A (zh) * 2013-06-13 2016-03-30 微软技术许可有限责任公司 管理并使用移动设备上的远程应用
US9426519B1 (en) * 2014-06-05 2016-08-23 Google Inc. Synchronized advertisement playback across navigation experiences and transitional states

Also Published As

Publication number Publication date
US20210373976A1 (en) 2021-12-02
CN109791663B (zh) 2023-12-26
EP3485449A1 (en) 2019-05-22
EP3485449B1 (en) 2023-06-21
US20230121242A1 (en) 2023-04-20
US11573843B2 (en) 2023-02-07
WO2018106271A1 (en) 2018-06-14

Similar Documents

Publication Publication Date Title
US11064267B2 (en) Systems and methods for providing interactive streaming media
US20200218554A1 (en) Systems and methods for providing interactive streaming media
US20210168459A1 (en) Video playing control method and apparatus, and video playing system
US20190188450A1 (en) Systems, Methods and Apparatuses for Deployment of Virtual Objects Based on Content Segment Consumed in a Target Environment
US20190102946A1 (en) Systems, methods and apparatuses for deployment and targeting of context-aware virtual objects and behavior modeling of virtual objects based on physical principles
Davies et al. Pervasive displays: understanding the future of digital signage
CA2945936C (en) Platform for providing customizable user activity experiences
US20180011720A1 (en) Embedding non-blocking help components in a display page using discovery drawer feature cues
CN105027112B (zh) 用于页面个性化的方法
US9665965B2 (en) Video-associated objects
US20080055306A1 (en) Virtual three-dimensional environment
WO2018085590A1 (en) Systems and methods for validating interaction with third-party interactive media
US20200257435A1 (en) Dynamically Updating User Interface Elements
CN105493018A (zh) 用于触控板操纵和双击缩放的独立命中测试
Capilla et al. Usability implications in software architecture: The case study of a mobile app
Hawkes Simulation technologies
CN109791663A (zh) 用于远程状态机的无状态维护的系统和方法
US20220351633A1 (en) Learner engagement engine
JP5197705B2 (ja) 情報を表示する端末、方法及びプログラム
CN109074360A (zh) 使用多个线程减少下载电子资源的延迟
Deb From'Groundhog Day'to'Yesterday,'the Twists We Can't Explain
Richter et al. IOS Components and Frameworks: Understanding the Advanced Features of the IOS SDK
Galas 'Money Monster'gets a speedy score
KHAMDAMOVA Supporting Collaborative Multi-User Interactions in a Video Surveillance Application Using Microsoft Tabletop Surface
Chan et al. A Semiotics Based Multi-Agent System Architecture

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