CN113110848B - 跨应用实例的标识符 - Google Patents

跨应用实例的标识符 Download PDF

Info

Publication number
CN113110848B
CN113110848B CN202110258850.1A CN202110258850A CN113110848B CN 113110848 B CN113110848 B CN 113110848B CN 202110258850 A CN202110258850 A CN 202110258850A CN 113110848 B CN113110848 B CN 113110848B
Authority
CN
China
Prior art keywords
application
computing device
unique identifier
user
information
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
Application number
CN202110258850.1A
Other languages
English (en)
Other versions
CN113110848A (zh
Inventor
芬克斯·柯克帕特里克
苏布拉马尼亚姆·加纳帕蒂
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
Priority to CN202110258850.1A priority Critical patent/CN113110848B/zh
Publication of CN113110848A publication Critical patent/CN113110848A/zh
Application granted granted Critical
Publication of CN113110848B publication Critical patent/CN113110848B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • 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/445Program loading or initiating
    • 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/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • 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/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/546Message passing systems or structures, e.g. queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/02Standardisation; Integration
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/142Managing session states for stateless protocols; Signalling session states; State transitions; Keeping-state mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/146Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/148Migration or transfer of sessions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

本公开涉及跨应用实例的标识符。在一些示例中,一种方法,包括:由在计算设备处执行的监督器组件接收执行应用的请求;确定所述计算设备的当前用户;并且确定所述应用的重置状态。所述方法还可以包括:基于所述计算设备的所述当前用户、所述重置状态和所述应用的应用标识符来生成唯一标识符,所述唯一标识符不包括所述当前用户的个人可识别信息;向应用服务提供者发送所述唯一标识符和对信息的所述一个或者多个请求;并且响应于发送对信息的所述一个或者多个请求,从所述应用服务提供者接收与所述当前用户相关联的状态信息和所述应用的状态信息。

Description

跨应用实例的标识符
分案说明
本申请属于申请日为2017年1月13日的中国发明专利申请201780003810.4的分案申请。
技术领域
本公开涉及跨应用实例的标识符。
背景技术
计算设备可以执行各种功能,诸如,执行应用、接收用户输入、和输出用于显示的信息。例如,计算设备可以执行应用,诸如,电子邮件客户端、旅行助理、消息收发客户端等。为了跨设备维护状态信息(例如,用户偏好、用户兴趣信息、历史用户行为信息等),用户通常需要为应用创建用户账户或者提供个人可识别信息,从而使得与应用相关联的服务器可以存储状态信息,使得当用户在不同设备处登录时或者在应用重新安装之后,服务器可以识别用户并且向设备发送用户的状态信息。
发明内容
通常,本发明的技术使得应用和计算设备能够在不需要稳定的标识符的情况下跨设备并且跨应用安装和卸载来维护状态信息。例如,不同于需要用户登录到每个应用或者每个设备以便使用特定应用或者设备的状态信息,本公开的技术使得应用能够使用对每个应用和用户唯一的不透明标识符,并且将该不透明标识符提供给应用。标识符是不透明标识符,这是在于该不透明标识符不包括个人地识别用户的信息,但可能跨设备并且跨应用重新安装而一致。应用开发者可以使用该不透明标识符来向各个其它设备或者应用安装提供状态信息。即,本公开的技术不仅可以提供在不需要用户向开发者提供个人可识别信息的情况下可以在计算设备之间维护状态信息的机制,而且本公开的技术还可以使得计算设备能够通过跨应用重新安装维护状态信息来以对计算设备的用户透明的方式卸载和重新安装应用。
在一个示例中,一种方法,包括:由在计算设备处执行的监督器(supervisor)组件接收执行应用的请求,并且响应于确定用于维护应用的可安装子包的应用容器被分配在计算设备的存储器中:由应用容器的容器运行时来确定计算设备的当前用户;由容器运行时来确定应用的重置状态;由容器运行时基于计算设备的当前用户、重置状态、和应用的应用标识符来生成唯一标识符,该唯一标识符不包括当前用户的个人可识别信息;由计算设备向应用服务提供者发送唯一标识符和对信息的一个或者多个请求;并且响应于发送对信息的一个或者多个请求,由计算设备从应用服务提供者接收与当前用户相关联的状态信息和应用的状态信息。
在另一示例中,计算设备包括存储监督器组件的一个或者多个存储设备和一个或者多个处理器。该一个或者多个处理器执行监督器组件以:接收执行应用的请求,并且确定用于维护应用的可安装子包的应用容器是否被分配在一个或者多个存储设备中,响应于确定用于维护应用的可安装子包的应用容器被分配在一个或者多个存储设备中,该一个或者多个处理器执行应用容器以:确定计算设备的当前用户;确定应用的重置状态;基于计算设备的当前用户、重置状态、和应用的应用标识符来生成唯一标识符,该唯一标识符不包括当前用户的个人可识别信息;向应用服务提供者发送唯一标识符和对信息的一个或者多个请求;并且响应于发送对信息的一个或者多个请求,从应用服务提供者接收与当前用户相关联的状态信息和应用的状态信息。
在另一示例中,一种方法,包括:由计算系统从在第一计算设备处执行的应用接收标识符,该标识符唯一地标识第一计算设备的用户并且不包括个人识别信息;由计算系统从在第一计算机处执行的应用接收对信息的一个或者多个请求,该一个或者多个请求包括对用户偏好信息的请求;并且由计算系统基于关于一个或者多个请求的信息和标识符来更新与标识符相关联的一个或者多个历史请求信息,该历史信息包括与标识符相关联的用户偏好信息。该方法还包括:由计算系统从在第二计算设备处执行的应用接收标识符,其中,在第一计算设备上执行的应用和在第二计算设备上执行的应用是单个应用的不同实例;由计算系统基于标识符来确定包括在与标识符相关联的历史请求信息中的用户偏好信息;并且由计算系统向第二计算设备发送包括在与标识符相关联的历史请求信息中的用户偏好信息的至少一部分。
在另一示例中,一种机构,该机构包括用于接收执行应用的请求的装置、用于确定计算设备的当前用户的装置、用于确定应用的重置状态的装置、用于基于计算设备的当前用户、重置状态和应用的应用标识符来生成不包括当前用户的个人可识别信息的唯一标识符的装置、用于向应用服务提供者发送唯一标识符和对信息的一个或者多个请求的装置、以及用于从应用服务提供者接收与当前用户相关联的状态信息和应用的状态信息的装置。
在另一示例中,一种机构,该机构包括用于从在第一计算设备处执行的应用接收唯一地标识第一计算设备的用户并且不包括个人识别信息的标识符的装置、用于从在第一计算机处执行的应用接收对信息的一个或者多个请求——该一个或者多个请求包括对用户偏好信息的请求的装置、以及用于基于关于一个或者多个请求的信息和标识符来更新与标识符相关联的一个或者多个历史请求信息——该历史信息包括与标识符相关联的用户偏好信息的装置。该机构还包括:用于从在第二计算设备处执行的应用接收标识符的装置——其中在第一计算设备上执行的应用和在第二计算设备上执行的应用是单个应用的不同实例、用于基于标识符来确定包括在与标识符相关联的历史请求信息中的用户偏好信息的装置、以及用于向第二计算设备发送在与标识符相关联的历史请求信息中所包括的用户偏好信息的至少一部分的装置。
在附图和下面描述中阐述了一个或者多个示例的细节。本公开的其它特征、目的、和优点将通过说明和附图、以及权利要求书而变得显而易见。
附图说明
图1是图示了根据本公开的技术的用于跨应用实例提供标识符的示例计算系统的框图。
图2是图示了根据本公开的技术的跨短暂应用的应用实例来提供标识符的示例计算设备的概念图。
图3是图示了根据本公开的一个或者多个方面的计算设备的其它细节的框图。
图4是图示了根据本公开的技术的跨应用实例来提供标识符的计算系统的示例操作的流程图。
图5A和图5B是图示了根据本公开的技术的,跨应用实例来提供标识符的计算设备的示例操作的流程图。
具体实施方式
图1是图示了根据本公开的技术的,用于跨应用实例提供标识符的示例计算系统的框图。图1的系统100包括经由网络130与计算设备110A至110N(统称为“计算设备110”)进行通信的应用服务提供者系统170。
网络130表示用于在计算系统、服务器、与计算设备之间传输数据的任何公用或者专用通信网络,例如,蜂窝、Wi-Fi、和/或其它类型的网络。例如,当计算设备110连接至网络130时,应用服务提供者系统170可以经由网络130与计算设备100交换数据以提供共享应用状态信息,并且除了其它数据之外,计算设备110还可以经由网络130交换数据以将状态信息的重置状态同步。网络130可以包括一个或者多个网络集线器、网络交换机、网络路由器、或者任何其它网络器材,其可操作地相互耦合从而实现在计算设备110与应用服务提供者系统170之间的信息交换。计算设备110和应用服务提供者系统170可以通过使用任何合适的通信技术来跨网络130传输和接收数据。计算设备110和应用服务提供者系统170均可以通过使用相应的网络链路来操作地耦合至网络130。将计算设备110和应用服务提供者系统170耦合至网络130的链路可以是以太网或者其它类型的网络连接,并且这样的连接可以是无线和/或有线连接。
应用服务提供者系统170表示能够经由网络(诸如,网络130)向计算设备110发送信息和从计算设备110接收信息的任何合适的远程计算系统,诸如,一个或者多个台式计算机、膝上型计算机、大型主机、服务器、云计算系统等。应用服务提供者系统170托管与可由计算设备110执行的一个或者多个应用相关联的信息(或者至少提供对该信息的访问),诸如,一个或者多个应用的相应状态信息。在一些示例中,应用服务提供者系统170表示经由云提供应用服务的云计算系统。
每个计算设备110表示相应的个体移动计算设备或者非移动计算设备。计算设备110的示例包括:移动电话、平板计算机、膝上型计算机、台式计算机、服务器、大型主机、机顶盒、电视、可穿戴设备(例如,计算机化手表、计算机化护目镜、计算机化手套等)、家庭自动化设备或者系统(例如,智能恒温器或者家庭助理设备)、个人数字助理(PDA)、游戏系统、媒体播放器、电子书阅读器、移动电视平台、汽车导航或者信息娱乐系统、或者配置为经由网络(诸如,网络130)发送和接收信息的任何其它类型的移动计算设备、非移动计算设备、可穿戴计算设备、和非可穿戴计算设备。
计算设备110包括用户界面设备(UID)112A至112N(统称为“UID112”)、用户界面(UI)模块120A至120N(统称为“UI 120”)、不透明标识符模块122A至122N(统称为“不透明标识符模块122”)、和应用124A至124N(统称为“应用124”)。虽然将不透明标识符模块122示出为不同模块,但在一些示例中,不透明标识符模块122的功能可以包括在应用124中,下文参照图2描述了该应用的一个示例。模块120和122可以执行通过使用软件、硬件、固件、或者驻留在相应计算设备110中和/或在相应计算设备110处执行的硬件、软件和固件的混合描述的操作。计算设备110可以执行模块120和122与多个处理器或者多个设备。计算设备110可以作为在底层硬件上执行的虚拟机模块120至122而执行。模块120和122可以作为操作系统或者计算平台的一种或者多种服务而执行。模块120和122可以作为在计算平台的应用层处的一个或者多个可执行程序而执行。
计算设备110的UID 112可以充当计算设备110的输入和/或输出设备,并且可以通过使用使得计算设备110能够提供用户界面的各种技术来实施。例如,每个UID 112可以充当使用麦克风技术、红外传感器技术、存在敏感输入屏幕、触摸屏、压力敏感屏幕、或者在接收到用户输入时使用的其它输入设备技术的输入设备。每个UID 112可以充当使用任何一个或者多个显示设备、扬声器技术、触觉反馈技术、或者在向用户输出信息时使用的其它输出设备技术的输出(例如,显示)设备。在图1的示例中,UID 112可以显示用户界面,包括由在计算设备110处执行或者可从计算设备110访问的一个或者多个应用124或者其它模块、组件、应用、和/或服务生成的应用图形用户界面。
当交互涉及由计算设备110提供的用户界面时,每个UI模块120可以管理与相应UID 112和计算设备110的其它输入和输出组件的用户交互。例如,一个或者多个UI模块120可以将使得相应UID 112输出供显示的用户界面的命令/指令发送至相应UID 112。当用户与用户界面交互时,每个UI模块120可以接收由对应UID 112检测到的输入(例如,触摸数据、语音数据等)中的一个或者多个指示。UI模块120可以响应于使得UID 112修改用户界面的呈现的输入指示而将更新后的指令和命令发送至UID 112。UI模块120可以解释由UID112检测到的输入的指示并且将关于输入的信息中继至计算设备110的其它组件(例如,不透明标识符模块122、计算设备110的其它模块、在计算设备110处执行的应用124、和/或在计算设备110处执行或者可被计算设备110访问的服务)。UI模块120可以基于UI模块120从其它组件接收的其它信息来将更新后的指令和命令发送至UID 112,以使得UID 112进一步修改用户界面的呈现。
根据本公开的技术,计算设备110A的用户可以提供执行应用(例如,应用124Aa)的用户输入。用户输入可以包括触摸输入、语音输入、键盘输入、鼠标、轨迹板或者其它指示设备输入等。用户输入可以是对应用图标、链接、或者与应用的特定功能相关联的其它图形或者文本对象的选择(例如,应用、导航指令功能、映射功能、餐厅列表功能、附近商店功能、电话功能、社交网络功能、或者由应用提供的任何其它功能的默认或者“主(home)”屏幕)。
响应于接收到执行应用124Aa的用户输入,不透明标识符模块122A可以确定计算设备110的当前用户并且可以确定应用124Aa的重置状态。计算设备110A的当前用户是与当前登录计算设备110A的用户账户相关联的用户。在一些示例中,诸如如果访客账户是当前登录的账户,则计算设备110A可以通过这样的操作来确定不同用户是计算设备110A的当前用户:例如通过将面部识别应用于由计算设备110A的前置相机捕获到的图像。应用124Aa的重置状态可以是任何值,所述任何值每当计算设备110A的用户请求重置应用124a的状态(时就发生改变,否则为跨应用124Aa的不同执行实例的静态值。例如,应用124Aa的重置状态最初可以是值1。用户可以使得计算设备110A多次执行应用124Aa,但重置状态保持在值1。然而,如果用户提供重置应用124Aa的状态的用户输入,则不透明标识符模块122A可以对重置状态的值进行增量或者以其他方式改变重置状态的值,例如,将重置状态的值更改为值2。
通过使用关于计算设备110A的当前用户的信息、重置状态的值、应用124Aa的应用标识符,不透明标识符模块122A生成唯一标识符,该唯一标识符不包括计算设备110A的当前用户的个人可识别信息。即,不透明标识符模块122A使用信息元组来生成标识符,该标识符唯一地标识应用124Aa的当前用户,但不包括会使得应用服务提供者系统170能够确定计算设备110A的当前用户的个人身份的任何信息。不透明标识符模块122A可以将唯一标识符提供给应用124Aa或者可以将唯一标识符发送至应用服务提供者系统170。在一些示例中,应用124Aa可以将唯一标识符发送至应用服务提供者系统170。不论不透明标识符模块122A或者应用124Aa是否将唯一标识符发送至应用服务提供者系统170,发送唯一标识符的元件还可以发送关于应用124Aa的信息——诸如应用标识符,使得应用服务提供者系统170可以识别与唯一标识符相关联的特定应用。在一些示例中,在执行应用124Aa期间,应用124Aa可以发送对信息(例如,状态信息,包括用户偏好信息、关于应用的当前状态的信息、使用历史信息等)的一个或者多个请求。
应用服务提供者系统170经由网络130从计算设备110A接收唯一标识符(即,唯一地标识计算设备110A的当前用户并且不包括个人识别信息)和对信息的一个或者多个请求和/或一个或者多个应用请求。对信息的一个或者多个请求可以包括对用户偏好信息、使用信息、应用服务提供者系统170所维护的应用124Aa的当前状态、或者任何其它信息的请求。在各个实例中,对信息的一个或者多个请求可以包括使应用提供与应用124Aa的特定功能相关联的特定信息——诸如导航指令、搜索结果、或者任何其它数据——的请求。
通常,应用服务提供者系统170维护一个或者多个应用124——包括在本示例中应用124Aa——的状态信息。状态信息可以包括应用使用信息、用户偏好信息、和关于应用的当前状态的信息。通常,应用服务提供系统170的状态信息模块172通过将状态信息与唯一标识符相关联来维护状态信息,使得如果使用相同应用的相同用户向应用服务提供者系统170请求信息,则状态信息模块172通过使用唯一标识符来检索信息。不同于使用包括个人可识别信息的唯一标识符,状态信息模块172使用由不透明标识符模块122A生成的唯一标识符,该唯一标识符不包括个人可识别信息。然而,状态信息模块172按照与可以包括个人可识别信息的不同的唯一标识大致相同的方式使用来自计算设备110A的唯一标识符。即,本公开的技术可以在不需要修改应用服务提供者系统170的情况下增加对计算设备110A的当前用户的个人可识别信息的保护。
状态信息模块172基于接收到的对信息的请求和唯一标识符来更新应用124Aa的状态信息。例如,状态信息模块172可以更新与唯一标识符相关联的历史请求信息,该历史请求信息可以包括与唯一标识符相关联的个人偏好信息。即,状态信息模块172可以确定:一个或者多个请求包括应用124Aa的用户偏好信息并且可以更新历史请求信息以包括一个或者多个请求中指定的用户偏好信息。历史请求信息包括应用124Aa的状态信息。例如,历史请求信息可以包括应用使用信息、应用的当前状态的信息、用户偏好信息等。
响应于接收到一个或者多个应用请求,状态信息模块172可以更新由应用服务提供者系统170维护的应用124Aa的状态信息并且可以将状态信息的至少一部分发送至计算设备110A。计算设备110A可以基于接收到的状态信息来更新应用124Aa的当前状态。
在一些示例中,被标识为计算设备110A的当前用户的用户可以切换设备,使用计算设备110N,并且使得计算设备110N执行相同应用的不同安装实例(例如,应用124Na,其中,应用124Na与应用124Aa相同,但安装在计算设备110N而不是计算设备110A处—单个应用的不同实例)。在这样的示例中,不透明标识符模块122N通过使用关于计算设备110N的当前用户的信息、应用124Na的重置状态、和应用124Na的应用标识符来生成另一唯一标识符。在计算设备110N的当前用户与110A在不透明标识符模块122A生成了唯一标识符时当前用户相同的情况下,应用124An与应用124Aa相同,并且其中,应用124An的重置状态与应用124Aa的重置状态相同,不透明标识符模块122N生成唯一标识符,该唯一标识符具有与由不透明标识符模块122A生成的唯一标识符相同的值。
计算设备110N将由不透明标识符模块122N生成的唯一标识符发送至接收唯一标识符的应用服务提供者系统170。状态信息模块172基于唯一标识符来确定包括在由状态信息模块172维护并且与唯一标识符相关联的历史请求信息中的用户偏好信息。应用服务提供者系统170将用户偏好信息发送至计算设备110N。响应于接收到用户偏好信息,计算设备110N可以基于用户偏好信息来配置应用124Na。
本公开的技术还提供了一种机制,用户可以通过该机制来重置每个应用124的状态,从而有效地对应用服务提供者系统170表现为新用户。例如,如果计算设备110A的用户选择重置应用124Aa的状态,则不透明标识符模块122A可以通过例如改变与应用124Aa相关联的重置状态的值来更新应用124Aa的重置状态。由于不透明标识符模块122A通过使用计算设备110A的当前用户的用户标识符、应用124Aa的应用标识符、和重置状态的组合来生成应用124Aa的唯一标识符,因此改变重置状态的值,即使用户和应用标识符保持不变,也会产生唯一标识符的不同值。因为唯一标识符具有不同的值,因此状态信息模块172不具有该特定唯一标识符的状态信息,因此计算设备110A的用户对应用服务提供者系统170表现为新用户。即,响应于接收到具有不同的值的唯一标识符,状态信息模块172确定与唯一标识符相关联的不同用户偏好信息并且将不同用户偏好信息提供给计算设备110A。
在一些示例中,计算设备110可以被配置为跨与特定用户相关联的所有计算设备使应用重置状态同步。例如,如果计算设备110A和110N与特定用户相关联,则响应于接收到重置应用124Aa的状态的用户输入,不透明标识符模块122A可以使得计算设备110A经由网络130发送命令来更新安装在计算设备110N处的单个应用(例如,应用124Na)的不同实例的重置状态。更新重置状态的命令可以包括计算设备110A处的应用124Aa的重置状态的更新后的值。响应于接收到更新重置状态的命令,不透明标识符模块122N可以通过例如,将应用124Na的重置状态设置为与应用124Aa的重置状态相同的值来更新应用124Na的重置状态。按照这种方式,本公开的技术可以使得用户能够在计算设备处提供单个输入并且跨与用户相关联的所有计算设备重置应用的状态信息,而不需要用户创建新用户账户并且卸载并重新安装应用。
图2是图示了根据本公开的技术的,跨短暂应用的应用实例来提供标识符的示例计算设备200的概念图。短暂应用包括表现为完全安装并且可供计算设备的用户使用的应用,但可以不具有安装在计算设备处的应用的任何应用代码或者可以具有安装在计算设备处的应用的全功能的一部分的应用代码。作为替代,响应于接收到利用应用的所请求的功能的用户输入,可以安装应用的所请求的功能的应用代码。进一步地,计算设备可以周期性地卸载应用的应用代码的部分,诸如,用户在某个阈值时间段内尚未请求的应用的功能的应用代码。因此,即使由应用提供的一些或者所有功能的应用代码可能在任何给定时间都不安装在计算设备处并且可以在没有用户输入的情况下从计算设备移除,短暂应用对于最终用户仍然表现为常规应用。本公开的技术提供了一种机制,可以通过该机制跨应用安装来维护应用状态信息,否则该应用状态信息在没有用户动作的情况下卸载短暂应用时可能会丢失。
计算设备200的示例可以包括但不限于,便携式设备或者移动设备,诸如移动电话(包括智能电话)、膝上型计算机、平板计算机、可穿戴计算设备——诸如智能手表或者计算机化护目镜、智能电视平台、相机、个人数字助理(PDA)等。在一些示例中,计算设备200可以包括固定计算设备,诸如台式计算设备、服务器、大型主机等。
如图2所示,计算设备200包括应用容器202、系统运行时226、操作系统236、和硬件组件238。计算设备200可以经由网络240和通信链路248A至248B来与一个或者多个其它远程计算设备242A至242C(“远程计算设备242”)通信。如图2所示,网络240表示任何公用或者专用通信网络,例如,蜂窝、Wi-Fi、和/或用于在计算设备之间传输数据的其它类型的网络。计算设备200和远程计算设备242可以通过使用任何合适的通信技术来跨网络240发送和接收数据。例如,计算设备200可以通过使用通信链路248A操作地耦合至网络240。远程计算设备242A可以通过通信链路248B操作地耦合至网络240。网络240可以包括网络集线器、网络交换机、网络路由器等,其操作地相互耦合从而在计算设备202与远程计算设备242之间提供信息交换。在一些示例中,通信链路248A至248B可以是以太网、ATM或者其它网络连接。这样的连接可以是无线和/或有线连接。
硬件组件238可以包括但不限于,计算机处理器、通信单元(例如,调制解调器、网络接口控制器等)、输入组件、输出组件、存在敏感显示器、易失性和非易失性存储器、和电源,仅举几例。操作系统236可以在硬件组件238上执行并且管理计算设备200的硬件组件和软件组件。例如,操作系统236可以执行存储器管理、处理调度和非易失性存储管理。操作系统236还可以将网络和安全服务提供给在计算设备200处执行的应用。操作系统236还可以执行比上述功能更多或者更少的功能。
运行时系统226为根据编写和构建或者编译应用所用的特定编程语言构建的应用实现执行模型。运行时系统226可以包括在执行期间可被应用容器202访问的一个或者多个库和/或服务。如本公开中进一步描述的,每个应用容器202可以与不同应用相对应。运行时系统226可以包括线程管理服务、屏幕绘图和用户界面渲染组件、以及应用间和应用内消息收发服务,仅列举几个示例服务。应用容器202可以通过由运行时组件228暴露的应用编程接口(API)来访问服务。在一些示例中,运行时系统226可以作为一个或者多个进程和/或线程而执行。进程和/或线程中的一个或者多个可以在具有或者不具有操作系统特权的情况下执行。
如图2所示,运行时系统226可以包括运行时组件228。可以用一个或者多个进程和/或线程来实现每个不同运行时组件。在一些示例中,每个不同运行时组件可以提供用户定义的功能集合。例如,可以用定义用户界面元素(例如,按钮、列表、图像、输入域等)及其对应行为的一个或者多个库来实现用户界面渲染组件。用户界面渲染组件可以提供API,其由应用容器202调用以在图形用户界面中渲染用户界面元素。
监督器组件228A被包括在运行时组件228中。监督器组件228A执行应用容器202的安装和维护并且提供应用间和应用内消息收发服务。监督器组件228A包括消息中介(message broker)230,该消息中介监听由应用容器202生成的消息并且执行用于发送应用容器或者一个或者多个其它应用容器的动作。监督器组件228A可以具有调度任何消息(例如,包含作为用户指定的标识符的URI的消息)的第一优先级或者第一机会。在一些示例中,消息中介230可以为提供消息的附加处理,诸如,分配来自应用容器池232的应用容器、加强消息的安全性、以及记录消息,仅举几例。作为示例,应用容器202A可以生成要从相同应用内的第一用户界面导航至第二用户界面的消息。应用容器202A可以将消息发送至消息中介230,该消息中介包括消息收发表234,该消息收发表234包括一组滤波器,其中,每个滤波器具有一个或者多个条件和一个或者多个对应动作。如果消息的内容与滤波器的条件相匹配,则消息中介230可以执行对应动作,诸如执行输出第二图形用户界面的指令。在一些示例中,可以在不将消息转发至消息中介230的情况下通过路由器212在内部路由上述的这样的消息。
在一些示例中,监督器组件228A确保至少一个应用容器被包括在应用容器池232中并且准备好被唤醒。在应用容器池232中包括的每个应用容器当前未分配给特定应用并且当前未在执行应用代码。然而,在应用容器池232中包括的每个应用容器包括足够的自举代码,以能够在监督器组件228A唤醒特定应用容器并且将特定应用容器指派给特定应用时加载和运行应用代码。来自应用容器池232的特定应用容器从监督器组件228A接收指令以开始加载和运行特定应用的应用代码。
如上所述,每个应用容器202可以在不同应用正在执行时与该对应应用相对应。在各个实例中,监督器组件228A维护哪些应用容器映射至哪些执行应用的映射。应用可以包括对计算设备200执行操作的不同功能。例如,应用可以包括电子邮件应用、文本消息收发应用、即时消息收发应用、天气应用、视频会议应用、社交网络应用、天气应用、股票市场应用、紧急警报应用、运动应用、办公生产力应用、多媒体播放器,仅举几例。
当用户或者操作系统调取特定应用时,监督器组件228A动态分配来自应用容器池232的应用容器202并且维护特定应用容器202到对应应用的映射。当应用终止时,监督器组件228A可以清理不再被需要的任何应用容器202。例如,监督器组件228A可以重置应用容器202A的状态或者可以卸载映射至现在终止的应用的应用容器202A。在监督器组件228A卸载不再映射至正活动执行的应用的应用容器202的示例中,监督器组件228A可以安装新应用容器并且将所述新应用容器添加至应用容器池232以确保至少一个应用容器响应于应用的调取而准备好被唤醒。按照这种方式,应用安装的用户交互时延可能会减小至零或者几乎为零,而从操作系统的角度来看,维护每个应用的单独身份。
如图2所示,应用容器202A提供执行环境和支持服务以指导执行应用的可执行组件208。应用容器202可以作为操作系统236中的单独进程而执行。在一些示例中,应用容器202A包括消息收发接口215。路由器212可以经由消息收发接口215从运行时系统226接收消息,并且运行时系统226可以经由消息收发接口215从可执行组件208和路由器212接收消息。应用容器202A的程序逻辑可以实现在可执行组件208中。可执行组件可以是机器可执行代码的逻辑分组。例如,在面向对象的设计中,单个可执行组件可以是包括机器可执行代码的单个编译类文件。
应用容器202A可以是一个或者多个子包204的器皿(Vessel)。在一些示例中,子包包括两个或者更多个可执行组件208。子包可以包括资源(例如,图像、文本、视频或者任何其它非编译数据)、安全性和/或签名信息、版本信息和/或依赖关系信息、或者应用的任何其它信息。软件开发者可以将应用设计为由多个用户定义的子包组成。每个用户自定义的子包可以包括共同提供离散的功能集合的可执行组件的集合。例如,软件开发者可以设计具有多个不同用户界面的导航应用。每个用户界面可以包括不同的用户界面元素和对应行为的集合。同样,每个用户界面可以用不同的可执行组件集合来实现。例如,导航应用可以包括逐向(turn-by-turn)导航用户界面、兴趣点用户界面(例如,显示地图上的兴趣点的细节)、以及设置用户界面。软件开发者可以设计具有三个不同子包的应用,其中,每个子包包括可执行组件集合以实现相应用户界面的功能。
应用容器202A可以包括容器运行时224。容器运行时224可以包括一个或者多个库和/或由容器运行时224、运行时系统226、和/或操作系统236内的库提供的服务和/或功能的一个或者多个应用编程接口(API)217。同样,容器运行时224可以提供安全的进程内API层。即,每个应用容器202与应用容器所映射的特定应用的应用代码共享进程和地址空间。通过共享进程和地址空间,应用容器202可以简化应用代码与共享API代码之间的方法调用语义。即,不同于需要开发者使用阻塞的进程间通信调用,开发者可以直接利用API 217。
通过控制应用容器和容器运行时,运行时系统226可以代理API调用并且验证应用容器和容器运行时尚未被篡改,并且因此为敏感行为提供运行时逻辑。例如,可能需要通过容器运行时的API来调用请求访问用户的设备标识符(例如,设备的全局唯一标识符)的应用,该容器运行时然后可以与监督器组件228A一起检查以确保这是允许的行为或者甚至修改该API的输出(例如,通过擦除个人识别信息或使其伪名化(pseudonymizing))。通常,应用容器202可以准许对操作系统236的一些直接访问,可以准许经由代理的一些间接动作,并且还可以阻挡对某些API的访问。按照这种方式,容器运行时224可以保证这样的检查发生各种操作,因为这样的操作只能通过容器运行时224的API进行。进一步地,因为应用容器202的容器运行时224提供API 217,因此对应用容器202的更新可以执行应用更新,而不是需要更新底层操作系统236,这可以增加任何这样的更新的采用率,这继而可以增加操作平台的安全性。
容器运行时224还可以提供在需要平台协调的API上进行迭代的层。例如,子包可以声明其需要一些特定数据(诸如,位置),并且容器运行时224可以与加载特定子包的可执行组件并行获取位置,并且在启动应用时提供位置作为参数。作为一个示例,开发者可以在应用的元数据中指定执行应用所需的一些依赖性数据。容器运行时224不仅可以检索并开始执行应用的应用代码,而且还可以并行地识别并检索依赖性数据。在一些实例中,开发者可以指定依赖性数据是强制的(即,要执行应用所需的)还是“尽力而为(best effort)”(即,改进应用的操作/功能,但不是要执行应用所严格需要的)。强制的依赖性数据的示例可以是显示应用的基本用户界面所需的数据。对于“尽力而为”依赖性数据,即使容器运行时224尚未接收到“尽力而为”依赖性数据,容器运行时224也可以在应用代码被下载并且可供执行时立即开始执行应用代码。
每个应用可以与包括定义应用的操作的一个或者多个可执行组件的应用容器一起执行。应用容器202A包括发送和接收消息的路由器212,该路由器212改变应用的行为和/或使得应用与可执行组件208和消息收发接口215一起执行一个或者多个操作。例如,路由器212可以接收请求执行一个或者多个操作的消息。路由器212可以基于消息的内容来确定包括要执行一个或者多个操作的可执行组件的子包是否被本地存储或者以其他方式可在计算设备200上访问。消息的内容可以包括标识符,诸如,与子包相对应的统一资源标识符(URI)。如果子包被本地存储或者以其他方式可在计算设备200上访问,则路由器212基于消息的内容来识别要执行操作的一个或者多个可执行组件。在一些示例中,消息可以包括进一步指定要执行的一个或者多个操作的附加属性(例如,用于启动用户界面的类别、MIME类型的数据、用于执行的显式组件类)或者数据(例如,用户数据或者机器生成的数据)。同样,由路由器212识别的一个或者多个可执行组件可以基于附加属性或者数据来执行一个或者多个操作。
如上所述,特定应用的所有子包都不需要本地驻留在计算设备200处以执行应用。为了确定用于特定功能的子包是驻留在计算设备200处还是以其他方式可在计算设备200处访问,路由器212可以对应用定义216执行查找。应用定义216通常可以定义用户指定的标识符(例如,URI、字符串、整数或者任何其它合适的标识符)与指定应用的特定功能的子包之间的映射。应用定义216包括路由表218中的这些映射,该路由表包括用户指定的标识符220A至220N(“用户指定的标识符220”)与子包标识符222A至222N(“子包标识符222”)之间的映射。如果路由器212接收具有用户指定的标识符的消息以通过使用特定子包来执行功能,则路由器212可以在路由表218中执行查找。如果路由器212确定例如用户指定的标识符220A与该消息中的用户指定的标识符相匹配,则路由器212可以确定与子包标识符222A相对应的子包204A是否驻留在计算设备200上。由于子包204A驻留在计算设备200上,因此路由器212基于消息来执行对子包204A的调用或者将消息发送至子包204A,该子包204A通过使用可执行组件208A来执行一个或者多个操作。
如上所述,因为应用的全部子包集合都不需要被本地存储在计算设备200上,因此计算设备200处的应用的初始安装和/或初始执行可能需要比从远程计算设备下载由计算设备200安装并且执行的整个应用的情况所花费的时间更少的时间。同样,用户可以从应用和/或应用的行为效能中体验更高的响应度。
在图2的示例中,用户可能期望最初安装并且执行导航应用。首先,导航应用的子包或者应用定义中没有一个可以被存储在计算设备200处。用户可以将用户输入提供给计算设备200以初始地选择由操作系统236提供的、与地图应用相对应的用户界面中的图标。替选地,用户可以选择在计算设备200处执行并且与远程计算设备242通信的媒体存储应用(未示出)中的地图应用以检索子包和应用定义。在任何情况下,监督器组件228A的消息中介230从操作系统236或者请求执行导航应用的特定功能的媒体存储应用接收消息。因为尚未安装导航应用,因此所请求的特定功能将要显示应用的默认或者主用户界面。
监督器组件228A可以基于消息的内容来确定应用容器是否已经针对导航应用被分配在计算设备200的存储器中。例如,消息的内容可以包括导航应用的唯一标识符,诸如,应用的名称。响应于确定监督器组件228A尚未为导航应用分配应用容器,监督器组件228A可以分配来自应用容器池232的应用容器202A。应用容器池232可以包括为应用保留并且可用于执行应用的一组进程。在一些示例中,监督器组件228A可以与操作系统236通信以为应用容器202A创建新进程。
监督器组件228A可以确定尚未安装导航应用并且向远程计算设备242中的一个或者多个请求应用定义。例如,监督器组件228A可以向远程计算设备242A发送消息,其中,该消息包括在远程计算设备242中全局唯一的导航应用的标识符。远程计算设备242A在接收到消息时从应用定义244中选择应用定义216,并且将应用定义216发送至计算设备200。监督器组件228A接收应用定义216,该应用定义549可以被包括在应用容器202A中或者可被应用容器202A访问。
监督器组件228A使得消息中介230向应用容器202A发送消息以显示应用的默认或者主用户界面。具体地,消息可以包括用户指定的标识符,该用户指定的标识符与具有显示应用的默认或者主用户界面的功能的子包相对应。在一些示例中,消息中介230基于从媒体存储应用接收到的信息来接收(或者生成)用户指定的标识符或者从与用户最初选择的映射应用的图标相关联的自举功能接收(或者生成)用户指定的标识符。自举功能可以包括但不限于,将用户指定的标识符发送至消息中介230。
路由器212经由消息收发接口215接收具有用户指定的标识符的消息。在图2的该示例中,用户指定的标识符是220A。基于用户指定的标识符,路由器212确定与用户指定的标识符220A相对应的子包标识符222A的子包未被本地存储在计算设备200处。路由器212可以通过使用容器运行时224和/或运行时系统226将消息发送至远程计算设备242A以向子包请求子包标识符222A。例如,由容器运行时224和/或运行时系统226向远程计算设备242A发送的消息可以包括子包标识符222A。远程计算设备242A可以将子包发送至计算设备200,该计算设备200包括用于显示导航应用的默认或者主用户界面的可执行组件。
路由器212响应于确定未本地存储子包标识符222A的子包可以使生命周期管理器210经由回调接口213监听系统生命周期调用,其中,通过运行时系统226发出生命周期调用。生命周期调用可以包括启动应用、暂停应用、重启应用、或者终止应用,仅举几例。一旦计算设备200已经从远程计算设备242A检索到子包204A,生命周期管理器210可以缓冲将由子包204A的可执行组件执行的生命周期调用。一旦已经通过计算设备200检索到子包204A,生命周期管理器210就可以向子包204A发送每个缓冲的生命周期调用。
在图2的示例中,响应于生命周期管理器210确定计算设备200已经检索到子包204A并且本地存储子包204A,生命周期管理器210发送调用或者以其他方式调取加载器206以将可执行组件208中的一个或者多个加载到计算设备200的存储器中,以便执行最初请求的特定功能,例如,显示应用的默认或者主用户界面。在一些示例中,加载器206负责将可执行组件加载到存储器中。在一些示例中,加载器206可以表示多个加载器,其中,每个加载器负责将不同的可执行组件加载到存储器中。对于特定的可执行组件,加载器206可以定位由特定的可执行组件使用的对应的库并且将任何这样的库加载到存储器中,使得这些库可被特定的可执行组件访问。生命周期管理器210还可以将缓冲的生命周期调用发送至可执行组件208中的一个或者多个。在接收到缓冲的生命周期调用时,可执行组件208中的一个或者多个使得计算设备200显示应用的默认或者主用户界面。
稍后,如果用户希望导航至设置用户界面,则用户可以提供用户输入,该用户输入为应用的当前显示的默认或者主用户界面中的设置选择用户界面元素(例如,图标、按钮、标签等)。运行时系统226向应用容器202A发送指示对用户界面元素的选择的消息。可执行组件208A确定选择显示设置用户界面。可执行组件208A生成具有子包222N的用户指定的标识符220N的消息,该子包包括设置用户界面的功能。可执行组件208A可以将消息直接发送至路由器212或者发送至运行时系统226,该运行时系统进而将消息路由回路由器212。在任一种情况下,路由器212执行对用户指定的标识符220N的查找并且确定子包标识符222N的子包未被本地存储在计算设备200处。
按照相似方式,如上文针对子包204A描述的,路由器212通过使用容器运行时224和/或运行时系统226将消息发送至远程计算设备242A以检索子包标识符222N的子包。远程计算设备242A可以将子包222N发送至计算设备200,该计算设备200包括用于显示导航应用的设置界面的可执行组件。当计算设备200正在检索子包222N时,生命周期管理器210可以缓冲在回调接口213处接收到的生命周期调用。在下载子包222N时,生命周期管理器210使得加载器206将子包222N的可执行组件加载到存储器中。加载器206可以发起可执行组件中的一个或者多个的执行,以使得导航应用的设置界面被显示在计算设备200的显示设备处。
在各个实例中,监督器组件228A可以从应用容器202A卸载一个或者多个子包204。例如,监督器组件228A可以确定计算设备200缺少可用存储空间或者确定计算设备200的使用尚未在阈值时间量内请求一个或者多个子包204的功能,并且作为响应,确定要从应用容器202A移除一个或者多个子包204。在一些实例中,监督器组件228A可以完全卸载应用容器202A或者将应用容器202A解除分配,这可以从计算设备200移除所有子包204。然而,即使在移除所有子包204并且将应用容器202A解除分配或者卸载应用容器202A之后,对于计算设备200的用户,应用仍然可以表现为安装在计算设备200处。例如,应用的图标或者其它图形元素仍然可以出现在计算设备200的图形用户界面内(例如,在桌面GUI上)或者应用的指示可以出现在计算设备200处安装的应用列表中。尽管可以不再将子包204和应用容器202A存储在计算设备200处,但监督器组件可以维护应用的各个状态信息,包括应用的应用标识符和应用的重置状态信息。
如果在已经从计算设备200卸载应用之后,用户请求执行应用,则监督器组件228A可以分配来自应用容器池232的新应用容器。例如,监督器组件228A可以为应用分配应用容器202B。在各个实例中,应用容器202B可以将应用的状态设置为在从计算设备200卸载应用之前的应用的状态。例如,假定用户没有提供在生成最后的唯一标识符的时间与当前时间之间重置应用的状态的输入,应用容器202B的容器运行时224可以生成具有与在卸载应用之前最后生成的唯一标识符相同的值的唯一标识符。容器运行时224可以通过加载存储在计算设备200处的重置状态来确定重置状态,并且可以确定计算设备的当前用户。通过使用重置状态、计算设备的当前用户的信息、和应用的应用标识符,容器运行时224生成唯一标识符,该唯一标识符不包括当前用户的个人可识别信息。
计算设备200将唯一标识符和对信息的一个或者多个请求发送至应用服务提供者系统,诸如,远程计算设备242或者图1的应用服务提供者系统170中的一个。应用服务者提供者系统检索所请求的信息——该信息可以包括应用的状态信息,该状态信息包括应用的当前状态和用户偏好信息),并且将所请求的信息发送至计算设备200。容器运行时224基于接收到的状态信息来更新应用的当前状态。按照这种方式,本公开的技术可以使得能够针对短暂应用维护状态信息,而不向应用服务提供者提供个人可识别信息。
在一些示例中,用户可以拥有多个设备并且可以跨每个用户设备执行导航应用。然而,用户可能不希望注册导航应用的用户账户,并且更希望对导航应用开发者保持匿名。在一些示例中,应用容器202A可以向导航应用和相关联的服务提供多设备、伪名式(pseudonymous)、隐私友好的标识符,该标识符可以用来跨用户设备保留状态信息(例如,搜索历史、偏好等)。由一个或者多个设备上的用户安装的每个应用可以被指派有对于(用户、应用、重置序列)的元组唯一的不透明标识符。不同于向应用服务提供者提供个人识别信息,应用服务提供者接收不透明标识符。
例如,如果用户第一次启动其电话上的导航应用。监督器组件228A可以在启动时自动提供对于用户唯一的ID——诸如,元组(user1、navapp、1)的散列,并且将ID提供给映射至导航应用的应用容器202A。如果用户指示特定位置与用户的家相对应,则导航应用可以依据在由导航应用开发者提供的应用服务上的唯一标识符来存储该搜索历史。稍后,如果用户启动其平板上的导航应用,则在平板上执行的监督器组件可以为用户生成相同的唯一标识符,即,通过散列相同的元组(user1、navapp、1)。通过为用户生成相同的唯一标识符,导航应用可以在导航应用内示出她家的位置。
稍后,如果用户想要重置保存的状态信息,则用户可以重置其与导航应用的关系(例如,经由导航应用的设置用户界面)。在导航应用的下一次调取时,应用容器202A可以向导航应用提供新唯一标识符。作为一个示例,容器运行时224可以对元组的重置状态部分进行增量,这将产生不同元组(user1、navapp、2),该不同元组在被散列时将生成不同的唯一标识符。通过更改唯一标识符,导航应用无法加载与先前的唯一标识符相关联的状态信息。因此,如果用户指示不同位置作为用户的家,则新位置与新唯一标识符相关联,而不需要知道与用户的家相关联的先前位置。即,本公开的技术可以使得应用能够跨不同设备维持状态信息,使得用户可以具有一致的体验,而不需要用户提供其个人识别信息。
在各个实例中,导航应用可能需要用户的个人可识别信息。例如,如果用户通过使用导航应用来搜索餐厅,则导航应用可以提供在餐厅进行预订的选项。如果用户选择使用导航应用来进行预订,则导航应用可以请求用户的姓名和其它个人可识别信息,以便完成预订请求。如果用户向导航应用提供信息,则导航应用可以将用户的信息与唯一标识符相关联。然而,用户可以容易地重置状态信息并且生成新的唯一标识符。
在一些实例中,中间服务提供者可以维护与唯一标识符相关联的状态信息,而不需要应用开发者操作这样的服务。中间服务提供者可以确保在运行应用之前在设备上存在在当前标识符下存储的所有先前状态。在中间服务者提供者存储用户的个人识别信息和唯一标识符二者的实例下,中间服务提供者可以在不需要用户向应用透露其身份的情况下为特定请求服务。例如,中间服务提供者可能能够完成可以在不需要额外登录或者账户选择步骤的情况下匿名执行的支付。作为另一示例,中间服务提供者可以经由电子邮件和推送通知来管理重新参与。开发者可以通过使用唯一标识符对用户进行定址,并且中间服务提供者可以在单个易于理解的地方为用户实施反垃圾邮件控制,从而在不将信息泄露给开发者的情况下最终交换唯一标识符。
图3是图示了根据本公开的一个或者多个方面的计算设备100和/或200的其它细节的框图。图3仅图示了计算设备100和/或200的一个特定示例。计算设备100和/或200的许多其它示例可以在其它实例中使用并且可以包括示例计算设备300中包括的组件的子集或者可以包括图3中的示例计算设备300未示出的附加组件。
如图3的示例中所示,计算设备300包括一个或者多个处理器340、一个或者多个输入组件342、一个或者多个通信单元344、一个或者多个输出组件346、一个或者多个存储组件348、和存在敏感显示器304。计算设备300的存储组件348包括不透明标识符模块322、UI模块320、和操作系统336。通信信道350可以将组件340、344、346、342、358、304、313、315、348、320、322、324、326、和/或336互连以供进行(物理地、通信地、和/或操作地)组件间通信。在一些示例中,通信信道350可以包括系统总线、网络连接、一个或者多个进程间通信数据结构、或者用于在硬件和/或软件之间传送数据的任何其它组件。
一个或者多个处理器340可以在计算设备300内实现功能和/或执行指令。例如,在计算设备300上的处理器340可以接收和执行由提供操作系统336、不透明标识符模块322和UI模块320的功能的存储组件348存储的指令。由处理器340执行的这些指令可以使得计算设备300在程序执行期间将信息在存储组件348内存储和/或修改信息。处理器340可以执行操作系统336、不透明标识符模块322和UI模块320的指令以执行一个或者多个操作。即,操作系统336、不透明标识符模块322、和UI模块320可以由处理器340操作以执行本公开中描述的各个功能。
计算设备300的一个或者多个输入组件342可以接收输入。输入的示例是触觉输入、音频输入、体感输入、和光学输入,仅举几例。在一个示例中,计算设备300的输入组件342包括鼠标、键盘、语音响应系统、视频相机、按钮、控制板、麦克风或者用于检测来自人或者机器的输入的任何其它类型的设备。在一些示例中,输入组件342可以是存在敏感输入组件,该存在敏感输入组件可以包括存在敏感屏幕、触摸敏感屏幕等。
计算设备300的一个或者多个输出组件346可以生成输出。输出的示例是触觉输出、音频输出、和视频输出。在一些示例中,计算设备300的输出组件346包括:存在敏感屏幕、声卡、视频图形适配器卡、扬声器、阴极射线管(CRT)监视器、液晶显示器(LCD)、或者用于生成至人或者机器的输出的任何其它类型的设备。输出组件可以包括显示组件,诸如,阴极射线管(CRT)监视器、液晶显示器(LCD)、发光二极管(LED)、或者用于生成触觉输出、音频输出、和/或视觉输出的任何其它类型的设备。
在一些示例中,计算设备300的存在敏感显示器304可以包括输入组件342和/或输出组件346的功能。在图3的示例中,存在敏感显示器304可以包括存在敏感输入组件315,诸如,存在敏感屏幕或者触摸敏感屏幕。在一些示例中,存在敏感输入组件315可以检测在存在敏感输入组件处和/或附近的对象。作为一个示例范围,存在敏感输入组件315可以检测对象,诸如,在与存在敏感输入组件315相距2英寸或者以下的位置内的手指或者触控笔。存在敏感输入组件315可以确定存在敏感输入组件的检测到对象的位置(例如,(x,y)坐标)。在另一示例范围中,存在敏感输入组件315可以检测与存在敏感输入设备315相距2英寸或者小于2英寸的对象,并且其它范围也是可能的。存在敏感输入组件315可以通过使用电容识别技术、感应识别技术、和/或光学识别技术来确定通过用户的手指选择的存在敏感输入组件315的位置。
在一些示例中,存在敏感显示器304还可以通过使用如针对输出组件346描述的触觉刺激、音频刺激、或者视频刺激来向用户提供输出。例如,存在敏感显示器304可以包括呈现图形用户界面的显示组件313。诸如针对输出组件346描述的,显示组件313可以是提供视觉输出的任何类型的输出组件。虽然被图示为计算设备300的集成组件,但是在一些示例中,存在敏感显示器304可以是与计算设备300的其它组件共享数据路径的外部组件以供传输和/或接收输入和输出。例如,存在敏感显示器304可以是计算设备300的位于计算设备300的外部封装内并且物理地连接至计算设备300的外部封装的内置组件(例如,在移动电话上的屏幕)。在另一示例中,存在敏感显示器304可以是计算设备300的位于计算设备300的封装外并且与计算设备300的封装物理地分开的外部组件(例如,与平板计算机共享有线和/或无线数据路径的监视器、投影仪等)。在一些示例中,当存在敏感显示器304位于计算设备300的封装外并且与计算设备300的封装物理地分开时,存在敏感显示器304可以由两个单独组件实现:用于接收输入的存在敏感输入组件315和用于提供输出的显示组件313。
计算设备300的一个或者多个通信单元344可以通过传输和/或接收数据来与外部设备进行通信。例如,计算设备300可以使用通信单元344传输和/或接收在无线电网络(诸如,蜂窝无线电网络)上的无线电信号。在一些示例中,通信单元344可以传输和/或接收在诸如全球定位系统(GPS)网络的卫星网络上的卫星信号。通信单元344的示例包括网络接口卡(例如,诸如,以太网卡)、光收发器、射频收发器、GPS接收器、或者可以发送和/或接收信息的任何其它类型的设备。通信单元344的其它示例可以包括在移动设备以及通用串行总线(USB)控制器等中存在的GPS、3G、4G和/>无线电设备。
如图3所示,计算设备300可以包括电源358。在一些示例中,电源358可以是电池。电源358可以向计算设备300的一个或者多个组件提供电力。电源358的示例可以包括但不必限于,具有锌碳、铅酸、镍镉(NiCd)、镍金属氢化物(NiMH)、锂离子(Li离子)、和/或锂离子聚合物(Li离子聚合物)化学成分的电池。在一些示例中,电源358可以具有有限的容量(例如,1000至3000mAh)。
计算设备300内的一个或者多个存储组件348可以存储信息以供在计算设备300的操作期间进行处理。在一些示例中,存储组件348是临时存储器,这意味着存储组件348的主要目的不是长期存储。可以将在计算设备300上的存储组件348配置为作为易失性存储器短期存储信息,并且因此,如果该存储组件被停用,则将不会保留已存储的内容。易失性存储器的示例包括随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、和本领域已知的其它形式的易失性存储器。
在一些示例中,存储组件348还包括一种或者多种计算机可读存储介质。存储组件348可以被配置为比易失性存储器存储更大量的信息。可以将存储组件348进一步配置为作为非易失性存储器空间来长期存储信息,并且在启动/关闭周期后保留信息。非易失性存储器的示例包括磁硬盘、光盘、软盘、闪速存储器、或者电可编程存储器(EPROM)或者电可擦除可编程(EEPROM)存储器的形式。存储组件348可以存储与操作系统336、不透明标识符模块322、和UI模块320相关联的程序指令和/或数据。如针对图1和图2描述的,UI模块320和操作系统336可以分别是图1的UI模块120和图2的操作系统236的示例,并且提供UI模块120和操作系统236的功能。
根据本公开的技术,不透明标识符模块322基于关于计算设备300的当前用户的信息、在计算设备300处执行的应用的应用标识符、和重置状态来生成唯一标识符。计算设备300向应用服务提供者系统(例如,图1的应用服务提供者系统)提供唯一标识符以及由应用生成的、由应用服务提供者系统维护的信息,诸如,对信息、应用使用信息、位置信息、关于应用的当前状态的信息等的一个或者多个请求。
标识符生成模块324生成唯一标识符,使得唯一标识符不包括个人可识别信息。虽然在全文中描述为通过使用计算设备300的当前用户的信息来生成个人可识别信息,但当前用户的个人可识别信息不包括在唯一标识符内。相反,标识符生成模块324可以将散列函数应用于包括当前用户的信息(诸如,用户标识符,例如,电子邮箱地址、电话号码、账户编号、或者唯一地标识计算设备300的当前用户的任何其它信息)、相关联的应用的应用标识符、和重置状态的值的元组。在各个示例中,除了元组之外,标识符生成模块324还通过使用salt来生成唯一标识符,这可以使得更难以对散列函数求逆以提取可能已经用于生成唯一标识符的任何潜在的个人可识别信息。
标识符重置模块326接收设备重置请求(例如,响应于存在敏感显示器304检测到重置应用的状态信息的用户输入)。响应于接收到重置应用的状态的请求,标识符重置模块326更新应用的重置状态。例如,标识符重置模块326通过例如对重置状态的值进行增量或者以其他方式改变重置状态的值来更新应用的重置状态。通过改变应用的重置状态的值,由于由标识符生成模块324用来生成唯一标识符的元组是不同的,因此由标识符生成模块324生成的唯一标识符不同。例如,在接收到重置应用的状态信息的用户输入之前,标识符生成模块324可以通过使用元组(user1、app1、1)来生成唯一标识符,其中,元组中的最后值是重置状态。在标识符重置模块326更新应用状态的值之后,标识符生成模块324可以通过使用元组(user1、app1、2)来生成更新后的唯一标识符。当计算设备300向应用服务提供者系统发送更新后的唯一标识符时,由于应用服务提供者系统不具有与存储在应用服务者提供者系统处或者以其他方式可供应用服务者提供者系统使用的更新后的唯一标识符相关联的信息,因此应用服务提供者系统对更新后的唯一标识符进行处理,就如同更新后的唯一标识符是新用户账户一样。即,在重置应用状态之后,更新后的唯一标识符使得用户对应用服务提供者系统表现为新用户。
在一些示例中,标识符重置模块可以使得计算设备300向与计算设备300的当前用户相关联的其它计算设备发送命令,以使得其它计算设备更新应用的重置状态。命令可以包括对重置状态的更新后的值的指示。响应于接收到命令,其它计算设备更新应用的重置状态,使得由其它计算设备为同一用户和同一应用生成但具有更新后的重置状态的更新后的唯一标识符与由标识符生成模块324在标识符重置模块326更新计算设备300处的应用的重置状态之后生成的更新后的唯一标识符相同。
图4是图示了根据本公开的技术的,跨应用实例提供标识符的计算系统的示例操作的流程图。仅出于说明之目的,下面在图1的计算系统100的场境(context)内描述了示例操作。尽管示出为包括元素400至416,但在一些示例中,元素400至416中的一个或者多个可以是可选的,并且可以按照与图4的示例中所示的顺序不同的顺序执行与元素400至416相关联的动作。
在图4的示例中,应用服务提供者系统170从第一计算设备——诸如计算设备110A接收与在计算设备110A处执行的应用相关联的标识符(400)。例如,计算设备110A的用户可以在计算设备110A处提供执行应用的输入。不透明标识符模块122A可以基于关于当前用户的信息、应用的应用标识符、和应用的重置状态来生成与应用相关联的标识符。由不透明标识符模块122A生成的标识符不包括计算设备110A的当前用户的个人可识别信息,诸如,当前用户的用户账户信息、当前用户的姓名、当前用户的电话号码、当前用户的地址等。
在一些示例中,当计算设备110A执行应用时,计算设备110A可以向应用服务提供者系统170发送对信息的一个或者多个请求(402)。对信息的请求可以包括对用户偏好信息、应用使用信息、和/或关于应用的当前状态的信息的请求(例如,当在不同设备处执行应用并且用户重新开始使用计算设备110A处的应用时)。响应于接收到对信息的请求,应用服务提供者系统170更新应用的历史请求信息(404),检索所请求的信息,并且向计算设备110A发送信息(406)。历史请求信息包括应用的状态信息,包括应用使用信息和用户偏好信息。发送至计算设备110A的信息可以包括用户偏好信息。例如,如果用户第一次在计算设备110A处执行该应用,但用户先前已经在不同计算设备处执行了该应用,则应用服务提供者系统170可以向该应用发送用户偏好信息,使得计算设备110A可以根据用户偏好信息来配置应用。
在一些示例中,应用服务提供者系统170可以从第二计算设备接收标识符(408)。来自第二计算设备的标识符不包括第二计算设备的当前用户的个人可识别信息,并且当第二计算设备的当前用户与第一计算设备的当前用户相同时,可以具有与从第一设备接收到的标识符相同的值,在第二计算设备处执行的应用是在第一计算设备处执行的相同应用(但应用的不同实例),并且应用的重置状态在第二计算设备上与在第一计算设备上相同。在一些示例中,第二计算设备可以是与第一计算设备不同的计算设备(例如,计算设备110N)。在其它示例中,第二计算设备是与第一计算设备相同的计算设备,但标识符是在重新安装应用之后生成的,使得生成相同标识符,并且可以在不需要用户提供个人识别信息的情况下从应用服务提供者系统170检索状态信息。
在图4中示出的示例中,应用服务提供者系统170基于从第二计算设备接收到的标识符来确定应用的用户偏好信息(410)并且向第二计算设备发送用户偏好信息(412)。
第一计算设备和/或第二计算设备的当前用户可以选择重置应用的状态,这使得计算设备生成应用的不同标识符。应用服务提供者系统170接收不同标识符(414)并且对不同标识符进行处理,就如同当前用户是不同用户一样。即,因为在用户重置应用的状态之后生成和发送的标识符与由同一用户通过使用同一计算设备为同一应用生成和发送的先前标识符不同,应用服务提供者系统170无法检索任何先前存储的历史请求信息,并且配置为提供应用状态信息,就如同用户是之前从未使用过应用的新用户一样。因此,响应于接收到不同标识符,应用服务提供者系统170确定应用的不同用户偏好信息(416)并且可以向第一计算设备和/或第二计算设备发送不同用户偏好信息。
图5A和图5B是图示了根据本公开的技术的,跨应用实例提供标识符的计算设备的示例操作的流程图。仅出于说明之目的,下面在图1的计算设备100和图2的计算设备200的场境内描述了示例操作。
如图5A所示,第一计算设备(例如,计算设备200)接收执行应用的特定功能的请求(500)。例如,用户可以在计算设备200处提供用户输入以启动应用,并且计算设备200的监督器组件228A可以接收对用户输入的指示作为执行应用的请求。监督器组件228A可以确定用于维护应用的可安装子包的应用容器(例如,应用容器202中的一个,诸如,应用容器202A)是否被分配在计算设备200的存储器(例如,图3的存储组件348中的一个)中(502)。
响应于确定用于维护应用的可安装子包的应用容器未被分配在存储器中(502的“否”分支),计算设备200可以分配有应用容器(例如,应用容器202A)(504)。例如,计算设备200可以通过例如向远程计算系统发送包括应用的唯一标识符的请求来从远程计算系统检索应用定义。远程计算系统可以执行查找并且识别对应的应用定义。远程计算系统可以向计算设备200发送应用定义。计算设备200可以从远程计算系统接收应用定义,并且在计算设备200的存储器中为应用分配应用容器202A。
应用容器202A可以识别、下载、并且安装提供所请求的功能所需的应用的一个或者多个子包(506)。例如,如果监督器组件228A先前将应用容器202解除了分配(即,在通过计算设备200接收执行应用的当前请求之前),则可能需要监督器组件228A为应用分配另一应用容器并且重新安装执行应用的在执行应用的当前请求中指定的功能所需的可安装子包中的一个或者多个。在该示例中,由于监督器组件228A将先前分配给应用的应用容器解除了分配,因此执行应用的当前请求可以是执行应用的第二请求或者后续请求。
响应于在存储器中分配了应用容器或者响应于确定应用容器已经被分配在存储器中(502的“是”分支),应用容器202A的容器运行时224可以确定计算设备200的当前用户(508)并且确定应用的重置状态(510)。容器运行时224可以基于计算设备200处的当前登录的用户账户或者任何其它机制来确定计算设备200的当前用户。应用的重置状态可以是重置状态变量的当前值,可以由容器运行时224通过从计算设备200的存储器加载重置状态变量的值来确定该当前值。
容器运行时224通过使用关于当前用户的信息(例如,当前用户的用户标识符)、应用的应用标识符、和重置状态变量的值来生成唯一标识符(512)。唯一标识符不包括当前用户的个人可识别信息,但是可由应用服务提供者系统170用来唯一地识别用户和应用以便存储和检索应用的应用状态信息。容器运行时224可以通过例如将散列函数应用于包括用户标识符、应用标识符、和重置状态的元组来生成唯一标识符。在一些示例中,容器运行时224进一步将salt与元组一起包括并且将散列函数应用于salt和元组的组合。
计算设备200向应用服务提供者系统170发送唯一标识符和对信息的一个或者多个请求(514)。对信息的请求可以包括对用户偏好信息、应用使用信息、关于应用的当前状态的信息等的请求。计算设备200接收所请求的信息(516)的至少一部分,并且容器运行时224可以基于所请求的信息的接收到的部分来配置应用。
有时,计算设备200的用户可能希望重置应用的状态。例如,用户可能已经为应用提供了个人可识别信息(例如,以便进行餐厅预订、接收导航指令、或者应用的其它功能),但现在期望应用不再能够访问个人可识别信息。同样,计算设备200接收重置应用的状态的请求(518)。重置应用的状态的请求可以是对由计算设备200在存在敏感屏幕的位置处检测到的用户输入的指示,在该位置处显示用于重置应用的状态的图形元素。
响应于接收到重置应用的状态的请求,容器运行时224可以更新重置状态变量的值(520)。例如,容器运行时可以对重置状态变量的值进行增量。计算设备200下一次执行应用时,容器运行时224通过使用更新后的重置状态来生成更新后的唯一标识符(526)。在当前用户是同一用户并且应用是同一应用的情形下,当用户标识符、应用标识符、和重置状态元组的重置状态部分已经改变时,容器运行时224将生成不同的唯一标识符。当计算设备200向应用服务提供者系统170发送更新后的唯一标识符时(528),与计算设备200发送了先前的唯一标识符的情况相比,计算设备200将接收应用的不同状态信息。因为更新的唯一标识符与先前的唯一标识符不同,因此应用服务提供者系统170对用户进行处理,就如同用户是应用的不同用户(诸如,新用户)一样。因此,应用提供者系统170检索不同的信息并且向计算设备200发送不同的信息。
在一些实例中,计算设备200可以被配置为跨与计算设备200的当前用户相关联的一个或者多个其它计算设备来重置应用状态。在这样的实例中,容器运行时224可以使得计算设备200向其它计算设备发送重置请求或者命令(522)。作为一个示例,计算设备200可以基于与当前用户的用户账户相关联的计算设备标识符来确定要向其发送重置请求的计算设备。其它计算设备响应于接收到重置请求而重置应用的状态信息(524)。通常,在执行重置之后,其它计算设备处的应用的重置状态与计算设备200处的应用的重置状态相同,使得如果用户在其它计算设备中的一个计算设备处执行应用,则在其它计算设备处生成的唯一标识符将与在计算设备200处生成的唯一标识符相同。按照这种方式,本公开的技术可以提供一种机制,通过该机制可以跨用户的计算设备来共享应用状态信息,而不需要用户提供个人可识别信息。
示例1:一种方法,包括:由在计算设备处执行的监督器组件接收执行应用的请求;响应于确定用于维护所述应用的可安装子包的应用容器被分配在所述计算设备的存储器中:由所述应用容器的容器运行时确定所述计算设备的当前用户;由所述容器运行时确定所述应用的重置状态;以及由所述容器运行时基于所述计算设备的所述当前用户、所述重置状态、和所述应用的应用标识符来生成唯一标识符,所述唯一标识符不包括所述当前用户的个人可识别信息;由所述计算设备向应用服务提供者发送所述唯一标识符和对信息的一个或者多个请求;以及响应于发送对信息的所述一个或者多个请求,由所述计算设备从所述应用服务提供者接收与所述当前用户相关联的状态信息和所述应用的状态信息。
示例2:根据示例1所述的方法,其中,执行所述应用的所述请求是执行所述应用的第一请求,并且其中,所述应用容器是第一应用容器,所述方法进一步包括:由所述监督器组件将用于维护所述应用的所述可安装子包的所述第一应用容器解除分配;在将所述第一应用容器解除分配之后,由所述计算设备接收执行所述应用的第二请求;响应于接收到执行所述应用的所述第二请求:由所述监督器组件分配用于维护所述应用的所述可安装子包的所述第二应用容器;由所述第二应用容器安装执行所述应用的、在执行所述应用的所述第二请求中指定的功能所需的所述应用的所述可安装子包中的一个或者多个;由所述第二应用容器的容器运行时确定所述应用的更新后的当前用户,其中,所述更新后的当前用户与所述当前用户相同;由所述容器运行时确定所述应用的更新后的重置状态,其中,所述重置状态与所述更新后的重置状态相同;由所述应用容器的容器运行时基于所述更新后的当前用户和所述更新后的重置状态来生成更新后的唯一标识符,所述更新后的唯一标识符不包括所述更新后的当前用户的个人可识别信息,其中,所述更新后的唯一标识符与所述唯一标识符相同;由所述计算设备向所述应用服务提供者发送所述更新后的唯一标识符;以及由所述计算设备从所述应用服务提供者接收与所述当前用户相关联的状态信息和所述应用的状态信息。
示例3:根据示例1和2的任何组合所述的方法,其中,所述唯一标识符是第一唯一标识符,并且其中,所述计算设备是第一计算设备,所述方法进一步包括:由第二计算设备接收执行所述应用的不同实例的请求;由所述第二计算设备确定所述第二计算设备的当前用户;由所述第二计算设备确定所述第二设备上的所述应用的重置状态;由所述第二计算设备基于所述第二计算设备的所述当前用户和所述第二设备上的所述应用的所述重置状态来生成第二唯一标识符,所述第二唯一标识符不包括所述当前用户的个人可识别信息,其中,当所述重置状态和所述更新后的重置状态相同时,所述第一唯一标识符和所述第二唯一标识符相同,并且其中,当所述重置状态与所述更新后的重置状态不同时,所述第一唯一标识符和所述第二唯一标识符不同;由所述第二计算设备向所述应用服务提供者发送所述第二唯一标识符;以及如果所述第一唯一标识符和所述第二唯一标识符相同,则由所述第二计算设备从所述应用服务提供者接收关于所述一个或者多个应用请求的信息。
示例4:根据示例1至3的任何组合所述的方法,其中,所述唯一标识符是第一唯一标识符,所述方法进一步包括:由所述计算设备接收重置所述应用的状态的请求;由所述计算设备更新所述应用的所述重置状态;由所述计算设备基于所述计算设备的所述当前用户和所述应用的所述更新后的重置状态来生成第二唯一标识符,所述第二唯一标识符不包括所述当前用户的个人可识别信息,其中,所述第一唯一标识符和所述第二唯一标识符不同;以及由所述计算设备向应用服务提供者发送所述第二唯一标识符,使得在重置所述应用的状态之后,所述当前用户对所述应用服务提供者表现为不同的用户。
示例5:根据示例4所述的方法,其中,所述计算设备是第一计算设备,并且其中,第二计算设备与所述当前用户相关联,所述方法进一步包括:从所述第一计算设备向所述第二计算设备发送重置所述应用的状态的所述请求;以及响应于接收到重置所述应用的状态的所述请求,由所述第二计算设备将所述第二计算设备处的所述应用的所述重置状态更新为与所述第一计算设备处的所述应用的所述重置状态相同。
示例6:根据示例1至5的任何组合所述的方法,其中,生成唯一标识符包括:对包括用户标识符、应用标识符、和重置状态的元组进行散列。
示例7:根据示例1至6的任何组合所述的方法,其中,所述状态信息包括以下中的一个或者多个:关于所述应用的当前状态的信息、所述应用的所述当前用户的历史应用使用信息、和所述应用的所述用户的用户偏好信息。
示例8:一种计算设备,其包括:一个或者多个存储设备,该一个或者多个存储设备存储监督器组件;以及一个或者多个处理器,该一个或者多个处理器执行监督器组件以:接收执行应用的请求;并且确定用于维护应用的可安装子包的应用容器是否被分配在一个或者多个存储设备中,其中,响应于确定用于维护应用的可安装子包的应用容器被分配在一个或者多个存储设备中,该一个或者多个处理器执行应用容器以:确定计算设备的当前用户;确定应用的重置状态;基于计算设备的当前用户、重置状态、和应用的应用标识符来生成唯一标识符,该唯一标识符不包括当前用户的个人可识别信息;向应用服务提供者发送唯一标识符和对信息的一个或者多个请求;并且响应于发送对信息的一个或者多个请求,从应用服务提供者接收与当前用户相关联的状态信息和应用的状态信息。
示例9:根据示例8所述的计算设备,其中:执行应用的请求是执行应用的第一请求,应用容器是第一应用容器,该一个或者多个处理器执行监督器组件以:将用于维护应用的可安装子包的第一应用容器解除分配;在将第一应用容器解除分配之后,接收执行应用的第二请求;并且响应于接收到执行应用的第二请求,分配用于维护应用的可安装子包的第二应用容器;并且该一个或者多个处理器执行第二应用容器以:安装执行应用的、在执行应用的第二请求中指定的功能所需的应用的可安装子包中的一个或者多个;确定应用的更新后的当前用户,其中,更新后的当前用户与当前用户相同;确定应用的更新后的重置状态,其中,重置状态与更新后的重置状态相同;基于更新后的当前用户和更新后的重置状态来生成更新后的唯一标识符,该更新后的唯一标识符不包括更新后的当前用户的个人可识别信息,其中,更新后的唯一标识符与唯一标识符相同;向应用服务提供者发送更新后的唯一标识符;并且从应用服务提供者接收与当前用户相关联的状态信息和应用的状态信息。
示例10:根据示例8和9的任何组合所述的计算设备,其中,唯一标识符是第一唯一标识符,并且其中,该一个或者多个处理器执行应用容器以:接收重置应用的状态的请求;更新应用的重置状态;基于计算设备的当前用户和应用的更新后的重置状态来生成第二唯一标识符,该第二唯一标识符不包括当前用户的个人可识别信息,其中,第一唯一标识符和第二唯一标识符不同;并且向应用服务提供者发送第二唯一标识符,使得在重置应用的状态之后,当前用户似乎是与应用服务提供者不同的用户。
示例11:根据示例10所述的计算设备,其中,一个或者多个处理器执行应用容器以:从计算设备向与计算设备的当前用户相关联的不同计算设备发送重置应用的状态的请求,其中,不同计算设备响应于接收到重置应用的状态的请求而将不同设备处的应用的重置状态更新为与计算设备处的应用的重置状态相同。
示例12:根据示例8至11的任何组合所述的计算设备,其中,该一个或者多个处理器执行应用容器以通过至少执行应用容器来将散列函数应用于包括用户标识符、应用标识符和重置状态的元组,来生成唯一标识符。
示例13:根据示例8至12的任何组合所述的计算设备,其中,状态信息包括关于应用的当前状态的信息、应用的当前用户的历史应用使用信息、和应用的用户的用户偏好信息中的一个或者多个。
示例14:一种方法,包括:由计算系统从在第一计算设备处执行的应用接收标识符,所述标识符唯一地标识所述第一计算设备的用户并且不包括个人识别信息;由所述计算系统从在所述第一计算机处执行的所述应用接收对信息的一个或者多个请求,所述一个或者多个请求包括对用户偏好信息的请求;由所述计算系统基于关于所述一个或者多个请求的信息和所述标识符来更新与所述标识符相关联的一个或者多个历史请求信息,所述历史信息包括与所述标识符相关联的用户偏好信息;由所述计算系统从在第二计算设备处执行的应用接收所述标识符,其中,在所述第一计算设备上执行的所述应用和在所述第二计算设备上执行的所述应用是单个应用的不同实例;由所述计算系统基于所述标识符来确定包括在与所述标识符相关联的所述历史请求信息中的用户偏好信息;以及由所述计算设备向所述第二计算设备发送在与所述标识符相关联的所述历史请求信息中所包括的所述用户偏好信息的至少一部分。
示例15:根据示例14所述的方法,进一步包括:由所述计算系统从在所述第一计算机处执行的所述应用接收对所述信息的一个或者多个附加请求,所述一个或者多个附加请求包括不同标识符,所述不同标识符唯一地标识所述第一计算设备的所述用户并且不包括个人识别信息;由所述计算系统基于所述不同标识符来确定在与所述不同标识符相关联的历史请求信息中所包括的不同用户偏好信息;由所述计算系统向所述第二计算设备发送所述不同用户偏好信息的至少一部分。
示例16:根据示例14和15的任何组合所述的方法,其进一步包括:由所述计算设备基于对所述信息的所述一个或者多个请求和所述标识符来确定所述信息;以及由所述计算系统向所述第一计算设备发送所述信息的至少一部分。
示例17:根据示例14至16的任何组合所述的方法,其中,所述历史请求信息进一步包括关于所述应用的当前状态的信息和应用使用信息中的一个或者多个。
示例18:根据示例14至17的任何组合所述的方法,其中,所述标识符是至少通过以下方式生成的:对包括用户标识符、应用标识符、和重置状态的元组进行散列。
示例19:根据示例14至18的任何组合所述的方法,其中,所述第一计算设备和所述第二计算设备是相同计算设备,并且其中,在所述第二计算设备处执行的所述应用的不同实例是在重新安装所述应用之后在相同计算设备上执行的所述应用的实例。
示例20:一种机构,包括用于执行示例1至7的方法的任何组合的装置。
示例21:一种计算机可读存储介质,该计算机可读存储介质编码有指令,该指令在被执行时使得计算设备的一个或者多个处理器执行根据示例1至7所述的方法的任何组合。
示例23:一种机构,包括用于执行示例14至19所述的方法的任何组合的装置。
示例24:一种计算机可读存储介质,该计算机可读存储介质编码有指令,该指令在被执行时使得计算设备的一个或者多个处理器执行根据示例14至19所述的方法的任何组合。
在一个或者多个示例中,可以利用硬件、软件、固件或者它们的任何组合来实现所描述的功能。如果利用软件来实现功能,则可以将这些功能作为一个或者多个指令或者代码存储在计算机可读介质上或者通过计算机可读介质来传输并且通过基于硬件的处理单元执行。计算机可读介质可以包括与有形介质(诸如,数据存储介质)相对应的计算机可读存储介质或者促进将计算机程序从一个地方传递至另一地方(例如,根据通信协议)的任何介质的通信介质。按照这种方式,计算机可读介质通常可以与(1)非暂时性的有形计算机可读存储介质或者(2)诸如信号或者载波的通信介质相对应。数据存储介质可以是可通过一个或者多个计算机或者一个或者多个处理器进行访问以检索用于实现在本公开中描述的技术的指令、代码、和/或数据结构的任何可用介质。计算机程序产品可以包括计算机可读介质。
例如,但不限于,这种计算机可读存储介质可以包括RAM、ROM、EEPROM、CD-ROM或者其它光盘存储设备、磁盘存储设备、或者其它磁性存储设备、闪速存储器、或者可以用于以指令或者数据结构的形式存储期望的程序代码和可通过计算机进行访问的任何其它介质。同样,将任何连接适当地称为计算机可读介质。例如,如果通过使用同轴电缆、光纤电缆、双绞线、数字用户线(DSL)、或者无线技术(诸如,红外、无线电、和微波)来从网站、服务器、或者其它远程源传输指令,则同轴电缆、光纤电缆、双绞线、DSL、或者无线技术(诸如,红外、无线电、和微波)被包括在介质的定义中。然而,应该理解,计算机可读存储介质和数据存储介质不包括连接、载波、信号、或者其它瞬态介质,而是涉及非瞬态的有形存储介质。如本文使用的磁盘和光盘包括压缩式光盘(CD)、激光光盘、光盘、数字多功能光盘(DVD)、软盘和蓝光光盘,其中,磁盘通常磁性地复制数据,而光盘利用激光光学地复制数据。上面的组合也应该被包括在计算机可读介质的范围内。
可以通过一个或者多个处理器(诸如,一个或者多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)、或者其它等效的集成或者分离逻辑电路系统)来执行指令。因此,如本文使用的术语“处理器”可以指任何前述的结构或者适用于实施本文描述的技术的任何其它结构。另外,在一些方面中,可以在专用的硬件模块和/或软件模块内提供本文描述的功能。同样,可以在一个或者多个电路或者逻辑元件中充分地实施该技术。
可以在各种设备或者装置中实现本公开的技术,包括,无线手机、集成电路(IC)或者IC集(例如,芯片集)。在本公开中,将各种组件、模块、或者单元描述为用于强化配置为执行所公开的技术的设备的功能方面,但并不一定需要通过不同的硬件单元实现。相反,如上所述,结合合适的软件和/或固件,可以将各个单元组合在硬件单元中,或者可以通过交互操作的硬件单元的集合(包括如上所述的一个或者多个处理器)来提供各个单元。
已经描述了本公开的各个示例。这些和其它方面在所附权利要求书的范围内。

