# US 10,375,515 B2 · Location application program interface

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

- Number: US 10,375,515 B2
- Document ID: US10375515B2
- Status: Granted
- Kind: B2
- Application number: 16/120,029
- Filed: 2018-08-31
- Published: 2018-12-27
- Granted: 2019-08-06
- Earliest claimed: 2014-05-30
- Assignees: Apple Inc.
- Applicants: Apple Inc.
- Inventors: Bradley Joel Jensen; Ronald K. Huang; Stephen J. Rhee; Jay N. Bruins; Adam M. Driscoll; Lukas M. Marti; Michael P. Dal Santo; Patrick Thomas Dillon
- Web page: https://patentgrep.com/patent/US10375515B2

## CPC

- H04W 4/021: Services related to particular areas, e.g. point of interest [POI] services, venue services or geofences
- G06F 9/54: Interprogram communication
- G06Q 10/1093: Calendar-based scheduling for persons or groups
- H04L 67/52: specially adapted for the location of the user terminal
- H04L 67/55: Push-based network services
- H04M 1/72451: according to schedules, e.g. using calendar applications
- H04M 1/72457: according to geographic location
- H04W 4/024: Guidance services
- H04W 4/027: {using movement velocity, acceleration information}
- H04W 4/029: Location-based management or tracking services
- H04W 4/30: Services specially adapted for particular environments, situations or purposes
- H04W: WIRELESS COMMUNICATION NETWORKS (broadcast communication H04H; communication systems using wireless links for non-selective communication, e.g. wireless extensions H04M1/72)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G06Q: INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- H04M: TELEPHONIC COMMUNICATION (circuits for controlling other apparatus via a telephone cable and not involving telephone switching apparatus G08)

## Abstract

Systems, methods, and program products for determining a location of a mobile device using a location application programming interface (API) are described. A mobile device can receive an input requesting the mobile device to monitor entry into and exit from a significant location. The mobile device can call a start-monitoring instance function of an object of a location manager class as declared in the API to start monitoring, and call a stop-monitoring instance function of the object as declared in the API to stop monitoring. The mobile device can store the entry and exit, or provide a record of the entry or exit to a function that is conformant to the API for performing various tasks.

## Claims

### Claim 1

A method comprising:
receiving an input by a mobile device, the input requesting the mobile device to monitor locations of the mobile device to determine length of time the mobile device has dwelled at a location;
responsive to the input, monitoring the locations through an application programming interface (API), the monitoring including calling a first instance function of an object of a location manager class, the first instance function being declared in the API and being operable to perform actions of recording detected visits of the mobile device at the locations, each detected visit being associated with a respective set of geographic coordinates of a location that the mobile device visited;
responsive to a trigger event, stopping the monitoring, wherein stopping the monitoring comprises calling a second instance function of the object, the second instance function being declared in the API and being operable to stop the object of the location manager class to record the visits; and
providing the recorded visits to a location consumer system.

### Claim 2 (depends on 1)

The method of claim 1, wherein recording the detected visits comprises at least one of:
storing the detected visits as data objects on a storage device; or
sending a visit callback to a pre-specified function to notify the pre-specified function of an aspect of a detected visit.

### Claim 3 (depends on 2)

The method of claim 2, wherein the aspect of the detected visit includes at least one of an arrival of the mobile device at a location or a departure of the mobile device from the location.

### Claim 4 (depends on 1)

The method of claim 1, wherein each detected visit is recorded as an object of a location visit class, the object having an arrival date attribute storing a date the visit began, a departure date attribute storing a date the visit ended, a coordinate attribute storing geographic coordinates of a center of a region visited by the mobile device, and a horizontal accuracy attribute storing an estimated radius of the region visited.

### Claim 5 (depends on 4)

The method of claim 4, wherein the object of the location visit class is specified in a class declaration to conform to a secure coding protocol and a copying protocol, each of the secure coding protocol and copying protocol defining a manner that the object sends a message to another object.

### Claim 6 (depends on 1)

The method of claim 1, wherein each of the first instance function and the second instance function is an asynchronous function that, once called, performs their respective operations without requiring a caller to wait for a result before performing other actions.

### Claim 7 (depends on 1)

The method of claim 1, wherein each of the first instance function and the second instance function is associated with a compiler hint in the API, the compiler hint indicating a compatible version of an operating system for the API.

### Claim 8 (depends on 1)

The method of claim 1, wherein the trigger event includes a user input, a timeout event, or an interruption event.

### Claim 9 (depends on 1)

The method of claim 1, wherein the API is defined in ObjectiveC programming language.

### Claim 10 (depends on 1)

The method of claim 1, wherein:
the location consumer system is significant location determination engine for determining location coordinates of the significant location and a size of the significant location using the length of time and the sets of geographic coordinates in the recorded visits.

### Claim 11 (depends on 1)

The method of claim 1, wherein:
the first instance function is declared in the API as having a name of startMonitoringVisits and a void type, and
the second instance function is declared in the API as having a name of stopMonitoringVisits and a void type, each name indicative of underlying operations of the respective function to a developer programming using the API.

### Claim 12

A non-transitory computer-readable medium storing instructions that, upon execution by a mobile device, cause the mobile device to perform operations comprising:
receiving an input, the input requesting the mobile device to monitor locations of the mobile device to determine length of time the mobile device has dwelled at a location;
responsive to the input, monitoring the locations through an application programming interface (API), the monitoring including calling a first instance function of an object of a location manager class, the first instance function being declared in the API and being operable to perform actions of recording detected visits of the mobile device at the locations, each detected visit being associated with a respective set of geographic coordinates of a location that the mobile device visited;
responsive to a trigger event, stopping the monitoring, wherein stopping the monitoring comprises calling a second instance function of the object, the second instance function being declared in the API and being operable to stop the object of the location manager class to record the visits; and
providing the recorded visits to a location consumer system.

