US20220353638A1 - Location-based application discovery - Google Patents
Location-based application discovery Download PDFInfo
- Publication number
- US20220353638A1 US20220353638A1 US17/812,737 US202217812737A US2022353638A1 US 20220353638 A1 US20220353638 A1 US 20220353638A1 US 202217812737 A US202217812737 A US 202217812737A US 2022353638 A1 US2022353638 A1 US 2022353638A1
- Authority
- US
- United States
- Prior art keywords
- applications
- location information
- client device
- application
- processor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 claims abstract description 61
- 230000004044 response Effects 0.000 claims description 19
- 239000003795 chemical substances by application Substances 0.000 description 61
- 230000008569 process Effects 0.000 description 30
- 238000010586 diagram Methods 0.000 description 10
- 230000008859 change Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 7
- 230000003993 interaction Effects 0.000 description 7
- 238000013475 authorization Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 4
- 101100264195 Caenorhabditis elegans app-1 gene Proteins 0.000 description 3
- 238000003491 array Methods 0.000 description 3
- 230000004075 alteration Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 241000501754 Astronotus ocellatus Species 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000003116 impacting effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/02—Services making use of location information
- H04W4/029—Location-based management or tracking services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/02—Services making use of location information
- H04W4/021—Services related to particular areas, e.g. point of interest [POI] services, venue services or geofences
- H04W4/022—Services related to particular areas, e.g. point of interest [POI] services, venue services or geofences with dynamic range variability
Definitions
- application deployment is generally based upon a pre-defined policy and available user resources.
- an end user is typically dependent upon a system administrator to define the policy and available resources such that the end user can access one or more applications in the distributed workspace.
- a computer system for providing location-based application access includes a memory, a network interface, and at least one processor coupled to the memory and the network interface.
- the at least one processor is configured to receive, from a client agent via the network interface, a connection request for access to a distributed workspace, the connection request including location information for a client device; access, from the memory, metadata for each of a plurality of applications, wherein the metadata includes location information for each of the plurality of applications defining at least one physical location where each of the plurality of applications can be accessed; compare the location information for the client device against the metadata for each of the plurality of applications; determine one or more of the plurality of applications that have associated location information that matches the location information for the client device; organize each of the determined one or more of the plurality of applications that have associated location information that matches the location information for the client device into a listing of available applications; and transmit, to the client agent via the network interface, the listing of available applications for display to a user of the client device.
- Implementations of the computer system can include one or more of the following features.
- the at least one processor can be further configured to receive, from the client agent via the network interface, updated location information for the client device and determine if the location of the client device has changed based upon the updated location information for the client device. In some examples of the computer system, the at least one processor is further configured to generate, in response to determining that the location of the client device has changed, an updated listing of available applications based upon the updated location information and transmit, to the client agent via the network interface, the updated listing of available applications for display to a user of the client device.
- the at least one processor being configured to generate the updated listing of available applications includes the at least one processor being configured to compare the updated location information for the client device against the metadata for each of the plurality of applications, determine one or more of the plurality of applications that have associated location information that matches the updated location information for the client device, and organize each of the determined one or more of the plurality of applications that have associated location information that matches the updated location information for the client device into the updated listing of available applications.
- the memory can include an application store configured to store the plurality of applications.
- the application store is organized into a plurality of application groups, each of the plurality of application groups including group location information for defining at least one physical location where each of the plurality of applications in a particular group can be accessed from.
- the location information for the client device can include at least one of global positioning system information and network connection information.
- a method of providing location-based application access includes receiving, by at least one processor, a connection request from a client agent via network interface operably coupled to the at least one processor for access to a distributed workspace, the connection request including location information for a client device; accessing, by the at least one processor, metadata for each of a plurality of applications from a memory operably coupled to the at least one processor, wherein the metadata includes location information for each of the plurality of applications defining at least one physical location where each of the plurality of applications can be accessed from; comparing, by the at least one processor, the location information for the client device against the metadata for each of the plurality of applications; determining, by the at least one processor, one or more of the plurality of applications that have associated location information that matches the location information for the client device; organizing, by the at least one processor, each of the determined one or more of the plurality of applications that have associated location information that matches the location information for the client device into a listing of available applications; and transmitting, by the at least one
- Implementations of the method can include one or more of the following features.
- At least some of the examples of the method can include receiving, by the at least one processor, updated location information for the client device from the client agent via the network interface and determining, by the at least one processor, if the location of the client device has changed based upon the updated location information for the client device.
- the method includes generating, by the at least one processor, an updated listing of available applications based upon the updated location information in response to determining that the location of the client device has changed and transmitting, by the at least one processor, the updated listing of available applications for display to a user of the client device to the client agent via the network interface.
- generating the updated listing of available applications includes comparing, by the at least one processor, the updated location information for the client device against the metadata for each of the plurality of applications; determining, by the at least one processor, one or more of the plurality of applications that have associated location information that matches the updated location information for the client device; and organizing, by the at least one processor, each of the determined one or more of the plurality of applications that have associated location information that matches the updated location information for the client device into the updated listing of available applications.
- the memory can include an application store configured to store the plurality of applications.
- the application store is organized into a plurality of application groups, each of the plurality of application groups including group location information for defining at least one physical location where each of the plurality of applications in a particular group can be accessed from.
- the location information for the client device includes at least one of global positioning system information and network connection information.
- a non-transitory computer readable medium can store computer executable instructions to provide location-based application access.
- the computer executable instructions include instructions to receive a connection request from a client agent via a network interface operably coupled to at least one processor for access to a distributed workspace, the connection request including location information for a client device; access metadata for each of a plurality of applications from a memory operably coupled to the at least one processor, wherein the metadata includes location information for each of the plurality of applications defining at least one physical location where each of the plurality of applications can be accessed from; compare the location information for the client device against the metadata for each of the plurality of applications; determine one or more of the plurality of applications that have associated location information that matches the location information for the client device; organize each of the determined one or more of the plurality of applications that have associated location information that matches the location information for the client device into a listing of available applications; and transmit the listing of available applications for display to a user of the client device to the client
- Implementations of the computer readable medium can include one or more of the following features.
- the instructions further include instructions to receive updated location information for the client device from the client agent via the network interface and determine if the location of the client device has changed based upon the updated location information for the client device. In some additional examples of the computer readable medium, the instructions further include instructions to generate an updated listing of available applications based upon the updated location information in response to determining that the location of the client device has changed and transmit the updated listing of available applications for display to a user of the client device to the client agent via the network interface.
- the instructions to generate the updated listing of available applications include instructions to compare the updated location information for the client device against the metadata for each of the plurality of applications, determine one or more of the plurality of applications that have associated location information that matches the updated location information for the client device, and organize each of the determined one or more of the plurality of applications that have associated location information that matches the updated location information for the client device into the updated listing of available applications.
- the memory can include an application store configured to store the plurality of applications.
- the application store is organized into a plurality of application groups, each of the plurality of application groups including group location information for defining at least one physical location where each of the plurality of applications in a particular group can be accessed from.
- FIG. 1 is a block diagram of a distributed workspace system, in accordance with at least one example of the present disclosure.
- FIG. 2 is a block diagram of a network environment of computing devices in which various aspects of the present disclosure can be implemented.
- FIG. 3 is a block diagram of a computing device that can implement one or more of the computing devices of FIG. 2 , in accordance with at least one example of the present disclosure.
- FIG. 4 is a block diagram of the distributed workspace system of FIG. 1 as implemented by a configuration of computing devices, in accordance with at least one example of the present disclosure.
- FIG. 5 is a flow diagram illustrating an initial location-based application discovery process for a user, in accordance with at least one example of the present disclosure.
- FIG. 6 is a flow diagram illustrating a continued location-based application discovery process for a user, in accordance with at least one example of the present disclosure.
- FIG. 7 is a flow diagram illustrating an application publication process, in accordance with at least one example of the present disclosure.
- FIG. 8 is a block diagram of a sample application service including an application store, in accordance with at least one example of the present disclosure.
- FIG. 9 is a drawing of a map and several sample interface views illustrating location-based application services, in accordance with at least one example of the present disclosure.
- FIG. 10 is a sample view of an example user interface for a distributed workspace that includes location-based application discovery, in accordance with at least one example of the present disclosure.
- FIG. 11 is a block diagram of a workspace optimization system, in accordance with an example of the present disclosure.
- various examples described herein are directed to systems for providing location-based application discovery and methods and processes for use of such a system in a distributed workspace system.
- These systems and methods overcome technical difficulties that arise in other distributed workspace systems where, for example, a server provides a user with a static set of applications for access in a distributed workspace.
- a server provides a user with a static set of applications for access in a distributed workspace.
- Such a traditional model is limited and generally only works well in controllable environments like an office where daily work and required resources are similar for all users and generally do not deviate from one day to the next.
- traditional distributed workspace systems are not flexible based upon changing user resources and generally do not provide for dynamic access to applications.
- the system may include an application service that controls access to an application store.
- the application service can be configured to receive location information for a computing device that is requesting access to or is currently running an instance of a distributed workspace.
- the application service can match location information for the computing device against location information for one or more applications in the application store and provide access to those applications in the user's workspace.
- the application service can continually receive updated location information for the computing device and update a listing of available applications as described herein.
- the techniques as described herein for providing location-based application discovery can be implemented without impacting the user's standard interaction with their distributed workspace.
- the user's workspace can include a static or fixed set of applications that the user has access to at any time from any location as well as a dynamic set of applications that can vary depending upon the user's current location.
- the set of location-based applications can be specific to one or more aspects of the current location of the user and provide added functionality or features to the user's workspace when combined with the set of fixed applications.
- distributed workspace systems, methods, and processes are provided that include location-based application discovery. These systems, methods, and processes enhance the quality of a user's experience by minimizing the impact and changes required on client-side software to implement the improved techniques.
- a processor associated with a server included in, for example, a distributed workspace system can receive a connection request for access to a distributed workspace, the connection request including location information for a client device that is submitting the request.
- the processor can access metadata for each of a set of applications from memory, the metadata including location information for each of the applications and defining at least one physical location where each of the applications can be accessed.
- the processor can compare the location information for the client device against the metadata for each of the applications and determine one or more of the applications that have associated location information that matches the location information for the client device.
- the processor can organize each of the determined applications that have associated location information that matches the location information for the client device into a listing of available applications. The listing of available applications can be transmitted to the client device for display in the user's distributed workspace. The client device can then prompt the user to select one or more of the listed applications to access.
- the client device can be configured to provide location information such as global positioning system (GPS) information via, for example, a client agent in communication with a remote server.
- location information such as global positioning system (GPS) information
- the client device can also be configured to provide network information such as IP address, Wi-Fi network name or ID, any Bluetooth beacon connectivity information, and other similar information that can be used to determine location information for the client device.
- network information such as IP address, Wi-Fi network name or ID, any Bluetooth beacon connectivity information, and other similar information that can be used to determine location information for the client device.
- the application service running on the remote server can determine whether there are any location-based applications that should be provided to the user via their distributed workspace as based upon the current location of the client device.
- a distributed workspace system is configured to implement application access and file sharing to remote users of the workspace, thereby providing a central repository or store of application, files, and other similar resources to a group of trusted users.
- a central computing device such as a server can monitor a user's interaction with the system and limit the user's interactions to preapproved interactions and access for that particular user. Based upon a user's level of authentication, available resources, and other context information such as user location information as described herein below, the server can create a customized user interface interaction with the user, thereby enhancing the user's overall experience with the file sharing system.
- FIG. 1 illustrates a logical architecture of distributed workspace system 100 in accordance with some examples.
- the system 100 includes an application service 102 , a client agent 104 , a file storage service 120 , a centralized file storage 106 , a configuration data store 122 , an historical data store 108 , and a local cache 118 .
- the application service 102 can include an application store 110 configured to store, for example, information related to applications available for user access in the system 100 .
- the application store 110 includes a listing of available applications 112 and associated metadata 114 for each application.
- the metadata 114 can include required resources for a particular application 112 , a user-security level required for accessing a particular application, whether an application is automatically pushed to a user's distributed workspace, and other similar information. Also depicted in FIG. 1 are an active directory service 126 and a calendar service 124 .
- the application service 102 is configured to communicate with the agent 104 , the storage service 120 , and the historical data store 108 by exchanging (i.e., transmitting and/or receiving) messages via one or more system interfaces (e.g., a web service application program interface (API), a web server interface, fibre channel interface, etc.).
- system interfaces e.g., a web service application program interface (API), a web server interface, fibre channel interface, etc.
- one or more server processes included within the application service 102 exchange messages with various types of client processes via the systems interfaces. These client process can include browsers and/or more specialized programs—such as the agent 104 .
- the messages exchanged between the sharing service 102 and a client process can include requests for authorization to access one or more of the applications 112 .
- the request can include access to one or more of the applications 112 in order to upload, download, share, and/or synchronize files.
- the messages can also include requests to authenticate users or devices and/or requests to configure features supported by the application service 102 .
- the application service 102 is configured to respond to reception of an authorization request by communicating with the storage service 120 to determine, via a set of rules, whether an operation identified in the request is allowable. Further, in these examples, the application service 102 is configured to notify the client process (e.g., the agent 104 ) of the allowability of the requested operation via a response. In addition, the application service 102 is configured to maintain the historical data store 108 where the application service 102 receives a message from the storage service 120 that an authorized operation was successfully executed. The historical data store 108 is configured to store usage data consisting of records of each instance of file access involving the system 100 .
- Records stored in the historical data store 108 can include an identifier of an application accessed, an identifier of a user accessing the application, an identifier of a file accessed, an identifier of a user accessing the file, an identifier of a client device accessing the file, a resource context through which the user accessed the file (as described in greater detail herein), and other similar historical data.
- the application service 102 is configured to respond to reception of an authentication request by communicating with an authentication service (e.g., the active directory service 126 of FIG. 1 ) to determine, via a set of rules, whether an entity (e.g., a user or device) identified in the authentication request is authorized to access the system 100 . Further, in these examples, the application service 102 is configured to notify, via a response message, the client process as to whether the entity is authorized to access the system 100 .
- an authentication service e.g., the active directory service 126 of FIG. 1
- the application service 102 is configured to notify, via a response message, the client process as to whether the entity is authorized to access the system 100 .
- the application service 102 is configured to respond to reception of a request to change its configuration by determining, via a set of rules, whether the change is allowable. Further, in these examples, the application service 102 is configured to execute the change where the change is allowable and notify the client process of the allowability and result of the requested change via a response. In at least one example, the application service 102 is configured to execute configuration changes by storing configuration data in the configuration data store 122 . This configuration data can, for example, associate features (e.g., an automatic synchronization feature) with users, applications, files, and file directories.
- features e.g., an automatic synchronization feature
- the storage service 120 is configured to manage the file storage 106 .
- the file storage 106 is configured to store files serviced by the system 100 .
- the storage service 120 is configured to implement and expose a system interface (API) through which the other components of the system 100 access the file storage 106 and data descriptive of the files stored therein. For example, where the storage service 120 receives a request to execute an authorized, file-related operation, the storage service 120 responds to reception of the request by processing the request and notifying the requestor and the file sharing service 102 of the operations results. Further, in some examples, the storage service 120 is configured to load balance requests and responses received via the system interface.
- API system interface
- the agent 104 is a specialized client program configured to execute on a client device.
- the agent 104 manages the local cache 118 .
- the agent 104 is configured to interoperate with the sharing service 102 to implement the file-related and security features described above.
- the agent 104 exchanges messages with the sharing service 102 via the system interfaces described above.
- the messages can include requests for authorization, authentication, and/or configuration as described above. Such messages can be generated, for example, by interaction between a user and a user interface provided by the agent 104 .
- the agent 104 is configured to receive and process responses to authorization requests. These response can, for example, authorize the agent to launch an instance of one or more applications 112 via the user's distributed workspace. In such an example, the agent 104 can exchange messages with the application service 102 to execute the launching of one or more instances of one or more of applications 112 . These responses can also, in some examples, authorize the agent 104 to execute a file-related operation, such as an upload, download, share, and/or synchronization. In response to receiving and processing an authorization response, the agent 104 can exchange messages with the storage service 120 to execute the authorized file-related operation.
- a file-related operation such as an upload, download, share, and/or synchronization.
- the agent 104 can exchange messages with the storage service 120 to request and receive the file as stored in the file storage 106 .
- the agent 104 can exchange messages with the storage service 120 to transmit the file to the file storage 106 .
- the agent 104 exchanges messages with the application service 102 to configure the application service 102 to automatically launch one or more instances of applications 112 for particular user when the user accesses the system 100 .
- the application service 102 , the agent 104 , and the file storage 106 interoperate with one another to automatically launch instances of any applications and associated files that may be targeted for automatic synchronization.
- a non-limiting network environment 201 in which various aspects of the disclosure can be implemented includes one or more client machines 202 A- 202 N, one or more remote machines 206 A- 206 N, one or more networks 204 , 204 ′, and one or more appliances 208 installed within the computing environment 201 .
- the client machines 202 A- 202 N communicate with the remote machines 206 A- 206 N via the networks 204 , 204 ′.
- the computing environment 201 can also be referred to as a distributed computer system.
- the client machines 202 A- 202 N communicate with the remote machines 206 A- 206 N via an intermediary appliance 208 .
- the illustrated appliance 208 is positioned between the networks 204 , 204 ′ and may also be referred to as a network interface or gateway.
- the appliance 208 can operate as an application delivery controller (ADC) to provide clients with access to business applications and other data deployed in a datacenter, the cloud, or delivered as Software as a Service (SaaS) across a range of client devices, and/or provide other functionality such as load balancing, etc.
- ADC application delivery controller
- SaaS Software as a Service
- multiple appliances 208 can be used, and the appliance(s) 208 can be deployed as part of the network 204 and/or 204 ′.
- the client machines 202 A- 202 N may be generally referred to as client machines 202 , local machines 202 , clients 202 , client nodes 202 , client computers 202 , client devices 202 , computing devices 202 , endpoints 202 , or endpoint nodes 202 .
- the remote machines 206 A- 206 N may be generally referred to as servers 206 or a server farm 206 .
- a client device 202 can have the capacity to function as both a client node seeking access to resources provided by a server 206 and as a server 206 providing access to hosted resources for other client devices 202 A- 202 N.
- the networks 204 , 204 ′ may be generally referred to as a network 204 .
- the networks 204 can be configured in any combination of wired and wireless networks.
- a server 206 can be any server type such as, for example: a file server; an application server; a web server; a proxy server; an appliance; a network appliance; a gateway; an application gateway; a gateway server; a virtualization server; a deployment server; a Secure Sockets Layer Virtual Private Network (SSL VPN) server; a firewall; a web server; a server executing an active directory; a cloud server; or a server executing an application acceleration program that provides firewall functionality, application functionality, or load balancing functionality.
- SSL VPN Secure Sockets Layer Virtual Private Network
- a server 206 can execute, operate, or otherwise provide an application that can be any one of the following: software; a program; executable instructions; a virtual machine; a hypervisor; a web browser; a web-based client; a client-server application; a thin-client computing client; an ActiveX control; a Java applet; software related to voice over internet protocol (Volt)) communications like a soft Internet Protocol telephone; an application for streaming video and/or audio; an application for facilitating real-time-data communications; a HyperText Transfer Protocol client; a File Transfer Protocol client; an Oscar client; a Telnet client; or any other set of executable instructions.
- an application can be any one of the following: software; a program; executable instructions; a virtual machine; a hypervisor; a web browser; a web-based client; a client-server application; a thin-client computing client; an ActiveX control; a Java applet; software related to voice over internet protocol (Volt)) communications like a soft Internet Protocol telephone; an application for streaming
- a server 206 can execute a remote presentation services program or other program that uses a thin client or a remote-display protocol to capture display output generated by an application executing on a server 206 and transmit the application display output to a client device 202 .
- a server 206 can execute a virtual machine providing, to a user of a client device 202 , access to a computing environment.
- the client device 202 can be a virtual machine.
- the virtual machine can be managed by, for example, a hypervisor, a virtual machine manager (VMM), or any other hardware virtualization technique within the server 206 .
- VMM virtual machine manager
- the network 204 can be: a local area network (LAN); a metropolitan area network (MAN); a wide area network (WAN); a primary public network 204 ; and a primary private network 204 .
- Additional examples can include a network 204 of mobile telephone networks that use various protocols to communicate among mobile devices.
- the protocols can include 802.11, Bluetooth, and Near Field Communication (NFC).
- FIG. 3 depicts a block diagram of a computing device 301 useful for practicing an example of client devices 202 , appliances 208 and/or servers 206 .
- the computing device 301 includes one or more processors 303 , volatile memory 322 (e.g., random access memory (RAM)), non-volatile memory 328 , user interface (UI) 323 , one or more communications interfaces 318 , and a communications bus 350 .
- volatile memory 322 e.g., random access memory (RAM)
- UI user interface
- One or more of the computing devices 301 may also be referred to as a computer system.
- the non-volatile memory 328 can include: one or more hard disk drives (HDDs) or other magnetic or optical storage media; one or more solid state drives (SSDs), such as a flash drive or other solid-state storage media; one or more hybrid magnetic and solid-state drives; and/or one or more virtual storage volumes, such as a cloud storage, or a combination of such physical storage volumes and virtual storage volumes or arrays thereof.
- HDDs hard disk drives
- SSDs solid state drives
- virtual storage volumes such as a cloud storage, or a combination of such physical storage volumes and virtual storage volumes or arrays thereof.
- the user interface 323 can include a graphical user interface (GUI) 324 (e.g., a touchscreen, a display, etc.) and one or more input/output (I/O) devices 326 (e.g., a mouse, a keyboard, a microphone, one or more speakers, one or more cameras, one or more biometric scanners, one or more environmental sensors, and one or more accelerometers, etc.).
- GUI graphical user interface
- I/O input/output
- the non-volatile memory 328 stores an operating system 315 , one or more applications 316 , and data 317 such that, for example, computer instructions of the operating system 315 and/or the applications 316 are executed by processor(s) 303 out of the volatile memory 322 .
- the volatile memory 322 can include one or more types of RAM and/or a cache memory that can offer a faster response time than a main memory.
- Data can be entered using an input device of the GUI 324 or received from the I/O device(s) 326 .
- Various elements of the computing device 301 can communicate via the communications bus 350 .
- the illustrated computing device 301 is shown merely as an example client device or server and can be implemented by any computing or processing environment with any type of machine or set of machines that can have suitable hardware and/or software capable of operating as described herein.
- the processor(s) 303 can be implemented by one or more programmable processors to execute one or more executable instructions, such as a computer program, to perform the functions of the system.
- processor describes circuitry that performs a function, an operation, or a sequence of operations. The function, operation, or sequence of operations can be hard coded into the circuitry or soft coded by way of instructions held in a memory device and executed by the circuitry.
- a processor can perform the function, operation, or sequence of operations using digital values and/or using analog signals.
- the processor can be embodied in one or more application specific integrated circuits (ASICs), microprocessors, digital signal processors (DSPs), graphics processing units (GPUs), microcontrollers, field programmable gate arrays (FPGAs), programmable logic arrays (PLAs), multicore processors, or general-purpose computers with associated memory.
- ASICs application specific integrated circuits
- DSPs digital signal processors
- GPUs graphics processing units
- FPGAs field programmable gate arrays
- PDAs programmable logic arrays
- multicore processors or general-purpose computers with associated memory.
- the processor 303 can be analog, digital or mixed. In some examples, the processor 303 can be one or more physical processors, or one or more virtual (e.g., remotely located or cloud) processors.
- a processor including multiple processor cores and/or multiple processors can provide functionality for parallel, simultaneous execution of instructions or for parallel, simultaneous execution of one instruction on more than one piece of data.
- the communications interfaces 318 can include one or more interfaces to enable the computing device 301 to access a computer network such as a Local Area Network (LAN), a Wide Area Network (WAN), a Personal Area Network (PAN), or the Internet through a variety of wired and/or wireless connections, including cellular connections.
- a computer network such as a Local Area Network (LAN), a Wide Area Network (WAN), a Personal Area Network (PAN), or the Internet through a variety of wired and/or wireless connections, including cellular connections.
- the computing device 301 can execute an application on behalf of a user of a client device.
- the computing device 301 can execute one or more virtual machines managed by a hypervisor. Each virtual machine can provide an execution session within which applications execute on behalf of a user or a client device, such as a hosted desktop session.
- the computing device 301 can also execute a terminal services session to provide a hosted desktop environment.
- the computing device 301 can provide access to a remote computing environment including one or more applications, one or more desktop applications, and one or more desktop sessions in which one or more applications can execute.
- FIG. 4 illustrates an enhanced distributed workspace and file sharing system (e.g., the system 100 of FIG. 1 ) configured for operation within a distributed computing platform (e.g. the network environment 201 of FIG. 2 ).
- the configuration 400 includes a server computer 402 , a server computer 404 , and a client device 406 .
- the computing devices 402 , 404 , and 406 are communicatively coupled to one another and exchange data via a network (e.g., the networks 204 and 204 ′ of FIG. 2 ).
- the server 402 hosts the storage service 120 and the file storage 106 .
- the server 404 hosts the application service 102 and the historical data store 108 . Some examples of processes performed by or involving server 404 , including location-based application discovery as described herein, are described further below in reference to FIGS. 5-10 .
- the client device 406 hosts the agent 104 which maintains the cache 118 . Many of the components illustrated in FIG. 4 are described above with reference to FIG. 1 . For purposes of brevity, those descriptions will not be repeated here, but each of the components of FIG. 1 included in FIG. 4 are structured and function in FIG. 4 as described in FIG. 1 .
- the configuration 400 is but one example of many potential configurations that can be used to implement the system 100 .
- the server 404 hosts the file sharing service 102 , the historical data store 108 , the storage service 120 , the configuration data store 122 and the file storage 106 .
- a server distinct from the servers 402 and 404 hosts the historical data store 108 and yet another distinct server hosts the file predictor 112 .
- the examples disclosed herein are not limited to the configuration 400 and other configurations are considered to fall within the scope of this disclosure.
- location-based application discovery can be used. To improve the listing of available applications that are provided to a user, it can be beneficial to match the current location of the user (and, by association, the user's computing device) with any location-based information associated with one or more applications as described herein.
- FIG. 5 is a flow chart illustrating a process 500 for location-based application discovery.
- process 500 can be implemented by a server such as server 404 as shown in FIG. 4 and described above, the server implementing an application service such as application service 102 as described herein.
- process 500 can include receiving 505 location information from a computing device.
- the computing device can include client device 406 as shown in FIG. 4 and described above.
- the computing device can provide data to the server, the data including location information.
- the location information can include GPS information, network specific information such as Wi-Fi network identification information, and other similar location information.
- the server can receive the location information and the application service can compare 510 the location information to metadata for one or more applications associated with, for example, an application store accessible by the application service.
- the metadata for the one or more applications can include location information for each application, the application location information including one or more indicators of specific geographic locations that are associated with distribution of and user access to the one or more applications.
- a specific application such as an email service can include location information that indicates the application can be accessed from any geographic location.
- Other applications such as a shopping application for a specific store can include location information that indicates the application can be accessed from a Wi-Fi network provided by the store or at a specific geographic location (e.g., within 100 feet of the store's location).
- the application service can compare 510 the received location information for the computing device and the application metadata to determine 515 one or more applications with metadata that matches the location information. For example, as noted above, some applications can include metadata that indicates access is to be provided to the application at any location. Other applications can include more specific criteria such as requiring the computing device to be within a particular distance of a geographic location and/or connected to a particular network. Based upon the location information for the computing device and the application metadata, the application service can determine 515 a set of applications that the computing device can access based upon the current location of the computing device.
- the application service can organize and transmit 520 a listing of matching applications to the computing device.
- the computing device can request that the application service launch an instance of one or more specific applications included on the transmitted listing.
- the agent can be configured to work with the application service to automatically launch one or more applications on the listing.
- the application service can pre-launch a virtual application in the background of a distributed workspace for a client device when the device enters a specific geographic location using, for example, a SaaS system as described herein.
- a particular user may not be required to actually download an application to their personal device. Rather, when the user enters a geographic location associated with a particular application as described herein, a virtual version of the application can be launched in the background of their distributed workspace and will become immediately available to the user.
- FIG. 11 illustrates a sample virtual workspace optimization system (VWO) 1100 that can be used to provide, for example, a SaaS system that incorporates automatic application launching or pre-launching based upon client device location information.
- the system 1100 can be configured for operation within a distributed computing platform (e.g. system 100 as shown in FIG. 1 ).
- the system 1100 also implements portions of SaaS system and includes the client devices 1102 A and 1102 B and server computers 1104 A- 1104 S.
- the computer systems 1102 A, 1102 B, and 1104 A- 1104 S are communicatively coupled to one another and exchange data via a one or more networks.
- the client device 1102 A can be configured to host the client application 1110 , a user interface 1112 , and a client agent 1128 S (e.g., client agent 104 of FIG. 1 ).
- the client device 1102 B can be configured to host, for example, an administrative application 1132 and an administrative interface 1134 .
- the server computer 1104 A can be configured to host an application service 1130 A (e.g., application service 110 of FIG. 1 ) and a virtualization agent 1132 A, e.g., an agent configured to launch one or more instances of a virtual application for access by one or more client devices.
- the server computer 1104 N can be configured to host an application service 1130 N and a virtualization agent 1132 N.
- the server computer 1104 Q can be configured to host an application service 1130 Q and a virtual resource broker 1140 .
- the server computer 1104 S can be configured to host a VWO service 1122 (e.g., a location-based application service as described herein).
- application service processes that constitute location-based application services as described herein can include the client application 1110 , the virtualization agents 1132 A- 1132 N, and the virtual resource broker 1140 .
- the virtualization agents interoperate with a load balancer (e.g., the broker 1140 ) to register and update the computing resources available for allocation to virtual resources such as virtual instances of location-based applications.
- a load balancer e.g., the broker 1140
- the client application 1110 can interoperate with the virtualization agent 1132 A to provide a user access to virtual resources hosted by the server computer 1104 A.
- the client application 1110 can interoperate with the broker 1140 via APIs implemented by the broker 1140 .
- the client application 1110 via, for example, the client agent 1128 S, can request access to a virtual resource, and the broker 1140 identifies connection information for the virtual resource and returns the connection information to the client application 1110 .
- the client application 1110 interoperates with the virtualization agent 1132 A to establish a connection to the requested virtual resource.
- the client device 1102 A can enter a specific geographic region associated with a location-based application hosted by server computer 1104 A.
- the client agent 1128 S can be configured to transmit the geographic location of the client device 1102 A to, for example, server computer 1104 Q.
- the broker 1140 can receive the location information including the geographic location of client device 1102 A and determine which location-based applications are associated with the location information. Based upon the determination, the broker 1140 can establish one or more connections between the client agent 1128 S and an appropriate application service.
- server computer 1104 A may be configured to host an application associated with a particular store that the client device 1102 A is approaching.
- the broker 1140 can establish a connection between the application service 1130 A on the server computer 1104 A and the client agent 1128 S on the client device.
- the client agent 1128 S can receive, for example, a list of location-based applications available from application service 1130 A as described herein.
- the application service 1130 A can pre-launch one or more location-based applications using the virtualization agent 1132 A such that, if requested by the client application 1110 of the client device 1102 A, an instance of the virtual application is already running and the user of the client device experiences little to no delay in accessing the virtual application.
- the virtual instances of those applications can be terminated or virtually assigned to another client device in that geographic location. Additional information related to determining location-based applications is provided in the following discussions of FIGS. 6-10 .
- FIG. 11 Other application services as illustrated in FIG. 11 interoperate with one another to prepare for requests for location-based applications. For instance, in some examples, during initialization the virtualization agents 1132 A- 1132 N interoperate with the broker 1140 to register the server computers 1104 A- 1104 N with the broker 1140 .
- FIG. 6 is a flow chart illustrating a process 600 for updated location-based application discovery. Similar to process 500 as described above in regard to FIG. 5 , process 600 can be implemented by a server such as server 404 as shown in FIG. 4 and described above, the server implementing an application service such as application service 102 as described herein.
- process 600 can include receiving 605 updated location information from a computing device.
- the computing device can include client device 406 as shown in FIG. 4 and described above.
- the client agent can be configured to provide updated location information on a set schedule.
- the client agent can be configured to provide updated location information every 30 seconds, every minute, every two minutes, every five minutes, and every ten minutes.
- the client agent can be configured to provide updated location information when the location information changes for the computing device, thereby indicating a change in location of the computing device.
- the location information can include GPS information, network specific information such as Wi-Fi network identification information, and other similar location information.
- the server can provide a threshold or other similar amount of geographic change that is required for the client agent to report a change. For example, the server can provide a threshold of 100 meters. If the client device moves by more than 100 meters, the client agent can provide the updated location information to the server.
- the server can receive the updated location information and the application service can determine 610 if the location of the client device has changed. If the application service determines that the location has not changed, the application service can continue to receive 605 updated location information. If the application service does determine 610 that the location information has changed, the application service can compare 615 the updated location information to the metadata, including application location information as described above, for one or more applications associated with, for example, an application store accessible by the application service.
- the application service can compare 615 the received updated location information for the computing device and the application metadata to determine 620 one or more new applications with metadata that matches the updated location information should be added to the available application listing. Similarly, the application service can compare 615 the updated location information against the location information for the applications already included on the available application listing to determine if, for example, any applications already listed on the existing application listing should be removed from the listing. Based upon the updated location information for the computing device and the application metadata, the application service can determine 620 an updated set of applications that the computing device can access based upon the current location of the computing device.
- the application service can organize and transmit 625 an updated listing of matching applications to the computing device.
- the computing device can request that the application service launch an instance of one or more specific applications included on the transmitted updated listing.
- the agent can be configured to work with the application service to automatically launch one or more applications on the updated application listing.
- FIG. 7 shows a flow chart illustrating process 700 that includes defining application resources and location information.
- an application service such as application service 102 , working in concert with an application store such as application store 110 , can implement some or all of process 700 as shown in FIG. 7 and described below.
- process 700 can include defining 705 one or more application resources.
- application resources can include physical resources such as required input devices, required memory, required hard drive or other storage access, required display or other outputs, and other similar resources that may be associated with or required by a specific application.
- the resources can include application store information such as application type, application group information, any associated fee information for using an application, and other similar store information.
- FIG. 8 illustrates a sample application service 800 having an associated application store 805 as described herein.
- the application store 805 can be configured to store information related to all available applications for, for example, a given distributed workspace.
- the application store 805 can include a hierarchy or other similar structure for organizing applications.
- each application can be configured to be independently available or as part of a group of applications as contained within the application store 805 .
- the application store 805 can include various groups of applications, in this example listed as Group 1 810 A through Group n 810 n .
- each application group can include a different set of applications.
- each of applications APP 1 815 A, APP 2 815 B, and APP n 815 n can belong to a different group and be grouped together with other applications.
- Group 1 810 A can include APP 1 815 A and APP n 815 n .
- Group 2 810 B can include APP 1 815 A, APP 2 815 B, and APP n 815 n .
- Group n 810 n can include APP 2 815 B and APP n 815 n.
- the applications can be organized into groups in the application store 805 according to particular similarities. For example, each application in any of the individual groups can have common location information for accessing the application.
- each application in Group 1 810 A can have associated location information that indicates the applications can be accessible by a computing device located anywhere
- each application in Group 2 810 B can have associated location information that indicates each application is available to a computing device when the computing device is within a particular range of a set of GPS coordinates
- each application in Group n 810 n can have associated location information that indicates each application is available to a computing device when the computing device connected to a particular network such as a specific Wi-Fi network.
- process 700 can further include defining 710 application location information as described herein.
- the location information can include various details related to where an associated application can be accessed.
- the location information can include a specific geographic location and range (e.g., within 1 mile of specific GPS coordinates).
- the location information can include network information such as a Wi-Fi network ID.
- the location information can be provided as a set of boundaries drawn on a map as lines or as a set of points on the map that are translated into a set of boundaries that define a geographic location in which an application can be accessed.
- the boundaries can define a particular city, a portion within a city such as a specific block, a building, a general area within a building, and other similarly defined areas.
- the boundaries can include additional dimensional information such as a specific floor in a building.
- the store can include boundary information defining the store location when viewed from above as well as floor information to define the store location when the shopping mall is viewed from the side.
- process 700 can further include publishing 715 the application to the application store.
- This can include submission of an application template that includes, for example, application data such as information regarding storage of the application, application status information, the application resource information, the application location information, and other similar application information.
- the published application may go through an automated or manual review process and the application can be made accessible to one or more users of, for example, a distributed workspace.
- process 700 can include defining 720 a user and application relationship policy.
- the user and application relationship policy can include, for example, user requirements for accessing the application (e.g., both physical device requirements as well as user authorization requirements).
- location-based application discovery can be used to provide a user with a distributed workspace that includes a set of dynamic applications that can vary depending upon the current location of the user.
- FIG. 9 illustrates a sample overview 900 of a computing device moving through various geographically or previously defined areas on a map and how location-based application discovery as described herein can provide an enhanced user experience for the user of the computing device.
- a map 900 can include various specific geographical regions 904 a , 904 b , and 904 c . As described above, each of the geographical regions can be defined based upon a set of lines or coordinates overlaid on a map such as map 900 . In other examples, a geographic region can be defined by known geographic features such as city limits, neighborhood borders, building walls, rivers and other natural features, and other similar geographic features.
- a computing device 906 associated with, for example, a user can move through the map 900 as represented by the dashed arrows placed throughout the map. During the movement, the computing device 906 can come within range of one or more of the geographical regions 904 a , 904 b , and 904 c . Initially, as shown in FIG. 9 , the computing device 906 is located at position 908 a and within geographical region 904 a . During this time, the computing device can access a distributed workspace 910 a . As shown in FIG. 9 , workspace 910 a includes a set of fixed applications.
- the computing device 906 can move from position 908 a to position 908 b and provide updated location information to the application service of the distributed workspace system (e.g., provide updated GPS information).
- the computing device 906 can be within range of geographical region 904 b .
- geographical region 904 b is associated with a set of location-based applications 912 .
- the application service can determine which, if any, of the applications 912 are to be provided to the computing device 906 . For example, in order to receive some applications 912 , the user of the computing device 906 may require a subscription to a particular service or to have previously purchased the application.
- the application service can determine which, if any, applications 912 the user has access to and create a listing 914 of applications to be provided to the computing device 906 .
- workspace 910 b can be updated to include the location-based applications 912 that were included on the listing 914 .
- the user of the computing device 906 can access the workspace 910 b while in or near (e.g., within 50 feet of) geographical region 904 b.
- the computing device 906 can move to position 908 c and provide updated location information to the application service of the distributed workspace system (e.g., provide updated GPS information).
- the computing device is not within, or in range of, any of the defined geographical regions 904 a , 904 b , or 904 c .
- the computing device can display workspace 910 c which includes the set of fixed applications and no location-based applications.
- the computing device 906 can move to a fourth position 908 d . and provide updated location information to the application service of the distributed workspace system (e.g., provide updated GPS information).
- the computing device 906 is within geographical region 904 c .
- geographical region 904 c is associated with a set of location-based applications 916 .
- the application service can determine which, if any, of the applications 916 are to be provided to the computing device 906 and create a listing 918 of applications to be provided to the computing device 906 . As shown in FIG.
- workspace 910 d can be updated to include the location-based applications 916 that were included on the listing 918 .
- the user of the computing device 906 can access the workspace 910 d while in or near (e.g., within 50 feet of) geographical region 904 c.
- map and sample geographical regions as shown in FIG. 9 are provided by way of example only.
- the defined geographical regions can be more detailed or precise such as a floor of a building or a room within a building.
- more specific location information such as network connectivity information or Bluetooth beacon connectivity information can be used to provide a more detailed position that can be obtained through GPS coordinates.
- FIG. 10 illustrates a sample view of a workspace 1000 .
- workspace 1000 can represent workspaces 910 a , 910 b , 910 c , and 910 d as described above in the discussion of FIG. 9 .
- a directory 1002 can be included for easier navigation of the workspace.
- the directory 1002 can be arranged as a hierarchical tree and include navigation inputs for home, applications, desktops, and files.
- the workspace 1000 can also include a set of fixed applications 1004 .
- the fixed applications can include applications that are not location-based and are provided in the workspace at all times.
- the set 1004 can include a text editing application such as a notepad 1006 a and an email service 1006 b .
- a text editing application such as a notepad 1006 a and an email service 1006 b .
- the fixed applications as shown in the set 1004 are provided by way of example only.
- the set 1004 can include various fixed applications such as a spreadsheet editor application, a presentation application, a chat application, an image viewer application, a calculator application, and other similar and common applications that are generally not associated with any specific location as described herein.
- the workspace 1000 can include a first dynamic application set 1008 .
- the applications contained within set 1008 can be location-based and provided in the workspace 1000 when a computing device accessing the workspace enters a particular geographical region associated with the applications contained within set 1008 .
- the set 1008 can include a market application 1010 a and a parking application 1010 b .
- an application can have an associated cost.
- parking application 1010 b includes a fee of one dollar per minute to access parking.
- a user of the computing device accessing workspace 1000 can have a previously set up account for paying for a particular application or can access payment information within the individual application.
- the workspace 1000 can include a second dynamic application set 1012 .
- the applications contained within set 1012 can be location-based and provided in the workspace 1000 when a computing device accessing the workspace enters a particular geographical region associated with the applications contained within set 1012 .
- the set 1012 can include a game application 1014 .
- individual applications can have an associated fee that requires payment by a user of the application.
- dynamic application set 1008 and dynamic application set 1012 are shown simultaneously in workspace 1000 by way of example only. In actual implementation, depending upon the current location of the computing device accessing workspace 1000 , only one of the dynamic application sets may be shown at the same time. However, in some examples, depending upon the applications included in each of the sets 1008 and 1012 and the current location of the computing device accessing the workspace 1000 , both dynamic application sets can be displayed.
- set 1008 can be a set of dynamic applications associated with a building such as a shopping mall. When a computing device is within the shopping mall, applications associated with the shopping mall such as a parking application, a map application, an events calendar application, and other similar applications can be included in set 1008 and provided to the user in workspace 1008 .
- set 1012 can include one or more dynamic applications that are associated with a particular location within the shopping mall.
- the set 1012 can include one or more applications associated with restaurants within a food court in the shopping mall.
- set 1012 can be added to the workspace to provide access to one or more applications associated with individual restaurants within the food court.
- workspace 1000 is provided by way of example only. Depending upon the available resources and implementation of workspace 1000 (e.g., whether on a laptop computing device, a tablet computing device, a smartphone, or other similar computing devices) the layout and accessibility of the workspace may be altered to accommodate the display and functions of the computing device accessing the workspace 1000 .
- references to “or” can be construed as inclusive so that any terms described using “or” can indicate any of a single, more than one, and all of the described terms.
- the term usage in the incorporated references is supplementary to that of this document; for irreconcilable inconsistencies, the term usage in this document controls.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
Description
- This is a divisional of U.S. patent application Ser. No. 16/851,373 (filed 17 Apr. 2020), which is a continuation of PCT Patent Application PCT/CN2020/073781 (filed 22 Jan. 2020). Each of these priority applications is hereby incorporated by reference herein in its entirety.
- In a typical distributed workspace system, application deployment is generally based upon a pre-defined policy and available user resources. As such, an end user is typically dependent upon a system administrator to define the policy and available resources such that the end user can access one or more applications in the distributed workspace.
- In an example, a computer system for providing location-based application access is provided. The system includes a memory, a network interface, and at least one processor coupled to the memory and the network interface. The at least one processor is configured to receive, from a client agent via the network interface, a connection request for access to a distributed workspace, the connection request including location information for a client device; access, from the memory, metadata for each of a plurality of applications, wherein the metadata includes location information for each of the plurality of applications defining at least one physical location where each of the plurality of applications can be accessed; compare the location information for the client device against the metadata for each of the plurality of applications; determine one or more of the plurality of applications that have associated location information that matches the location information for the client device; organize each of the determined one or more of the plurality of applications that have associated location information that matches the location information for the client device into a listing of available applications; and transmit, to the client agent via the network interface, the listing of available applications for display to a user of the client device.
- Implementations of the computer system can include one or more of the following features.
- In the computer system, the at least one processor can be further configured to receive, from the client agent via the network interface, updated location information for the client device and determine if the location of the client device has changed based upon the updated location information for the client device. In some examples of the computer system, the at least one processor is further configured to generate, in response to determining that the location of the client device has changed, an updated listing of available applications based upon the updated location information and transmit, to the client agent via the network interface, the updated listing of available applications for display to a user of the client device. In some additional examples of the computer system, the at least one processor being configured to generate the updated listing of available applications includes the at least one processor being configured to compare the updated location information for the client device against the metadata for each of the plurality of applications, determine one or more of the plurality of applications that have associated location information that matches the updated location information for the client device, and organize each of the determined one or more of the plurality of applications that have associated location information that matches the updated location information for the client device into the updated listing of available applications.
- In the computer system, the memory can include an application store configured to store the plurality of applications. In some examples of the computer system, the application store is organized into a plurality of application groups, each of the plurality of application groups including group location information for defining at least one physical location where each of the plurality of applications in a particular group can be accessed from.
- In the computer system, the location information for the client device can include at least one of global positioning system information and network connection information.
- In another example, a method of providing location-based application access is provided. The method includes receiving, by at least one processor, a connection request from a client agent via network interface operably coupled to the at least one processor for access to a distributed workspace, the connection request including location information for a client device; accessing, by the at least one processor, metadata for each of a plurality of applications from a memory operably coupled to the at least one processor, wherein the metadata includes location information for each of the plurality of applications defining at least one physical location where each of the plurality of applications can be accessed from; comparing, by the at least one processor, the location information for the client device against the metadata for each of the plurality of applications; determining, by the at least one processor, one or more of the plurality of applications that have associated location information that matches the location information for the client device; organizing, by the at least one processor, each of the determined one or more of the plurality of applications that have associated location information that matches the location information for the client device into a listing of available applications; and transmitting, by the at least one processor, the listing of available applications for display to a user of the client device to the client agent via the network interface.
- Implementations of the method can include one or more of the following features.
- At least some of the examples of the method can include receiving, by the at least one processor, updated location information for the client device from the client agent via the network interface and determining, by the at least one processor, if the location of the client device has changed based upon the updated location information for the client device.
- In some additional examples, the method includes generating, by the at least one processor, an updated listing of available applications based upon the updated location information in response to determining that the location of the client device has changed and transmitting, by the at least one processor, the updated listing of available applications for display to a user of the client device to the client agent via the network interface. In some additional examples, generating the updated listing of available applications includes comparing, by the at least one processor, the updated location information for the client device against the metadata for each of the plurality of applications; determining, by the at least one processor, one or more of the plurality of applications that have associated location information that matches the updated location information for the client device; and organizing, by the at least one processor, each of the determined one or more of the plurality of applications that have associated location information that matches the updated location information for the client device into the updated listing of available applications.
- In at least some examples of the method, the memory can include an application store configured to store the plurality of applications. In some additional examples of the method, the application store is organized into a plurality of application groups, each of the plurality of application groups including group location information for defining at least one physical location where each of the plurality of applications in a particular group can be accessed from.
- In at least some examples of the method, the location information for the client device includes at least one of global positioning system information and network connection information.
- In another example, a non-transitory computer readable medium is provided. The non-transitory computer readable medium can store computer executable instructions to provide location-based application access. The computer executable instructions include instructions to receive a connection request from a client agent via a network interface operably coupled to at least one processor for access to a distributed workspace, the connection request including location information for a client device; access metadata for each of a plurality of applications from a memory operably coupled to the at least one processor, wherein the metadata includes location information for each of the plurality of applications defining at least one physical location where each of the plurality of applications can be accessed from; compare the location information for the client device against the metadata for each of the plurality of applications; determine one or more of the plurality of applications that have associated location information that matches the location information for the client device; organize each of the determined one or more of the plurality of applications that have associated location information that matches the location information for the client device into a listing of available applications; and transmit the listing of available applications for display to a user of the client device to the client agent via the network interface.
- Implementations of the computer readable medium can include one or more of the following features.
- In at least some examples of the computer readable medium, the instructions further include instructions to receive updated location information for the client device from the client agent via the network interface and determine if the location of the client device has changed based upon the updated location information for the client device. In some additional examples of the computer readable medium, the instructions further include instructions to generate an updated listing of available applications based upon the updated location information in response to determining that the location of the client device has changed and transmit the updated listing of available applications for display to a user of the client device to the client agent via the network interface. In some additional examples of the computer readable medium, the instructions to generate the updated listing of available applications include instructions to compare the updated location information for the client device against the metadata for each of the plurality of applications, determine one or more of the plurality of applications that have associated location information that matches the updated location information for the client device, and organize each of the determined one or more of the plurality of applications that have associated location information that matches the updated location information for the client device into the updated listing of available applications.
- In at least some examples of the computer readable medium, the memory can include an application store configured to store the plurality of applications. In some additional examples of the computer readable medium, the application store is organized into a plurality of application groups, each of the plurality of application groups including group location information for defining at least one physical location where each of the plurality of applications in a particular group can be accessed from.
- Still other aspects, examples and advantages of these aspects and examples, are discussed in detail below. Moreover, it is to be understood that both the foregoing information and the following detailed description are merely illustrative examples of various aspects and features and are intended to provide an overview or framework for understanding the nature and character of the claimed aspects and examples. Any example or feature disclosed herein can be combined with any other example or feature. References to different examples are not necessarily mutually exclusive and are intended to indicate that a particular feature, structure, or characteristic described in connection with the example can be included in at least one example. Thus, terms like “other” and “another” when referring to the examples described herein are not intended to communicate any sort of exclusivity or grouping of features but rather are included to promote readability.
- Various aspects of at least one example are discussed below with reference to the accompanying figures, which are not intended to be drawn to scale. The figures are included to provide an illustration and a further understanding of the various aspects and are incorporated in and constitute a part of this specification but are not intended as a definition of the limits of any particular example. The drawings, together with the remainder of the specification, serve to explain principles and operations of the described and claimed aspects. In the figures, each identical or nearly identical component that is illustrated in various figures is represented by a like numeral. For purposes of clarity, not every component may be labeled in every figure.
-
FIG. 1 is a block diagram of a distributed workspace system, in accordance with at least one example of the present disclosure. -
FIG. 2 is a block diagram of a network environment of computing devices in which various aspects of the present disclosure can be implemented. -
FIG. 3 is a block diagram of a computing device that can implement one or more of the computing devices ofFIG. 2 , in accordance with at least one example of the present disclosure. -
FIG. 4 is a block diagram of the distributed workspace system ofFIG. 1 as implemented by a configuration of computing devices, in accordance with at least one example of the present disclosure. -
FIG. 5 is a flow diagram illustrating an initial location-based application discovery process for a user, in accordance with at least one example of the present disclosure. -
FIG. 6 is a flow diagram illustrating a continued location-based application discovery process for a user, in accordance with at least one example of the present disclosure. -
FIG. 7 is a flow diagram illustrating an application publication process, in accordance with at least one example of the present disclosure. -
FIG. 8 is a block diagram of a sample application service including an application store, in accordance with at least one example of the present disclosure. -
FIG. 9 is a drawing of a map and several sample interface views illustrating location-based application services, in accordance with at least one example of the present disclosure. -
FIG. 10 is a sample view of an example user interface for a distributed workspace that includes location-based application discovery, in accordance with at least one example of the present disclosure. -
FIG. 11 is a block diagram of a workspace optimization system, in accordance with an example of the present disclosure. - As summarized above, various examples described herein are directed to systems for providing location-based application discovery and methods and processes for use of such a system in a distributed workspace system. These systems and methods overcome technical difficulties that arise in other distributed workspace systems where, for example, a server provides a user with a static set of applications for access in a distributed workspace. Such a traditional model is limited and generally only works well in controllable environments like an office where daily work and required resources are similar for all users and generally do not deviate from one day to the next. As such, traditional distributed workspace systems are not flexible based upon changing user resources and generally do not provide for dynamic access to applications. For example, as traditional distributed workspace systems do not consider the geographical location of a computing device, other distributed workspace systems are unable to improve the user interfaces they present by, for example, providing location-specific applications to a workspace user based upon the current location of the user and their associated computing device. The techniques as described herein provide added functionality to a user of a distributed workspace as the workspace can be automatically customized to a user's location, thereby increasing the efficiency of interaction between the user and the distributed workspace.
- To improve a user's experience with a distributed workspace system, the system may include an application service that controls access to an application store. The application service can be configured to receive location information for a computing device that is requesting access to or is currently running an instance of a distributed workspace. The application service can match location information for the computing device against location information for one or more applications in the application store and provide access to those applications in the user's workspace. To update the available applications, the application service can continually receive updated location information for the computing device and update a listing of available applications as described herein.
- The techniques as described herein for providing location-based application discovery can be implemented without impacting the user's standard interaction with their distributed workspace. For example, the user's workspace can include a static or fixed set of applications that the user has access to at any time from any location as well as a dynamic set of applications that can vary depending upon the user's current location. As described herein, the set of location-based applications can be specific to one or more aspects of the current location of the user and provide added functionality or features to the user's workspace when combined with the set of fixed applications.
- Thus, and in accordance with at least some examples disclosed herein, distributed workspace systems, methods, and processes are provided that include location-based application discovery. These systems, methods, and processes enhance the quality of a user's experience by minimizing the impact and changes required on client-side software to implement the improved techniques.
- In some examples, a processor associated with a server included in, for example, a distributed workspace system can receive a connection request for access to a distributed workspace, the connection request including location information for a client device that is submitting the request. The processor can access metadata for each of a set of applications from memory, the metadata including location information for each of the applications and defining at least one physical location where each of the applications can be accessed. The processor can compare the location information for the client device against the metadata for each of the applications and determine one or more of the applications that have associated location information that matches the location information for the client device. The processor can organize each of the determined applications that have associated location information that matches the location information for the client device into a listing of available applications. The listing of available applications can be transmitted to the client device for display in the user's distributed workspace. The client device can then prompt the user to select one or more of the listed applications to access.
- As will be understood in view of this disclosure, a number of approaches to determining location information for a client device can be used. For example, the client device can be configured to provide location information such as global positioning system (GPS) information via, for example, a client agent in communication with a remote server. The client device can also be configured to provide network information such as IP address, Wi-Fi network name or ID, any Bluetooth beacon connectivity information, and other similar information that can be used to determine location information for the client device. Based upon this information, the application service running on the remote server can determine whether there are any location-based applications that should be provided to the user via their distributed workspace as based upon the current location of the client device.
- Examples of the methods, systems, and processes discussed herein are not limited in application to the details of construction and the arrangement of components set forth in the following description or illustrated in the accompanying drawings. The methods and systems are capable of implementation in other examples and of being practiced or of being carried out in various ways. Examples of specific implementations are provided herein for illustrative purposes only and are not intended to be limiting. In particular, acts, components, elements and features discussed in connection with any one or more examples are not intended to be excluded from a similar role in any other examples.
- In some examples, a distributed workspace system is configured to implement application access and file sharing to remote users of the workspace, thereby providing a central repository or store of application, files, and other similar resources to a group of trusted users. In certain systems, a central computing device such as a server can monitor a user's interaction with the system and limit the user's interactions to preapproved interactions and access for that particular user. Based upon a user's level of authentication, available resources, and other context information such as user location information as described herein below, the server can create a customized user interface interaction with the user, thereby enhancing the user's overall experience with the file sharing system.
-
FIG. 1 illustrates a logical architecture of distributedworkspace system 100 in accordance with some examples. As shown, thesystem 100 includes anapplication service 102, aclient agent 104, afile storage service 120, acentralized file storage 106, aconfiguration data store 122, anhistorical data store 108, and alocal cache 118. Theapplication service 102 can include anapplication store 110 configured to store, for example, information related to applications available for user access in thesystem 100. In examples, theapplication store 110 includes a listing ofavailable applications 112 and associatedmetadata 114 for each application. For example, themetadata 114 can include required resources for aparticular application 112, a user-security level required for accessing a particular application, whether an application is automatically pushed to a user's distributed workspace, and other similar information. Also depicted inFIG. 1 are anactive directory service 126 and acalendar service 124. - In some examples, the
application service 102 is configured to communicate with theagent 104, thestorage service 120, and thehistorical data store 108 by exchanging (i.e., transmitting and/or receiving) messages via one or more system interfaces (e.g., a web service application program interface (API), a web server interface, fibre channel interface, etc.). For instance, in some examples, one or more server processes included within theapplication service 102 exchange messages with various types of client processes via the systems interfaces. These client process can include browsers and/or more specialized programs—such as theagent 104. - In certain examples, the messages exchanged between the
sharing service 102 and a client process can include requests for authorization to access one or more of theapplications 112. In some examples, the request can include access to one or more of theapplications 112 in order to upload, download, share, and/or synchronize files. The messages can also include requests to authenticate users or devices and/or requests to configure features supported by theapplication service 102. - In these examples, the
application service 102 is configured to respond to reception of an authorization request by communicating with thestorage service 120 to determine, via a set of rules, whether an operation identified in the request is allowable. Further, in these examples, theapplication service 102 is configured to notify the client process (e.g., the agent 104) of the allowability of the requested operation via a response. In addition, theapplication service 102 is configured to maintain thehistorical data store 108 where theapplication service 102 receives a message from thestorage service 120 that an authorized operation was successfully executed. Thehistorical data store 108 is configured to store usage data consisting of records of each instance of file access involving thesystem 100. Records stored in thehistorical data store 108 can include an identifier of an application accessed, an identifier of a user accessing the application, an identifier of a file accessed, an identifier of a user accessing the file, an identifier of a client device accessing the file, a resource context through which the user accessed the file (as described in greater detail herein), and other similar historical data. - In some examples, the
application service 102 is configured to respond to reception of an authentication request by communicating with an authentication service (e.g., theactive directory service 126 ofFIG. 1 ) to determine, via a set of rules, whether an entity (e.g., a user or device) identified in the authentication request is authorized to access thesystem 100. Further, in these examples, theapplication service 102 is configured to notify, via a response message, the client process as to whether the entity is authorized to access thesystem 100. - In some examples, the
application service 102 is configured to respond to reception of a request to change its configuration by determining, via a set of rules, whether the change is allowable. Further, in these examples, theapplication service 102 is configured to execute the change where the change is allowable and notify the client process of the allowability and result of the requested change via a response. In at least one example, theapplication service 102 is configured to execute configuration changes by storing configuration data in theconfiguration data store 122. This configuration data can, for example, associate features (e.g., an automatic synchronization feature) with users, applications, files, and file directories. - In some examples, the
storage service 120 is configured to manage thefile storage 106. Thefile storage 106 is configured to store files serviced by thesystem 100. In some examples, thestorage service 120 is configured to implement and expose a system interface (API) through which the other components of thesystem 100 access thefile storage 106 and data descriptive of the files stored therein. For example, where thestorage service 120 receives a request to execute an authorized, file-related operation, thestorage service 120 responds to reception of the request by processing the request and notifying the requestor and thefile sharing service 102 of the operations results. Further, in some examples, thestorage service 120 is configured to load balance requests and responses received via the system interface. - In some examples, the
agent 104 is a specialized client program configured to execute on a client device. Theagent 104 manages thelocal cache 118. As shown inFIG. 1 , theagent 104 is configured to interoperate with thesharing service 102 to implement the file-related and security features described above. In these examples, theagent 104 exchanges messages with thesharing service 102 via the system interfaces described above. The messages can include requests for authorization, authentication, and/or configuration as described above. Such messages can be generated, for example, by interaction between a user and a user interface provided by theagent 104. - In some examples, the
agent 104 is configured to receive and process responses to authorization requests. These response can, for example, authorize the agent to launch an instance of one ormore applications 112 via the user's distributed workspace. In such an example, theagent 104 can exchange messages with theapplication service 102 to execute the launching of one or more instances of one or more ofapplications 112. These responses can also, in some examples, authorize theagent 104 to execute a file-related operation, such as an upload, download, share, and/or synchronization. In response to receiving and processing an authorization response, theagent 104 can exchange messages with thestorage service 120 to execute the authorized file-related operation. For instance, where theagent 104 receives a response authorizing download of a file, theagent 104 can exchange messages with thestorage service 120 to request and receive the file as stored in thefile storage 106. Conversely, where theagent 104 receives a response authorizing upload of a file, theagent 104 can exchange messages with thestorage service 120 to transmit the file to thefile storage 106. - In at least one example, where the
application service 102 supports an automatic synchronization feature, theagent 104 exchanges messages with theapplication service 102 to configure theapplication service 102 to automatically launch one or more instances ofapplications 112 for particular user when the user accesses thesystem 100. When executing the automatic synchronization feature, theapplication service 102, theagent 104, and thefile storage 106 interoperate with one another to automatically launch instances of any applications and associated files that may be targeted for automatic synchronization. - Referring to
FIG. 2 , anon-limiting network environment 201 in which various aspects of the disclosure can be implemented includes one ormore client machines 202A-202N, one or moreremote machines 206A-206N, one ormore networks more appliances 208 installed within thecomputing environment 201. Theclient machines 202A-202N communicate with theremote machines 206A-206N via thenetworks computing environment 201 can also be referred to as a distributed computer system. - In some examples, the
client machines 202A-202N communicate with theremote machines 206A-206N via anintermediary appliance 208. The illustratedappliance 208 is positioned between thenetworks appliance 208 can operate as an application delivery controller (ADC) to provide clients with access to business applications and other data deployed in a datacenter, the cloud, or delivered as Software as a Service (SaaS) across a range of client devices, and/or provide other functionality such as load balancing, etc. In some examples,multiple appliances 208 can be used, and the appliance(s) 208 can be deployed as part of thenetwork 204 and/or 204′. - The
client machines 202A-202N may be generally referred to asclient machines 202,local machines 202,clients 202,client nodes 202,client computers 202,client devices 202,computing devices 202,endpoints 202, orendpoint nodes 202. Theremote machines 206A-206N may be generally referred to asservers 206 or aserver farm 206. In some examples, aclient device 202 can have the capacity to function as both a client node seeking access to resources provided by aserver 206 and as aserver 206 providing access to hosted resources forother client devices 202A-202N. Thenetworks network 204. Thenetworks 204 can be configured in any combination of wired and wireless networks. - A
server 206 can be any server type such as, for example: a file server; an application server; a web server; a proxy server; an appliance; a network appliance; a gateway; an application gateway; a gateway server; a virtualization server; a deployment server; a Secure Sockets Layer Virtual Private Network (SSL VPN) server; a firewall; a web server; a server executing an active directory; a cloud server; or a server executing an application acceleration program that provides firewall functionality, application functionality, or load balancing functionality. - A
server 206 can execute, operate, or otherwise provide an application that can be any one of the following: software; a program; executable instructions; a virtual machine; a hypervisor; a web browser; a web-based client; a client-server application; a thin-client computing client; an ActiveX control; a Java applet; software related to voice over internet protocol (Volt)) communications like a soft Internet Protocol telephone; an application for streaming video and/or audio; an application for facilitating real-time-data communications; a HyperText Transfer Protocol client; a File Transfer Protocol client; an Oscar client; a Telnet client; or any other set of executable instructions. - In some examples, a
server 206 can execute a remote presentation services program or other program that uses a thin client or a remote-display protocol to capture display output generated by an application executing on aserver 206 and transmit the application display output to aclient device 202. - In yet other examples, a
server 206 can execute a virtual machine providing, to a user of aclient device 202, access to a computing environment. Theclient device 202 can be a virtual machine. The virtual machine can be managed by, for example, a hypervisor, a virtual machine manager (VMM), or any other hardware virtualization technique within theserver 206. - In some examples, the
network 204 can be: a local area network (LAN); a metropolitan area network (MAN); a wide area network (WAN); a primarypublic network 204; and a primaryprivate network 204. Additional examples can include anetwork 204 of mobile telephone networks that use various protocols to communicate among mobile devices. For short range communications within a wireless local-area network (WLAN), the protocols can include 802.11, Bluetooth, and Near Field Communication (NFC). -
FIG. 3 depicts a block diagram of acomputing device 301 useful for practicing an example ofclient devices 202,appliances 208 and/orservers 206. Thecomputing device 301 includes one ormore processors 303, volatile memory 322 (e.g., random access memory (RAM)),non-volatile memory 328, user interface (UI) 323, one ormore communications interfaces 318, and acommunications bus 350. One or more of thecomputing devices 301 may also be referred to as a computer system. - The
non-volatile memory 328 can include: one or more hard disk drives (HDDs) or other magnetic or optical storage media; one or more solid state drives (SSDs), such as a flash drive or other solid-state storage media; one or more hybrid magnetic and solid-state drives; and/or one or more virtual storage volumes, such as a cloud storage, or a combination of such physical storage volumes and virtual storage volumes or arrays thereof. - The
user interface 323 can include a graphical user interface (GUI) 324 (e.g., a touchscreen, a display, etc.) and one or more input/output (I/O) devices 326 (e.g., a mouse, a keyboard, a microphone, one or more speakers, one or more cameras, one or more biometric scanners, one or more environmental sensors, and one or more accelerometers, etc.). - The
non-volatile memory 328 stores anoperating system 315, one ormore applications 316, anddata 317 such that, for example, computer instructions of theoperating system 315 and/or theapplications 316 are executed by processor(s) 303 out of thevolatile memory 322. In some examples, thevolatile memory 322 can include one or more types of RAM and/or a cache memory that can offer a faster response time than a main memory. Data can be entered using an input device of the GUI 324 or received from the I/O device(s) 326. Various elements of thecomputing device 301 can communicate via thecommunications bus 350. - The illustrated
computing device 301 is shown merely as an example client device or server and can be implemented by any computing or processing environment with any type of machine or set of machines that can have suitable hardware and/or software capable of operating as described herein. - The processor(s) 303 can be implemented by one or more programmable processors to execute one or more executable instructions, such as a computer program, to perform the functions of the system. As used herein, the term “processor” describes circuitry that performs a function, an operation, or a sequence of operations. The function, operation, or sequence of operations can be hard coded into the circuitry or soft coded by way of instructions held in a memory device and executed by the circuitry. A processor can perform the function, operation, or sequence of operations using digital values and/or using analog signals.
- In some examples, the processor can be embodied in one or more application specific integrated circuits (ASICs), microprocessors, digital signal processors (DSPs), graphics processing units (GPUs), microcontrollers, field programmable gate arrays (FPGAs), programmable logic arrays (PLAs), multicore processors, or general-purpose computers with associated memory.
- The
processor 303 can be analog, digital or mixed. In some examples, theprocessor 303 can be one or more physical processors, or one or more virtual (e.g., remotely located or cloud) processors. A processor including multiple processor cores and/or multiple processors can provide functionality for parallel, simultaneous execution of instructions or for parallel, simultaneous execution of one instruction on more than one piece of data. - The communications interfaces 318 can include one or more interfaces to enable the
computing device 301 to access a computer network such as a Local Area Network (LAN), a Wide Area Network (WAN), a Personal Area Network (PAN), or the Internet through a variety of wired and/or wireless connections, including cellular connections. - In described examples, the
computing device 301 can execute an application on behalf of a user of a client device. For example, thecomputing device 301 can execute one or more virtual machines managed by a hypervisor. Each virtual machine can provide an execution session within which applications execute on behalf of a user or a client device, such as a hosted desktop session. Thecomputing device 301 can also execute a terminal services session to provide a hosted desktop environment. Thecomputing device 301 can provide access to a remote computing environment including one or more applications, one or more desktop applications, and one or more desktop sessions in which one or more applications can execute. -
FIG. 4 illustrates an enhanced distributed workspace and file sharing system (e.g., thesystem 100 ofFIG. 1 ) configured for operation within a distributed computing platform (e.g. thenetwork environment 201 ofFIG. 2 ). As shown inFIG. 4 , theconfiguration 400 includes aserver computer 402, aserver computer 404, and aclient device 406. Within theconfiguration 400, thecomputing devices networks FIG. 2 ). - As shown in
FIG. 4 , theserver 402 hosts thestorage service 120 and thefile storage 106. Theserver 404 hosts theapplication service 102 and thehistorical data store 108. Some examples of processes performed by or involvingserver 404, including location-based application discovery as described herein, are described further below in reference toFIGS. 5-10 . Theclient device 406 hosts theagent 104 which maintains thecache 118. Many of the components illustrated inFIG. 4 are described above with reference toFIG. 1 . For purposes of brevity, those descriptions will not be repeated here, but each of the components ofFIG. 1 included inFIG. 4 are structured and function inFIG. 4 as described inFIG. 1 . - The
configuration 400 is but one example of many potential configurations that can be used to implement thesystem 100. For example, in some examples, theserver 404 hosts thefile sharing service 102, thehistorical data store 108, thestorage service 120, theconfiguration data store 122 and thefile storage 106. However, in other examples, a server distinct from theservers historical data store 108 and yet another distinct server hosts thefile predictor 112. As such, the examples disclosed herein are not limited to theconfiguration 400 and other configurations are considered to fall within the scope of this disclosure. - As noted above, to improve or to provide a more specific set of applications based upon a computing device's current location, location-based application discovery can be used. To improve the listing of available applications that are provided to a user, it can be beneficial to match the current location of the user (and, by association, the user's computing device) with any location-based information associated with one or more applications as described herein.
-
FIG. 5 is a flow chart illustrating aprocess 500 for location-based application discovery. For example,process 500 can be implemented by a server such asserver 404 as shown inFIG. 4 and described above, the server implementing an application service such asapplication service 102 as described herein. As shown inFIG. 5 ,process 500 can include receiving 505 location information from a computing device. For example, the computing device can includeclient device 406 as shown inFIG. 4 and described above. Upon accessing, for example, a distributed workspace system such assystem 100, the computing device can provide data to the server, the data including location information. For example, the location information can include GPS information, network specific information such as Wi-Fi network identification information, and other similar location information. - The server can receive the location information and the application service can compare 510 the location information to metadata for one or more applications associated with, for example, an application store accessible by the application service. The metadata for the one or more applications can include location information for each application, the application location information including one or more indicators of specific geographic locations that are associated with distribution of and user access to the one or more applications. For example, a specific application such as an email service can include location information that indicates the application can be accessed from any geographic location. Other applications such as a shopping application for a specific store can include location information that indicates the application can be accessed from a Wi-Fi network provided by the store or at a specific geographic location (e.g., within 100 feet of the store's location).
- The application service can compare 510 the received location information for the computing device and the application metadata to determine 515 one or more applications with metadata that matches the location information. For example, as noted above, some applications can include metadata that indicates access is to be provided to the application at any location. Other applications can include more specific criteria such as requiring the computing device to be within a particular distance of a geographic location and/or connected to a particular network. Based upon the location information for the computing device and the application metadata, the application service can determine 515 a set of applications that the computing device can access based upon the current location of the computing device.
- As further shown in
FIG. 5 , the application service can organize and transmit 520 a listing of matching applications to the computing device. Upon receipt via, for example, a client agent such asagent 104, the computing device can request that the application service launch an instance of one or more specific applications included on the transmitted listing. In some examples, the agent can be configured to work with the application service to automatically launch one or more applications on the listing. - In certain implementations, the application service can pre-launch a virtual application in the background of a distributed workspace for a client device when the device enters a specific geographic location using, for example, a SaaS system as described herein. In such an example, a particular user may not be required to actually download an application to their personal device. Rather, when the user enters a geographic location associated with a particular application as described herein, a virtual version of the application can be launched in the background of their distributed workspace and will become immediately available to the user.
- For example,
FIG. 11 illustrates a sample virtual workspace optimization system (VWO) 1100 that can be used to provide, for example, a SaaS system that incorporates automatic application launching or pre-launching based upon client device location information. In some examples, thesystem 1100 can be configured for operation within a distributed computing platform (e.g. system 100 as shown inFIG. 1 ). As shown inFIG. 11 , thesystem 1100 also implements portions of SaaS system and includes theclient devices server computers 1104A-1104S. Within theconfiguration 1100, thecomputer systems - As illustrated in
FIG. 11 , theclient device 1102A can be configured to host theclient application 1110, auser interface 1112, and aclient agent 1128S (e.g.,client agent 104 ofFIG. 1 ). Theclient device 1102B can be configured to host, for example, anadministrative application 1132 and anadministrative interface 1134. Theserver computer 1104A can be configured to host anapplication service 1130A (e.g.,application service 110 ofFIG. 1 ) and avirtualization agent 1132A, e.g., an agent configured to launch one or more instances of a virtual application for access by one or more client devices. Theserver computer 1104N can be configured to host anapplication service 1130N and avirtualization agent 1132N. Theserver computer 1104Q can be configured to host anapplication service 1130Q and avirtual resource broker 1140. Theserver computer 1104S can be configured to host a VWO service 1122 (e.g., a location-based application service as described herein). - In the example of
FIG. 11 , application service processes that constitute location-based application services as described herein can include theclient application 1110, thevirtualization agents 1132A-1132N, and thevirtual resource broker 1140. As shown inFIG. 11 , the virtualization agents interoperate with a load balancer (e.g., the broker 1140) to register and update the computing resources available for allocation to virtual resources such as virtual instances of location-based applications. - As shown in
FIG. 11 , theclient application 1110 can interoperate with thevirtualization agent 1132A to provide a user access to virtual resources hosted by theserver computer 1104A. In some examples, to allocate and connect to virtual resources such as instances of virtual applications, theclient application 1110 can interoperate with thebroker 1140 via APIs implemented by thebroker 1140. In one such interoperation, theclient application 1110, via, for example, theclient agent 1128S, can request access to a virtual resource, and thebroker 1140 identifies connection information for the virtual resource and returns the connection information to theclient application 1110. In response to receiving the connection information, theclient application 1110 interoperates with thevirtualization agent 1132A to establish a connection to the requested virtual resource. - For example, the
client device 1102A can enter a specific geographic region associated with a location-based application hosted byserver computer 1104A. Theclient agent 1128S can be configured to transmit the geographic location of theclient device 1102A to, for example,server computer 1104Q. Thebroker 1140 can receive the location information including the geographic location ofclient device 1102A and determine which location-based applications are associated with the location information. Based upon the determination, thebroker 1140 can establish one or more connections between theclient agent 1128S and an appropriate application service. For example,server computer 1104A may be configured to host an application associated with a particular store that theclient device 1102A is approaching. Based upon the current location information for theclient device 1102A, thebroker 1140 can establish a connection between theapplication service 1130A on theserver computer 1104A and theclient agent 1128S on the client device. Theclient agent 1128S can receive, for example, a list of location-based applications available fromapplication service 1130A as described herein. Additionally, in some implementations, theapplication service 1130A can pre-launch one or more location-based applications using thevirtualization agent 1132A such that, if requested by theclient application 1110 of theclient device 1102A, an instance of the virtual application is already running and the user of the client device experiences little to no delay in accessing the virtual application. When theclient device 1102A leaves the geographic location associated with one or more applications associated withapplication service 1130A, the virtual instances of those applications, if pre-launched, can be terminated or virtually assigned to another client device in that geographic location. Additional information related to determining location-based applications is provided in the following discussions ofFIGS. 6-10 . - Other application services as illustrated in
FIG. 11 interoperate with one another to prepare for requests for location-based applications. For instance, in some examples, during initialization thevirtualization agents 1132A-1132N interoperate with thebroker 1140 to register theserver computers 1104A-1104N with thebroker 1140. - In some examples, a user and their associated computing device may be moving and, as such, the location information for the computing device can change over time.
FIG. 6 is a flow chart illustrating aprocess 600 for updated location-based application discovery. Similar to process 500 as described above in regard toFIG. 5 ,process 600 can be implemented by a server such asserver 404 as shown inFIG. 4 and described above, the server implementing an application service such asapplication service 102 as described herein. - As shown in
FIG. 6 ,process 600 can include receiving 605 updated location information from a computing device. For example, the computing device can includeclient device 406 as shown inFIG. 4 and described above. During connection to, for example, a distributed workspace system such assystem 100, the client agent can be configured to provide updated location information on a set schedule. For example, the client agent can be configured to provide updated location information every 30 seconds, every minute, every two minutes, every five minutes, and every ten minutes. In some examples, the client agent can be configured to provide updated location information when the location information changes for the computing device, thereby indicating a change in location of the computing device. For example, as noted above, the location information can include GPS information, network specific information such as Wi-Fi network identification information, and other similar location information. In certain implementations, the server can provide a threshold or other similar amount of geographic change that is required for the client agent to report a change. For example, the server can provide a threshold of 100 meters. If the client device moves by more than 100 meters, the client agent can provide the updated location information to the server. - The server can receive the updated location information and the application service can determine 610 if the location of the client device has changed. If the application service determines that the location has not changed, the application service can continue to receive 605 updated location information. If the application service does determine 610 that the location information has changed, the application service can compare 615 the updated location information to the metadata, including application location information as described above, for one or more applications associated with, for example, an application store accessible by the application service.
- The application service can compare 615 the received updated location information for the computing device and the application metadata to determine 620 one or more new applications with metadata that matches the updated location information should be added to the available application listing. Similarly, the application service can compare 615 the updated location information against the location information for the applications already included on the available application listing to determine if, for example, any applications already listed on the existing application listing should be removed from the listing. Based upon the updated location information for the computing device and the application metadata, the application service can determine 620 an updated set of applications that the computing device can access based upon the current location of the computing device.
- As further shown in
FIG. 6 , the application service can organize and transmit 625 an updated listing of matching applications to the computing device. Upon receipt via, for example, a client agent such asagent 104, the computing device can request that the application service launch an instance of one or more specific applications included on the transmitted updated listing. In some examples, the agent can be configured to work with the application service to automatically launch one or more applications on the updated application listing. - To establish and store the metadata associated with each application, including the location information for each application, the metadata can be tagged or otherwise associated with the application when the application is added to the application store. In some examples, an application can be updated to include new or revised application location information such that the metadata associated with the application is updated regularly.
FIG. 7 shows a flowchart illustrating process 700 that includes defining application resources and location information. In certain examples, an application service such asapplication service 102, working in concert with an application store such asapplication store 110, can implement some or all ofprocess 700 as shown inFIG. 7 and described below. - As shown in
FIG. 7 ,process 700 can include defining 705 one or more application resources. For example, application resources can include physical resources such as required input devices, required memory, required hard drive or other storage access, required display or other outputs, and other similar resources that may be associated with or required by a specific application. Additionally, the resources can include application store information such as application type, application group information, any associated fee information for using an application, and other similar store information. -
FIG. 8 illustrates asample application service 800 having an associatedapplication store 805 as described herein. As shown inFIG. 8 , theapplication store 805 can be configured to store information related to all available applications for, for example, a given distributed workspace. In certain implementations, theapplication store 805 can include a hierarchy or other similar structure for organizing applications. For example, each application can be configured to be independently available or as part of a group of applications as contained within theapplication store 805. - For example, as shown in
FIG. 8 , theapplication store 805 can include various groups of applications, in this example listed asGroup 1 810A throughGroup n 810 n. In certain examples, each application group can include a different set of applications. For example, each ofapplications APP 1 815A,APP 2 815B, andAPP n 815 n can belong to a different group and be grouped together with other applications. For example, as shown inFIG. 8 ,Group 1 810A can includeAPP 1 815A andAPP n 815 n. Similarly,Group 2 810B can includeAPP 1 815A,APP 2 815B, andAPP n 815 n. As further shown inFIG. 8 ,Group n 810 n can includeAPP 2 815B andAPP n 815 n. - In some examples, the applications can be organized into groups in the
application store 805 according to particular similarities. For example, each application in any of the individual groups can have common location information for accessing the application. To continue the above examples, each application inGroup 1 810A can have associated location information that indicates the applications can be accessible by a computing device located anywhere, each application inGroup 2 810B can have associated location information that indicates each application is available to a computing device when the computing device is within a particular range of a set of GPS coordinates, and each application inGroup n 810 n can have associated location information that indicates each application is available to a computing device when the computing device connected to a particular network such as a specific Wi-Fi network. - Referring back to
FIG. 7 ,process 700 can further include defining 710 application location information as described herein. The location information can include various details related to where an associated application can be accessed. For example, the location information can include a specific geographic location and range (e.g., within 1 mile of specific GPS coordinates). In another example, the location information can include network information such as a Wi-Fi network ID. In another example, the location information can be provided as a set of boundaries drawn on a map as lines or as a set of points on the map that are translated into a set of boundaries that define a geographic location in which an application can be accessed. For example, the boundaries can define a particular city, a portion within a city such as a specific block, a building, a general area within a building, and other similarly defined areas. In some examples, the boundaries can include additional dimensional information such as a specific floor in a building. For example, for a store in a shopping mall, the store can include boundary information defining the store location when viewed from above as well as floor information to define the store location when the shopping mall is viewed from the side. - As further shown in
FIG. 7 ,process 700 can further include publishing 715 the application to the application store. This can include submission of an application template that includes, for example, application data such as information regarding storage of the application, application status information, the application resource information, the application location information, and other similar application information. Depending upon the application store, the published application may go through an automated or manual review process and the application can be made accessible to one or more users of, for example, a distributed workspace. Additionally,process 700 can include defining 720 a user and application relationship policy. The user and application relationship policy can include, for example, user requirements for accessing the application (e.g., both physical device requirements as well as user authorization requirements). - As generally described above, location-based application discovery can be used to provide a user with a distributed workspace that includes a set of dynamic applications that can vary depending upon the current location of the user.
FIG. 9 illustrates asample overview 900 of a computing device moving through various geographically or previously defined areas on a map and how location-based application discovery as described herein can provide an enhanced user experience for the user of the computing device. - As shown in
FIG. 9 , amap 900 can include various specificgeographical regions map 900. In other examples, a geographic region can be defined by known geographic features such as city limits, neighborhood borders, building walls, rivers and other natural features, and other similar geographic features. - As further shown in
FIG. 9 , acomputing device 906 associated with, for example, a user can move through themap 900 as represented by the dashed arrows placed throughout the map. During the movement, thecomputing device 906 can come within range of one or more of thegeographical regions FIG. 9 , thecomputing device 906 is located atposition 908 a and withingeographical region 904 a. During this time, the computing device can access a distributedworkspace 910 a. As shown inFIG. 9 ,workspace 910 a includes a set of fixed applications. - At some point in time, the
computing device 906 can move fromposition 908 a to position 908 b and provide updated location information to the application service of the distributed workspace system (e.g., provide updated GPS information). Atposition 908 b, thecomputing device 906 can be within range ofgeographical region 904 b. As shown inFIG. 9 ,geographical region 904 b is associated with a set of location-basedapplications 912. In order to provide a set of applications to thecomputing device 906, the application service can determine which, if any, of theapplications 912 are to be provided to thecomputing device 906. For example, in order to receive someapplications 912, the user of thecomputing device 906 may require a subscription to a particular service or to have previously purchased the application. The application service can determine which, if any,applications 912 the user has access to and create alisting 914 of applications to be provided to thecomputing device 906. As shown inFIG. 9 ,workspace 910 b can be updated to include the location-basedapplications 912 that were included on thelisting 914. The user of thecomputing device 906 can access theworkspace 910 b while in or near (e.g., within 50 feet of)geographical region 904 b. - As the
computing device 906 continues to move through themap 900, the computing device can move to position 908 c and provide updated location information to the application service of the distributed workspace system (e.g., provide updated GPS information). As shown inFIG. 9 , atposition 908 c, the computing device is not within, or in range of, any of the definedgeographical regions position 908 c, the computing device can displayworkspace 910 c which includes the set of fixed applications and no location-based applications. - As further shown in
FIG. 9 , thecomputing device 906 can move to a fourth position 908 d. and provide updated location information to the application service of the distributed workspace system (e.g., provide updated GPS information). Atposition 908 d, thecomputing device 906 is withingeographical region 904 c. As shown inFIG. 9 ,geographical region 904 c is associated with a set of location-basedapplications 916. In order to provide a set of applications to thecomputing device 906, the application service can determine which, if any, of theapplications 916 are to be provided to thecomputing device 906 and create alisting 918 of applications to be provided to thecomputing device 906. As shown inFIG. 9 ,workspace 910 d can be updated to include the location-basedapplications 916 that were included on thelisting 918. The user of thecomputing device 906 can access theworkspace 910 d while in or near (e.g., within 50 feet of)geographical region 904 c. - It should be noted that the map and sample geographical regions as shown in
FIG. 9 are provided by way of example only. In some examples, as noted above, the defined geographical regions can be more detailed or precise such as a floor of a building or a room within a building. In such examples, more specific location information such as network connectivity information or Bluetooth beacon connectivity information can be used to provide a more detailed position that can be obtained through GPS coordinates. -
FIG. 10 illustrates a sample view of aworkspace 1000. In some examples,workspace 1000 can representworkspaces FIG. 9 . As shown inworkspace 1000, adirectory 1002 can be included for easier navigation of the workspace. For example, thedirectory 1002 can be arranged as a hierarchical tree and include navigation inputs for home, applications, desktops, and files. Theworkspace 1000 can also include a set of fixedapplications 1004. As noted above, the fixed applications can include applications that are not location-based and are provided in the workspace at all times. For example, theset 1004 can include a text editing application such as anotepad 1006 a and anemail service 1006 b. It should be noted that the fixed applications as shown in theset 1004 are provided by way of example only. In some implementations, theset 1004 can include various fixed applications such as a spreadsheet editor application, a presentation application, a chat application, an image viewer application, a calculator application, and other similar and common applications that are generally not associated with any specific location as described herein. - As further shown in
FIG. 10 , theworkspace 1000 can include a firstdynamic application set 1008. For example, the applications contained withinset 1008 can be location-based and provided in theworkspace 1000 when a computing device accessing the workspace enters a particular geographical region associated with the applications contained withinset 1008. As shown inFIG. 10 , theset 1008 can include amarket application 1010 a and aparking application 1010 b. In some examples, an application can have an associated cost. For example, as shown inFIG. 10 ,parking application 1010 b includes a fee of one dollar per minute to access parking. A user of the computingdevice accessing workspace 1000 can have a previously set up account for paying for a particular application or can access payment information within the individual application. - As also shown in
FIG. 10 , theworkspace 1000 can include a seconddynamic application set 1012. For example, the applications contained withinset 1012 can be location-based and provided in theworkspace 1000 when a computing device accessing the workspace enters a particular geographical region associated with the applications contained withinset 1012. As shown inFIG. 10 , theset 1012 can include agame application 1014. As noted above, individual applications can have an associated fee that requires payment by a user of the application. - It should be noted that
dynamic application set 1008 anddynamic application set 1012 are shown simultaneously inworkspace 1000 by way of example only. In actual implementation, depending upon the current location of the computingdevice accessing workspace 1000, only one of the dynamic application sets may be shown at the same time. However, in some examples, depending upon the applications included in each of thesets workspace 1000, both dynamic application sets can be displayed. For example, set 1008 can be a set of dynamic applications associated with a building such as a shopping mall. When a computing device is within the shopping mall, applications associated with the shopping mall such as a parking application, a map application, an events calendar application, and other similar applications can be included inset 1008 and provided to the user inworkspace 1008. In addition, set 1012 can include one or more dynamic applications that are associated with a particular location within the shopping mall. For example, theset 1012 can include one or more applications associated with restaurants within a food court in the shopping mall. When the computing device accessing theworkspace 1000 enters the food court, set 1012 can be added to the workspace to provide access to one or more applications associated with individual restaurants within the food court. - It should also be noted that the layout and applications as shown in
workspace 1000 is provided by way of example only. Depending upon the available resources and implementation of workspace 1000 (e.g., whether on a laptop computing device, a tablet computing device, a smartphone, or other similar computing devices) the layout and accessibility of the workspace may be altered to accommodate the display and functions of the computing device accessing theworkspace 1000. - Having thus described several aspects of at least one example, it is to be appreciated that various alterations, modifications, and improvements will readily occur to those skilled in the art. For instance, examples disclosed herein can also be used in other contexts. Such alterations, modifications, and improvements are intended to be part of this disclosure and are intended to be within the scope of the examples discussed herein. Accordingly, the foregoing description and drawings are by way of example only.
- Also, the phraseology and terminology used herein is for the purpose of description and should not be regarded as limiting. Any references to examples, components, elements or acts of the systems and methods herein referred to in the singular can also embrace examples including a plurality, and any references in plural to any example, component, element or act herein can also embrace examples including only a singularity. References in the singular or plural form are not intended to limit the presently disclosed systems or methods, their components, acts, or elements. The use herein of “including,” “comprising,” “having,” “containing,” “involving,” and variations thereof is meant to encompass the items listed thereafter and equivalents thereof as well as additional items. References to “or” can be construed as inclusive so that any terms described using “or” can indicate any of a single, more than one, and all of the described terms. In addition, in the event of inconsistent usages of terms between this document and documents incorporated herein by reference, the term usage in the incorporated references is supplementary to that of this document; for irreconcilable inconsistencies, the term usage in this document controls.
Claims (21)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/812,737 US20220353638A1 (en) | 2020-01-22 | 2022-07-15 | Location-based application discovery |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2020/073781 WO2021146997A1 (en) | 2020-01-22 | 2020-01-22 | Location-based application discovery |
US16/851,373 US11395101B2 (en) | 2020-01-22 | 2020-04-17 | Location-based application discovery |
US17/812,737 US20220353638A1 (en) | 2020-01-22 | 2022-07-15 | Location-based application discovery |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/851,373 Division US11395101B2 (en) | 2020-01-22 | 2020-04-17 | Location-based application discovery |
Publications (1)
Publication Number | Publication Date |
---|---|
US20220353638A1 true US20220353638A1 (en) | 2022-11-03 |
Family
ID=76857490
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/851,373 Active US11395101B2 (en) | 2020-01-22 | 2020-04-17 | Location-based application discovery |
US17/812,737 Pending US20220353638A1 (en) | 2020-01-22 | 2022-07-15 | Location-based application discovery |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/851,373 Active US11395101B2 (en) | 2020-01-22 | 2020-04-17 | Location-based application discovery |
Country Status (3)
Country | Link |
---|---|
US (2) | US11395101B2 (en) |
EP (1) | EP4070533A1 (en) |
WO (1) | WO2021146997A1 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113986743A (en) * | 2021-11-01 | 2022-01-28 | 北京字节跳动网络技术有限公司 | Position information modification method and device, storage medium and electronic equipment |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120042036A1 (en) * | 2010-08-10 | 2012-02-16 | Microsoft Corporation | Location and contextual-based mobile application promotion and delivery |
US20160380832A1 (en) * | 2015-06-29 | 2016-12-29 | Vmware, Inc. | Host management across virtualization management servers |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040038688A1 (en) * | 2002-08-26 | 2004-02-26 | Zabawshyj Bohdan Konstantyn | Method and system for presence determination of mobile devices |
US8412237B1 (en) * | 2011-07-29 | 2013-04-02 | Intuit Inc. | Method and system for launching and preparing applications on mobile computing systems based on geo-location data |
CN103793264A (en) * | 2014-02-24 | 2014-05-14 | 浪潮电子信息产业股份有限公司 | Method for achieving central management of desktop virtualization off-line desktop |
US10165055B2 (en) * | 2015-06-30 | 2018-12-25 | Citrix Systems, Inc. | Systems and methods for network controlled access of resources |
US20180255042A1 (en) * | 2017-03-03 | 2018-09-06 | Ca, Inc. | Hop latency network location identifier |
CN108768689A (en) * | 2018-04-13 | 2018-11-06 | 重庆三峡学院 | A kind of public administration system based on remote control |
-
2020
- 2020-01-22 WO PCT/CN2020/073781 patent/WO2021146997A1/en unknown
- 2020-01-22 EP EP20915779.1A patent/EP4070533A1/en not_active Withdrawn
- 2020-04-17 US US16/851,373 patent/US11395101B2/en active Active
-
2022
- 2022-07-15 US US17/812,737 patent/US20220353638A1/en active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120042036A1 (en) * | 2010-08-10 | 2012-02-16 | Microsoft Corporation | Location and contextual-based mobile application promotion and delivery |
US20160380832A1 (en) * | 2015-06-29 | 2016-12-29 | Vmware, Inc. | Host management across virtualization management servers |
Also Published As
Publication number | Publication date |
---|---|
EP4070533A1 (en) | 2022-10-12 |
US20210227352A1 (en) | 2021-07-22 |
US11395101B2 (en) | 2022-07-19 |
WO2021146997A1 (en) | 2021-07-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107710157B (en) | Multi-tenant computing system and computer implementation method thereof | |
EP2972964B1 (en) | Automated desktop placement | |
US9959423B2 (en) | Security and data isolation for tenants in a business data system | |
EP2972838B1 (en) | Application marketplace for virtual desktops | |
EP2972963B1 (en) | Automated data center selection | |
US9021245B2 (en) | Applying settings in a cloud computing environment based on geographical region | |
US8676984B2 (en) | Live directory of cloud tenants to enable inter-tenant interaction via cloud | |
US9722886B2 (en) | Management of cloud provider selection | |
US9552366B2 (en) | Automated data synchronization | |
JP2021500651A (en) | Computer automation methods, computer programs, and systems to support managing applications for clients | |
US10193975B2 (en) | Managing multiple cloud stores through a web service | |
US10819825B2 (en) | Reservation system | |
EP3177995A1 (en) | Placement policy-based allocation of computing resources | |
US20130346543A1 (en) | Cloud service selector | |
CN112016117A (en) | Securing user data | |
US20220353638A1 (en) | Location-based application discovery | |
US11507584B2 (en) | Logical partitions via header-based partition filtering | |
US20150007046A1 (en) | Management of an application for an electronic device | |
US20210109895A1 (en) | Determining user interface contexts for requested resources | |
EP3896578A1 (en) | Unified file storage system | |
KR20220027060A (en) | DaaS system | |
KR102600688B1 (en) | Method and system for providing automatic response function on messenger | |
US9456024B1 (en) | Content sharing in mobile ad hoc networks | |
US20230144674A1 (en) | User status synchronization among workspace applications | |
US20240354705A1 (en) | Moderated access to shared resources across segment boundaries in a segmented environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: CITRIX SYSTEMS, INC., FLORIDA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:ZHANG, XIAO;CHEN, ZE;ZHUANG, JIE;AND OTHERS;REEL/FRAME:060517/0741 Effective date: 20200119 |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
AS | Assignment |
Owner name: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT, DELAWARE Free format text: SECURITY INTEREST;ASSIGNORS:CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.);CITRIX SYSTEMS, INC.;REEL/FRAME:067662/0568 Effective date: 20240522 |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |