IP Library Granted Patent US 9,563,413
Granted Patent B2
US 9,563,413 · App. 14/221,706 · Granted Feb 7, 2017

Configurable application state synchronization

Inventors: Michael A. Chan (San Francisco, CA); Justin Quan (San Francisco, CA); Daniel R. Bornstein (San Francisco, CA); Tom Moss (Los Altos, CA); Linda Tong (San Francisco, CA)
G06F8/44G06F9/54G06F11/1464G06F17/3053G06F17/30174G06F17/30194G06F17/30575H04L41/0816H04L47/70H04L47/78H04L63/0853H04L67/10H04L67/1095H04L69/04H04W12/06G06F11/1451G06F11/1469
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,563,413
App. No.
14/221,706
Granted
Feb 7, 2017
Kind
B2
Abstract

Technology is disclosed for providing configurable synchronization mechanisms for automatic synchronization of application states across multiple devices using cloud storage. In accordance with the techniques introduced here, a method includes steps of receiving a request for supplemental application synchronization information associated with a first application on a first remote computing device. In response the request for the supplemental application synchronization information, application-specific configuration information is determined for synchronizing a state of the first application to a cloud-based storage service. The supplemental application synchronization information including the application-specific configuration information is then provided to the first remote computing device for facilitating synchronization of the state of the first application to the cloud-based storage service.

Claims (70)

1. A computer-implemented method comprising:

receiving a request for supplemental application synchronization information associated with a first application on a first remote computing device;

determining that the first application uses an identifier associated with a certain computing device to enable a synchronized state;

in response to the request for the supplemental application synchronization information, determining application-specific configuration information for synchronizing a state of the first application with a cloud-based storage service; and

providing, by a cloud-based server of the cloud-based storage service, the supplemental application synchronization information to the first remote computing device, wherein the supplemental application synchronization information includes the application-specific configuration information including an identifier associated with a second remote computing device to use for synchronizing the state of the first application on the first remote computing device with the cloud-based storage service;

wherein determining the application-specific configuration information for synchronizing the state of the first application with the cloud-based storage service further comprises:

identifying the second remote computing device as the certain computing device for providing the identifier used by the first application to enable the synchronized state; and

including, in the application-specific configuration information, the identifier associated with the second remote computing device for spoofing the identifier used by the first application when synchronizing the state of the first application with the cloud-based storage service, wherein the identifier is a device identifier of the second remote computing device.

2. The computer-implemented method of claim 1 , further comprising detecting, by the cloud-based server, a synchronization failure of the first application on the first remote computing device.

3. The computer-implement method of claim 2 , wherein the request for the supplemental application synchronization information is received responsive to the synchronization failure of the first application.

4. The computer-implement method of claim 1 , wherein the request for the supplemental application synchronization information is received responsive to an indication that the first application has been downloaded on the first remote computing device.

5. The computer-implement method of claim 1 , wherein the request for the supplemental application synchronization information is received responsive to an indication that the first application has been installed on the first remote computing device.

6. The computer-implemented method of claim 1 , wherein determining the application-specific configuration information for synchronizing the state of the first application with the cloud-based storage service further comprises determining one or more application constraints associated with the first application.

7. The computer-implemented method of claim 6 , wherein determining the application-specific configuration information for synchronizing the state of the first application with the cloud-based storage service further comprises further comprises:

soliciting input from a user of the first remote computing device regarding the one or more application constraints associated with the first application;

receiving response from the user of the first remote computing device indicating a setting for the one or more application constraints; and

modifying the application-specific configuration information to including instructions indicating the setting for the one or more application constraints.

8. The computer-implemented method of claim 7 , wherein determining the application-specific configuration information for synchronizing the state of the first application with the cloud-based storage service further comprises further comprises:

verifying, by the cloud-based server, the setting for the one or more application constraints; and

storing the setting for the one or more application constraints in a cloud-based memory system.

9. The computer-implemented method of claim 6 , wherein the one or more application constraints comprise one or more data rights management (DRM) constraints.

10. The computer-implemented method of claim 6 , wherein the one or more application constraints include a constraint indicating a maximum number of devices available for synchronization.

11. The computer-implemented method of claim 1 , wherein determining the application-specific information for configuring the first application further comprises:

determining that the first application uses an identifier for data access that is associated with a specific computing device;

determining that the first application is already installed on the second remote computing device;

identifying the identifier associated with the second remote computing device as the identifier used for data access by the first application on the second remote computing device; and

providing instructions in the application-specific information directing the first application on the first remote computing device to use the identifier associated with the second remote computing device as the identifier for data access.

12. The computer-implemented method of claim 11 , wherein the identifier for data access is hardwired to the second remote computing device.

13. The computer-implemented method of claim 11 , wherein the identifier for data access is used for encrypting a data encryption key used for the data access by the first application.

14. A computer-implemented method comprising:

receiving, at a computing device of a cloud-based storage service, an indication to initiate a first application on the computing device;

determining that supplemental application synchronization information is available for the first application, wherein the supplemental application synchronization information includes application-specific configuration information for synchronizing a state of the first application with the cloud-based storage service;

initializing, by the computing device, synchronization of the first application based on the supplemental application synchronization information being available;

determining that the first application uses an identifier associated with a certain computing device to enable a synchronized state; and

receiving, from a remote computing device having the first application installed, an identifier associated with the remote computing device to use for synchronizing the state of the first application on the computing device;

