Remote virtualization of mobile apps
First Claim
1. A remote virtualization system for running, on a host server platform, host applications that are controlled over a network by virtual applications running on a remote client device, the remote client device including a native operating system, the remote virtualization system comprising:
- (a) a host application that runs on the host server platform;
(b) a virtual application that runs on the remote client device to control the execution of the host application on the host server platform;
(c) a capture engine on the remote client device that intercepts user-initiated events, resulting from a user'"'"'s interaction with the virtual application on the remote client device, and transmits the user-initiated events over the network to the host application;
(d) an AV streamer on the host server platform that streams, to the virtual application over the network, screen displays and associated audio generated by the host application in response to the user-initiated events; and
(e) a remote API listener/dispatcher on the host server platform that (i) intercepts requests from the host application for application-initiated events, (ii) determines whether a requested application-initiated event requires access to local resources on the remote client device, and, if so, (iii) transmits that application-initiated event over the network to the virtual application, which submits that application-initiated event to the native operating system on the remote client device to access the local resources.
2 Assignments
0 Petitions
Accused Products
Abstract
The present invention includes various embodiments of a mobile app remote virtualization system and process that enables users of remote client devices to control mobile apps running in a host server environment. The resulting user experience is practically equivalent to running native mobile apps, even when such mobile apps require access to local client device resources, as well as when native versions of such mobile apps do not exist for the user'"'"'s client device. The functionality afforded by the mobile app remote virtualization system and process of the present invention enables a variety of novel scenarios and “use cases” that have not previously been available to mobile device users.
-
Citations
38 Claims
-
1. A remote virtualization system for running, on a host server platform, host applications that are controlled over a network by virtual applications running on a remote client device, the remote client device including a native operating system, the remote virtualization system comprising:
-
(a) a host application that runs on the host server platform; (b) a virtual application that runs on the remote client device to control the execution of the host application on the host server platform; (c) a capture engine on the remote client device that intercepts user-initiated events, resulting from a user'"'"'s interaction with the virtual application on the remote client device, and transmits the user-initiated events over the network to the host application; (d) an AV streamer on the host server platform that streams, to the virtual application over the network, screen displays and associated audio generated by the host application in response to the user-initiated events; and (e) a remote API listener/dispatcher on the host server platform that (i) intercepts requests from the host application for application-initiated events, (ii) determines whether a requested application-initiated event requires access to local resources on the remote client device, and, if so, (iii) transmits that application-initiated event over the network to the virtual application, which submits that application-initiated event to the native operating system on the remote client device to access the local resources.
-
-
2. The remote virtualization system of 1, wherein the host application runs on a physical mobile device on the host server platform.
-
3. The remote virtualization system of 1, wherein the user-initiated events are translated into a normalized format.
-
4. The remote virtualization system of 1, wherein the virtual application is embedded in a native application on the remote client device.
-
5. The remote virtualization system of 1, wherein the virtual application is embodied in a standalone shell application container on the remote client device.
-
6. The remote virtualization system of 5, wherein the standalone shell application container includes a plurality of virtual applications.
-
7. The remote virtualization system of 1, wherein an intercepted request includes invocation of a native application on the remote client device.
-
8. The remote virtualization system of 7, wherein data obtained from running the native application on the remote client device are returned to and utilized by the host application running on the host server platform.
-
9. The remote virtualization system of 7, wherein the user is authenticated automatically upon invocation of the native application.
-
10. The remote virtualization system of 1, wherein multiple instances of the virtual application run concurrently on the remote client device.
-
11. The remote virtualization system of 1, wherein the local resources include data generated by local hardware on the remote mobile device.
-
12. The remote virtualization system of 11, wherein the local hardware includes GPS, gyroscope or accelerometer hardware.
-
13. The remote virtualization system of 11, wherein the local hardware includes camera, microphone, speaker or network hardware.
-
14. The remote virtualization system of 1, wherein the host application is preloaded on the host server platform to reduce perceived application loading time after the virtual application is invoked.
-
15. The remote virtualization system of 1, wherein parameters for the encoding and streaming of the screen displays and associated audio are adjusted dynamically, based on current network conditions or capabilities of the remote client device.
-
16. The remote virtualization system of 1, wherein the screen displays and associated audio are transmitted to a remote physical device in addition to the remote client device, and wherein the remote physical device is a smartphone, tablet or television.
-
17. The remote virtualization system of 16, wherein the remote physical device includes a virtual application that runs on the remote client device and concurrently controls the execution of the host application on the host server platform.
-
18. The remote virtualization system of 1, wherein the virtual application performs the following actions when a link to a native version of the host application is invoked on the remote client device:
-
(a) determining whether the native version of the host application is installed on the remote client device, (b) launching the native version of the host application on the host server platform if the native version of the host application is not installed on the remote client device, and (c) launching the native version of the host application on the remote client device if the native version of the host application is installed on the remote client device.
-
-
19. The remote virtualization system of 18, wherein the link is a deep link that results in the execution of the launched application, whether launched on the remote client device or the host server platform, being transferred to a location in the launched application associated with the deep link.
-
20. A method for running, on a host server platform, host applications that are controlled over a network by virtual applications running on a remote client device, the remote client device including a native operating system, the method comprising the following steps:
-
(a) running a host application on the host server platform; (b) running a virtual application on the remote client device to control the execution of the host application on the host server platform; (c) intercepting user-initiated events, resulting from a user'"'"'s interaction with the virtual application on the remote client device, and transmitting the user-initiated events over the network to the host application; (d) streaming screen displays and associated audio over the network to the virtual application, wherein the screen displays and associated audio are generated by the host application in response to the user-initiated events; (e) intercepting requests from the host application for application-initiated events; (f) determining whether a requested application-initiated event requires access to local resources on the remote client device; and
, if so;(g) transmitting that application-initiated event over the network to the virtual application, which submits that application-initiated event to the native operating system on the remote client device to access the local resources.
-
-
21. The method of 20, wherein the host application runs on a physical mobile device on the host server platform.
-
22. The method of 20, wherein the user-initiated events are translated into a normalized format.
-
23. The method of 20, wherein the virtual application is embedded in a native application on the remote client device.
-
24. The method of 20, wherein the virtual application is embodied in a standalone shell application container on the remote client device.
-
25. The method of 24, wherein the standalone shell application container includes a plurality of virtual applications.
-
26. The method of 20, wherein an intercepted request includes invocation of a native application on the remote client device.
-
27. The method of 26, wherein data obtained from running the native application on the remote client device are returned to and utilized by the host application running on the host server platform.
-
28. The method of 26, wherein the user is authenticated automatically upon invocation of the native application.
-
29. The method of 20, wherein multiple instances of the virtual application run concurrently on the remote client device.
-
30. The method of 20, wherein the local resources include data generated by local hardware on the remote mobile device.
-
31. The method of 30, wherein the local hardware includes GPS, gyroscope or accelerometer hardware.
-
32. The method of 30, wherein the local hardware includes camera, microphone, speaker or network hardware.
-
33. The method of 20, wherein the host application is preloaded on the host server platform to reduce perceived application loading time after the virtual application is invoked.
-
34. The method of 20, wherein parameters for the encoding and streaming of the screen displays and associated audio are adjusted dynamically, based on current network conditions or capabilities of the remote client device.
-
35. The method of 20, wherein the screen displays and associated audio are transmitted to a remote physical device in addition to the remote client device, and wherein the remote physical device is a smartphone, tablet or television.
-
36. The method of 35, wherein the remote physical device includes a virtual application that runs on the remote client device and concurrently controls the execution of the host application on the host server platform.
-
37. The method of 20, further comprising the following steps when a link to a native version of the host application is invoked on the remote client device:
-
(a) determining whether the native version of the host application is installed on the remote client device, (b) launching the native version of the host application on the host server platform if the native version of the host application is not installed on the remote client device, and (c) launching the native version of the host application on the remote client device if the native version of the host application is installed on the remote client device.
-
-
38. The method of 37, wherein the link is a deep link that results in the execution of the launched application, whether launched on the remote client device or the host server platform, being transferred to a location in the launched application associated with the deep link.
Specification