# US 10,372,796 B2 · Methods and systems for the provisioning and execution of a mobile software application

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,372,796 B2
- Document ID: US10372796B2
- Status: Granted
- Kind: B2
- Application number: 15/180,144
- Filed: 2016-06-13
- Published: 2016-10-06
- Granted: 2019-08-06
- Earliest claimed: 2002-09-10
- Assignees: SQGO Innovations, LLC
- Applicants: SQGO Innovations, LLC
- Inventors: Bruce Warila; Brian D. Markey; Jeremy Aaron Gilbert; James P. Echmalian; Todd Silverstein
- Web page: https://patentgrep.com/patent/US10372796B2

## CPC

- G06F 40/143: Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]
- G06F 3/0482: Interaction with lists of selectable items, e.g. menus
- G06F 3/0484: for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
- G06F 8/24: {Object-oriented}
- G06F 8/30: Creation or generation of source code
- G06F 8/65: Updates (security arrangements therefor G06F21/57)
- G06F 16/951: Indexing; Web crawling techniques
- G06F 16/986: {Document structures and storage, e.g. HTML extensions}
- G06F 40/103: Formatting, i.e. changing of presentation of documents (automatic justification G06F40/189; automatic line break hyphenation G06F40/191)
- G06F 40/151: Transformation
- H04L 67/34: {involving the movement of software or configuration parameters (network booting or remote initial program loading [RIPL] G06F9/4416)}
- H04W 8/22: Processing or transfer of terminal data, e.g. status or physical capabilities
- H04W 84/12: WLAN [Wireless Local Area Networks]
- H04W 84/18: Self-organising networks, e.g. ad-hoc networks or sensor networks
- H04W 88/02: Terminal devices
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- H04W: WIRELESS COMMUNICATION NETWORKS (broadcast communication H04H; communication systems using wireless links for non-selective communication, e.g. wireless extensions H04M1/72)

## Abstract

A mobile computing device executes a mobile application received from a provisioning source, the mobile application including at least programming code and at least one structured document that together describe at least a portion of functionality provided by the mobile application. An abstraction layer executing on the mobile computing device populates a Document Object Model (“DOM”) structure, the DOM structure at least in part representing the running state of the mobile application consistent with the portion of the functionality provided by the mobile application described in the received at least one structured document and programming code. The abstraction layer updates a device-independent application user interface, responsive to the reconfiguring of the DOM structure and converts the at least one structured document and the received programming code into a temporary form that is configured to be transmitted, received, and decoded back into an original form on a second mobile device.

## Claims

### Claim 1

A non-transitory, computer-readable storage medium comprising computer program instructions tangibly stored on the non-transitory, computer-readable storage medium, wherein the instructions are executable by at least one processor to perform a method for using a mobile software application on a first mobile computing device, the method comprising:
executing, by the first mobile computing device, a mobile software application received from a provisioning source, the mobile software application comprising an application bundle, wherein the application bundle comprises at least one cryptographic hash signature, at least one of an image, sound, graphic, animation, or video, computer program code comprising at least one of compiled code or interpretable code, and at least one structured document comprising at least one of a hypertext markup language (HTML) or an extensible markup language (XML) structured document, such that the executable program code and the at least one structured document together instantiate at least a portion of functionality provided by the mobile software application;
populating, by an abstraction layer executing on the first mobile computing device, a Document Object Model (“DOM”) structure, the DOM structure at least in part representing at least a portion of running state of the mobile software application consistent with the portion of the functionality provided by the mobile software application instantiated by the received at least one structured document and the received computer program code;
presenting, by the abstraction layer, a device-independent application user interface responsive to the DOM structure;
receiving, by the mobile application, an input from the presented device-independent application user interface;
receiving, by the computer program code referenced by the DOM structure, from the abstraction layer, the input;
reconfiguring, by the computer program code referenced by the DOM structure, in response to the received input, the DOM structure to update at least a portion of the running state of the mobile software application based on a response, by the mobile software application, to the input;
updating, by the abstraction layer, the device-independent application user interface, responsive to the reconfiguring of the DOM structure; and
converting at least a portion of the DOM structure into a temporary form that is configured to be transmitted, received, and decoded back into an equivalent form on a second mobile computing device, wherein the second mobile computing device comprises a display for displaying a user interface and for receiving user input, at least one computer processor for executing computer program instructions stored on a non-transitory, computer-readable storage medium of the second mobile computing device, the non-transitory, computer-readable storage medium operatively connected to the at least one computer processor of the second mobile computing device,
wherein a second mobile application is executed by the second mobile computing device, and
wherein executing the second mobile application on the second mobile computing device further comprises:
receiving from the first mobile computing device at least a portion of a DOM structure in the temporary form,
decoding the temporary form into at least a portion of a DOM structure, and
using the at least a portion of the DOM structure to present at least a portion of an application user interface on the display of the second mobile computing device.