### Claim 13 (depends on 12)

The non-transitory computer-readable medium of claim 12, wherein recording the detected visits comprises at least one of:
storing the detected visits as data objects on a storage device; or
sending a visit callback to a prespecified function to notify the prespecified function of an aspect of a detected visit.

### Claim 14 (depends on 13)

The non-transitory computer-readable medium of claim 13, wherein the aspect of the detected visit includes at least one of an arrival of the mobile device at a location or a departure of the mobile device from the location.

### Claim 15 (depends on 12)

The non-transitory computer-readable medium of claim 12, wherein each detected visit is recorded as an object of a location visit class, the object having an arrival date attribute storing a date the visit began, a departure date attribute storing a date the visit ended, a coordinate attribute storing geographic coordinates of a center of a region visited by the mobile device, and a horizontal accuracy attribute storing an estimated radius of the region visited.

### Claim 16 (depends on 15)

The non-transitory computer-readable medium of claim 15, wherein the object of the location visit class is specified in a class declaration to conform to a secure coding protocol and a copying protocol, each of the secure coding protocol and copying protocol defining a manner that the object sends a message to another object.

### Claim 17 (depends on 12)

The non-transitory computer-readable medium of claim 12, wherein each of the first instance function and the second instance function is an asynchronous function that, once called, performs their respective operations without requiring a caller to wait for a result before performing other actions.

### Claim 18 (depends on 12)

The non-transitory computer-readable medium of claim 12, wherein each of the first instance function and the second instance function is associated with a compiler hint in the API, the compiler hint indicating a compatible version of an operating system for the API.

### Claim 19 (depends on 12)

The non-transitory computer-readable medium of claim 12, wherein the trigger event includes a user input, a timeout event, or an interruption event.

### Claim 20 (depends on 12)

The non-transitory computer-readable medium of claim 12, wherein the API is defined in ObjectiveC programming language.

### Claim 21 (depends on 12)

The non-transitory computer-readable medium of claim 12, wherein:
the location consumer system is significant location determination engine for determining location coordinates of the significant location and a size of the significant location using the length of time and the sets of geographic coordinates in the recorded visits.

### Claim 22 (depends on 12)

The non-transitory computer-readable medium of claim 12, wherein:
the first instance function is declared in the API as having a name of startMonitoringVisits and a void type, and
the second instance function is declared in the API as having a name of stopMonitoringVisits and a void type, each name indicative of underlying operations of the respective function to a developer programming using the API.

### Claim 23

A mobile device, comprising:
one or more processors; and
a nontransitory computer readable medium storing instructions that, upon execution by one or more computer processors, cause the one or more computer processors to perform operations comprising:
receiving an input, the input requesting the mobile device to monitor locations of the mobile device to determine length of time the mobile device has dwelled at a location;
responsive to the input, monitoring the locations through an application programming interface (API), the monitoring including calling a first instance function of an object of a location manager class, the first instance function being declared in the API and being operable to perform actions of recording detected visits of the mobile device at the locations, each detected visit being associated with a respective set of geographic coordinates of a location that the mobile device visited;
responsive to a trigger event, stopping the monitoring, wherein stopping the monitoring comprises calling a second instance function of the object, the second instance function being declared in the API and being operable to stop the object of the location manager class to record the visits; and
providing the recorded visits to a location consumer system.

### Claim 24 (depends on 23)

The mobile device of claim 23, wherein recording the detected visits comprises at least one of:
storing the detected visits as data objects on a storage device; or
sending a visit callback to a prespecified function to notify the prespecified function of an aspect of a detected visit.

### Claim 25 (depends on 24)

The mobile device of claim 24, wherein the aspect of the detected visit includes at least one of an arrival of the mobile device at a location or a departure of the mobile device from the location.

### Claim 26 (depends on 23)

The mobile device of claim 23, wherein each detected visit is recorded as an object of a location visit class, the object having an arrival date attribute storing a date the visit began, a departure date attribute storing a date the visit ended, a coordinate attribute storing geographic coordinates of a center of a region visited by the mobile device, and a horizontal accuracy attribute storing an estimated radius of the region visited.

### Claim 27 (depends on 26)

The mobile device of claim 26, wherein the object of the location visit class is specified in a class declaration to conform to a secure coding protocol and a copying protocol, each of the secure coding protocol and copying protocol defining a manner that the object sends a message to another object.

### Claim 28 (depends on 23)

The mobile device of claim 23, wherein each of the first instance function and the second instance function is an asynchronous function that, once called, performs their respective operations without requiring a caller to wait for a result before performing other actions.

### Claim 29 (depends on 23)

The mobile device of claim 23, wherein each of the first instance function and the second instance function is associated with a compiler hint in the API, the compiler hint indicating a compatible version of an operating system for the API.

### Claim 30 (depends on 23)

The mobile device of claim 23, wherein the trigger event includes a user input, a timeout event, or an interruption event.

### Claim 31 (depends on 23)

The mobile device of claim 23, wherein the API is defined in ObjectiveC programming language.

### Claim 32 (depends on 23)

The mobile device of claim 23, wherein:
the location consumer system is significant location determination engine for determining location coordinates of the significant location and a size of the significant location using the length of time and the sets of geographic coordinates in the recorded visits.

### Claim 33 (depends on 23)

The mobile device of claim 23, wherein:
the first instance function is declared in the API as having a name of startMonitoringVisits and a void type, and
the second instance function is declared in the API as having a name of stopMonitoringVisits and a void type, each name indicative of underlying operations of the respective function to a developer programming using the API.