Claims (15)

1.一种用于提供状态信息的方法,包括:
由计算设备接收执行应用的请求;
响应于接收执行所述应用的所述请求,由所述计算设备确定所述计算设备的当前用户;
由所述计算设备确定所述应用的重置状态;
由所述计算设备基于所述计算设备的所述当前用户、所述重置状态、和所述应用的应用标识符来生成唯一标识符,所述唯一标识符不包括所述当前用户的个人可识别信息;
由所述计算设备向应用服务提供者发送所述唯一标识符和对信息的一个或者多个请求;以及
响应于发送对信息的所述一个或者多个请求,由所述计算设备从所述应用服务提供者接收与所述当前用户相关联的状态信息和所述应用的状态信息。
2.根据权利要求1所述的方法,其中,所述唯一标识符是第一唯一标识符,并且其中,所述计算设备是第一计算设备,所述方法进一步包括:
由第二计算设备接收执行所述应用的不同实例的请求;
由所述第二计算设备确定所述第二计算设备的当前用户;
由所述第二计算设备确定所述第二计算设备上的所述应用的重置状态;
由所述第二计算设备基于所述第二计算设备的所述当前用户和所述第二计算设备上的所述应用的所述重置状态来生成第二唯一标识符,所述第二唯一标识符不包括所述当前用户的个人可识别信息,其中,当所述重置状态和更新后的重置状态相同时,所述第一唯一标识符和所述第二唯一标识符相同,并且其中,当所述重置状态与所述更新后的重置状态不同时,所述第一唯一标识符和所述第二唯一标识符不同;
由所述第二计算设备向所述应用服务提供者发送所述第二唯一标识符;以及
如果所述第一唯一标识符和所述第二唯一标识符相同,则由所述第二计算设备从所述应用服务提供者接收关于所述一个或者多个应用请求的信息。
3.根据权利要求1或2所述的方法,其中,所述唯一标识符是第一唯一标识符,所述方法进一步包括:
由所述计算设备接收重置所述应用的状态的请求;
由所述计算设备更新所述应用的所述重置状态;
由所述计算设备基于所述计算设备的所述当前用户和所述应用的所述更新后的重置状态来生成第二唯一标识符,所述第二唯一标识符不包括所述当前用户的个人可识别信息,其中,所述第一唯一标识符和所述第二唯一标识符不同;以及
由所述计算设备向应用服务提供者发送所述第二唯一标识符,使得在重置所述应用的状态之后,所述当前用户对所述应用服务提供者表现为不同的用户。
4.根据权利要求3所述的方法,其中,所述计算设备是第一计算设备,并且其中,第二计算设备与所述当前用户相关联,所述方法进一步包括:
从所述第一计算设备向所述第二计算设备发送重置所述应用的状态的所述请求;以及
响应于接收到重置所述应用的状态的所述请求,由所述第二计算设备将所述第二计算设备处的所述应用的所述重置状态更新为与所述第一计算设备处的所述应用的所述重置状态相同。
5.根据权利要求1或2所述的方法,其中,生成所述唯一标识符包括:对包括用户标识符、应用标识符、和重置状态的元组进行散列。
6.根据权利要求1或2所述的方法,其中,所述状态信息包括以下中的一个或者多个:关于所述应用的当前状态的信息、所述应用的所述当前用户的历史应用使用信息、和所述应用的所述用户的用户偏好信息。
7.根据权利要求1或2所述的方法,进一步包括:
由所述计算设备确定所述当前用户是否已在阈值时间量内请求了所述应用;
响应于确定尚未在所述阈值时间量内请求所述应用的功能的部分,由所述计算设备卸载所述应用。
8.根据权利要求7所述的方法,进一步包括:
在卸载所述应用后,由所述计算设备接收执行所述应用的另一请求;以及
响应于接收到执行所述应用的所述另一请求:
由所述计算设备重新安装所述应用;以及
由所述计算设备将所述应用的当前状态设置为所述应用被卸载时的所述应用的状态。
9.一种用于提供状态信息的系统,所述系统包括用于执行根据权利要求1-8所述的方法中的任一项的装置。
10.一种用于提供状态信息的计算设备,包括:
一个或多个存储指令的存储设备;以及
一个或多个处理器,所述一个或多个处理器执行所述指令以执行以下操作:
接收执行应用的请求;
确定所述应用的重置状态;
基于所述计算设备的当前用户、所述重置状态、和所述应用的应用标识符来生成唯一标识符,所述唯一标识符不包括所述当前用户的个人可识别信息;
向应用服务提供者发送所述唯一标识符和对信息的一个或者多个请求;以及
响应于发送对信息的所述一个或者多个请求,从所述应用服务提供者接收与所述当前用户相关联的状态信息和所述应用的状态信息。
11.根据权利要求10所述的计算设备,其中,所述唯一标识符是第一唯一标识符,并且其中,所述一个或多个处理器执行所述指令以执行以下操作:
接收重置所述应用的状态的请求;
更新所述应用的所述重置状态;
基于所述计算设备的所述当前用户和所述应用的所述更新后的重置状态来生成第二唯一标识符,所述第二唯一标识符不包括所述当前用户的个人可识别信息,其中,所述第一唯一标识符和所述第二唯一标识符不同;以及
向应用服务提供者发送所述第二唯一标识符,使得在重置所述应用的状态之后,所述当前用户对所述应用服务提供者表现为不同的用户。
12.根据权利要求11所述的计算设备,其中,所述一个或多个处理器执行所述指令以执行以下操作:
从所述计算设备向与所述计算设备的所述当前用户相关联的不同计算设备发送重置所述应用的状态的所述请求,其中,所述不同计算设备响应于接收到重置所述应用的状态的所述请求而将所述不同计算设备处的所述应用的重置状态更新为与所述计算设备处的所述应用的所述重置状态相同。
13.根据权利要求10或11所述的计算设备,其中,所述一个或多个处理器通过以下来执行所述指令以生成所述唯一标识符:至少执行所述指令以对包括用户标识符、应用标识符、和重置状态的元组应用散列函数。
14.根据权利要求10或11所述的计算设备,其中,所述状态信息包括以下中的一个或者多个:关于所述应用的当前状态的信息、所述应用的所述当前用户的历史应用使用信息、和所述应用的所述用户的用户偏好信息。
15.根据权利要求10或11所述的计算设备,其中,所述一个或多个处理器进一步执行所述指令以执行以下操作:
确定所述当前用户是否已在阈值时间量内请求了所述应用;
响应于确定尚未在所述阈值时间量内请求所述应用的功能的部分,卸载所述应用;
在卸载所述应用后,接收执行所述应用的另一请求;以及
响应于接收到执行所述应用的所述另一请求:
重新安装所述应用;以及
将所述应用的当前状态设置为所述应用被卸载时的所述应用的状态。
CN202110258850.1A 2016-01-15 2017-01-13 跨应用实例的标识符 Active CN113110848B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110258850.1A CN113110848B (zh) 2016-01-15 2017-01-13 跨应用实例的标识符

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201662279571P 2016-01-15 2016-01-15
US62/279,571 2016-01-15
CN202110258850.1A CN113110848B (zh) 2016-01-15 2017-01-13 跨应用实例的标识符
CN201780003810.4A CN108351772B (zh) 2016-01-15 2017-01-13 跨应用实例的标识符
PCT/US2017/013545 WO2017124025A1 (en) 2016-01-15 2017-01-13 Identifiers across application instances

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201780003810.4A Division CN108351772B (zh) 2016-01-15 2017-01-13 跨应用实例的标识符