### Claim 2 (depends on 1)

The non-transitory, computer-readable storage medium of claim 1, wherein the provisioning source is accessed by the first mobile computing device at least in part using a wireless network.

### Claim 3 (depends on 2)

The non-transitory, computer-readable storage medium of claim 2, wherein the wireless network is a cellular network.

### Claim 4 (depends on 1)

The non-transitory, computer-readable storage medium of claim 1, wherein the first mobile computing device accesses the provisioning source at least in part using an inter-network.

### Claim 5 (depends on 1)

The non-transitory, computer-readable storage medium of claim 1, wherein the first and second mobile computing devices are each connected to the same wireless network.

### Claim 6 (depends on 5)

The non-transitory, computer-readable storage medium of claim 5, wherein the wireless network is a wireless local area network.

### Claim 7 (depends on 1)

The non-transitory, computer-readable storage medium of claim 1, wherein at least one cryptographic hash signature is used by the first mobile computing device to verify that the first mobile computing device is authorized to receive or to execute the mobile software application.

### Claim 8 (depends on 1)

The non-transitory, computer-readable storage medium of claim 1, wherein the abstraction layer comprises at least one library of components invoked through a scripting language application programming interface.

### Claim 9 (depends on 8)

The non-transitory computer-readable storage medium of claim 8, wherein the mobile application received from the provisioning source by the first mobile device further comprises at least one library of components invoked through a scripting language application programming interface.

### Claim 10 (depends on 1)

The non-transitory, computer-readable storage medium of claim 1, wherein control of the received mobile application executing on the first mobile computing device is transferred to the same mobile application running on a second computing device separate from the first mobile device, and further wherein the first and second computing devices are both connected to the same wireless network.

### Claim 11

A method for using a mobile software application performed by at least one computer processor of a first mobile computing device executing computer program instructions stored on at least one non-transitory, computer-readable medium, the non-transitory, computer-readable medium operatively connected to the at least one computer processor, wherein the computer program instructions are executable by the at least one computer processor to perform the method for using a mobile software application on the first mobile computing device, the method comprising:
executing, by the first mobile computing device, a mobile software application received from a provisioning source, the mobile software application comprising an application bundle, wherein the application bundle comprises at least one cryptographic has signature, at least one of an image, sound, graphic, animation, or video, computer program code comprising at least one of compiled code or interpretable code, and at least one structured document comprising at least one of a hypertext markup language (HTML) or an extensible markup language (XML) structured document such that the executable program code and the at least one structured document together instantiate at least a portion of functionality provided by the mobile software application;
populating, by an abstraction layer executing on the first mobile computing device, a Document Object Model (“DOM”) structure, the DOM structure representing at least a portion of running state of the mobile software application consistent with the portion of the functionality provided by the mobile software application described in the received at least one structured document and the received computer program code;
presenting, by the abstraction layer, a device-independent application user interface responsive to the DOM structure;
receiving, by the mobile software application, a user input from the rendered device-independent application user interface;
receiving, by the computer program code referenced by the DOM structure, from the abstraction layer, the input;
reconfiguring, by the computer program code referenced by the DOM structure, in response to the received input, the DOM structure to update at least a portion of the running state of the mobile software application based on a response, by the mobile software application, to the input;
updating, by the abstraction layer, the device-independent application user interface, responsive to the reconfiguring of the DOM structure; and
converting the at least one structured document and the received computer program code into a temporary form that is configured to be transmitted, received, and decoded back into an original form on a second mobile device, wherein the second mobile device comprises a display for displaying a user interface and for receiving user input, at least one computer processor for executing computer program instructions stored on at least one non-transitory, computer-readable medium of the second mobile device, the at least one non-transitory, computer-readable medium operatively connected to the at least one computer processor of the second mobile device, wherein a second mobile application is executed by the second mobile device, and wherein executing the second mobile application on the second mobile device further comprises: receiving the at least one structured document and computer program code in the temporary form, decoding the temporary form into the at least one structured document and received computer program code, and executing the computer program code while using the received at least one structured document to present an application user interface on the display of the second mobile device.

### Claim 12 (depends on 11)

The method of claim 11 wherein the abstraction layer comprises at least one library of components invoked through a scripting language application programming interface.

### Claim 13 (depends on 12)

The method of claim 12, wherein the mobile software application received from the provisioning source by the first mobile device further comprises at least one library of components invoked through a scripting language application programming interface.

### Claim 14 (depends on 11)

The method of claim 11, wherein the provisioning source is accessed by the first mobile computing device at least in part using a wireless network.

### Claim 15 (depends on 11)

The method of claim 11, wherein the wireless network is a cellular network.

### Claim 16 (depends on 11)