wherein the application-specific configuration information for synchronizing the state of the first application with the cloud-based storage service includes an indication of the second remote computing device as the certain computing device for providing the identifier used by the first application to enable the synchronized state, and wherein, in the application-specific configuration information, the identifier associated with the second remote computing device is indicated to be the identifier used by the first application when synchronizing the state of the first application with the cloud-based storage service, wherein the identifier is a device identifier of the second remote computing device.

15. A cloud-based server system comprising:

a processor;

a memory system having instructions stored thereon, wherein the instructions, when executed by the processor, cause the cloud-based server system to:

in response to a request for supplemental application synchronization information associated with a first application on a first remote computing device, determining application-specific configuration information for synchronizing a state of the first application with a cloud-based storage service;

determine that the first application uses an identifier associated with a certain computing device to enable a synchronized state; and

provide the supplemental application synchronization information to the first remote computing device, wherein the supplemental application synchronization information includes the application-specific configuration information including an identifier associated with a second remote computing device to use for synchronizing the state of the first application on the first remote computing device with the cloud-based storage service;

wherein determining the application-specific configuration information for synchronizing the state of the first application with the cloud-based storage service further comprises:

identifying the second remote computing device as the certain computing device for providing the identifier used by the first application to enable the synchronized state; and

including, in the application-specific configuration information, the identifier associated with the second remote computing device as the identifier used by the first application when synchronizing the state of the first application with the cloud-based storage service, wherein the identifier is a device identifier of the second remote computing device.

16. The cloud-based server system of claim 15 , wherein the instructions, when executed by the processor, further cause the cloud-based system to:

detect a synchronization failure of the first application on the first remote computing device, wherein the request for the supplemental application synchronization information is received responsive to the synchronization failure of the first application.

17. The cloud-based server system of claim 15 , wherein the request for the supplemental application synchronization information is received responsive to an indication that the first application has been downloaded on the first remote computing device or responsive to an indication that the first application has been installed on the first remote computing device.

18. The cloud-based server system of claim 15 , wherein to determine the application-specific configuration information for synchronizing the state of the first application with the cloud-based storage service, the instructions, when executed by the processor, further cause the cloud-based system to:

determine one or more application constraints associated with the first application;

solicit input from a user of the first remote computing device regarding the one or more application constraints associated with the first application;

responsive to receiving a response from the user of the first remote computing device indicating a setting for the one or more application constraints, modify the application-specific configuration information to including instructions indicating the setting for the one or more application constraints.

19. The cloud-based server system of claim 18 , wherein the one or more application constraints comprise one or more data rights management (DRM) constraints.

20. The cloud-based server system of claim 15 , wherein to determine the application-specific configuration information for synchronizing the state of the first application with the cloud-based storage service, the instructions, when executed by the processor, further cause the cloud-based system to:

determine that the first application uses an identifier for data access that is associated with a specific computing device;

determine that the first application is already installed on the second remote computing devices;

identify the identifier associated with the second remote computing device as the identifier used for data access by the first application on the second remote computing device; and

provide instructions in the application-specific information directing the first application on the first remote computing device to use the identifier associated with the second remote computing device as the identifier for data access.

21. A non-transitory computer-readable medium storing instructions to be implemented by a computer system having a processor, wherein the instructions, when executed by the processor, cause the computer system to:

in response to a request for supplemental application synchronization information associated with a first application on a first remote computing device, determine application-specific configuration information for synchronizing a state of the first application with a cloud-based storage service;

determine that the first application uses an identifier associated with a certain computing device to enable a synchronized state; and

provide the supplemental application synchronization information to the first remote computing device, wherein the supplemental application synchronization information includes the application-specific configuration information including an identifier associated with a second remote computing device to use for synchronizing the state of the first application on the first remote computing device with the cloud-based storage service;

wherein determining the application-specific configuration information for synchronizing the state of the first application with the cloud-based storage service further comprises:

identifying the second remote computing device as the certain computing device for providing the identifier used by the first application to enable the synchronized state; and

including, in the application-specific configuration information, the identifier associated with the second remote computing device as the identifier used by the first application when synchronizing the state of the first application with the cloud-based storage service, wherein the identifier is a device identifier of the second remote computing device.

22. The non-transitory computer-readable medium of claim 21 , wherein the instructions, when executed by the processor, further cause the computer system to:

determine that the first application uses an identifier for data access that is hardwired to a specific computing device;

determine that the first application is already installed on one or more other remote computing devices associated with a first user in the cloud-based storage service;

identify the identifier associated with the second remote computing device as the identifier used for data access by the first application on the second remote computing device; and

provide instructions in the application-specific information directing the first application on the first remote computing device to use the identifier associated with the second remote computing device as the identifier for data access.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 13, 2017
From: NEXTBIT SYSTEMS INC.
To: RAZER (ASIA-PACIFIC) PTE. LTD.
Reel/Frame 041980/0254 →
RELEASE OF SECURITY INTEREST Recorded Jan 27, 2017
From: PINNACLE VENTURES, L.L.C., AS AGENT
To: NEXTBIT SYSTEMS INC.
Reel/Frame 041519/0146 →
SECURITY INTEREST Recorded Dec 1, 2015
From: NEXTBIT SYSTEMS INC.
To: PINNACLE VENTURES, L.L.C., AS AGENT
Reel/Frame 037184/0762 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 17, 2014
From: CHAN, MICHAEL A.; QUAN, JUSTIN; BORNSTEIN, DANIEL R.; MOSS, TOM; TONG, LINDA
To: NEXTBIT SYSTEMS INC.
Reel/Frame 032703/0038 →
Continuity (2)
Provisional Application 61804134 · Mar 21, 2013
Related Publication 20140289195A1 · Sep 25, 2014