Publications (2)

Publication Number Publication Date
CN113110848A CN113110848A (zh) 2021-07-13
CN113110848B true CN113110848B (zh) 2024-06-18

Family

ID=57915121

Family Applications (4)

Application Number Title Priority Date Filing Date
CN202110260342.7A Active CN113110941B (zh) 2016-01-15 2017-01-13 使用应用容器管理代码和依赖性数据的传递
CN202110258850.1A Active CN113110848B (zh) 2016-01-15 2017-01-13 跨应用实例的标识符
CN201780003807.2A Pending CN108351792A (zh) 2016-01-15 2017-01-13 使用应用容器管理代码和依赖性数据的传递
CN201780003810.4A Active CN108351772B (zh) 2016-01-15 2017-01-13 跨应用实例的标识符

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202110260342.7A Active CN113110941B (zh) 2016-01-15 2017-01-13 使用应用容器管理代码和依赖性数据的传递

Family Applications After (2)

Application Number Title Priority Date Filing Date
CN201780003807.2A Pending CN108351792A (zh) 2016-01-15 2017-01-13 使用应用容器管理代码和依赖性数据的传递
CN201780003810.4A Active CN108351772B (zh) 2016-01-15 2017-01-13 跨应用实例的标识符

Country Status (6)

Country Link
US (6) US10324734B2 (zh)
EP (4) EP3403177B1 (zh)
JP (3) JP6574902B2 (zh)
KR (3) KR102057269B1 (zh)
CN (4) CN113110941B (zh)
WO (2) WO2017124025A1 (zh)

