# US 9,436,580 B2 · Analytics for mobile applications

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

- Number: US 9,436,580 B2
- Document ID: US9436580B2
- Status: Granted
- Kind: B2
- Application number: 14/672,718
- Filed: 2015-03-30
- Published: 2016-03-24
- Granted: 2016-09-06
- Earliest claimed: 2014-09-18
- Assignees: Ensighten, Inc.
- Applicants: Ensighten, Inc.
- Inventors: Joshua Ryan Manion; Joshua C. Goodwin; Scott David Price; Miles A. Alden; Zackary Dean Ulrich; Arthur C. Yin; Jeremy P. Woska; Gautam B. Amin; Manudath Gurudatha; Jonathan David Chicquette
- Web page: https://patentgrep.com/patent/US9436580B2

## CPC

- G06F 11/36: Prevention of errors by analysis, debugging or testing of software
- G06F 8/41: Compilation
- G06F 8/54: Link editing before load time
- G06F 8/65: Updates (security arrangements therefor G06F21/57)
- G06F 8/71: Version control (security arrangements therefor G06F21/57); Configuration management
- G06F 11/3003: {Monitoring arrangements specially adapted to the computing system or computing system component being monitored}
- G06F 11/3093: {Configuration details thereof, e.g. installation, enabling, spatial arrangement of the probes}
- G06F 11/3466: {Performance evaluation by tracing or monitoring}
- G06F 11/3668: Testing of software
- H04W 4/60: Subscription-based services using application servers or record carriers, e.g. SIM application toolkits
- H04W 8/183: {Processing at user equipment or user record carrier}
- H04W 8/22: Processing or transfer of terminal data, e.g. status or physical capabilities
- G06F 11/3419: {by assessing time}
- G06F 2201/865: Monitoring of software
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04W: WIRELESS COMMUNICATION NETWORKS (broadcast communication H04H; communication systems using wireless links for non-selective communication, e.g. wireless extensions H04M1/72)

## Abstract

A tag delivery network is disclosed for delivering tags to collect analytics related to use of mobile applications. The tag delivery network may include multiple servers for communicating with mobile devices executing mobile applications. The mobile applications may be any mobile application that has been recompiled with, for example, a particular line of code and a static library. A recompiled mobile application may initiate a browser when executed by a mobile device. The tag delivery network may deliver a tag container to the browser. The tag container may load a bootstrap file which in turn may load one or more rule files and code files. These files may cause the mobile device to modify an appearance of the mobile application. The modification may be performed to carry out multivariate testing (e.g., A/B testing), content swapping, optimization of the mobile application, or personalization of the mobile application.

## Claims

### Claim 1

A system, comprising:
a plurality of servers electrically connected to a network, wherein at least one server of the plurality of servers comprises a hardware processor and a non-transitory computer readable medium that stores computer-executable instructions and the at least one server:
communicates with a remote device executing a mobile application;
sends a tag container to a browser executed by the remote device, wherein a user interface of the browser is hidden from a user of the remote device, wherein the browser is generated by the mobile application in response to launching the mobile application on the remote device, and wherein the mobile application comprises a single line of code that, when executed by the remote device, initiates generation of the browser; and
in response to interpretation of the tag container by the browser, sends at least one file to the browser, the at least one file comprising instructions configured to cause the remote device to output one of a first version of the mobile application comprising a first version of an object and a second version of the mobile application comprising a second version of the object different from the first version of the object.

### Claim 2 (depends on 1)

The system of claim 1, wherein the at least one file comprises rules that, when executed by the browser, determines which one of the first version of the mobile application and the second version of the mobile application is to be output, wherein the rules are configured to cause the browser to perform at least one of:
change a color of a background of the mobile application;
change a color of the object of the mobile application;
change a characteristic of a font used in the mobile application;
change a layout of a page in the mobile application; or
change a position of the object in the mobile application.

### Claim 3 (depends on 1)

The system of claim 1, wherein the instructions are configured to cause the remote device to output one of the first version of the mobile application and the second version of the mobile application without changing compiled code of the mobile application.

### Claim 4 (depends on 1)

The system of claim 1,
wherein the at least one server is further configured to evaluate results of a multivariate test, including the first version of the mobile application and the second version of the mobile application, to identify an optimal configuration of the mobile application, and
wherein the at least one file comprises a rule file that, when executed, determines which one of the first version of the mobile application and the second version of the mobile application is to be output based on the optimal configuration.