The method of claim 11, wherein the first mobile computing device accesses the provisioning source at least in part using an inter-network.

### Claim 17 (depends on 11)

The method of claim 11, wherein control of the received mobile software application executing on the first mobile computing device is transferred to the same mobile software application running on a second computing device separate from the first mobile device, and further wherein the first and second computing devices are both connected to the same wireless network.

### Claim 18 (depends on 11)

The method of claim 11, wherein at least one cryptographic hash signature is used by the first mobile computing device to verify that the first mobile computing device is authorized to receive or to execute the mobile software application.

### Claim 19

A first mobile computing device for executing at least one mobile software application received from a provisioning source separate from the first mobile computing device, the first mobile computing device comprising:
a network interface operatively connected to a network and used at least in part to communicate with the provisioning source and with a second mobile computing device separate from said first mobile computing device;
a display unit arranged to display an application user interface having at least one user selectable item;
at least one user interface for displaying information and receiving at least one user selection;
at least one non-transitory, computer-readable storage medium configured to store the at least one mobile software application on the first mobile computing device, the mobile software application received from the provisioning source in response to a request for the mobile software application, the request sent using the device network interface from the requesting first mobile computing device separate from the provisioning source of the first mobile computer device;
at least one computer processor adapted for executing computer program code stored on non-transitory, computer-readable storage medium, the non-transitory, computer-readable storage medium operatively connected to the at least one computer processor, such that when the mobile software application is executed using the at least one processor of the requesting first mobile computer device, the execution of the requested and received mobile software application causes the requesting mobile device to perform operations comprising:
executing, by the first mobile computing device, the mobile software application received from the provisioning source, the mobile software application comprising an application bundle comprising at least one cryptographic hash signature, at least one of an image, sound, graphic, animation, or video, computer program code comprising at least one of compiled code or interpretable code, and at least one structured document comprising at least one of a hypertext markup language (HTML) or an extensible markup language (XML) structured document, such that the executable program code and the at least one structured document together instantiate at least a portion of functionality provided by the mobile software application;
populating, by an abstraction layer executing on the first mobile computing device, a Document Object Model (“DOM”) structure, the DOM structure representing at least a portion of running state of the mobile software application consistent with the portion of the functionality provided by the mobile software application instantiated by the received at least one structured document and the received computer program code;
presenting, by the abstraction layer, a device-independent application user interface responsive to the DOM structure;
receiving, by the mobile software application, a user input from the rendered device-independent application user interface;
receiving, by the computer program code referenced by the DOM structure, from the abstraction layer, the input;
reconfiguring, by the computer program code referenced by the DOM structure, in response to the received input, the DOM structure to update at least a portion of the running state of the mobile software application based on a response, by the mobile software application, to the input;
updating, by the abstraction layer, the device-independent application user interface, responsive to the reconfiguring of the DOM structure; and
converting the at least one structured document and the received computer program code into a temporary form that is configured to be transmitted, received, and decoded back into an original form on a second mobile device, wherein the second mobile device comprises a display for displaying a user interface and for receiving user input, at least one computer processor for executing computer program instructions stored on at least one non-transitory, computer-readable medium of the second mobile device, the at least one non-transitory, computer-readable medium operatively connected to the at least one computer processor of the second mobile device, wherein a second mobile application is executed by the second mobile device, and wherein executing the second mobile application on the second mobile device further comprises: receiving the at least one structured document and computer program code in the temporary form, decoding the temporary form into the at least one structured document and received computer program code, and executing the computer program code while using the received at least one structured document to present an application user interface on the display of the second mobile device.

### Claim 20 (depends on 19)

The mobile computing device of claim 19 wherein the abstraction layer comprises at least one library of components invoked through a scripting language application programming interface.

### Claim 21 (depends on 20)

The mobile computing device of claim 20, wherein the mobile application received from the provisioning source by the first mobile device further comprises at least one library of components invoked through a scripting language application programming interface.

### Claim 22 (depends on 19)

The mobile computing device of claim 19, wherein the provisioning source is accessed by the first mobile computing device at least in part using a wireless network.

### Claim 23 (depends on 22)

The mobile computing device of claim 22, wherein the wireless network is a cellular network.

### Claim 24 (depends on 19)

The mobile computing device of claim 19, wherein the first mobile computing device accesses the provisioning source at least in part using an inter-network.

### Claim 25 (depends on 19)

The mobile computing device of claim 19, wherein control of the received mobile application executing on the first mobile computing device is transferred to the same mobile application running on a second computing device separate from the first mobile device, and further wherein the first and second computing devices are both connected to the same wireless network.

### Claim 26 (depends on 19)

The mobile computing device of claim 19, wherein at least one cryptographic hash signature is used by the first mobile computing device to verify that the first mobile computing device is authorized to execute or to receive the mobile software application.
