Manage application constraints across platforms

By setting platform agnostic constraint information in the user interface, the restriction problem of existing tools being difficult to manage application versions on different application execution platforms is solved, and unified supervision and restrictions on the use of regulated persons is achieved.

CN114008618BActive Publication Date: 2025-05-09MICROSOFT TECHNOLOGY LICENSING LLC
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202080045356.0
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2019-08-10
Filing Date
2020-05-03
Publication Date
2025-05-09
Estimated Expiration
2040-05-03

AI Technical Summary

Technical Problem

Existing tools are difficult to effectively regulate and limit the use of computing resources by regulated users, especially among application versions running on different application execution platforms, and it is difficult to unify application constraints.

Method used

By defining platform agnostic constraint information, regulators allow them to set unified restrictions for different application versions in one user interface, which are applicable to all application execution platforms.

Benefits of technology

It realizes unified management of the interaction between regulated persons and different application versions, reduces the possibility of regulated persons evading restrictions and improves regulatory efficiency.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN114008618B_ABST
    Figure CN114008618B_ABST
Patent Text Reader

Abstract

A computer-implemented technique for defining and applying constraints that regulate a supervisee's interaction with an application is described herein. In one implementation, the technique provides a user interface presentation to a supervisor that lists a collection of applications running on multiple application execution platforms. The user interface presentation also allows the supervisor to set platform-agnostic constraint information for any identified application. The platform-agnostic constraint information, once set for an application, constrains the supervisee's interaction with all versions of the same application. That is, the constraint information is referred to as platform-agnostic because it applies to various application execution platforms on which the application runs. In one example, the platform-agnostic constraint information specifies an allowed amount of activity that a supervisee is allowed to perform across all versions of the application.
Need to check novelty before this filing date? Find Prior Art

Description

Background Art

[0001] Various tools have been proposed to assist supervisors (eg, parents) in monitoring and regulating supervisees' (eg, children of parents) use of computing resources. However, supervisees can sometimes evade the restrictions imposed by these tools. Summary of the invention

[0002] A computer-implemented technique for defining and applying constraints that regulate a supervisee's use of an application is described herein. In one embodiment, the technique provides a supervisor with a user interface presentation that lists a collection of applications that run on different application execution platforms. For example, different application execution platforms may include different corresponding supervisee computing devices. The user interface presentation also allows the supervisor to set platform-agnostic constraint information for any application. The platform-agnostic constraint information, once set for an application, constrains the supervisee's interaction with all versions of the same application. That is, the constraint information is referred to as platform-agnostic because it applies to a variety of application execution platforms on which the application may run.

[0003] In one example, platform-agnostic constraint information specifies the allowed amount of activity that a supervisee is allowed to perform across all versions of an application. For example, the constraint information may specify the total amount of time a supervisee spends interacting with an application across all versions of an application each day. In this scenario, the technology may send a signal to the supervisee's computing device that reminds the supervisee of the total time the supervisee has spent interacting with all versions of the application in a day. Based on this information, the supervisee's computing device may remind the supervisee of the amount of time remaining to interact with the application that day. The technology also provides a dialogue mechanism that enables a supervisee to request additional time from a supervisor.

[0004] The technique is beneficial because it allows a regulator to conveniently set constraint information. For example, the technique eliminates the need for a regulator to specify constraints independently for each version of the same underlying application. The technique also reduces the likelihood that a regulated party can evade restrictions imposed by a regulator. For example, the technique would prevent a regulated party from circumventing restrictions by acquiring a new type of device that uses a different version of an application and then using the new device to interact with the application.

[0005] The techniques summarized above may be embodied in various types of systems, devices, components, methods, computer-readable storage media, data structures, graphical user interface presentations, articles of manufacture, and the like.

[0006] This summary is intended to introduce some concepts in a simplified form; these concepts are further described in the detailed description below. This summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter. BRIEF DESCRIPTION OF THE DRAWINGS

[0007] Figure 1 An illustrative computing environment for setting and applying constraint information is shown.

[0008] Figure 2 It shows that it can be used to implement Figure 1 computing devices of the computing environment.

[0009] Figure 3 Shown as Figure 1 A constraint management component of an element in a computing environment.

[0010] Figure 4 Shown as Figure 1 A component that synchronizes use with another element in a computing environment.

[0011] Figure 5 Shown as Figure 1 An enforcement component of another element in a computing environment.

[0012] Figure 6 Shows Figure 1 An example of how a computing environment can be used to identify and apply constraint information.

[0013] Figure 7 Shows Figure 1 Another example of how a computing environment can be used to identify and apply constraint information.

[0014] Figure 8 Shows Figure 1 An example of how a computing environment can be used to establish constraint information.

[0015] Fig. 9 and Fig.10 A user interface presentation is shown that allows a supervisor to set constraint information for two respective states of the user interface presentation.

[0016] Fig.11 A series of user interface presentations provided to a supervisee during the course of the supervisee's interaction with an application are shown.

[0017] Fig.12 A user interface presentation is shown inviting a supervisor to add more time to a supervisee's daily time allotment for an application.

[0018] Fig.13 shows the notification to the supervisee by the supervisor in Fig.12 A user interface presentation of an action taken in a user interface presentation.

[0019] Fig.14 Shows from Figure 3The constraint management component perspective provides an overview of the techniques for applying constraint information.

[0020] Fig.15 A process is shown that provides an overview of techniques for applying constraint information from the perspective of a supervisee computing device.

[0021] Fig.16 A process is shown that provides an overview of a technique for setting constraint information.

[0022] Fig.17 One illustrative type of computing device is shown that may be used to implement any aspect of the features shown in the preceding figures.

[0023] The same reference numbers are used throughout this disclosure and the figures to refer to similar components and features. Figure 1 The number series 200 refers to features originally found in Figure 2 The number series 300 refers to features originally found in Figure 3 features found in , and so on. DETAILED DESCRIPTION

[0024] The present disclosure is organized as follows. Section A describes a computing environment for setting and applying constraint information. Section B sets forth an illustrative method for explaining the operation of the computing environment of Section A. And Section C describes illustrative computing functions that can be used to implement any aspect of the features described in Sections A and B.

[0025] As a preliminary matter, the term "hardware logic circuitry" encompasses one or more hardware processors (e.g., CPUs, GPUs, etc.) that execute machine-readable instructions stored in memory, and / or one or more other hardware logic units (e.g., FPGAs) that use a task-specific collection of fixed and / or programmable logic gates to perform operations. Section C provides additional information about one implementation of hardware logic circuitry. In certain contexts, each of the terms "component," "tool," and "engine" refers to a portion of hardware logic circuitry that performs a specific function.

[0026] In one case, the division of the various parts into different units shown in the figures can reflect the use of corresponding different physical and tangible parts in actual implementation. Alternatively or additionally, any single component shown in the figures can be implemented by multiple actual physical components. Alternatively or additionally, the depiction of any two or more individual components in the figures can reflect different functions performed by a single actual physical component.

[0027] Other figures describe concepts in the form of flow charts. In this form, certain operations are described as constituting different blocks that are executed in a specific order. Such an implementation is illustrative and non-restrictive. Certain blocks described herein can be combined together and executed in a single operation, certain blocks can be decomposed into multiple component blocks, and certain blocks can be executed in an order different from the order shown in this article (including a parallel manner of executing blocks). In one implementation, the blocks related to processing-related functions shown in the flow chart can be implemented by the hardware logic circuit system described in Part C, which can be implemented by one or more hardware processors and / or other logic units (including task-specific sets of logic gates).

[0028] With respect to terminology, the phrase "configured to" encompasses various physical and tangible mechanisms for performing the identified operations. These mechanisms may be configured to perform the operations using hardware logic circuitry of Part C. The term "logic" likewise encompasses various physical and tangible mechanisms for performing tasks. For example, each processing-related operation shown in a flow chart corresponds to a logic component for performing that operation. A logic component may perform its operation using hardware logic circuitry of Part C. When implemented by a computing device, a logic component represents an electrical element that is a physical part of a computing system, regardless of how it is implemented.

[0029] Any storage resource or any combination of storage resources described herein may be considered a computer-readable medium. In many cases, a computer-readable medium represents some form of physical and tangible entity. The term computer-readable medium also encompasses propagation signals, for example, signals transmitted or received via physical conduits and / or air or other wireless media. However, the specific term "computer-readable storage medium" explicitly excludes propagation signals per se, and includes all other forms of computer-readable media.

