本申请要求于2014年12月16日递交的美国非临时申请No.14/572,215、名称为“Continuing an application Session on a Different Device(在不同设备上延续应用会话)”的优先权,上述申请通过引用全部结合于此。
具体实施方式
在下面的详细说明中,通过示例的方式列出了大量的具体细节从而提供对相关教导的透彻理解。然而,对于本领域技术人员应当易于理解的是,本教导可以无需这些细节而实现。在其他情境中,出于避免不必要的模糊本教导的方面的目的,众所周知的方法、处理、组件、和/或电路已经在相对高的层级中以无细节的方式被描述。
本公开总体涉及针对把正在一个设备上执行或先前在该设备上执行的应用的会话延续到另一个设备上的系统、方法、以及其他实现方式。本文所公开的系统、方法、以及其他实现方式,可以通过利用一个或多个计算设备(例如,移动电话、个人计算机等等)以及(有线或无线)网络通信而作为指定的或联网的系统来实现。例如,本公开涉及在一个用户设备(例如台式计算机)上当前活动的或先前活动的web浏览器会话到另一个用户设备(例如,平板计算机)的无缝延续。
在本公开的上下文中,安装在设备上的应用的“会话”可以被定义为对于设备上的应用的执行和/或用户活动的一个或多个时间段。例如,对于web浏览会话,会话可以与一个或多个时间段相关,在该一个或多个时间段中:(1)在设备上所安装的web浏览器被启动或激活,(2)一个或多个网站通过web浏览器被访问(基于它们各自的网址),(3)(一个或多个)网站的内容经过web浏览器(例如,在web浏览器的一个或多个标签上)被呈现给用户,(4a)网站内容被消费和/或操作,(4b)web浏览器的一个或多个功能被激活(例如,浏览器的滚动条被操作以在纵向和/或横向上移动网页),(5)web浏览器被关闭,和/或其他操作。尽管对“会话”的以上描述涉及与web浏览器的交互,但该描述不意在局限浏览器的使用。与安装在设备上的其他应用的相似的交互和对所述其他应用的执行可以构成那些相应应用的会话。
相应地,延续一个设备的web浏览会话到另一个设备的示例可以涉及通过在一个设备上的浏览器以相同的呈现形式(例如,在网页的相同滚动位置)来呈现相同的内容(例如,网页),该内容在另一个设备上的另一个浏览器正在被提供或先前被提供。本文所描述的涉及应用的用户会话的延续的技术可以允许用户当从一个设备转换到另一个设备时,无缝地或轻易地延续(与特定的应用相关的)任务而无需记住或在另一个设备上手动输入关于应用的细节。例如,当用户结束在手机上的浏览器会话和/或决定切换到台式计算机时,用户可能正在阅读(或当时正在阅读)智能手机的浏览器上所呈现的网页上的文章,并且已经向下滚动到假设网页的50%。
之后,用户可能希望使用台式计算机上的浏览器继续阅读网页文章,但是可能没有记住手机上的浏览器会话的任何细节(例如,确切的网址,先前的会话在网页上哪个位置结束等等)。基于本公开的教导,用户可以在台式计算机的浏览器上请求确切的最后的手机浏览器会话(而无需提供关于最后的浏览器会话的任何细节),并且可以在台式计算机的浏览器上在与最后手机浏览器会话结束的位置相同的网页位置处被呈现相同的网页文章。这样,用户可以能够保持横跨多个设备的一个或多个应用会话的同步,并且如所需的,则无缝地延续(一个或多个的)应用会话,来以与最后访问的一个或多个先前的设备或先前的应用会话相同的呈现形式与相同的内容进行交互。
图1示出描绘了使得应用的用户会话从一个设备延续到另一个设备的实施例的宽泛概述的系统100。如所示,系统100包括第一设备105、第二设备110、会话延续服务器120。第一和第二设备105、110各自是可以由一个或多个用户访问的计算设备,例如,个人计算机、平板计算机、智能手机、可穿戴计算设备、和/或其他计算设备。第一和第二设备105、110可以是具有相似的或不同的构成因子的设备,并且可以包括(并且是根据以下内容可操作)相同的/相似的操作系统或不同的操作系统(例如,Google、Android操作系统、Apple IOS或OS X操作系统、用于台式电脑或移动设备的Microsoft Windows操作系统等等)。第一或第二设备105、110可以是不同的、分开的设备,或者可以是至少与会话延续服务器120通信地相关联的单独的设备。此外,第一和第二设备105、110各自可以具有在其上所安装的一个或多个应用(例如,相应地,应用106、111)。应用可以例如包括但不局限于浏览器、电子邮件应用、文字处理应用、记录应用、搜索引擎相关应用、在线零售商专用应用、移动“app”和/或其他应用。应用106、111在它们的源或开发者方面可以不同,但是具有至少共同功能,应用106的会话(在设备105上)基于该共同功能可以被同步到(设备110上的)应用111并且在应用111上延续,反之亦然。例如,应用106、111两者可以都是图形web浏览器,但是它们中的一个可能是IE浏览器而另一个可能是火狐浏览器。
所安装的(一个或多个)应用中的一个或多个可以被预先设计或预配置(例如,基于预先集成的JavaScript代码等等)来追踪应用的用户活动,以及持续地收集该应用的一个或多个状态。所安装的应用的一个或多个(例如应用106)还可以被预先设计或预先配置来在设备105的本地存储单元处储存所收集的关于应用(例如,在设备105处)的用户活动和状态信息的细节,并且还将这些所收集的细节和状态信息从设备105传送到会话延续服务器120用于处理和储存(在存储单元125处)。例如,在应用106是web浏览器的情境中,当用户在web浏览器106中打开网页时,与网页或web浏览器106相关联的JavaScript(JS)代码生成到会话延续服务器120的连接。这个连接可以用Web Sockets、JSONP等等被做出。此外,JS代码可以向服务器120发送用户标识信息以及会话信息用于储存,该会话信息包括在web浏览器106中被打开的那个网页的统一资源定位符(URL)。随着用户滚动(纵向地或横向地)web浏览器106中的网页,当前网页位置改变,并且JS代码向会话延续服务器120持续发送关于新的网页位置的更新(作为相同的会话信息的部分),例如,关于所滚动的网页百分比。其他数据可以以关键值对(key-value pair)的形式可选择地被发送到服务器120。然而,如果用户离开当前网页并且加载新的网页,则新的会话被发起并且在web浏览器和服务器120之间做出新的连接用于记录关于该新的会话的信息。
在请求设备110处的(一个或多个)应用(例如,应用111)可以被配置来请求和激活由会话延续服务器120所提供的服务(例如,通过访问与会话延续服务器120相关的预定义的URL)来在设备110的应用111上延续(在设备105处发起的)应用106的会话。相应地,响应于对于所延续的会话的请求(基于预定义的URL),会话延续服务器120可以向设备110传送(例如,在设备105处发起的)应用106的一个或多个先前的会话的细节和状态信息,使得应用111可以最后针对应用106所捕捉的呈现提供内容。
例如,为了请求应用的延续的浏览器会话,设备110可以首先访问与会话延续服务器120相关的预定义的URL(例如,通过在浏览器中输入“last.yahoo.com”)。响应于来自设备110的对于延续浏览器会话的请求,会话延续服务器120可以向设备110传送针对web浏览器106的最后会话所捕捉的(一个或多个)网址和关于(一个或多个)网页的(一个或多个)位置的细节(例如,关于web浏览器106中所滚动的网页的百分比)。基于从服务器120接收的会话信息,相对于应用106的最后会话,web浏览器111可以在设备110的相同的网页滚动位置处访问和显示相同的网页。这样,本文所讨论的技术可以允许用户在设备上浏览网页,以及在与用户先前离开的会话相同的位置处在相同网页延续那个浏览会话。通过访问(与会话延续服务器120相关的)特定的预先指定的URL,用户可以能够请求在另一个设备上、在同一设备上的不同浏览器上、或在同一设备的同一浏览器的另一个标签处加载先前的浏览器会话。
在实现方式中,所记录的用户活动和所收集的与浏览器应用相关的状态可以包括例如但不局限于以下细节:浏览器类型(IE浏览器、Safari、Chrome、Firefox等等)、正用浏览器被访问的或最后被访问的网页的网址、在一段时间内被访问的网页的web历史、关于所访问的(一个或多个的)网页的时间戳信息、cookie信息、用搜索引擎所递交的(一个或多个)搜索查询、最后所访问的网页的呈现格式(例如,关于在特定的设备屏幕上的特定的浏览器上滚动的网页的百分比方面的网页位置信息、以及网页文本的字体、字体大小、字体颜色等等)、执行浏览器的用户设备的类型(台式电脑、平板电脑等等)、以及用户设备的操作系统的类型。针对除了浏览器应用之外的应用的与所记录的用户活动和所收集的状态有关的细节可以包括相似的与内容相关的信息和与内容的呈现相关的信息。
在一些实现方式中,所延续的应用会话的技术包括将每个被(例如,在设备105处)追踪、被(例如,在服务器120处)储存、并且被(例如,从设备110)请求延续的应用会话与涉及设备105、110和服务器120的特定用户的特定用户标识相关联。在该方面,用户可能需要在会话延续服务器120处创建账户,例如使用储存在服务器120处的具体的用户名和密码(和/或其他凭证)。在一些实现方式中,如果用户(在服务器105处)希望具有针对(在服务器120处)所追踪、收集、或存储的一个或多个应用的会话信息,使得用户可以能够之后获取会话信息来在另一个设备110(或应用的另一个实例)处延续应用会话,那么用户可以首先需要用有效的预先设定的凭证来在服务器120处登录账户(经由设备105/110)。
成功登陆后,服务器120可以通知设备105、110:适当被配置的应用(例如,应用106、111)可以开始收集和传输会话信息到服务器120用于处理和储存,和/或可以请求所储存的会话信息来加载先前的应用会话。会话延续服务器120可以被配置来在数据库中的具体的用户简档下储存会话信息,具体的用户简档是针对在与相应的应用106、111进行交互时登录设备105或设备110的用户的。
在一些实现方式中,当用户登录应用106、111时,用户可以能够用与同一用户账户相关联的对应的应用来查看关于其他设备的所储存的信息。用户可查看的关于其他设备的信息包括其他设备的设备类型和/或设备名称。设备名称可以由用户(当在服务器120处创建账户时)指定,并且在用户具有相同类型的多个设备(例如,多个台式电脑)的情境中,设备名称将被用来区分这些设备。在每个设备105、110上,可查看的信息可以包括查看过的网页、浏览器历史、搜索查询历史、和/或其他特定于应用的用户活动信息。基于从服务器120接收的会话信息,当用户用他的/她的账户凭证登录设备105时,同一用户可以在设备110上加载在设备105上的最后访问的网页。此外或替代加载最后的网页,用户可以在设备110上查看和加载来自设备105的最后的搜索查询。
在一些实现方式中,应用106、111是针对台式计算机、平板计算机、移动设备、游戏机、和/或电视机的客户开发的应用。应用106、111可以是浏览器插件/扩展、TV小工具(widget)、和/或全功能web浏览器应用的形式。应用106、111的每个版本可以被适用于与该应用被安装于的设备105、110相兼容的方式来显示或提供内容(例如,网页等等)。因此,应用106、111可以将所查看的内容适合于不同屏幕尺寸和纵横比、以及由相应的设备所要求的输入方法。
在一些实施例中,例如,拥有设备105、110的用户可以在这些设备之间移动以及在这些设备之间同步先前的应用状态(例如,浏览会话)。例如,用户可以在移动电话105上开始浏览会话,并且在到达工作地点时,在工作计算机110上延续该浏览会话(反之亦然)。基于使用会话延续服务器120的浏览会话的同步允许用户在多个地点的多个设备间保持有效的单独的浏览会话(例如,用同一URL和网页位置信息)。
图2(a)、图2(b)是根据本公开的一个或多个实施例的不同的系统配置的高层级的描绘,其中一个或多个应用会话延续技术可以被实现于所述系统配置中。在图2(a)中,示例性系统150包括用户210(例如,该用户使用设备105、110)、网络220、一个或多个发布者门户或发布者(或内容提供者)230、一个或多个广告商240、会话延续服务器120、内容源260(包括内容源1 260-a、内容源2 260-b、...、内容源n 260-c)、以及系统运营商/管理员280。
会话延续服务器120可以允许用户210的设备105、110处的应用106、111彼此储存和同步针对在这些设备上的应用106、111的一个或多个会话的会话信息。在一些实施例中,服务器120从用户设备接收和储存会话信息,该会话信息关于在用户设备上正被执行并且由特定用户(具有特定的用户标识)访问的特定应用的会话。在一些实施例中,服务器120基于所访问的预定义的URL从(由具有同一用户标识的用户所操作的)另一用户设备接收在该另一设备上延续应用会话的请求并且对该请求进行响应。在这个方面,与(一个或多个)适合的发布者230相联系的服务器120向另一设备提供会话信息和与会话信息相关的内容以用于应用的延续会话。在一些实施例中,设备105、110的应用可以独立于发布者230而直接与服务器120通信以同步应用会话。
网络220可以是单个的网络或不同网络的组合。例如,网络可以是局域网(LAN)、广域网(WAN)、公共网络、私有网络、专有网络、公共电话交换网络(PSTN)、互联网、无线网络、蜂窝网络、虚拟网络、或以上各项的任何组合。网络还可以包括各种网络接入点,例如,诸如基站或互联网交换点220-a,...,220-b之类的有线的或无线的接入点,数据源经过所述接入点可以连接到网络使得经由网络传输信息。在一个实施例中,网络220可以是在线广告网络或广告网络,该网络连接广告商240到发布者230或希望托管广告的网站/移动应用。广告网络的功能是聚合发布者所供应的广告空间并且将它和广告商的需求匹配。广告网络可以是电视广告网络、印刷广告网络、在线(互联网)广告网络、或移动广告网络。
用户210可以具有不同的类型,例如:经过上文所讨论的设备105、110(例如,包括台式连接(110-d))连接到网络的用户;经过无线连接(诸如经过膝上电脑(110-c)、手持型设备(105-a)、或在汽车中的内置设备(105-b))连接到网络220的用户。在一个实施例中,(一个或多个)用户210可以被连接到网络220并且能够经过无线技术和在用户可穿戴设备(例如,眼镜、手表等等)中所实现的相关的操作系统和接口来访问在线内容(由发布者230所提供)并且与在线内容交互。例如操作设备105-a的用户可以经由网络220向发布者230发送对于在线内容(例如,网页)的请求和/或搜索查询,,并且通过网络220接收内容和(广告商240所提供的)一个或多个广告信息/广告。在线内容和广告可以用特定的UI布局被提供给并渲染在用户设备105-a(例如,它的显示器)上,该UI布局包括具有特定的预先配置的值的多个不同的UI元件(例如,字体大小、字体颜色、背景颜色等等)。设备105-a处的用户可以点击或以其他方式与内容进行交互和/或选择(一个或多个)广告查阅和/或购买所广告的(一个或多个)产品或(一个或多个)服务。在本公开的上下文中,关于针对特定用户的特定的应用会话中所呈现的内容的细节(例如,URL、位置等等)可以从该设备被收集和发送到服务器120以用于处理、同步、和储存。
在一些实施例中,每个用户210可以被要求在会话延续服务器120处(用独特的登录凭证)创造在线/web账户以利用服务器120所提供的会话延续/同步服务。相应地,如果用户210希望使得设备105处的一个或多个应用的会话信息被追踪、被收集、并且被储存(在服务器120处),从而使得用户210可以能够之后获取会话信息来在其他设备110处(或在服务器105的应用的另一个实例中)延续应用会话,那么用户210可以首先需要用有效的预先设定的凭证在服务器120处登录账户。成功登陆后,服务器120可以在用户210的设备处通知用户210:所安装的应用(例如,浏览器、电子邮件客户端应用、移动app等等)可以开始收集会话信息并且传输会话信息到服务器120以用于处理和储存,和/或可以请求所储存的会话信息以加载先前的应用会话。所有的新的会话信息或对于会话信息的更新都可以被储存在与会话延续服务器120相关联的数据库处,其中,该数据库在针对每一个用户210所创建的独特的“用户简档”(或用户210的一个独特的标识)下储存会话信息。换言之,在会话延续服务器120(或它的数据库)中所储存的会话信息可以基于用户210的独特的用户标识被编入索引,并且使得会话信息可以相对于(或直接关联于)用户210的独特的用户标识而被储存、被更新、或被获取。
发布者230可以对应具有发布业务的实体(无论是个人、公司、或组织),例如电视台、报商、网页拥有者、在线服务提供者、或游戏服务商。例如,关于在线或移动的网络,发布者230可以是例如USPTO.gov的组织、例如CNN.com和Yahoo.com的内容提供者、或例如Twitter或博客的内容供给源。在一个实施例中,发布者230包括经过(例如,安装在智能手机、平板设备等等上的)移动应用开发、支持和/或提供在线内容的实体。在一个示例中,发送给用户210的设备105、110的内容可以由发布者230基于由内容源260提供的或从内容源260获取的数据来生成或格式化。内容源可以对应某实体,内容最初被生成和/或储存在该实体中。例如,小说可以被最初打印在杂志上,但是之后被在线发表在由发布者所控制的网站上。在示例的联网环境150中的内容源260包括多个内容源260-1、260-2、...、260-3。
由发布者230所提供的在线内容(包括广告)与一些数量的UI要素相关联,该UI要素定义在线内容在用户设备110上的总体呈现。例如,与网站、网页、或app相关的UI要素包括但不局限于字体大小、字体类型、字体颜色、在文本的特定的部分上的粗体(或其他加重)、页面布局、背景颜色、背景图像、边框颜色、边框类型、边框大小、“鼠标悬停”动作、图标/按钮布置、图标/按钮大小、图标/按钮形状、菜单颜色、搜索结果的文本长度、每个字段的长度、截断/缩短规则、动画/多媒体效果、以及图像/缩略图放置规则。
广告240通常可以对应正在做或计划做(或以其他方式涉及)广告业务的实体,无论是个体、公司、或组织。这样,广告商240可以是提供(一个或多个)产品和/或(一个或多个)服务的实体,它自己在由发布者所提供的平台(例如网站、移动应用等等)上负责它自己的(一个或多个)产品和/或(一个或多个)服务的广告处理。例如,广告商240可以包括例如General Motors、Best Buy、或Disney之类的公司。在一些其他的情境中,然而,广告商240可以是仅仅负责针对由其他实体所提供的(一个或多个)产品和/或(一个或多个)服务的广告处理的实体。
广告商240可以是被安排来向(一个或多个)发布者230提供在线广告的实体,使得这些广告与其他在线内容一起在用户设备处被呈现给用户210。广告商240可以提供流内容、静态内容、以及赞助内容。广告的内容可以被放置在内容页面或移动app上的任何位置,并且可以被策略地放置在内容流的周围或之中作为内容流的部分以及独立的广告二者而被呈现。在一些实施例中,广告商240可以包括或可以被配置作为广告交换引擎,该广告交换引擎作为用于购买由发布者(例如发布者230)所实现的一个或多个广告机会的平台。广告交换引擎可以在与该引擎相关联的多个广告商之间运行内部投标,并且在接收和响应来自发布者的竞标请求之后,向发布者提供适合的价标。
内容源260可以包括多个内容源260-a、260-b、...、260-n。内容源可以对应于与发布者(例如,发布者230)相对应的网页/app主机,无论是个人、公司、或例如USPTO.gov的组织、例如CNN.com和Yahoo.com的内容提供者、或例如Twitter或blog的内容供给源之类的实体。内容源260可以是在线内容的任何源,该在线内容例如可以是在线新闻、被发布的文章、博客、在线小报、杂志、音频内容、图像内容、和视频内容。它可以是来自例如Yahoo!金融、Yahoo!体育、CNN、以及ESPN的内容提供者的内容。它可以是多媒体内容或文本,或包括网站内容、社交媒体内容(例如Facebook、Twitter、Reddit等等)或任何其他丰富内容的提供者的任何其他形式的内容。它可以是来自例如AP和Reuters之类的提供者的经许可的内容。它也可以是从互联网上的各种源所抓取或索引的内容。内容源260向发布者230和/或系统150的其他部分提供大量内容。
在一些实现方式中,不同类型的用户(例如用户280)还可以能够与系统200的不同的组件进行交互以用于例如管理服务器120等等的不同的管理工作,该用户可以是系统运营商或管理者。在一些实施例中,用户280可以被分类以在更多的可操作事件上比用户210具有更高的管理服务器120的优先权。例如,用户280可以被配置能够更新被储存在服务器120的数据库中的数据的索引方案或格式以及从设备105、110获取的数据的格式。在一些实施例中,服务器120可以是第三方服务提供者的一部分,使得发布者230和广告商240可以是服务器120的消费者。
图2(b)呈现与在图2(a)中所示出的相似的系统配置200,除了发布者230被直接连接到服务器120以外。应当注意图2(a)和图2(b)所示出的不同的配置也可以以适合于具体的应用场景的任何方式进行混合。例如,在一些实施例中,发布者230、广告商240、以及用户210可以被(直接地或经过网络220)连接到与服务器120相连接的数据库,该服务器120关于由会话延续服务器120所提供的服务的访问和激活,来维护和更新用户的账户信息。此外,在一些实施例中,服务器120的一个或多个功能和配置可以被集成在发布者230,使得发布者230可以提供用于它自己的用户的会话延续服务并且能向其他发布者230和/或广告商240提供会话延续服务。
参考图3,该图3根据本公开的实施例,示出了示例的会话延续服务器120的高层次的描绘。如所示出的,会话延续服务器120可以包括通信平台310、会话信息存储单元320(或存储单元125)、用户账户管理单元330、认证单元340、会话信息接收单元350、会话信息传输单元360、和/或其他组件和单元。
通信平台310可以被配置作为用于服务器120到网络、设备、和本教导被实现于的系统的其他组件的数据接口。例如,通信平台310可以被配置来例如,从(一个或多个)设备105、110,接收用户账户信息、登录凭证、会话信息、对于会话信息的请求等等,以及向(一个或多个)设备105、110发送用户认证确认、会话信息、内容(来自发布者230、广告商240等等)等等。对于这样的信息接收和发送,通信平台310可以根据一个或多个网络协议(例如,TCP/IP等)和/或一个或多个通信协议(例如,诸如CDMA、LTE等等的无线协议)而被配置。
会话信息存储单元320可以针对系统100的具体实体(或以围绕其所安排的形式)来格式化和储存用户账户数据和会话信息。例如,会话信息存储单元320可以“以用户为中心”储存数据,其中存储单元320可以创建表结构400,如图4所示。表结构400包括针对每个用户105、110(或针对用户105的每个已知的标识)的简档410,被引用为“用户1”“用户2”等等,并且每个简档410包括对应的(被用来访问由服务器120所提供的服务的)用户认证凭证以及其他用户数据(例如由用户所使用的设备的可能的IP地址、与用户相关联的设备的类型、在用户设备上安装的应用的类型等等)或与之相关联。
每个用户简档410还可以包括针对每个单独的应用(例如,应用106、111)的会话信息420或与之相关联,其中,用户在他们的(一个或多个)设备105、110上与所述应用进行交互,并且该应用被配置来由服务器120追踪以用于会话延续服务。每一个用户简档410可以包括单独的记录(例如,子表结构)来储存针对一个应用或针对一种类型的应用的会话信息。这种单独的应用(例如,web浏览器应用)的会话信息可以包括:(a)应用会话的关于内容的信息,例如,在会话中最后访问的网页的URL,当最后的网页被访问时的时间戳、搜索活动(例如具有时间戳的查询)、网页的书签和描述等等;以及(b)(同一)应用会话的关于内容呈现的信息,例如在web浏览器中所滚动的网页的量或百分比、在文字处理应用中的所滚动的文件的量或百分比、关于字体的细节(大小、类型、颜色等等)、应用窗口的大小、光标/鼠标位置(用x/y坐标定义)、以及用户或设备的地理位置信息(从设备直接接收或通过设备的IP地址推测)等等。
以这种形式,在一个或多个用户设备105/110处由特定的用户所使用的任何应用的会话信息可以从会话信息存储单元320中的它们相应的用户简档410来追踪、维护、更新、获取以及提供。在一些实施例中,会话信息存储单元320可操作地与用户账户管理单元330和认证单元340相关联来实现创建新的用户账户并且认证正在输入的用户凭证对于访问服务器120是否是有效的。会话信息存储单元320还可以可操作地与会话信息接收单元350以及会话信息传输单元360相关联,来以上文所讨论的方式接收、更新、和提供去往/来自用户设备的会话信息。
如以上所讨论的,在本公开中所描述的会话延续技术可以基于针对希望利用会话延续服务的用户的单独的用户账户或简档。在这个方面,用户账户管理单元330被配置来创建和维护用于单独的用户(或某用户类型)的用户账户,该用户希望利用将他们的应用会话保存以供未来在不同设备(或同一设备)上再次生效的服务。在用户账户管理单元330处创建的每个新的用户账户与具体的用户标识凭证(例如,独特的用户名称-密码对)相关联,并且作为一个用户简档410被储存在存储单元320中。此外,用户账户管理单元330还可以将每个用户账户与关于用户希望针对根据本公开的会话追踪和延续特性进行注册的应用(例如,106、111)的具体细节进行关联。
图5根据本公开的实施例,描绘了会话延续服务器120用用户账户管理单元330建立新的用户账户的方法500的流程图。在方法500中,在操作505处,会话延续服务器120从由用户210所操作的设备105、110(经由设备上的应用)(例如,在通信平台310处)接收对于新的用户账户的请求。用户-账户创建请求可以包括由用户所选择的用户标识凭证(例如,用户名-密码对)。用户-账户创建请求还可以包括关于用户希望针对会话追踪和延续目的而在服务器120处注册的(一个或多个)应用的细节(例如,名称、开发者、功能、类型等等)。请求可以被提供给用户账户管理单元330用于进一步处理。
在操作510处,用户账户管理单元330确定用户账户是否已经存在,例如,基于在该请求中所提供的信息并且将它和存储单元320中的信息相比较。如果用户账户已经存在(在存储单元320中),则方法500继续进行到操作530。如果用户账户不存在(在存储单元320中)的话,那么方法500继续进行到操作515。
在操作515处,用户账户管理单元330确定请求中的账户信息(例如,用户名-密码对)是否可被接受以用于创建有效的用户账户。如果账户信息可被接受,那么方法500进行到操作520。如果账户信息不可被接受的,方法500进行到操作530处。例如,账户信息可能不可被接受,因为用户名和/或密码太短、太长、或包括不可被接受的字符或字符串。在操作520处,用户账户管理单元300基于所接收的账户信息创建新的账户,并且储存账户信息,例如作为存储单元320处的表结构400中的记录。在操作525处,用户账户管理单元330向发送了账户请求的用户设备发送表明新的账户被建立的消息。或者,在操作530处,用户账户管理单元330发送消息到用户设备,该消息表明不可建立新的账户。
例如响应于来自用户的相应请求,用户账户管理单元330还可以被配置来删除、改变、或更新现有的用户账户和其中所储存的信息。用户账户管理单元330还可以基于(储存在存储单元320处的)那些用户账户的一个或多个特征来组合或标记各种用户账户,例如,基于设备的类型(膝上型计算机、智能手机等等)、设备上的操作系统的类型(Windows、Android等等)、用户在服务器120处已注册的应用的类型和/或数量、用户的地理位置等等。
(在图3中所描述的)认证单元340可以对用户进行认证以确定:用户是否被允许出于记录或获取针对在一个或多个设备处的一个或多个应用的会话信息的目的,来访问会话延续服务器120。例如,在设备(105或110)处的用户开始应用会话之前,用户可被要求登录服务器120并由服务器120的认证单元340认证,其中,用户希望将所述应用会话的会话信息储存在服务器120处或从服务器120处获取。为了开始登录和认证过程,用户可以首先向服务器120提供用户凭证(例如在账户创建时所建立的用户名-密码对)。凭证可以在通信平台310处被接收,并且被转发到认证单元340用于进一步的处理和验证。认证单元340之后可以与存储单元320进行通信,以搜索、提取储存在存储单元320中的或将用户凭证与储存在存储单元320中的用户账户信息相比较。基于与所存储的用户账户信息的比较,认证单元340可以确定请求用户是否被授权来访问服务器120(或服务器120中的服务)。
图6根据本公开的实施例,描绘了验证单元340验证用户凭证以在服务器120处登录用户的方法600的流程图。方法600在操作605处开始,其中认证单元340从由特定用户操作的用户设备105、110接收对于登录的请求。登录信息可以包括用户名/用户ID和密码,或在针对用户的账户创建的过程中由账户管理单元330所预先建立的任何其他的信息(生物信息等等)。
在操作610处,认证单元340例如基于与来自存储单元320的被储存的账户信息的比较,来确定账户信息是否对应有效的账户。如果账户信息对应于有效账户,方法进行到操作615。如果账户信息不对应于有效的账户,那么方法进行到操作620。
在操作615处,认证单元340可以生成确认消息并且向用户设备发送(通过通信平台310)确认消息:在用户设备处的(一个或多个)应用可以开始向服务器120发送对于一个或多个会话的会话信息以出于之后的会话延续目的而储存,或开始请求会话信息来在用户设备处加载一个或多个先前的会话。换言之,在操作615处,例如,认证单元340允许设备105处的(一个或多个)应用106发送活动更新到会话延续服务器120以进行存储,并且认证单元340允许(一个或多个)应用111作出现在在设备110处加载和延续(一个或多个)应用106的最后会话的请求。
在操作620处,认证单元340可以生成表明登录信息不是有效的报错消息并向用户设备(通过通信平台310)发送该报错消息,并且可以向用户提供用于登录服务器120的建议或帮助。
参考回图3,会话信息接收单元350可以接收(通过通信平台310)关于由特定的用户(每一个用户都具有独特的用户标识凭证和对应的用户简档410)操作的一个或多个应用的一个或多个会话的新的或经更新的会话信息。会话信息接收单元350可以处理和提供所接收的会话信息(例如,与适当的用户简档410相关联),以存储在存储单元120。例如,会话信息接收单元350可以确定所接收的会话信息(例如最后访问的网页URL、网页的位置等等)是与应用106的新的会话相关,还是关于应用106的现有的或正在进行的会话的更新。基于这种确定,会话信息接收单元350可以在适合的用户简档410中针对应用106来添加或更新数据(URL、位置等等)。
基于所接收的会话信息,会话信息接收单元350可以确定关于正与应用(其会话信息被接收)进行交互的用户210的具体细节和/或关于发送了该会话信息的用户设备105、110的细节。会话信息还可以包括,例如,用户设备的MAC地址,设备的IP地址或与设备相关的任何其他的标识符。
图7根据本教导的实施例描绘了会话信息接收单元350接收和处理会话信息的方法700的流程图。方法700在操作705处开始,在操作705处,会话信息接收单元350从由特定用户210所操作的设备105处接收关于一个或多个应用会话(例如,(一个或多个)浏览器会话)的信息。在操作710处,会话信息接收单元350(例如,结合认证单元34))确定设备105的特定用户的身份,以及处理和转发所接收的会话信息到存储单元320用于最新记录或更新在特定用户210的用户简档410下的信息。一旦接收的会话信息被适当地储存,则每当针对新的或经更新的应用会话存在新的或被更新的会话信息时,方法700从操作705进行重复。
图8根据本教导的实施例,描绘了从用户设备发送会话信息用于在服务器120处进行储存的方法800的流程图。当用户(该用户已经从服务器105成功登录服务器120)使用一个或多个应用106的一个或多个会话或与之进行交互时,方法800可以被持续执行。如果服务器120是不可用的(例如,由于网络问题等等),应用106(或其中所嵌入的JavaScript)可继续在本地将会话信息储存在设备105的存储单元中,直到服务器120变为可用为止。当服务器120是可用的时,储存在设备105处的会话信息被传输到服务器120(例如,到单元350)。
方法800在操作805处开始,其中,用户可以在web浏览器106上访问和加载网页。用户可以与由web浏览器106提供的网页内容进行交互,例如,用户可以实施搜索、流送音频和视频文件、或进行任何其他的活动。在操作810处,应用106追踪和捕捉作为会话信息的一部分的网页细节和用户活动。在操作815处,应用106(或其中所嵌入的JavaScript)发送会话信息到服务器120用于储存。针对新的会话或当对于现有的会话存在更新时,方法800可以从操作805进行重复。
参考回图3,会话信息传输单元360可以(a)从(一个或多个)设备110上的(一个或读个)应用111接收请求(经过通信平台310),其中特定的用户希望在设备110处延续一个或多个应用106的一个或多个会话;以及(b)响应于请求,向(一个或多个)设备110发送适当的会话信息(和/或相关的内容)。在一些实施例中,来自(一个或多个)设备110的请求可以由用户访问关于会话延续服务器120的或被分配给会话延续服务器120的预定义的URL(“last.yahoo.com”)而做出,例如通过在浏览器菜单栏中输入URL来访问浏览器中的URL、点击针对该URL所做的书签、激活在后台(无需使用浏览器)访问URL的“启动器”app和/或通过其他方式访问URL。
通过访问预定义的URL,(一个或多个)设备110可以向会话延续服务器120表明:出于获取会话信息的目的,(一个或多个)设备110希望与服务器120进行唯一地连接。在一些实施例中,来自(一个或多个)应用111的请求可以针对用户当时正在使用(一个或多个)设备105时(一个或多个)应用106的最后的(一个或多个)会话期间、(一个或多个)应用106的状态的会话信息。该请求可以包括标识(一个或多个)应用111、(一个或多个)应用106、(一个或多个)设备110、(一个或多个)设备105、用户属性等等的信息。基于会话信息,相同的会话可以被恢复并且在设备110上以与在(一个或多个)设备105上的最后的(一个或多个)会话相同的内容和相同的呈现形式被呈现给用户。
在一些实施例中,在会话信息传输单元360从(一个或多个)设备110接收针对会话信息请求之前,在设备110处的用户可以被要求登录服务器120并且用服务器120认证他自己(例如,根据认证单元340的操作)。一旦用户从请求设备110成功地登录服务器120,那么会话信息传输单元360可以能够确定正在操作设备110的用户的身份。相应地,当确定从存储单元320获取的用于传输到设备110的适合的会话信息时,会话信息传输单元360可以标识和访问与所标识的用户相关的正确的用户简档410。
会话信息传输单元360可以响应于来自设备110处的应用111的请求,向通信平台310提供所获取的会话信息以用于向请求设备110进行传输。在设备110处,从服务器120接收的会话信息被用来以与针对应用106在设备105上的其最后的会话期间所收集的相同的呈现形式(例如,在网页上相同的滚动位置)加载和提供相同的内容(例如,相同的网页)。由此,基于会话信息的内容呈现允许在应用110处从应用会话在设备105上被停留的位置处继续应用会话。应用106、111在它们的功能和特性上可以是相似的,但是可能由不同的公司或服务提供者开发;例如,应用106、111二者可以是web浏览器,但是是不同的种类,例如IE浏览器和火狐。
一旦(一个或多个)应用111用会话信息被配置使得先前的应用会话可以被延续,则(一个或多个)应用111可以基于与延续的会话的用户交互来开始追踪和收集会话信息,以及传送新收集的会话信息用于在服务器120处进行记录。例如,在被延续的浏览器会话中,一旦来自先前的浏览器会话的网页被加载到设备110的浏览器111上,则用户可以访问和加载新的网页和/或滚动网页来改变它的位置,并且因此,开始浏览器111的新的会话。这种新的会话信息可以被传输到服务器120用于与用户简档410相关联地(由单元350进行)处理和(在单元320处进行)储存。这样,现在如果用户移动到第三设备,则该用户可以能延续来自浏览器111的会话,例如通过访问预先定义的URL以及获取被更新的浏览器会话信息。
图9根据本教导的实施例,描绘了针对应用提供延续的应用会话的方法900的流程图。方法900在操作905处开始,在该操作中,用户打开设备110上的应用(例如,浏览器)111。应用111可以以与计算机、平板电脑、蜂窝电话、游戏机、或互联网TV上的任何应用相似的方式被打开和控制。例如,从菜单中,通过按压键盘上的按钮、远程控制、通过用语音命令等等。
在操作910处,应用111向服务器120发送用户标识信息(例如,用户名和密码)。在一些实施例中,例如,在用户设备110处,用户标识信息被交换以获得访问令牌,该访问令牌被储存在用户设备110上。之后这个令牌可以由用户设备代替用户名和密码对在预定的时间长度中被使用,例如,以自动地登录在服务器120处的用户。当该时间段到期时,用户被要求来重新输入它们的用户名和密码来生成新的令牌。
在操作915处,应用111从服务器120接收会话信息,其中会话信息包括针对在设备105上的应用(浏览器)106的一个或多个最后的会话的信息。会话信息对应于储存在存储单元320处的用户简档410中的信息。
在操作920处,应用111(基于时间戳)检查会话信息来确认该信息是否与用户当时正在使用的最后设备105和/或最后的应用106相关,使得只有最后的会话在设备110处被延续。
在操作925处,应用111检查所使用的最后设备105是否是当前设备110(即,设备105和110是否是同一个设备)。如果最后所使用的设备105是当前设备110,那么方法进行到操作930。如果最后使用的设备105不是当前设备110,那么方法进行到操作935。
在操作930处,应用111以与在会话信息中所表明的相同的呈现形式(在滚动位置处)提供会话信息中所表明的相同的内容(网页),其中,会话信息将在当前设备110上表明关于先前会话的信息。在操作935处,应用111向用户表明最后的会话是在另一个设备105(与设备110不同)上。在操作940处,应用111询问用户是否希望从会话在另一设备105上结束的位置处延续会话。如果用户希望从浏览会话在另一设备105上结束的位置处延续应用会话,那么方法进行到操作945处。如果用户不希望从会话在另一设备105上结束的位置处延续,那么方法进行到操作930处。在操作945处,应用111用与在另一设备105上针对应用106的最后的会话期间针对应用106所收集相同的呈现形式(例如,在网页上相同的滚动位置)以及与之相同的内容(例如,相同的网页)被更新。
图10根据本教导的实施例,描绘了包括应用106、111(例如,浏览器)的用于在设备之间进行无缝应用会话的设备105、110。所描绘的设备可以包括渲染单元1005、用户接口单元1010、会话单元1015、内容存储单元1025、历史存储单元1030、以及cookie存储单元1035。
渲染单元1005可以将应用所接收的网页和搜索转换为图像,该图像可以在设备105、110的屏幕上被显示。在一些实施例中,渲染单元1005可以使用已经安装在设备上(例如,在设备的操作系统中)的图像API。渲染单元1005还可以根据设备规范而被调整来在设备中显示信息。因此,渲染单元905可以调整网页和其他信息来适应比在其他用户设备上更大的或更小的屏幕尺寸、分辨率等等。
用户接口单元1010将来自设备的用户的输入转换为针对应用的指令。该输入可以是下列的形式:键盘敲击、鼠标、触摸板、或轨迹球移动、语音命令和声音输入、图片、照相机和视频输入、以及来自诸如加速器、GPS等等的其他传感器的输入。
内容存储单元1025可以储存由用户所查看的网页(或其他特定于应用的内容),使得所查看的内容可以之后被很快地获取。历史存储单元1030可以储存由用户所查看的网页的URL,使得用户可以通过搜索页面历史或通过点击在应用上的“返回”按键来查看那些页面(或执行与返回按键等同的操作)。Cookie存储单单元1035可以储存与浏览活动相关联的cookie。
会话单元1015可以收集针对应用的用户活动并且将其发送至服务器120以用于在存储单元320中的适当的用户简档410下储存。会话单元1015可以发送,例如,具有时间戳等的所浏览的网页(或它们的URL)、搜索活动(例如具有时间戳等的查询)、具有页面和描述等的书签、以及具有状态和时间戳的最后会话等等。如果用户请求查看或加载那些先前的状态,则会话单元1015还可以连接到服务器120来获取应用会话信息,该应用会话信息表明针对用户所注册的其他相似的应用的状态。会话单元1015可以从服务器120获取信息,并且根据来自用户的请求,在内容存储单元1025、历史存储单元1030、和/或cookie存储单元1035中添加或更新信息。
图11描绘了可以被用来实现实施本教导的专有系统的移动设备的架构。在这个示例中,内容和广告在其上被呈现和交互的用户设备是移动设备1100,该设备包括但不局限于智能手机、平板设备、音乐播放器、手持游戏设备、全球定位系统(GPS)接收器、以及可穿戴计算设备(例如眼镜、手表等等),或其他形式要素的设备。在这个示例中的移动设备1100包括一个或多个中央处理器(CPU)1102、一个或多个图像处理单元(GPU)1104、显示器1106、存储器1108、通信平台1110(例如,无线通信模块)、存储设备1112、以及一个或多个输入/输出(I/O)设备1114。包括但不局限于系统总线或控制器(未被示出)的任何其他适当的组件也可以被包括在移动设备1100中。如在图11中所示,移动操作系统1116(例如,iOS、Android、Windows Phone等等)和一个或多个应用1118可以从存储设备1112被装载到存储器1108中,使得能够由CPU 1102执行。应用1118可以包括浏览器或用于在移动设备1100上接收和呈现内容流和广告的任何其他合适的移动应用。用户与内容流和广告的交互可以经过I/O设备1114来获取并且(例如,经过网络220)被提供给会话延续服务器120和/或系统100的其他组件。
为了实现在本公开中所描述的各种模块、单元、以及它们的功能,计算机硬件平台可以被用作本文所描述的元件中的一个或多个元件(例如,针对图1-10所描述的会话延续服务器120和/或系统100的其他组件)的(一个或多个)硬件平台。这种计算机的硬件元件、操作系统、和编程语言本质上是传统的,并且假设本领域技术人员对其充分熟悉以调整那些技术来实现本文所描述的针对应用会话延续的技术。尽管如果被适当地编程的话计算机还可以作为服务器起作用,具有用户接口元件的计算机可以被用来实现个人计算机(PC)或其他类型的工作站或终端设备。相信本领域技术人员对于这种计算机设备的结构、程序和一般操作都很熟悉并且因此附图应当是自解释的。
图12描绘了可以被用来实现实施本教导的专有系统的计算机设备的架构。结合本教导的这种专有系统具有硬件平台的功能框图,该框图包括用户接口组件。计算机可以是通用计算机或专用计算机。两者都可以被用来实现用于本教导的专有系统。这种计算机1200可以被用来实现如本文所描述的会话延续技术的任何组件。例如,会话延续服务器120等可以在计算机(例如计算机1200)上经过它的硬件、软件程序、固件、或以上各项的任何组合而实现。尽管出于简便的目的仅仅示出了一个这样的计算机,但如本文所描述的与会话延续技术相关的计算机功能,可以在一些相似的平台上以分布式的方式实现,以分布处理负载。
计算机1200,例如,包括连接到网络和来自它所连接的网络的COM端口1250用来促进数据通信。计算机1200还包括具有一个或多个处理器形式的用于执行程序指令的中央处理器(CPU)1220。示例的计算机平台包括内部通信总线1210、不同形式的程序存储设备和数据存储设备(例如盘1270、只读存储器(ROM)1230、或随机存取存储器(RAM)1240),用于由计算机处理和/或通信的各种数据文件以及可能地用于由CPU执行的程序指令。计算机1200还包括I/O组件1260,用于支持在计算机和计算机中的其他组件(例如用户接口组件1280)之间的输入/输出流。计算机1200还可以通过网络通信接收程序和数据。
因此,如上文所提及的,改进广告服务和/或其他处理的方法的方面可以被体现在程序中。本技术的程序方面可以被视作通常采用由某种类型的机器可读介质承载的或在其中体现的可执行代码和/或相关联的数据形式的“产品”或“制品”。有形的非暂态“存储”类型介质包括用于计算机、处理器等等的任何的或全部的存储器或其他存储设备或相关联的模块(例如,动各种半导体存储器、磁带驱动、盘驱等等),其可以在任何时刻提供对于软件程序的存储。
有时,全部的或部分的软件可以通过网络(例如互联网或各种其他电信网络)被传送。这种通信例如能够使得软件从一个计算机或处理器加载到另一个中,例如,从搜索引擎操作器的管理服务器或主机或其他会话延续服务器加载到实现与从一个设备到另一设备延续应用会话有关的计算环境或相似的功能的计算网络或其他系统的(一个或多个)硬件平台。因此,可能具有软件元件的另一种介质包括光波、电波和电磁波(例如经过有线的和光学陆地线路网络以及通过各种空中链路、在本地设备之间的物理接口上所使用)。承载这些波的物理元件(例如有线或无线的链路、光学链路等等)还能够被视作承载软件的介质。如本文使用的,除非限定于有形“存储”介质,否则例如计算机或机器“可读介质”的术语指的是参与向处理器提供用于执行的指令的任何介质。
因此,机器可读介质可以具有多种形式,包括但不局限于有形存储介质、载波介质、或物理传输介质。非易失存储介质包括,例如,光盘或磁盘,例如在(一个或多个)任意计算机等中的任何存储设备,该存储设备可以被用来实现如在附图中所示出的系统或它的任何组件。易失存储介质包括动态存储器,例如这种计算机平台的主存储器。有形传输介质包括同轴电缆:铜线和光纤,其包括在计算机系统内形成总线的线路。载波传输介质可以具有电或电磁信号、或声波或光波的形式,例如在射频(RF)和红外(IR)数据通信中所生成的那些。因此计算机可读介质的一般形式包括例如:软盘、折叠盘、硬盘、磁带、任何其他磁介质、CD-ROM、DVD、或DVD-ROM、任何其他光学介质、打卡纸带、具有孔的图案的任何其他物理存储介质、RAM、PROM、以及EPROM、FLASH-EPROM、任何其他存储器芯片或盒、运输数据或指令的载波、运输这种载波的线缆或链路,或计算机能够从其读取程序代码和/或数据的任何其他的介质。许多这种形式的计算机可读介质能够涉及运载一个或多个序列的一个或多个指令到物理处理器用于执行。
本领域技术人员应当认识到本教导可进行各种修改和/或改进。例如,尽管以上所描述的各种组件的实现方式可以被体现在硬件设备中,但它还可以仅作为软件方案而实现,例如,在现有的服务器上安装。此外,如本文所公开的基于以用户为主导的本机广告的增强性广告服务可以作为固件、固件/软件组合、固件/硬件组合、或硬件/固件/软件组合而实现。
尽管上文已经描述了考虑哪些内容用来构成本教导和/或其他示例,但应当理解可以对此做出各种修改,并且本文所公开的主旨能够以各种形式和示例来实现,并且本教导可以被应用在各种应用中,而本文仅仅描述了其中的一些。所附权利要求书意在要求保护落在本教导的真实范围内的任何的和全部的应用、修改、以及变化。