Families Citing this family (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10104123B2 (en) * 2015-09-23 2018-10-16 Ca, Inc. Fetching a policy definition library from a policy server at mobile device runtime of an application package to control access to mobile device resources
GB2546239A (en) * 2015-11-23 2017-07-19 Acadiant Ltd A Method and system for providing and executing web applications
US9817648B2 (en) 2016-01-15 2017-11-14 Google Inc. Application containers with dynamic sub-package loading
CN113110941B (zh) 2016-01-15 2024-05-03 谷歌有限责任公司 使用应用容器管理代码和依赖性数据的传递
CN107040568B (zh) * 2016-09-28 2018-07-13 平安科技(深圳)有限公司 标识信息生成方法和装置
EP3376392A1 (de) * 2017-03-15 2018-09-19 Siemens Aktiengesellschaft Verfahren zum betrieb eines automatisierungssystems und nach dem verfahren arbeitendes automatisierungssystem
US10209983B2 (en) * 2017-04-19 2019-02-19 Servicenow, Inc. Distributed incremental updating of trays using a source control system
US11265365B2 (en) 2017-06-26 2022-03-01 Net Law Group, Inc. Platform-specific thin-client delivery of an application developed on a cloud-based enterprise-customizable multi-tenant service interface
US11947489B2 (en) 2017-09-05 2024-04-02 Robin Systems, Inc. Creating snapshots of a storage volume in a distributed storage system
JP7493450B2 (ja) 2017-09-30 2024-05-31 オラクル・インターナショナル・コーポレイション コンテナのグループの動的マイグレーション
US10542072B1 (en) * 2017-10-04 2020-01-21 Parallels International Gmbh Utilities toolbox for remote session and client architecture
WO2019118338A1 (en) * 2017-12-11 2019-06-20 Vfunction, Inc. Systems and methods for mapping software applications interdependencies
CN112055955A (zh) * 2017-12-29 2020-12-08 得麦股份有限公司 用于个性化和自适应应用管理的系统和方法
US10833955B2 (en) * 2018-01-03 2020-11-10 International Business Machines Corporation Dynamic delivery of software functions
US11392363B2 (en) 2018-01-11 2022-07-19 Robin Systems, Inc. Implementing application entrypoints with containers of a bundled application
US11748203B2 (en) * 2018-01-11 2023-09-05 Robin Systems, Inc. Multi-role application orchestration in a distributed storage system
US11582168B2 (en) 2018-01-11 2023-02-14 Robin Systems, Inc. Fenced clone applications
CN108415795B (zh) * 2018-02-12 2019-04-05 人和未来生物科技(长沙)有限公司 一种容器Dockerfile、容器镜像快速生成方法及系统
JP7069969B2 (ja) * 2018-03-29 2022-05-18 株式会社リコー 情報処理装置、情報処理方法及び情報処理プログラム
US11249783B1 (en) * 2018-05-23 2022-02-15 Open Invention Network Llc Intra application container direct communication protocol
US11055110B2 (en) * 2018-06-05 2021-07-06 Microsoft Technology Licensing, Llc Operating system service for persistently executing programs
CN109101240A (zh) * 2018-06-25 2018-12-28 北京小米移动软件有限公司 打包方法、装置和存储介质
CN109189413A (zh) * 2018-08-24 2019-01-11 广州优视网络科技有限公司 应用卸载的监听方法、装置及电子设备
KR102631745B1 (ko) * 2018-10-16 2024-02-01 삼성전자주식회사 이종 운영체제의 실행을 제어하기 위한 방법, 이를 위한 전자 장치 및 저장 매체
CN109542721B (zh) * 2018-11-05 2022-08-12 北京炎黄盈动科技发展有限责任公司 一种应用容器中应用状态控制方法、装置及存储介质
CN109814913B (zh) 2018-12-25 2020-09-18 华为终端有限公司 一种应用包拆分重组和运行的方法和装置
US11226838B2 (en) * 2018-12-26 2022-01-18 Korea Electronics Technology Institute Container-based management method by changing intelligent container component execution priority using remote calls via remote access unit and remote network functon module
US10901700B2 (en) * 2019-02-27 2021-01-26 International Business Machines Corporation Automatic generation of container image in a runtime environment
US10846102B2 (en) 2019-03-05 2020-11-24 International Business Machines Corporation Loading dependency library files from a shared library repository in an application runtime environment
US11256434B2 (en) 2019-04-17 2022-02-22 Robin Systems, Inc. Data de-duplication
CN111913426B (zh) * 2019-05-08 2023-05-05 创升益世(东莞)智能自控有限公司 一种应用于工业自动化控制系统的软件容器方法
US11042366B2 (en) 2019-05-14 2021-06-22 International Business Machines Corporation Managing software programs
US11520650B2 (en) 2019-09-05 2022-12-06 Robin Systems, Inc. Performing root cause analysis in a multi-role application
US11249851B2 (en) 2019-09-05 2022-02-15 Robin Systems, Inc. Creating snapshots of a storage volume in a distributed storage system
US11237826B2 (en) * 2019-09-09 2022-02-01 Microsoft Technology Licensing, Llc Application ownership enforcement
US11438402B2 (en) * 2019-09-20 2022-09-06 Bizupsolutions Inc. Systems and methods for providing a web application to a computing device
US11347684B2 (en) 2019-10-04 2022-05-31 Robin Systems, Inc. Rolling back KUBERNETES applications including custom resources
EP3805922B1 (en) * 2019-10-11 2024-04-03 Google LLC Extensible computing architecture for vehicles
CN110753119A (zh) * 2019-10-25 2020-02-04 北京浪潮数据技术有限公司 一种基于K8s集群的应用包部署系统
DE102019217057A1 (de) * 2019-11-06 2021-05-06 Robert Bosch Gmbh Verfahren und Vorrichtung zum Verwalten einer Softwarekomponente für ein vorgegebenes System
US11403188B2 (en) 2019-12-04 2022-08-02 Robin Systems, Inc. Operation-level consistency points and rollback
CN111124610B (zh) * 2019-12-19 2024-01-23 北京炎黄盈动科技发展有限责任公司 一种应用容器中应用程序调用方法、装置及存储介质
US11321106B2 (en) * 2020-03-24 2022-05-03 International Business Machines Corporation Using binaries of container images as operating system commands
CN111580834B (zh) * 2020-04-10 2021-10-29 北京城市网邻信息技术有限公司 一种应用安装包的生成方法和装置
US11212336B2 (en) 2020-04-30 2021-12-28 Software Ag Systems and/or methods for dynamically configuring and evaluating rules with dynamic and/or user inputs at runtime
US11528186B2 (en) 2020-06-16 2022-12-13 Robin Systems, Inc. Automated initialization of bare metal servers
US11836225B1 (en) * 2020-08-26 2023-12-05 T-Mobile Innovations Llc System and methods for preventing unauthorized replay of a software container
US11740980B2 (en) 2020-09-22 2023-08-29 Robin Systems, Inc. Managing snapshot metadata following backup
US11743188B2 (en) 2020-10-01 2023-08-29 Robin Systems, Inc. Check-in monitoring for workflows
US11271895B1 (en) 2020-10-07 2022-03-08 Robin Systems, Inc. Implementing advanced networking capabilities using helm charts
US11456914B2 (en) 2020-10-07 2022-09-27 Robin Systems, Inc. Implementing affinity and anti-affinity with KUBERNETES
US11750451B2 (en) 2020-11-04 2023-09-05 Robin Systems, Inc. Batch manager for complex workflows
US11556361B2 (en) 2020-12-09 2023-01-17 Robin Systems, Inc. Monitoring and managing of complex multi-role applications
US11995350B2 (en) * 2020-12-23 2024-05-28 Red Hat, Inc. Prefetching container data in a data storage system
US11385888B1 (en) * 2021-01-20 2022-07-12 Vmware, Inc. Updating container runtime using standby virtual machines
US11900173B2 (en) * 2021-05-18 2024-02-13 Kyndryl, Inc. Container runtime optimization
CN113590213B (zh) * 2021-06-24 2023-04-25 深圳开源互联网安全技术有限公司 组件维护方法、电子设备及存储介质
CN117009029B (zh) * 2023-05-26 2024-09-24 浙江天猫技术有限公司 Xr应用与内容运行方法、设备及存储介质
CN116302366B (zh) * 2023-05-26 2023-10-20 阿里巴巴(中国)有限公司 面向终端开发的xr应用开发系统与方法、设备及介质

Family Cites Families (88)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5639088A (en) * 1995-08-16 1997-06-17 United Games, Inc. Multiple events award system
US6453334B1 (en) * 1997-06-16 2002-09-17 Streamtheory, Inc. Method and apparatus to allow remotely located computer programs and/or data to be accessed on a local computer in a secure, time-limited manner, with persistent caching
US6446109B2 (en) * 1998-06-29 2002-09-03 Sun Microsystems, Inc. Application computing environment
US6523166B1 (en) 1998-09-21 2003-02-18 Microsoft Corporation Method and system for on-demand installation of software implementations
US6317143B1 (en) 1999-01-26 2001-11-13 Gateway, Inc. Programmable graphical user interface control system and method
CN1721019B (zh) * 1999-01-28 2011-05-04 世嘉股份有限公司 网络游戏系统和游戏终端装置
US6031747A (en) * 1999-08-02 2000-02-29 Lockheed Martin Missiles & Space Company Interleaved synchronous flyback converter with high efficiency over a wide operating load range
US7181686B1 (en) 1999-10-29 2007-02-20 International Business Machines Corporation Selecting screens in a GUI using events generated by a set of view controllers
US20020129351A1 (en) 2001-03-07 2002-09-12 Nexusedge Technologies Pty. Ltd. Software engine and method for software application loading
JP3687587B2 (ja) * 2001-03-27 2005-08-24 ソニー株式会社 データ処理システム及びデータ処理方法、情報処理装置及び情報処理方法、並びにコンピュータ・ソフトウェア
US7047448B2 (en) 2002-11-21 2006-05-16 Bitfone Corporation Software self-repair toolkit for electronic devices
CN100539586C (zh) * 2003-06-18 2009-09-09 艾利森电话股份有限公司 支持分级移动ip业务的方法、系统和设备
EP1496435A1 (en) 2003-07-11 2005-01-12 Yogitech Spa Dependable microcontroller, method for designing a dependable microcontroller and computer program product therefor
US20050049790A1 (en) 2003-09-03 2005-03-03 Microsoft Corporation System and method for validating whether a software application is properly installed
WO2005031574A2 (en) 2003-10-02 2005-04-07 Research In Motion Limited Selective loading and configuring of an application on a wireless device, using relational information
US7698383B2 (en) * 2004-02-27 2010-04-13 Research In Motion Limited System and method for building component applications using metadata defined mapping between message and data domains
US9357031B2 (en) * 2004-06-03 2016-05-31 Microsoft Technology Licensing, Llc Applications as a service
US8812613B2 (en) * 2004-06-03 2014-08-19 Maxsp Corporation Virtual application manager
US7272728B2 (en) * 2004-06-14 2007-09-18 Iovation, Inc. Network security and fraud detection system and method
US8095940B2 (en) 2005-09-19 2012-01-10 Citrix Systems, Inc. Method and system for locating and accessing resources
US7680758B2 (en) 2004-09-30 2010-03-16 Citrix Systems, Inc. Method and apparatus for isolating execution of software applications
JP4731960B2 (ja) 2005-03-15 2011-07-27 株式会社日立製作所 プーリング方法、システム及びプログラム
CN101512503B (zh) * 2005-04-29 2013-03-27 微软公司 Xml应用程序框架
US20070014346A1 (en) * 2005-07-13 2007-01-18 Nokia Corporation Coding dependency indication in scalable video coding
DE102006012311A1 (de) 2006-03-17 2007-09-20 Deutsche Telekom Ag Verfahren und Vorrichtung zur Pseudonymisierung von digitalen Daten
KR20070109310A (ko) 2006-05-10 2007-11-15 엘지전자 주식회사 이동통신단말기와 메모리제어방법 및 소프트웨어 모듈업데이트방법
JP5011927B2 (ja) 2006-10-02 2012-08-29 セイコーエプソン株式会社 アプリケーション実行システム、コンピュータ、アプリケーション実行システムのアプリケーション実行方法およびプログラム
US7917750B2 (en) * 2006-07-25 2011-03-29 Hewlett-Packard Development Company, L.P. Virtual user authentication system and method
US8112749B2 (en) * 2007-06-19 2012-02-07 Oracle America, Inc. Dynamic, temporary resource pools for use in virtualization
JP4591486B2 (ja) 2007-08-23 2010-12-01 ソニー株式会社 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム
US20090133014A1 (en) 2007-11-16 2009-05-21 Nokia Corporation Methods, apparatuses and computer program product for automatic download of software dependencies on installation
US8135386B2 (en) 2008-07-09 2012-03-13 Telefoanktebolaget L M Ericsson (Publ) Method and apparatus for instance identifier based on a unique device identifier
KR101512010B1 (ko) 2008-08-29 2015-04-15 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. 셸 애플리케이션들 및 서브애플리케이션들의 인터페이스들의 조합
US20100211960A1 (en) * 2009-02-17 2010-08-19 Google Inc. Characterizing User Information
US20100262953A1 (en) 2009-04-14 2010-10-14 Barboni Michael P Systems and methods for automatically enabling and disabling applications and widgets with a computing device based on compatibility and/or user preference
US8484728B2 (en) 2009-06-03 2013-07-09 Apple Inc. Managing securely installed applications
US8346847B2 (en) * 2009-06-03 2013-01-01 Apple Inc. Installing applications based on a seed application from a separate device
US8667605B2 (en) * 2009-11-19 2014-03-04 Adobe Systems Incorporated Method and system for determining the eligibility for deploying protected content
US8584120B2 (en) * 2009-11-23 2013-11-12 Julian Michael Urbach Stream-based software application delivery and launching system
WO2011080615A1 (en) 2009-12-31 2011-07-07 Nokia Corporation Method, device and computer program product for automatic provisioning of content at the device
US9628583B2 (en) * 2010-04-29 2017-04-18 Nokia Technologies Oy Method and apparatus for coordinating service information across multiple server nodes
US9049497B2 (en) * 2010-06-29 2015-06-02 Qualcomm Incorporated Signaling random access points for streaming video data
US8495625B1 (en) 2010-07-27 2013-07-23 Symantec Corporation Method and system for creation of streamed files on-demand
US10016684B2 (en) * 2010-10-28 2018-07-10 At&T Intellectual Property I, L.P. Secure geographic based gaming
US8838679B2 (en) * 2010-12-22 2014-09-16 Microsoft Corporation Providing state service for online application users
US9354852B2 (en) * 2010-12-23 2016-05-31 Microsoft Technology Licensing, Llc Satisfying application dependencies
US10114660B2 (en) * 2011-02-22 2018-10-30 Julian Michael Urbach Software application delivery and launching system
CN102147744B (zh) * 2011-04-01 2015-05-27 奇智软件(北京)有限公司 一种程序加载方法及系统
WO2012146985A2 (en) 2011-04-28 2012-11-01 Approxy Inc. Ltd. Adaptive cloud-based application streaming
US8171137B1 (en) * 2011-05-09 2012-05-01 Google Inc. Transferring application state across devices
US20120304283A1 (en) * 2011-05-27 2012-11-29 Microsoft Corporation Brokered item access for isolated applications
US9198038B2 (en) * 2011-06-13 2015-11-24 Qualcomm Incorporated Apparatus and methods of identity management in a multi-network system
US20130019237A1 (en) 2011-07-12 2013-01-17 Apple Inc. System and method for linking pre-installed software to a user account on an online store
US9773102B2 (en) * 2011-09-09 2017-09-26 Microsoft Technology Licensing, Llc Selective file access for applications
US8943150B2 (en) * 2011-09-12 2015-01-27 Fiserv, Inc. Systems and methods for customizing mobile applications based upon user associations with one or more entities
CN102439564B (zh) * 2011-10-24 2014-03-26 华为技术有限公司 在Linux容器中启动应用程序的方法和系统
US8832296B2 (en) 2011-12-15 2014-09-09 Microsoft Corporation Fast application streaming using on-demand staging
US8819798B2 (en) 2011-12-29 2014-08-26 Ebay Inc. System and method for transferring states between electronic devices
US9280447B2 (en) 2012-03-16 2016-03-08 International Business Machines Corporation Modifying run-time-instrumentation controls from a lesser-privileged state
US20130263139A1 (en) * 2012-03-28 2013-10-03 Lior Schejter Managing execution of applications in a runtime environment
US8782744B1 (en) 2012-06-15 2014-07-15 Amazon Technologies, Inc. Managing API authorization
US8667486B2 (en) * 2012-06-26 2014-03-04 Google Inc. Automatic provisioning of a software platform to a device ecosystem
US20140007074A1 (en) 2012-06-27 2014-01-02 Google Inc. Methods for updating applications
US8683226B2 (en) * 2012-07-16 2014-03-25 Digi International Inc. Automatic provisioning in mobile to mobile platforms
US9509653B2 (en) * 2012-10-29 2016-11-29 Google Inc. Systems and methods for directing messages to multiple user profiles on a mobile device
US9176726B2 (en) 2013-01-28 2015-11-03 Paptap Ltd Method and apparatus for developing, distributing and executing applications
US9854047B2 (en) 2013-02-19 2017-12-26 Red Hat, Inc. Service pool for multi-tenant applications
US9772835B1 (en) 2013-03-13 2017-09-26 Amazon Technologies, Inc. Modification of program code for execution in a multi-tenant or distributed computing environment
US8875247B2 (en) 2013-03-14 2014-10-28 Facebook, Inc. Instant personalization security
EP2782038A1 (en) * 2013-03-19 2014-09-24 STMicroelectronics (Grenoble 2) SAS Resource management in a processor for trusted and untrusted applications
US9279541B2 (en) * 2013-04-22 2016-03-08 Air Products And Chemicals, Inc. Method and system for temperature-controlled gas dispensing
US9032106B2 (en) 2013-05-29 2015-05-12 Microsoft Technology Licensing, Llc Synchronizing device association data among computing devices
US20140365336A1 (en) * 2013-06-07 2014-12-11 Bby Solutions, Inc. Virtual interactive product display with mobile device interaction
US9612815B1 (en) * 2013-08-22 2017-04-04 Ca, Inc. Method and tool for automating deployment of reference implementation architectures for pre-integrated multi-product solutions
US9575819B2 (en) * 2013-09-06 2017-02-21 Sap Se Local buffers for event handlers
US20150089632A1 (en) * 2013-09-26 2015-03-26 Aaron Robert Bartholomew Application authentication checking system
US20150120908A1 (en) * 2013-10-29 2015-04-30 International Business Machines Corporation Real-time, distributed administration of information describing dependency relationships among configuration items in a data center
JP6206193B2 (ja) * 2014-01-08 2017-10-04 富士ゼロックス株式会社 情報処理装置、画像処理システムおよびプログラム
US10181028B2 (en) * 2014-02-21 2019-01-15 Samsung Electronics Co., Ltd. Method and apparatus to sandbox run-time android applications with lightweight container
US10037204B2 (en) * 2014-04-22 2018-07-31 Delphix Corp. Version control of applications
US9116767B1 (en) * 2014-06-06 2015-08-25 International Business Machines Corporation Deployment pattern monitoring
CN104267958A (zh) * 2014-09-29 2015-01-07 北京网秦天下科技有限公司 移动应用容器及其管理方法
US9871745B2 (en) 2014-11-12 2018-01-16 International Business Machines Corporation Automatic scaling of at least one user application to external clouds
US10505997B2 (en) * 2014-12-10 2019-12-10 Facebook, Inc. Providing persistent activity sessions across client devices
US9954936B2 (en) 2015-03-02 2018-04-24 International Business Machines Corporation Migrating legacy applications to a multi-tenant computing environment
US9705973B2 (en) 2015-04-29 2017-07-11 International Business Machines Corporation Release and management of composite applications on PaaS
US9817648B2 (en) 2016-01-15 2017-11-14 Google Inc. Application containers with dynamic sub-package loading
CN113110941B (zh) 2016-01-15 2024-05-03 谷歌有限责任公司 使用应用容器管理代码和依赖性数据的传递

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
基于HTML语言的跨平台界面设计;刘自荣 等;《计算机应用与软件》;第21卷(第6期);41-42、127 *
数据格式国际化和个性化的实现;任万华;《电脑编程技巧与维护》;11-16、50 *

Also Published As

Publication number Publication date
EP3584696B1 (en) 2024-01-03
JP6644882B2 (ja) 2020-02-12
US10963270B2 (en) 2021-03-30
JP2018538597A (ja) 2018-12-27
CN108351772B (zh) 2021-09-03
US10324734B2 (en) 2019-06-18
KR102431773B1 (ko) 2022-08-11
EP3584696A1 (en) 2019-12-25
US20170206073A1 (en) 2017-07-20
KR102057269B1 (ko) 2020-01-22
US10409657B2 (en) 2019-09-10
US10268531B2 (en) 2019-04-23
US10467025B2 (en) 2019-11-05
JP2020074139A (ja) 2020-05-14
CN108351792A (zh) 2018-07-31
EP3403177B1 (en) 2022-09-14
CN108351772A (zh) 2018-07-31
KR102000266B1 (ko) 2019-07-15
US20190370018A1 (en) 2019-12-05
EP3403178B1 (en) 2019-11-20
WO2017124023A1 (en) 2017-07-20
EP3620918B1 (en) 2023-12-27
US20170206123A1 (en) 2017-07-20
CN113110848A (zh) 2021-07-13
KR20180054746A (ko) 2018-05-24
EP3403178A1 (en) 2018-11-21
KR20180064448A (ko) 2018-06-14
US20170208137A1 (en) 2017-07-20
US10521242B2 (en) 2019-12-31
EP3620918A1 (en) 2020-03-11
CN113110941A (zh) 2021-07-13
EP3403177A1 (en) 2018-11-21
JP7018463B2 (ja) 2022-02-10
WO2017124025A1 (en) 2017-07-20
JP6574902B2 (ja) 2019-09-11
US20170206090A1 (en) 2017-07-20
JP2019503524A (ja) 2019-02-07
US20190155667A1 (en) 2019-05-23
KR20190140093A (ko) 2019-12-18
CN113110941B (zh) 2024-05-03

Similar Documents

Publication Publication Date Title
CN113110848B (zh) 跨应用实例的标识符
CN107015823B (zh) 具有动态子包加载的应用容器
US20220334815A1 (en) Accelerating application and sub-package installations

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