[0030] The following explanation may identify one or more features as "optional". Such a statement should not be interpreted as an exhaustive indication of functionality that may be considered optional; that is, other functionality may be considered optional even though it is not explicitly identified in the text. Furthermore, any description of a single entity is not intended to preclude the use of multiple such entities; likewise, a description of multiple entities does not preclude the use of a single entity. Furthermore, while the description may interpret certain features as alternative ways of performing the identified functions or implementing the identified mechanisms, these features may also be combined together in any combination. Finally, the terms "exemplary" or "illustrative" refer to one implementation among potentially many implementations.

[0031] A. Illustrative Computing Environment

[0032] Figure 1An illustrative computing environment 102 for setting and applying constraint information is shown. The person or entity that sets the constraint information is referred to herein as a "regulator." The person or entity that is affected by the constraint information is referred to as a "regulator." In the examples most often mentioned herein, the regulator is a parent, and the regulator corresponds to the parent's child. However, the principles described herein apply to any person or entity that wishes to constrain another person or entity's consumption of computer resources.

[0033] Constraint information broadly defines one or more restrictions that affect how a supervisee can interact with one or more applications. In some cases, the constraints control the operations that a supervisee is allowed to perform on an application. For example, a constraint may determine the application functions that a supervisee can perform. Alternatively or additionally, a constraint may determine the content items that a supervisee can access using an application. Alternatively or additionally, a constraint may limit the individuals with whom a supervisee can interact using an application. At one extreme of this type of constraint, a constraint prevents a supervisee from accessing all functionality provided by an application, thereby effectively preventing the supervisee from accessing the application as a whole. In other cases, a constraint prevents a supervisee from performing some application-related activities, but does not prevent other activities. For example, a constraint may prevent a supervisee from using an application to access certain content items, but does not prevent other content items.

[0034] Alternatively or additionally, the constraints control the amount of activity that the supervisee can perform when interacting with the application. For example, a constraint may specify the total amount of time that the supervisee can spend when interacting with the application during a day or other time span. Another constraint may specify the total amount of messages that the supervisee can send and / or receive during a day or other time span. Another constraint may specify the total amount of money that the supervisee can spend via the application, etc.

[0035] Alternatively or additionally, the constraints control the times at which the supervisee can use the application to perform activities. For example, the constraints may specify that the supervisee can freely use certain application functions, but only on weekends or during certain times of the day, etc.

[0036] The above examples of constraints are described in the spirit of illustration and not limitation; other implementations may restrict supervisee interactions with applications in other ways. Note further that "application" as used herein refers broadly to any computer program that performs any or any function, and may encompass logic provided by an operating system.

[0037] The supervisee can use multiple computing devices 104 (also referred to as "supervisee computing devices" herein) to interact with the application. The computing device 104 can use any number of application execution platforms to execute the application. In this scenario, the application execution platform corresponds to the resources and technologies used by the local computing device to execute the application. For example, the application execution platform can be defined at least in part by the operating system provided by a specific device manufacturer. In one example, for example, the device 104 may include a personal computer running a WINDOWS operating system provided by MICROSOFT CORPORATION in Redmond, Washington, an XBOX game console provided by MICROSOFT CORPORATION, a HOLOLENS mixed reality device provided by MICROSOFT CORPORTION, a tablet computing device running an IOS operating system provided by APPLE INC. in Cupertino, California, a smart phone running an ANDROID operating system provided by GOOGLE INC. in Mountain View, California, etc., each of which corresponds to a different application execution platform.

[0038] In other cases, the supervised computing device can access a network-accessible system to interact with a network-accessible application (e.g., commonly referred to as a Web application). In this case, the term "application execution platform" corresponds to a specific network-accessible application in combination with a browser component (e.g., a browser program), which the supervised computing device uses to access the network-accessible application. Therefore, different network-accessible applications correspond to different corresponding application execution platforms. Here, the supervised does not download the application to the local supervised computing device; instead, the supervised (or, a person acting on behalf of the supervised) registers with the network-accessible system to access its (multiple) applications. Alternatively, the supervised more simply accesses the network-accessible system without formally subscribing to its services. However, for ease of explanation, many of the examples below will describe situations in which all or some of the applications are installed on the supervised's local computing device.

[0039] The computing device 104 can run different versions of each specific application. For example, a WINDOWS-based PC can run a first version of a social media application, while an ANDROID-based smart phone can run a second version of a social media application. These applications perform the same basic functions, but can be performed (at least in part) using different computer codes. In addition, different versions of the application may differ in user experience. For example, different versions of the application may be presented using different corresponding sets of user interfaces that are different at least in their look and feel. Finally, in many cases, different versions of the application can be associated with different identifiers. The identifier of an application refers to the name given to the application by a developer or other entity, and can be specified in metadata associated with the application or elsewhere.

[0040] Previous parental guidance tools treat applications running on different application execution platforms as different applications. As a result, the constraints that the regulator applies to the first version of the application are not necessarily applied to the second version of the application. To solve this problem, the regulator needs to define individual constraint information for each version of the application. For example, the regulator needs to define a first constraint that restricts his or her child from using the game when playing the game on a game console and a second constraint that restricts his or her child from using the same game when playing the game on a personal computing device.

[0041] The computing environment 102 described herein overcomes the above-mentioned inefficiencies by defining platform-agnostic constraint information that applies to all versions of the same application function. That is, the platform-agnostic constraint information is referred to as platform-agnostic because it applies regardless of the platform used to execute the application. The following explanation provides information about Figure 1 The following figures and accompanying textual explanations provide an overview of the solution. Figure 1 Additional information for the individual components shown in .

[0042] first, Figure 1Components provided by a representative user computing device 106 (also referred to below as a "supervised computing device") are depicted. These components include an operating system (OS) 108 and one or more applications (110, 112, ..., 114) executed using the resources of the OS 108. The supervised computing device 106 may include an application installer 116 for downloading applications from any (multiple) sources of applications. However, it is noted that in other cases, the supervised computing device has provided one or more applications as native resources. Further note that the supervised computing device 106 can interact with network-accessible applications provided by one or more network-accessible systems via a browser program (e.g., an EDGE browser program provided by MICROSOFT CORPORATION). The supervised computing device 106 may also include an enforcement component 118 that controls the interaction of the supervisee with the application, as managed by constraint information associated with each application. Although not shown, other supervised computing devices may include the same components as the representative supervised computing device 106.

[0043] The constraint management component 120 allows the supervisor to present the constraint management information to the supervisor via one or more user interfaces (see below). Fig. 9 and Fig.10 The constraint management component 120 stores each instance of constraint information in a data repository 122. It thereafter makes the constraint information available to the enforcement component of each supervised computing device. A supervisor may interact with the constraint management component 120 using one or more computing devices, such as a representative computing device 124. For example, a computing device 124 may correspond to a desktop personal computing device, a smart phone, etc. A computing device 124 is also referred to below as a "supervisor computing device."

[0044] The lookup data repository 126 provides resources for associating different versions of an application with platform-agnostic constraint information. That is, in one implementation, each entry of the lookup data repository 126 specifies a set of version-specific identifiers associated with respective versions of an application running on different application execution platforms. For example, for the illustrative application A1, the set includes a first identifier ID associated with a version of the application running on a first application execution platform (P1). A1P1 , a second identifier ID associated with a version of the application running on the second application execution platform (P2) A1P2 , and so on. Identifier ID A1WEBThe entry also includes a platform-agnostic identifier (GID) for the platform-independent application A1. A1 The constraint management component 120 uses the same platform agnostic identifier (GID A1 ) to identify the constraint information associated with application A1. Therefore, it can be said that the lookup data repository 126 ultimately converts the platform-specific identifier (e.g., ID A1P1 ) is mapped to the platform agnostic constraint information associated with application A1.

[0045] In one mode of operation, assume that the supervisee is interacting with a specific version of application A1 running on supervisee computing device 106, which specific version is associated with a platform specific application identifier (ID A1P1 ). The constraint management component 120 can use the lookup data repository 126 to associate a specific identifier (ID A1P1 ) is mapped to the platform-agnostic identifier GID A1 The constraint management component 120 may then use the platform agnostic identifier GID A1 and user identifier (ID supervisee ) to access constraint information that applies to the supervisee's interaction with application A1. Constraint management component 120 can then provide the platform-agnostic constraint information to enforcement component 118 of supervisee computing device 106. Enforcement component 118 can thereafter use the platform-agnostic constraint information to control the supervisee's interaction with application A1.

