IP Library Granted Patent US 9,904,537
Granted Patent B2
US 9,904,537 · App. 15/339,877 · Granted Feb 27, 2018

Providing a hybrid application

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,904,537
App. No.
15/339,877
Granted
Feb 27, 2018
Kind
B2
Abstract

Disclosed are systems, methods, and non-transitory computer-readable storage media for providing a hybrid web application. In some implementations, a computing device can be configured with a hybrid application that includes a native layer and a web view. The native layer can provide access to native features of the computing device while the web view can provide web client features, such as graphical user interfaces and server communication functionality. When the hybrid application is invoked, the native layer can load a resource bundle from local storage. The resource bundle can include the web code needed to present the web view graphical user interface, manage application data, and/or facilitate communication with the web server.

Claims (72)

1. A method comprising:

storing, by a computing device, a software application in memory of the computing device, where the software application includes a native component and a resource bundle, where the native component is generated using technologies native to the computing device, and where the resource bundle includes non-native web code defining a web view for the software application, wherein the resource bundle is stored locally on the computing device;

receiving, by the computing device, user input selecting the software application;

in response to receiving the user input, executing, by the computing device, the native component of the software application;

upon execution of the native component, loading, by the computing device, the non-native web code from the local resource bundle into the native component to generate the web view, wherein the non-native web code is stored locally on the computing device within the local resource bundle;

establishing, by the computing device, a native communication bridge between the native component and the web view, wherein the native communication bridge includes a global variable that is used by the native component and the web view to exchange messages between the native component and the web view;

generating, by the native component, a first message to the web view;

storing, by the native component, the first message in the global variable;

notifying the web view that a value of the global variable has changed;

in response to the notification, reading, by the web view, the first message from the global variable; and

presenting, by the computing device, the web view on a display of the computing device.

2. The method of claim 1 , further comprising:

generating, by the web view, a second message to the native component;

storing, by the web view, the second message in the global variable;

navigating, by the web view, the web view to a particular address;

intercepting, by the native component, the navigation to the particular address; and

in response to intercepting the navigation, reading, by the native component, the second message from the global variable.

3. The method of claim 1 , where the native component is implemented using a first technology type and the web view is implemented using a second technology type that is different than the first technology type.

4. The method of claim 1 , further comprising:

generating, by the web view, a message including a file system request specifying a native file system operation;

sending, by the web view, the message to the native component through the native communication bridge;

receiving, by the native component, the message sent by the web view through the native communication bridge; and

performing, by the native component, the native file system operation specified in the message.

5. The method of claim 1 , wherein the native component performs native file system operations for the software application and the web view performs networking operations for the software application.

6. A non-transitory computer readable medium including one or more sequences of instructions that, when executed by one or more processors, cause the processors to perform operations comprising:

storing a software application in memory of the computing device, where the software application includes a native component and a resource bundle, where the native component is generated using technologies native to the computing device, and where the resource bundle includes non-native web code defining a web view for the software application, wherein the resource bundle is stored locally on the computing device;

executing the native component of the software application;

upon execution of the native component, loading, by the computing device, the non-native web code from the local resource bundle into the native component to generate the web view, wherein the non-native web code is stored locally on the computing device within the local resource bundle;

establishing a native communication bridge between the native component and the web view, wherein the native communication bridge includes a global variable that is used by the native component and the web view to exchange messages between the native component and the web view;

generating, by the native component, a first message to the web view;

storing, by the native component, the first message in the global variable;

notifying the web view that a value of the global variable has changed;

in response to the notification, reading, by the web view, the first message from the global variable; and

presenting the web view on a display of the computing device.

7. The non-transitory computer readable medium of claim 6 , wherein the instructions cause the processors to perform operations comprising:

generating, by the web view, a second message to the native component;

storing, by the web view, the second message in the global variable;

navigating, by the web view, the web view to a particular address;

intercepting, by the native component, the navigation to the particular address; and

in response to intercepting the navigation, reading, by the native component, the second message from the global variable.

8. The non-transitory computer readable medium of claim 6 , where the native component is implemented using a first technology type and the web view is implemented using a second technology type that is different than the first technology type.

9. The non-transitory computer readable medium of claim 6 , wherein the instructions cause the processors to perform operations comprising:

generating, by the web view, a message including a file system request specifying a native file system operation;

sending, by the web view, the message to the native component through the native communication bridge;

receiving, by the native component, the message sent by the web view through the native communication bridge; and

performing, by the native component, the native file system operation specified in the message.

10. The non-transitory computer readable medium of claim 6 , wherein the native component performs native file system operations for the software application and the web view performs networking operations for the software application.

11. A system comprising:

one or more processors; and

a non-transitory computer readable medium including one or more sequences of instructions that, when executed by the one or more processors, cause the processors to perform operations comprising:

storing a software application in memory of the computing device, where the software application includes a native component and a resource bundle, where the native component is generated using technologies native to the computing device, and where the resource bundle includes non-native web code defining a web view for the software application, wherein the resource bundle is stored locally on the computing device;

executing the native component of the software application;

upon execution of the native component, loading, by the computing device, the non-native web code from the local resource bundle into the native component to generate the web view, wherein the non-native web code is stored locally on the computing device within the local resource bundle;

establishing a native communication bridge between the native component and the web view, the native communication bridge including a global variable that is used by the native component and the web view to exchange messages between the native component and the web view, wherein the native communication bridge includes a global variable that is used by the native component and the web view to exchange messages between the native component and the web view;

generating, by the native component, a first message to the web view;

storing, by the native component, the first message in the global variable;

notifying the web view that a value of the global variable has changed;

in response to the notification, reading, by the web view, the first message from the global variable; and

presenting the web view on a display of the computing device.

12. The system of claim 11 , wherein the instructions cause the processors to perform operations comprising:

generating, by the web view, a second message to the native component;

storing, by the web view, the second message in the global variable;

navigating, by the web view, the web view to a particular address;

intercepting, by the native component, the navigation to the particular address; and

in response to intercepting the navigation, reading, by the native component, the second message from the global variable.

13. The system of claim 11 , where the native component is implemented using a first technology type and the web view is implemented using a second technology type that is different than the first technology type.

14. The system of claim 11 , wherein the instructions cause the processors to perform operations comprising:

generating, by the web view, a message including a file system request specifying a native file system operation;

sending, by the web view, the message to the native component through the native communication bridge;

receiving, by the native component, the message sent by the web view through the native communication bridge; and

performing, by the native component, the native file system operation specified in the message.

15. The system of claim 11 , wherein the native component performs native file system operations for the software application and the web view performs networking operations for the software application.

Assignments (6)
RELEASE OF SECURITY INTEREST Recorded Dec 13, 2024
From: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: DROPBOX, INC.
Reel/Frame 069635/0332 →
RELEASE OF SECURITY INTEREST Recorded Dec 12, 2024
From: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: DROPBOX, INC.
Reel/Frame 069613/0744 →
SECURITY INTEREST Recorded Dec 12, 2024
From: DROPBOX, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 069604/0611 →
PATENT SECURITY AGREEMENT Recorded Mar 10, 2021
From: DROPBOX, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 055670/0219 →
SECURITY INTEREST Recorded Apr 14, 2017
From: DROPBOX, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 042254/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 28, 2017
From: LOPYREV, ANTON; GILL, PRABHDEEP; RAJU, ASHOK; MENDIOLA, IAN
To: DROPBOX, INC.
Reel/Frame 041399/0821 →