### Claim 5 (depends on 1)

The system of claim 1, wherein at least one server of the plurality of servers is configured to provide an application programming interface that allows a user to establish a multivariate test.

### Claim 6 (depends on 1)

The system of claim 1,
wherein the at least one server is further configured to send one or more tags to capture analytics regarding use of the mobile application, and
wherein at least one server of the plurality of servers is configured to receive the analytics from the mobile device and store the analytics.

### Claim 7 (depends on 1)

The system of claim 1, wherein the instructions are configured to cause the remote device to modify an appearance of the mobile application based on a user profile associated with a user of the mobile application.

### Claim 8

A method, comprising:
inserting code into a mobile application;
linking a library file to the mobile application; and
compiling, by a computing device, the mobile application after inserting the code and linking the library file to generate a compiled mobile application,
wherein the library file comprises at least one instruction that is executed in response to launching the compiled mobile application on a mobile device and, when executed, causes the mobile device to launch a browser that loads at least one file comprising instructions configured to cause the mobile device to output one of a first version of the mobile application comprising a first version of an object and a second version of the mobile application comprising a second version of the object different from the first version of the object,
wherein the browser is generated by the compiled mobile application in response to launching the compiled mobile application on the mobile device, and
wherein the at least one instruction comprises a single line of computer code that, when executed by the mobile device, initiates generation of the browser.

### Claim 9 (depends on 8)

The method of claim 8, wherein the instructions of the at least one file are configured to cause the mobile device to output one of the first version of the mobile application comprising the first version of the object, the second version of the mobile application comprising the second version of the object, and a third version of the mobile application comprising a third version of the object.

### Claim 10 (depends on 8)

The method of claim 8, wherein a user interface of the browser is hidden from a user of the mobile device.

### Claim 11 (depends on 8)

The method of claim 8, wherein the library file comprises at least one instruction to capture at least one screenshot of the mobile application and transmit the at least one screenshot to a server.

### Claim 12 (depends on 8)

The method of claim 8, further comprising:
accessing a user interface that establishes a multivariate test defining the first version of the mobile application and the second version of the mobile application.

### Claim 13

One or more non-transitory computer readable storage media storing computer-executable instructions that, when executed by a computing device, cause the computing device to:
communicate with a mobile device executing a mobile application;
in response to a request from a browser, send a tag container to the browser, wherein a user interface of the browser is hidden from a user of the mobile device, wherein the browser is generated by the mobile application in response to launching the mobile application on the mobile device, and wherein the mobile application comprises a single line of code that, when executed by the mobile device, initiates generation of the browser; and
in response to a request from the tag container, send one or more files to the browser, the one or more files configured to output one of a first version of the mobile application comprising a first version of an object and a second version of the mobile application comprising a second version of the object different from the first version of the object.

### Claim 14 (depends on 13)

The one or more non-transitory computer readable storage media of claim 13, wherein the one or more files are configured to cause the mobile device to output one of the first version of the mobile application and the second version of the mobile application without changing compiled code of the mobile application.

### Claim 15 (depends on 13)

The one or more non-transitory computer readable storage media of claim 13, wherein the one or more files are configured to cause the mobile device to perform at least one of:
change a color of a background of the mobile application;
change a color of an object of the mobile application;
change a characteristic of a font used in the mobile application;
change a layout of a page in the mobile application; or
change a position of an object in the mobile application.

### Claim 16 (depends on 13)

The one or more non-transitory computer readable storage media of claim 13, wherein the first version of the object comprises the object having a first color and wherein the second version of the object comprises the object having a second color different from the first color.

### Claim 17 (depends on 13)

The one or more non-transitory computer readable storage media of claim 13, wherein the one or more files comprise at least one opcode that maps an event to at least one event handler function configured to collect analytics of a multivariate test and to fire a tag in response to use of the mobile application.

### Claim 18 (depends on 13)

The one or more non-transitory computer readable storage media of claim 13, wherein the one or more files comprise code that is injected into the mobile application to modify an appearance of the mobile application based on a user profile associated with a user of the mobile application.

### Claim 19 (depends on 1)

The system of claim 1, wherein the at least one file comprising instructions configured to cause the remote device to output one of the first version of the mobile application and the second version of the mobile application comprises instructions to inject non-native code into native code of the mobile application.

### Claim 20 (depends on 1)

The system of claim 1, wherein the one of the first version of the mobile application and the second version of the mobile application to be output is selected at a runtime of the mobile application.