[0046] Different environment-specific implementations may perform the above operations in response to different triggering events. For example, the constraint management component 120 may send platform-agnostic constraint information to the supervised computing device 106 in response to any of the following: the supervised first downloads application A1; the supervised launches application A1; the supervisor updates the constraint information; the supervised computing device 106 explicitly requests the constraint information for any reason, and so on. For example, in one implementation, the supervised computing device 106 may obtain platform-agnostic constraint information when application A1 is first installed on the supervised computing device 106 and when the constraints are subsequently modified by the supervisor. This implementation allows the supervised computing device 106 to perform its application constraint functions in an offline manner. In another implementation, the supervised computing device 106 requests platform-agnostic constraint information each time the supervised attempts to use application A1 to perform a specific action. Still other implementations are possible. The following description Figure 6-Figure 9Additional information is provided about a declarative protocol for setting and applying constraint information.

[0047] The lookup data repository 126 may include additional data about each application. For example, the lookup data repository 126 may store an icon identifier that identifies an icon or other type of identifier to be presented by a user interface to represent the application. The lookup data repository 126 may also store a category identifier that identifies a category associated with the application. As will be described in more detail below, the constraint management component 120 may also allow a supervisor to set constraints that apply to categories of an entire application.

[0048] The mapping creation component 128 generates the information provided in the lookup data repository 126. In one implementation, the mapping creation component 128 relies on one or more users to manually determine whether two or more applications correspond to different versions of the same underlying application and thus constitute an application cluster. The user can make his or her judgment based on multiple pieces of evidence (such as source materials provided by application developers). More specifically, the mapping creation component 128 can rely on different people to identify clusters of related applications, including any combination of the following: application developers; regulators; regulated; multiple experts who provide their judgments via a crowdsourcing platform, etc. Alternatively or additionally, the mapping creation component 128 can rely on automatic or semi-automatic tools to determine whether two or more applications correspond to different versions of the same underlying application.

[0049] The computing environment 102 may also interact with a number of supporting services 130 to perform its functions. These services 130 include, but are not limited to, a device relationship component 132, a people relationship component 134, an identity management component 136, an application ("app") inventory component 138, a usage synchronization component 140, one or more communication components 142, and the like. Figure 1 Each support service is shown as being independent of supervisee computing device 104. Alternatively or additionally, each supervisee computing device may implement any aspects of support services 104, in whole or in part.

[0050] Identity management component 136 provides information about each user of computing environment 102. For example, identity management component 136 requires each user to establish a unique account when he or she first registers with computing environment 102. Identity management component 136 also optionally stores a profile associated with each user.

[0051] Device relationship component 132 stores information about associations between users in computing environment 102 and their devices. Device relationship component 132 can establish this association by requiring the user to specify his or her account number when registering each new device. Device relationship component 132 can thereafter identify all of the user's devices by finding all devices that have been tagged with the user's unique account number. Device relationship component 132 can also optionally record information about associations between users and network-accessible services to which they have subscribed or to which they otherwise have access.

[0052] The people relationship component 134 stores information about the association between the supervisor and the supervisee. The people relationship component 134 can establish the connection based on the setup information provided by the supervisor. For example, when registering for a service provided by the computing environment 102, a parent can identify his or her child and an account associated with the child. Alternatively or additionally, the people relationship component 134 can rely on a pre-existing social graph to define the relationship between people. Regardless of how it is compiled, the constraint management component 120 can use this relationship information to verify whether the supervisor is properly authorized to define the constraints that apply to the supervisee.

[0053] In one implementation, app inventory component 138 stores information about each application that a supervisee has installed on his or her computing device 104 (as well as each application that is installed locally on supervisee computing device 104). App inventory component 138 may determine this information by receiving a signal from the supervisee computing device and / or the external download service each time the supervisee computing device downloads an application. Alternatively or in addition, app inventory component 138 may directly poll each supervisee computing device to determine the applications that the supervisee computing device includes in its local storage. ... by providing a platform-specific identifier (e.g., ID A1P1 、ID A2P1 The constraint management component 120 may then rely on the lookup data repository 126 to identify applications that refer to different versions of the same underlying base application (eg, A1, A2, etc.).

[0054] In other implementations, app inventory component 138 more generally stores information about each application accessible to the supervisee, including locally installed applications and network-accessible applications. App inventory component 138 can determine that the supervisee has registered network-accessible applications based on information provided by the supervisee's computing device and / or a network-accessible system that provides network-accessible applications.

[0055] The usage synchronization component 140 records information about the supervisee's usage of each application. For example, the usage synchronization component 140 can maintain a counter per application that reflects the total amount of time the supervisee has spent interacting with multiple versions of the same application within a specified time frame (such as a day, etc.). The usage synchronization component 140 can maintain other counters for other usage metrics, for example, by maintaining a counter per application that records the total number of messages sent or received by the recipient within a specified time frame.

[0056] The communication component 142 provides a mechanism by which the supervisee and the supervisor can interact with each other. For example, the communication component 142 may include an email component, a text message component, a voice chat component, a video chat component, etc. In one scenario, the communication component 142 may allow the supervisee to request additional time from the supervisor. The communication component 142 also allows the supervisor to reply to the supervisee.

[0057] The supervisor computing device 124 includes a user interface component 144. The user interface component 144 provides one or more user interface presentations (described below) that allow a supervisor to view and edit the contents of the data repository 122. For example, a supervisor can interact with these user interface presentations to create new platform-agnostic constraint information and modify existing platform-agnostic constraint information.

[0058] Figure 2 It shows that it can be used to implement Figure 1 The computing device 202 of the computing environment 102 of the embodiment of the present invention is a computing device 202. The computing device 202 includes a plurality of computing devices 204 communicatively coupled to one or more servers 206 via a computer network 208. The computing device 204 may include any kind of user computing device, including but not limited to: a personal desktop computing device; a laptop computing device; any type of handheld computing device (including a tablet device, a smart phone, an electronic media reader device, etc.); a mixed reality device; an Internet of Things (IoT) device; a wearable computing device, etc. The computer network 208 may correspond to a wide area network (e.g., the Internet), a local area network, a point-to-point link, etc., or any combination thereof.

[0059] Figure 1 The computing environment 102 may be configured in any manner Figure 2 1 and 2. For example, in one merely illustrative implementation, server(s) 206 implement constraint management component 120, lookup data repository 126, any supporting services 130, and any network accessible applications. Each individual supervisee computing device implements locally installed applications, instantiation of enforcement components, etc.

[0060] In another implementation, Figure 1Any functionality shown as being external to the local computing device 204 may alternatively or additionally be implemented by the local computing device 204 itself. For example, the supervisee computing devices 104 may replicate information provided in the lookup data repository 126 in a distributed manner to eliminate the need for an external lookup data repository 126. In another implementation, the functionality of the constraint management component 120 may be performed in whole or in part by each supervisor computing device in a local manner.

[0061] Alternatively or additionally, Figure 1 Any functionality shown in the example as being internal to a local computing device may alternatively or additionally be implemented by an external server. For example, a server may implement aspects of the enforcement functionality attributed to an enforcement component of each device.

[0062] Figure 2 The flexibility with which constraint management functionality of computing environment 102 may be distributed between user computing devices 204 and servers 206 is illustrated by generally indicating that each user computing device includes constraint management functionality (CMF) 210 and each server includes constraint management functionality (CMF) 212 .

[0063] Figure 3 One implementation of the constraint management component 120 is shown. The constraint management component 120 includes a constraint processing component 302 that maintains information in a data repository 122. For example, the constraint processing component 302 can create, edit, and delete constraint information in the data repository 122 in response to instructions from a supervisor. In one implementation, each entry in the data repository 122 identifies a user (by specifying a user identifier), an application (by specifying its platform-agnostic identifier), and constraint information. For example, the constraint information can indicate that a supervisee is allotted a specified amount of time per day to interact with an application, regardless of what device the supervisee uses to interact with the application.

[0064] One or more interface components 304 enable constraint management component 120 to interact with user interface component 144 of supervisor computing device 124 and other elements of computing environment 102. Interface component 304 may use one or more application programming interfaces (APIs) or other interface mechanisms to accomplish this interaction.

[0065] Figure 4An implementation of a usage synchronization component 140 is shown. The usage synchronization component 140 includes a counter processing component 402 for maintaining multiple counters in a data repository 404. Each counter identifies the amount of activity that a user has performed in the process of interacting with an application. More specifically, in a merely illustrative case, the counter processing component 402 can maintain multiple counters for each application with which a supervisee interacts. A first counter identifies the amount of time that a supervisee has spent using an application (A1) using a first supervisee application execution platform (P1) within a specified time range (e.g., a day), a second counter identifies the amount of time that a supervisee has spent using an application (A1) using a second supervisee application execution platform (P2) within a specified time range, and so on. The application execution platform in this context can correspond to a specific device on which the application is locally installed, a network-accessible application running on a browser component, and the like. In addition, the counter processing component 402 maintains a global counter for the application, which represents the sum of the values ​​in each platform counter. That is, in one scenario, the global counter represents the total amount of time that a user has spent interacting with the application across all application execution platforms within a specified time range. In another implementation, the counter processing component 402 maintains only global counters, ie, by eliminating per-platform counters.

[0066] Interface component 406 enables usage synchronization component 140 to interact with enforcement components of each supervisee computing device and / or other elements of computing environment 102. Interface component 406 may use one or more APIs or other interface mechanisms to accomplish this interaction.

[0067] Figure 5 An implementation of an enforcement component 118 provided by a representative supervisee computing device 106 is shown. The enforcement component 118 includes an application (app) controller 502 that manages the execution of an application based on constraint information (or, instructions) provided by a constraint management component 120. The app controller 502 can perform this task in different ways. In one approach, the app controller 502 interacts with the operating system (OS) 108 to enable or disable an entire application, or to enable or disable specific functions performed by the application. If disabled, the OS 108 blocks or otherwise disables launch requests sent by the application. Alternatively or in addition, the app controller 502 can directly control the application in various ways using an API provided by the application (as managed by an API designed by each individual application developer). For the case of a network-accessible application, the app controller 502 can block access to network-accessible services associated with a specified network address.

[0068] The app controller 502 also plays a role in monitoring activity limits imposed by the constraint information. For example, consider a situation where the constraint information specifies that the supervisee is given one hour per day to interact with a particular application A1. Each time the user interacts with application A1 within a specified time increment (such as, but not limited to five minutes), the app controller 502 can send an incremental usage signal to the usage synchronization component 140. The usage synchronization component 140 responds to the request by identifying the total amount of time that the supervisee has spent interacting with all versions of application A1 across all application execution platforms until the current time. It reports this information to the app controller 502 in the usage signal. The app controller 502 then generates a measure of the remaining amount of time that the supervisee can interact with application A1, for example, by subtracting the total amount of time from the allocated amount of time specified by the constraint information.

[0069] The user interface component 504 generates one or more user interface presentations (described below) and delivers these presentations to the supervisee. For example, these user interface presentations can remind the supervisee of the remaining amount of time he or she is allowed to interact with the application. In addition, the user interface presentation can give the supervisee an opportunity to interact with the supervisor, for example, by requesting additional time for interacting with the application. One or more other interface components 506 provide a mechanism by which the enforcement component 118 can interact with any element of the computing environment 102, such as using the synchronization component 140. (Multiple) other interface components 506 can use any technology to perform this interaction, such as one or more APIs or other interface mechanisms.

[0070] Figure 6 Shows Figure 1 1 , the supervised computing device 106 sends a request signal that requests constraint information from the constraint management component 120. The signal specifies a particular version of application A1 running on the supervised computing device 106. Specifically, assume that the supervised computing device 106 uses a particular application execution platform (P1), such as a particular operating system. Therefore, the request signal will specify an identifier (ID ) associated with the version of application A1. A1P1 The request signal may also include an identifier (ID supervisee ).

[0071] Upon receiving the request signal, constraint management component 120 queries lookup data repository 126 to find a A1P1 ) is associated with a platform-agnostic identifier (GID) A1 ). Figure 6These actions are represented as operations (6.2) and (6.3). The constraint management component 120 can then use the user identifier (ID supervisee ) and platform-agnostic identifiers (GIDs A1 ) Find matching platform-agnostic constraint information in the data repository 122.

[0072] In operation (6.4), the constraint management component 120 provides a response signal to the supervisee computing device 106. In one implementation, the response signal specifies platform-agnostic constraint information. The local enforcement component 118 of the supervisee computing device 106 then controls the application A1 according to the constraint information, such as by enabling or disabling the requested functionality. In another implementation, the constraint management component 120 sends a response signal only when the supervisee is prohibited from performing the requested action. By default, the supervisee will be allowed to perform the requested operation unless a response signal prohibiting the operation is received.

[0073] As described above, different implementations may execute in response to different corresponding triggering events. Figure 6 . In one case, the supervised computing device 106 queries the constraint management component 120 when it is started and when it receives a notification that the constraint information has changed. In another implementation, the supervised computing device 106 may query the constraint management component 120 each time the supervisee attempts to use the application A1 to perform an operation. Still other invocation strategies are possible. For example, in other implementations, the constraint management component 120 may proactively send platform-agnostic constraint information to the supervised computing device 106 when the constraint information changes, without prompting from the supervised computing device 106.

[0074] Figure 7 Shows Figure 1 Another example of how the computing environment 102 of the supervised computing device 106 can be used to identify and apply constraint information. In operations 7.1 and 7.2, in response to any environment-specific triggering event, the supervisee computing device 106 receives platform-agnostic constraint information from the constraint management component 120 in the same manner as described above. Assume that in this case, the platform-agnostic constraint information identifies the allowed amount of time (t ... limitA1 ). More generally, the constraint information specifies the allowed amount of activities that the supervisee is allowed to perform using application A1.

[0075] In operation (7.3), supervisee computing device 106 sends a delta usage signal to usage synchronization component 140. For example, at the end of each five-minute interval, supervisee computing device 106 may send a delta usage signal to usage synchronization component 140 to indicate a new delta usage (t ΔA1 ). In another scenario, supervisee computing device 106 may send an activity signal to usage synchronization component 140 indicating that the supervisee has sent (or received) n messages in the past 15 minutes, and so on. However, assuming that the first mentioned scenario applies to Figure 7 The remaining description of (where the activity signal reports the time interval t that the supervisee has spent interacting with application A1 ΔA1 The incremental usage signal also includes an identifier (ID supervisee ) and an identifier that identifies the specific version of the application with which the supervisee is interacting (ID A1P1 ).

[0076] In operations (7.4) and (7.5), the synchronization component 140 uses the lookup data repository 126 to convert the platform specific identifier (ID A1P1 ) is mapped to the corresponding platform-agnostic identifier (GID A1 Based on this information, the synchronization component 140 is used to calculate the incremental time amount (t ΔA1 ) is added to the previous value of the counter to update the platform-agnostic counter for application A1; this generates an updated total amount of time (t) that the supervisee has spent interacting with application A1 across different versions of the same application totalA1 ).

[0077] In operation (7.6), usage synchronization component 140 sends a usage response signal to supervisee computing device 106. The usage response signal specifies the total amount of time (t totalA1 In operation (7.7), the enforcement component 118 may allocate the amount of time (t limitA1 ) minus the time (t totalA1 This yields the amount of time remaining for the supervisee to interact with application A1 within a given time frame (t remainA1 ). Enforcement component 118 may then present a user interface presentation that reminds the supervisee of the amount of time remaining. For special cases where the supervisee has no amount of time remaining, enforcement component 118 may disable application A1 and notify the supervisee of the event.

[0078] Assume that the enforcement component 118 provides (or otherwise exposes) a dialogue mechanism by which the supervisee and the supervisor can converse using any communication component (email, text message, SMS, voice chat, video chat, etc.). In operation (7.8), the supervisee uses the dialogue mechanism to send a request signal to the supervisor computing device 124 to request more time from the supervisor for interacting with the application. In operation (7.9), the supervisor computing device 124 sends a signal to the constraint management enforcement component 118; the signal conveys the approval or denial of the supervisee's request. If approved, the constraint management component 118 can update the appropriate constraint information in the data repository 122, for example, by adding the additional time to the allotted time specified in the constraint information for the supervisee and the application under consideration. In a final operation (not shown), the constraint management component 120 can send a signal to the supervisee computing device 106, which notifies the supervisee (and, the enforcement component 118) of the fact that he or she has been given more time to interact with the application A1.

[0079] Although not shown, when the supervisee first activates application A1, supervisee computing device 106 may also send a usage query signal to usage synchronization component 140. This action will trigger the same actions as described above to notify the supervisee of the total amount of time remaining that he or she may interact with application A1 across all versions of the application.

[0080] Figure 8 Shows Figure 1 An example of how the computing environment 102 of FIG. 104 may allow a supervisor to view and modify constraint information maintained in the constraint management component 120. The computing environment 102 calls upon a supervisor to request to view constraint information. Figure 8 process. In operations 8.1 to 8.6, the supervisor computing device 124 collects various data required to compile the user interface presentation. For example, in operations 8.1 and 8.2, the supervisor computing device 124 receives indications of applications that the supervisee has installed on the supervisee computing device 104 and / or applications that are locally installed on the supervisee computing device 104 and / or applications to which the supervisee has otherwise obtained access rights (including network-accessible applications); it obtains this information from the app manifest component 138. In operations 8.3 and 8.4, the supervisor computing device 124 receives information about the total amount of activity performed by the supervisee when interacting with applications on any application execution platform; it obtains this information from the usage synchronization component 140. In operations 8.5 and 8.6, the supervisor computing device 124 receives information about platform-agnostic constraint information currently applied to the application.

[0081] In operation 8.7, the user interface component 144 of the supervisor computing device 124 generates a user interface presentation based on the information collected above. Fig. 9 and Fig.10 As described, the user interface presentation lists all applications installed by the supervisee computing device 104 or accessible by the supervisee computing device. More specifically, the user interface presentation provides a single entry for each application, rather than providing a single entry for each version of the same application (or, more than just a single entry). For example, assuming that the app manifest component 138 lists the applications installed by, for example, their platform-specific identifiers (ID A1P1 、ID A1P2 ) to identify two versions of the same application installed on supervised computing device 104. Supervisor computing device 124 can find that the two applications correspond to identifier GID by consulting lookup data repository 126. A1 In operation (8.8), it is assumed that the supervisor interacts with the user interface presentation to update the constraint information associated with at least one application. The constraint management component 120 may store the new constraint information in the data store 126 and optionally notify the supervisee computing device 106.

[0082] Note that the present invention is presented in an illustrative rather than limiting spirit. Figure 6-Figure 8 Other implementations may vary these protocols in various ways. For example, in Figure 6 In the embodiment of the present invention, the constraint management component 120 sends the raw constraint information to the enforcement component 118, which then uses the information to control the supervisee's interaction with the application. However, in another implementation, the constraint management component 120 can perform any type of pre-processing on the constraint information to generate control instructions; it can then send the control instructions to the enforcement component 118 instead of the raw constraint information, or in addition to the raw constraint information.

[0083] As another variation, in Figure 7 In the embodiment, the enforcement component 118 performs the task of calculating the remaining amount of time. However, in another implementation, this task can be assigned to the use of the synchronization component 140 or any other component (s) of the computing environment 102.

[0084] In another variation, Figure 8 In the embodiment of the present invention, supervisor computing device 124 performs a primary role in constructing the user interface presentation. In another implementation, constraint management system 120 and / or other components of computing environment 102 may play a role in generating the user interface presentation.

[0085] Fig. 9 and Fig.10A user interface (UI) presentation 902 is shown that allows a supervisor to view and modify constraint information for a particular supervisee, Jill Smith, corresponding to the supervisor's teenage daughter. A first portion 904 of the UI presentation 902 provides information about the supervisee 906. A second portion 908 of the UI presentation 902 provides a control 910 that allows the supervisor to enable or disable constraint information for all applications.

[0086] A third portion 912 of the UI presentation 902 provides information 914 that describes a set of supervisee computing devices associated with the supervisee, for example, by providing an icon associated with each such supervisee computing device. However, in a more general case, the third portion 912 provides information describing a set of application execution platforms that run applications that the supervisee can access. These applications include applications that are locally installed by the supervisee computing devices, as well as applications that run on one or more network accessible systems. However, for ease of explanation, the third portion 914 is not described in detail. Fig. 9 In the example of , it is assumed that the supervised computing device represents the set of the entire application execution platform. Note that any reference to the supervised computing device below can be replaced with a more general reference to the application execution platform.

[0087] Although not shown, the third portion 912 may also display a reminder message in association with any icon when the corresponding supervisee computing device is not operating as expected. For example, the third portion 912 may display a reminder message when the supervisee computing device does not properly forward an incremental usage signal reflecting the supervisee's use of an application on the device to the usage synchronization component 140. The third portion 912 also includes a graphical prompt 916 that invites the supervisor to manually add a new supervisee computing device to the set of supervisee computing devices.

[0088] The fourth portion 918 of the UI presentation 902 lists the applications currently installed on the set of supervisee computing devices 104 (or more generally, the applications running on the different application execution platforms accessible to the supervisee). As described above, the UI presentation 902 provides a single entry in the list for each application, even though two or more versions of the application may be installed on different supervisee computing devices in the set of supervisee computing devices 104.

[0089] The fourth section 918 may display any information for each application that the supervisee has access to. Without limitation, in the first column 920, the fourth section 918 displays the name associated with the application (which in turn may be provided by the lookup data repository 126 or another lookup table). In the second column 922, the fourth section 918 displays the average daily amount of time that the supervisee spends interacting with the application. In the third column 924, the fourth section 918 displays the total amount of time (if any) that has been allocated by the supervisor for the supervisee to interact with the application. In the fourth column 926, the fourth section 918 provides individual controls for each application that allow the supervisor to enable or disable constraints applied to the application without affecting constraints applied to other applications.

[0090] The sorting specification control 928 allows the regulator to sort the entries in the list based on one or more sorting factors, such as application name, usage (from largest to smallest or from smallest to largest), installation date (or other types of launch dates that identify when the user obtained access to the application), etc. The filtering specification control 930 allows the regulator to display a subset of applications that meet one or more filtering factors. For example, the regulator can interact with the filtering specification control 930 to display only applications that have constraint information associated with them. Alternatively, the regulator can interact with the filtering specification control 930 to drill down into applications that are installed on a particular regulator computing device or, more generally, a particular application execution platform or that are otherwise accessible to a particular regulator computing device or, more generally, a particular application execution platform.

[0091] Fig.10Shown is a mechanism that a supervisee can use to modify constraint information. For example, suppose a supervisor wishes to change the allocated time that a supervisee is allowed to interact with the YouTube application. To this end, the supervisor can click on the entry associated with the application in the fourth part 918, or the supervisor can more specifically click on the expansion icon 1002 associated with the entry. This action causes the constraint management component 120 to present a panel 1004 below the entry. Panel 1004 includes usage information 1006 about the supervisee's use of the YouTube application last week. Alternatively, the usage information 1006 can present the detailed information of the supervisee's average use of the YouTube application every day in a week. Panel 1004 also includes a constraint designation control 1008 that allows the supervisor to set a new time limit for the YouTube application. In this merely illustrative case, the supervisor sets a new time limit by moving the mark to the desired position within the graphical depiction of the time span. In addition, in this illustrative case, the constraint designation control 1008 allows the supervisor to set a first limit for the weekday consumption of the supervisee's application, and sets a second limit for the weekend consumption of the supervisee's application. Note that the term "constraint-specifying controls" as used herein also generally refers to the entire set of constraint-specifying controls associated with a corresponding individual application.

[0092] In other scenarios (not shown), UI presentation 902 may allow the supervisor to view and modify other types of constraints in addition to or in lieu of time limit constraints. For example, the supervisor may specify any of the following: application functions that the supervisor is allowed to interact with; content items that the supervisor is allowed to access; individuals that the supervisor is allowed to interact with; the time at which the supervisor is allowed to perform specified application activities; the number of application actions that the supervisor is allowed to perform (e.g., the number of messages that the supervisor is allowed to send or receive); the amount of money that the supervisor is allowed to spend via the application, etc.

[0093] In yet another case, the UI presentation 902 may include another list that provides information about aggregate usage associated with different categories of applications (instead of or in addition to individual applications). The UI presentation 902 may also include another constraint specification control that allows the regulator to set category constraint information for each category of applications. The category constraint information, once set, applies to all versions of applications in the category of applications across multiple application execution platforms.

[0094] For example, the fourth section 918 may include a list of game categories, social media categories, video categories, and homework tool categories. Take the game category as an example. The game category may cover two or more applications that provide games. The fourth section 918 may display usage information for the game category, which describes the total amount of time that the supervisee has spent interacting with the group of game applications. The fourth section 918 may include a constraint specifying control that allows the supervisor to specify a time limit for the game category. Once the time limit is set, the total amount of time that the supervisee can spend interacting with the game application group across multiple application execution platforms is provided.

[0095] To provide the above-mentioned category information, the lookup data table 126 may optionally be adapted to convert a platform specific identifier (e.g., ID A1P1 ) is mapped to a category identifier (e.g., CID games ). The constraint management component 120 may optionally be adapted to store the category CID games Furthermore, the usage synchronization component 140 may be adapted to provide a category counter for each category, the category counter recording the total amount of time the supervisee has spent interacting with applications in that category. Fig. 9 and Fig.10 In one way, an application name can refer to a discrete individual application (ie, a single program) or a family of applications having an identified relationship.

[0096] In an alternative implementation, the lookup data store 126 may store information about the category of each application, e.g. Figure 1 Based on this information, the enforcement component 118 can calculate the total amount of activity that occurs for a category of an application by summing the count values ​​of the applications associated with the category being considered. In this case, the lookup data repository 126 can omit a separate counter for the category information.

[0097] Fig.11A series of user interfaces (UI) presented to the supervised during the process of the supervised and the application (such as, YouTube application) interaction are shown. In state A, when the supervised activates the application for the first time, the enforcement component 118 presents the UI presentation 1102. The UI presentation 1102 displays the content 1104 provided by the application. The UI presentation 1102 also provides a message 1106, which reminds the supervised to note that the limit is applied to her consumption of the application and that the time runs out at the specified time. In state B, the enforcement component 118 presents a message 1108, which notifies the supervised that she only has 15 minutes left. More generally, the enforcement component 118 can provide update messages at any configurable frequency (such as, every 15 minutes). In addition, as the end time approaches, the enforcement component 118 can increase the frequency of the message. In state C, the enforcement component 118 disables the application because the remaining time has reached zero. The enforcement component 118 also sends a message 1110, which notifies the supervised that the allocated time has expired. Message 1110 also invites the supervisee to send a request to the supervisor asking the supervisor to grant additional time.

[0098] Fig.12 A UI presentation 1202 (provided by the user interface component 144 of the supervisor computing device 124) is shown presenting a message 1204 inviting the supervisor to add more time to the supervisor's daily time allotment for the application. Fig.13 A UI presentation 1302 (provided by enforcement component 118) is shown providing a message 1304 notifying the supervisee that the supervisor has Fig.12 The UI presents 1202 the actions taken.

[0099] Notice, Figure 11-13 The user interface presentation of is presented in an illustrative spirit and is not restrictive. Other implementations may use different notification techniques to provide information to the supervisee and the supervisor. For example, in another implementation, the enforcement component 118 may provide a voice message that notifies the supervisee of the remaining time she is allowed to interact with the application.

[0100] B. Illustrative Process

[0101] Figure 14-16 The process of explaining the operation of the computing environment 102 of Part A is shown in the form of a flowchart. Since the basic principles of the operation of the computing environment 102 have been described in Part A, certain operations will be described in a generalized manner in this part. As described in the preface of the "Detailed Description", each flowchart is expressed as a series of operations performed in a specific order. However, the order of these operations is only representative and can be changed in any way.

[0102] More specifically, Fig.14 A process 1402 is shown for controlling interactions with an application from the perspective of a constraint management component 120. In box 1404, the constraint management component 120 identifies a specific version of an application that a supervisee can access via a supervisee computing device 106, the specific version of the application running on a specific application execution platform, the specific version associated with an identifier that identifies the specific version of the application. In box 1406, the constraint management component 120 consults a lookup data repository 126 to map the identifier associated with the specific version of the application to platform-agnostic constraint information, the platform-agnostic constraint information applying to the supervisee's interactions with multiple versions of the application, the multiple versions associated with multiple corresponding application execution platforms. In box 1408, the constraint management component 120 controls the supervisee's use of the specific version of the application based on the platform-agnostic constraint information.

[0103] Fig.15 A process 1502 is shown for controlling interaction with an application from the perspective of a supervisee computing device 106. In block 1504, supervisee computing device 106 receives platform agnostic constraint information from constraint management component 120, the platform agnostic constraint information applying to supervisee interaction with multiple versions of an application, the multiple versions being associated with multiple respective application execution platforms. Assume that the supervisee interacts with a specific version of an application running on a specific application execution platform. In block 1506, supervisee computing device 106 controls use of the specific version of the application based on the platform agnostic constraint information.

[0104] Fig.16 A process 1602 for managing the use of applications from the perspective of a supervisor computing device 124 is shown. In box 1604, the supervisor computing device 124 provides a user interface presentation to the supervisor. The user interface presentation includes: a list of applications running on different application execution platforms; and a constraint specifying control that allows the supervisor to set platform agnostic constraint information for each application in the list, which, once set for the application, constrains the supervisee's interaction with all versions of the application running on multiple application execution platforms. In box 1606, in response to the supervisor's interaction with the constraint specifying control, the supervisor computing device 124 receives input from the supervisor expressing new platform agnostic constraint information. In box 1606, the supervisor computing device 124 sends a set signal specifying the new platform agnostic constraint information to the constraint management component 120, and the constraint management component 120 stores the new platform agnostic constraint information in the data repository 122.

[0105] C. Representative computing functions

[0106] Fig.17A computing device 1702 is shown that can be used to implement any aspects of the mechanisms described in the above figures. Figure 1 and Figure 2 , Fig.17 The type of computing device 1702 shown may be used to implement any supervisee computing device, any supervisor computing device, or any server. In all cases, computing device 1702 represents a physical and tangible processing mechanism.

[0107] The computing device 1702 may include one or more hardware processors 1704. The hardware processor(s) may include, but are not limited to, one or more central processing units (CPUs) and / or one or more graphics processing units (GPUs) and / or one or more application specific integrated circuits (ASICs), etc. More generally, any hardware processor may correspond to a general-purpose processing unit or an application-specific processor unit.

[0108] The computing device 1702 may also include a computer-readable storage medium 1706 corresponding to one or more computer-readable medium hardware units. The computer-readable storage medium 1706 retains any kind of information 1708, such as machine-readable instructions, settings, data, etc. Without limitation, for example, the computer-readable storage medium 1706 may include one or more solid-state devices, one or more magnetic hard disks, one or more optical disks, magnetic tapes, etc. Any instance of the computer-readable storage medium 1706 may use any technology to store and retrieve information. In addition, any instance of the computer-readable storage medium 1706 may represent a fixed or removable unit of the computing device 1702. In addition, any instance of the computer-readable storage medium 1706 may provide volatile or non-volatile retention of information.

[0109] The computing device 1702 may utilize any instance of the computer-readable storage medium 1706 in different ways. For example, any instance of the computer-readable storage medium 1706 may represent a hardware memory unit (such as a random access memory (RAM)) for storing transient information during the execution of a program by the computing device 1702, and / or a hardware storage unit (such as a hard disk) for more permanent retention / archiving of information. In the latter case, the computing device 1702 also includes one or more drive mechanisms 1710 (such as a hard disk drive mechanism) for storing and retrieving information from instances of the computer-readable storage medium 1706.

[0110] Computing device 1702 may perform any of the functions described above when hardware processor(s) 1704 execute computer-readable instructions stored in any instance of computer-readable storage medium 1706. For example, computing device 1702 may execute computer-readable instructions to perform each block of the process described in Part B.

[0111] Alternatively or additionally, the computing device 1702 may rely on one or more other hardware logic units 1712 to perform operations using a task-specific set of logic gates. For example, the hardware logic unit(s) 1712 may include a fixed configuration of hardware logic gates, e.g., that are created and set at the time of manufacturing and cannot be changed thereafter. Alternatively or additionally, the other hardware logic units 1712 may include a collection of programmable hardware logic gates that may be set to perform different application-specific tasks. The latter class of devices includes, but is not limited to, programmable array logic devices (PALs), general array logic devices (GALs), complex programmable logic devices (CPLDs), field programmable gate arrays (FPGAs), and the like.

[0112] Fig.17 Hardware logic circuitry 1714 is generally indicated to include any combination of hardware processor(s) 1704, computer-readable storage medium 1706, and / or other hardware logic unit(s) 1712. That is, computing device 1702 may employ any combination of hardware processor(s) 1704 that execute machine-readable instructions provided in computer-readable storage medium 1706 and / or one or more other hardware logic units 1712 that perform operations using fixed and / or programmable sets of hardware logic gates. More generally, hardware logic circuitry 1714 corresponds to one or more hardware logic units(s) of any type that perform operations based on logic stored in and / or otherwise embodied in the hardware logic unit(s).

[0113] In some cases (e.g., where computing device 1702 represents a user computing device), computing device 1702 also includes input / output interfaces 1716 for receiving various inputs (via input devices 1718) and for providing various outputs (via output devices 1720). Illustrative input devices include a keyboard device, a mouse input device, a touch screen input device, a digitizer tablet, one or more still image cameras, one or more video cameras, one or more depth camera systems, one or more microphones, a voice recognition mechanism, any motion detection mechanism (e.g., accelerometers, gyroscopes, etc.), etc. A specific output mechanism may include a display device 1722 and an associated graphical user interface presentation (GUI) 1724. Display device 1722 may correspond to a liquid crystal display device, a light emitting diode display (LED) device, a cathode ray tube device, a projection mechanism, etc. Other output devices include a printer, one or more speakers, a tactile output mechanism, an archiving mechanism (for storing output information), etc. The computing device 1702 may also include one or more network interfaces 1726 for exchanging data with other devices via one or more communication conduits 1728. One or more communication buses 1730 communicatively couple the above-mentioned units together.

[0114] The communication conduit(s) 1728 may be implemented in any manner, for example, through a local area computer network, a wide area computer network (e.g., the Internet), a point-to-point connection, etc., or any combination thereof. The communication conduit(s) 1728 may include any combination of hardwired links, wireless links, routers, gateway functions, name servers, etc., managed by any protocol or combination of protocols.

[0115] Fig.17 Computing device 1702 is shown as being composed of a discrete collection of separate units. In some cases, the collection of units may correspond to discrete hardware units provided in a computing device chassis having any form factor. Fig.17 An illustrative form factor is shown with its bottom portion. In other cases, computing device 1702 may include an integrated Figure 1 For example, computing device 1702 may include a system on a chip (SoC or SOC), which corresponds to a hardware logic unit that combines the functions of two or more units shown in FIG. Fig.17 An integrated circuit that incorporates the functions of two or more units shown.

[0116] The following summary provides a non-exhaustive collection of illustrative aspects of the techniques set forth herein.

[0117] According to a first aspect, one or more computing devices for managing a supervisee's use of an application are described. The computing device(s) include a hardware logic circuit system that provides: (a) one or more hardware processors that perform operations by executing machine-readable instructions stored in a memory, and / or (b) one or more other hardware logic units that perform operations using a task-specific set of logic gates. These operations include: identifying a specific version of an application that a supervisee can access via the supervisee's computing device, the specific version of the application running on a specific application execution platform, the specific version associated with an identifier that identifies the specific version of the application; consulting a lookup data repository to map the identifier associated with the specific version of the application to platform-agnostic constraint information, the platform-agnostic constraint information being applied to the supervisee's interaction with multiple versions of the application, the multiple versions being associated with multiple corresponding application execution platforms; and controlling the supervisee's use of the specific version of the application based on the platform-agnostic constraint information.

[0118] According to a second aspect, at least two of the application execution platforms use different respective kinds of operating systems.

[0119] According to a third aspect, at least one application execution platform corresponds to a network accessible application in combination with a browser component for accessing the network accessible application.

[0120] According to a fourth aspect, platform agnostic constraint information specifies an allowed amount of activity that a supervisee is allowed to perform across all versions of an application.

[0121] According to a fifth aspect related to the fourth aspect, the platform agnostic constraint information expresses the allowed amount of activity as an aggregated total amount of time that the supervisee is allowed to use the multiple versions of the application.

[0122] According to a sixth aspect related to the fourth aspect, the operations also include: receiving an incremental usage signal from a supervised computing device, the incremental usage signal specifying an increment of activities performed by the supervised when interacting with a specific version of the application; in response to the incremental usage signal, incrementing a counter identifying a total amount of activities performed by the supervised when interacting with all versions of the application; and sending a usage response signal to the supervised computing device, the usage response signal specifying the total amount of activities performed by the supervised.

[0123] According to a seventh aspect related to the sixth aspect, the operations further include: repeating the operations of receiving the incremental usage signal and sending the usage response signal at least once during the interaction between the supervisee and the specific version of the application.

[0124] According to an eighth aspect, the operations further include receiving a setup signal expressing new platform agnostic constraint information from a supervisor computing device in response to supervisor interaction with a user interface presentation provided by the supervisor computing device.

[0125] According to a ninth aspect related to the eighth aspect, a user interface presents and provides: a list of applications running on multiple application execution platforms; and a constraint specification control that allows a regulator to specify new platform-agnostic constraint information for any application in the list.

[0126] According to the tenth aspect, a method for managing the use of applications performed by one or more computing devices is described. The method includes providing a user interface presentation to a regulator. The user interface presentation includes: a list of applications running on different application execution platforms; and a constraint designation control, allowing the regulator to set platform-agnostic constraint information for each application in the list, and once the platform-agnostic constraint information is set for the application, it will constrain the interaction of the regulated with all versions of the application running on multiple application execution platforms. The method also includes: in response to the regulator's interaction with the constraint designation control, receiving input expressing new platform-agnostic constraint information from the regulator; and sending a setting signal specifying the new platform-agnostic constraint information to the constraint management component, and the constraint management component stores the new platform-agnostic constraint information in a data storage.

[0127] According to an eleventh aspect related to the tenth aspect, the user interface presentation also includes usage information, which specifies a total usage amount for each application in the list, and the total usage amount expresses a total amount of activities performed by the supervisee across all application execution platforms.

[0128] According to a twelfth aspect related to the tenth aspect, the user interface presentation further includes a filter designation control, which allows the regulator to limit the list to applications running on a designated set of application execution platforms.

[0129] According to a thirteenth aspect related to the eleventh aspect, the user interface presents another constraint designation control that allows the regulator to set category constraint information for a category of an application, the category constraint information being applied to all versions of the application in the category of the application running on multiple application execution platforms.

[0130] According to a fourteenth aspect related to the eleventh aspect, the method also includes: receiving a usage request signal from the supervised party requesting modification of the platform-agnostic constraint information; and presenting information about the usage request signal to the supervisor in a user interface presentation.

[0131] According to a fifteenth aspect, a computer-readable storage medium for storing computer-readable instructions is described. The computer-readable instructions, when executed by one or more hardware processors, perform a method, the method comprising: receiving platform-agnostic constraint information from a constraint management component, the platform-agnostic constraint information being applied to a supervisee's interaction with multiple versions of an application, the multiple versions being associated with multiple corresponding application execution platforms, the supervisee interacting with a specific version of the application running on a specific application execution platform; and controlling use of the specific version of the application based on the platform-agnostic constraint information.

[0132] According to a sixteenth aspect related to the fifteenth aspect, the platform agnostic constraint information specifies an allowed amount of activities that the supervisee is allowed to perform across all versions of the application.

[0133] According to a seventeenth aspect related to the sixteenth aspect, the platform agnostic constraint information expresses the allowed amount of activity as an aggregated total amount of time that the supervisee is allowed to use multiple versions of the application.

[0134] According to an eighteenth aspect related to the seventeenth aspect, the method also includes: sending an incremental usage signal to a usage synchronization component, the incremental usage signal specifying an increment of activities performed by the supervisee when interacting with a specific version of the application; receiving a usage response signal from the usage synchronization component, the usage response signal specifying a total amount of activities performed by the supervisee when interacting with all versions of the application; generating a measure of the remaining amount of activities that the user can perform when interacting with all versions of the application based on the allowed amount of activities and the total amount of activities; and presenting a user interface presentation to the supervisee, the user interface presentation reminding the supervisee of the remaining amount of activities.

[0135] According to a nineteenth aspect related to the eighteenth aspect, the control operation includes prohibiting the supervisee from interacting with the specific version of the application when the remaining amount of the activity is zero.

[0136] According to the twentieth aspect related to the eighteenth aspect, the method also includes: sending a usage request signal to a supervisor computing device, the usage request signal expressing the supervised person's request to add an additional amount of the activity to the allowed amount of the activity; and receiving a response to the usage request signal when the supervisor approves the supervised person's request for the additional amount of the activity.

[0137] The twenty-first aspect corresponds to any combination (eg, any logically consistent arrangement or subset) of the first to twentieth aspects described above.

[0138] The twenty-second aspect corresponds to any method counterpart, device counterpart, system counterpart, apparatus plus function counterpart, computer-readable storage medium counterpart, data structure counterpart, product counterpart, graphical user interface presentation counterpart, etc. associated with the first to twenty-first aspects.

[0139] Finally, the functionality described herein may employ various mechanisms to ensure that any user data is processed in a manner consistent with applicable laws, social norms, and the expectations and preferences of individual users. For example, the functionality may allow users to explicitly opt-in (and then explicitly opt-out) of the functionality's provisions. The functionality may also provide appropriate security mechanisms to ensure the privacy of user data (such as data cleansing mechanisms, encryption mechanisms, password protection mechanisms, etc.).

[0140] Furthermore, the description may have presented various concepts in the context of an illustrative challenge or problem. This interpretation does not imply that others have understood and / or articulated the challenge or problem in the manner specified herein. Furthermore, this interpretation is not intended to imply that the subject matter recited in the claims is limited to solving only the identified challenges or problems; that is, the subject matter in the claims may be applicable in the context of challenges or problems other than those described herein.

[0141] Although the subject matter has been described in language specific to structural features and / or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.

Claims

1. One or more computing devices for managing supervisee use of the application, including: Hardware logic circuitry, the hardware logic circuitry comprising: (a) one or more hardware processors that perform operations by executing machine-readable instructions stored in a memory, and / or (b) one or more other hardware logic units that use a task-specific set of logic gates to perform operations, the operations comprising: receiving a request signal from a supervisee computing device, the request signal identifying a specific version of the application accessible to the supervisee via the supervisee computing device, the specific version of the application running on a specific application execution platform, the specific version being associated with an identifier identifying the specific version of the application provided by the request signal; upon receiving the request signal, consulting a lookup data repository to map the identifier associated with the particular version of the application to platform agnostic constraint information, the platform agnostic constraint information being applicable to interactions of the supervisee with a plurality of versions of the application, the plurality of versions of the application being associated with a plurality of respective application execution platforms; providing a response signal to the supervisee computing device, the response signal specifying the platform agnostic constraint information for the supervisee computing device to locally control the supervisee's use of the particular version of the application; and When the supervisee interacts with the particular version of the application, a total amount of activities that the supervisee has performed in the course of interacting with the multiple versions of the application is increased. 2 . The one or more computing devices of claim 1 , wherein at least two of the application execution platforms use different respective kinds of operating systems.

3. The one or more computing devices of claim 1, wherein at least one application execution platform corresponds to a network-accessible application in combination with a browser component for accessing the network-accessible application. 4 . The one or more computing devices of claim 1 , wherein the platform-agnostic constraint information specifies an allowed amount of activity that the supervisee is permitted to perform across the multiple versions of the application. 5 . The one or more computing devices of claim 4 , wherein the platform-agnostic constraint information expresses the permitted amount of the activity as an aggregated total amount of time that the supervisee is permitted to use the multiple versions of the application.

6. The one or more computing devices of claim 1 , wherein increasing the total amount of the activity comprises: receiving a delta usage signal from the supervisee computing device, the delta usage signal specifying a delta of activities performed by the supervisee when interacting with the particular version of the application; responsive to the incremental usage signal, incrementing a counter identifying a total amount of the activity performed by the supervisee while interacting with the plurality of versions of the application; as well as A usage response signal is sent to the supervisee computing device, the usage response signal specifying a total amount of the activity that the supervisee has performed.

7. The one or more computing devices of claim 1, wherein the operations further comprise: The increasing is repeated at least once during the supervisee's interaction with the particular version of the application.

8. The one or more computing devices of claim 1, wherein the identifier is a specific version-specific identifier, and the specific version-specific identifier is one of a group of version-specific identifiers respectively associated with the multiple versions of the application running on the corresponding application execution platform, wherein the lookup data repository further includes a platform agnostic identifier representing the application independent of an execution platform, and Wherein the consulting uses the lookup data repository to locate the platform agnostic identifier associated with the particular version specific identifier.

9. The one or more computing devices of claim 6, wherein the increment of activity is an increment of time that the supervisee has spent interacting with the particular version of the application, and The total amount of activity refers to the aggregate total amount of time that the supervisee has spent using the multiple versions of the application.

10. The one or more computing devices of claim 6, wherein the incremental usage signal includes the identifier identifying the particular version of the application, and Wherein the operations further comprise using the lookup data store to map the identifier to the incremented counter.

11. A method for managing the use of an application performed by one or more computing devices, comprising: A user interface presentation is provided to a supervisor, the user interface presentation comprising: a list of applications running on different application execution platforms; a constraint specifying control that allows the regulator to set platform agnostic constraint information for each application in the list, the platform agnostic constraint information, once set for a particular application, constrains the supervisee's interaction with multiple versions of the particular application running on multiple application execution platforms; and usage information specifying, for the particular application in the list, a total usage amount, the total usage amount expressing a total amount of activity performed by the supervisee across the particular application, including activities across different ones of the plurality of versions of the particular application, the total usage amount being incremented during the supervisee's interaction with each version of the particular application; In response to the regulator's interaction with the constraint-specifying control, receiving input from the regulator expressing new platform-agnostic constraint information; and A setup signal specifying the new platform agnostic constraint information is sent to a constraint management component, and the constraint management component stores the new platform agnostic constraint information in a data repository.

12. The method of claim 11, wherein the total amount of activity refers to an aggregate total amount of time that the supervisee has spent using the multiple versions of the particular application.

13. A computer-readable storage medium for storing computer-readable instructions, the computer-readable instructions, when executed by one or more hardware processors, performing a method comprising: receiving platform agnostic constraint information from a constraint management component, the platform agnostic constraint information applying to a supervisee's interaction with a plurality of versions of an application, the plurality of versions of the application being associated with a plurality of respective application execution platforms, The supervisee interacts with a specific version of the application running on a specific application execution platform; and controlling use of the specific version of the application based on the platform agnostic constraint information, wherein the platform agnostic constraint information specifies an allowed amount of activity that the supervisee is permitted to perform across the multiple versions of the application, The method further comprises: sending a delta usage signal to a usage synchronization component, the delta usage signal specifying a delta of activities performed by the supervisee when interacting with the particular version of the application; receiving a usage response signal from the usage synchronization component, the usage response signal specifying a total amount of activity that the supervisee has performed while interacting with the plurality of versions of the application; generating a measure of a remaining amount of activity that the supervisee can perform when interacting with the multiple versions of the application based on the allowed amount of activity and the total amount of activity; and The supervisee is presented with a user interface presentation that alerts the supervisee of a remaining amount of the activity.

14. The computer-readable storage medium of claim 13, wherein the platform-agnostic constraint information expresses the allowed amount of the activity as an aggregated total amount of time that the supervisee is permitted to use the multiple versions of the application.

15. The computer-readable storage medium of claim 13, wherein the controlling comprises prohibiting the supervisee from interacting with the particular version of the application when the remaining amount of the activity is zero.

16. The computer-readable storage medium of claim 13, wherein the method further comprises: sending a usage request signal to a supervisor computing device, the usage request signal expressing a request by the supervisee for an additional amount of activity to be added to an allowed amount of activity; as well as A response to the usage request signal is received when the supervisor approves the supervisee's request for an additional amount of the activity.

17. The computer-readable storage medium according to claim 13, wherein the increment of activity is an increment of time that the supervisee has spent interacting with the particular version of the application, and The total amount of activity refers to the aggregate total amount of time that the supervisee has spent using the multiple versions of the application.

18. The computer-readable storage medium of claim 13, wherein the particular version of the application is associated with a particular identifier, and wherein a lookup table is used to map the particular identifier to the total amount of the activity using a synchronization component.

19. The computer-readable storage medium according to claim 18, wherein the specific identifier is one of a set of version-specific identifiers, the set of version-specific identifiers being respectively associated with the multiple versions of the application running on the corresponding application execution platform, and The lookup table further includes a platform agnostic identifier representing the application independent of an execution platform.

Citation Information

Patent Citations

  • Data custodian and curation system

    CN103597489A

  • Time Bound Entitlement for Digital Content Distribution Framework

    US20070289028A1