IP Library Granted Patent US 10,009,868
Granted Patent B1
US 10,009,868 · App. 14/793,163 · Granted Jun 26, 2018

Proximity services

Inventors: Benjamin Reyes (Great Falls, VA); Hugh Owen (Vienna, VA); Jose Nocedal de la Garza (Vienna, VA)
Assignee: MicroStrategy Incorporated
H04W64/00G06Q30/0261H04W4/02H04W72/048
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 10,009,868
App. No.
14/793,163
Granted
Jun 26, 2018
Kind
B1
Abstract

Method, systems, and computer-readable media for receiving, from an application instance operating on a client device, information that indicates a client device identifier, a wireless proximity beacon identifier, and a proximity of the identified client device to the identified wireless proximity beacon. From the received information, a determination is made whether the proximity of the identified client device to the identified wireless proximity beacon satisfies a threshold proximity. Based at least on the determination, an action is determined that the application instance operating on the identified client device is permitted to perform while the proximity of the identified client device to the identified wireless proximity beacon satisfies the threshold proximity. Information is transmitted to the identified client device that enables the application instance operating on the identified client device to perform the action.

Claims (78)

1. A computer-implemented method comprising:

receiving, from an application instance operating on a client device and at each of multiple times, information indicating (i) a client identifier associated with the client device, (ii) a beacon identifier associated with a wireless proximity beacon that is associated with a physical location within a space, and (iii) a proximity of the client device to the wireless proximity beacon;

determining a path of movement of the client device within the space based at least on the information received at each of the multiple times indicating (i) the client identifier associated with the client device, (ii) a beacon identifier associated with a wireless proximity beacon that is associated with a physical location within the space, and (iii) a proximity of the client device to the wireless proximity beacon;

determining, based at least on the client identifier associated with the client device, a credential associated with a user of the client device;

determining an action authorized by the credential that the application instance operating on the client device is permitted to perform when a path of movement of the client device within the space is determined to satisfy a predetermined pattern of movement that is associated with performing the action authorized by the credential;

granting permission to the client device to perform the action authorized by the credential based at least on determining that the path of movement of the client device within the space satisfies the predetermined pattern of movement that is associated with performing the action; and

based at least on granting the permission to the client device to perform the action authorized by the credential, transmitting, to the client device, information that enables the application instance operating on the client device to provide, for output at a user interface of the client device, a representation of the credential to perform the action authorized by the credential.

2. The computer-implemented method of claim 1 , wherein determining the action authorized by the credential that the application instance operating on the client device is permitted to perform while the client device is located at the estimated physical location of the client device within the space comprises:

determining an estimated physical location of the client device within the space based at least on (i) a physical location within the space that is associated with a proximity beacon associated with a beacon identifier received at a most recent of the multiple times, and (ii) a proximity of the client device to the wireless proximity beacon associated with the beacon identifier received at the most recent of the multiple times,

determining an action authorized by the credential that the application instance operating on the client is permitted to perform while the estimated physical location of the client device within the space corresponds to a particular region within the space, and

transmitting, to the client device, information that enables the application instance operating on the client device to provide, for output at the user interface of the client device, the representation of the credential to perform the action authorized by the credential comprises transmitting, to the client device, information that enables the application instance operating on the client device to provide, for output at the user interface of the client device, the representation of the credential to perform the action authorized by the credential that the application instance operating on the client device is permitted to perform while the estimated physical location of the client device within the space corresponds to the particular region within the space.

3. The computer-implemented method of claim 2 , comprising:

determining that the estimated physical location of the client device within the space is not identified as a valid physical location for a client device within the space; and

updating the estimated physical location of the client device within the space to a physical location within the space that is (i) identified as a valid physical location of a client device within the space, and (ii) is nearest to the estimated physical location of the client device within the space among one or more physical locations within the space that are identified as valid physical locations for a client device within the space.

4. The computer-implemented method of claim 1 , comprising:

receiving, from the application instance operating on the client device and at each of the multiple times, information indicating (i) one or more other beacon identifiers that are each associated with another wireless proximity beacon that is associated with a physical location with the space, and (ii) one or more corresponding proximities of the client device to each of the one or more other wireless proximity beacons;

determining, for each of the multiple times, an estimated physical location of the client device within the space based on performing multilateration using at least the information received at a particular time of the multiple times indicating (i) a physical location within the space associated with a wireless proximity beacon, (ii) a proximity of the client device to the wireless proximity beacon, (iii) physical locations within the space associated with each of one or more other wireless proximity beacons, and (iv) one or more corresponding proximities of the client device to each of the one or more other wireless proximity beacons; and

determining the path of movement of the client device within the space based at least on the estimated physical locations of the client device within the space at each of the multiple times.

5. The computer-implemented method of claim 1 , wherein receiving information indicating a proximity of the client device to a wireless proximity beacon comprises:

receiving information indicating a strength of a wireless signal emitted by the wireless proximity beacon detected by the client device; and

estimating the proximity of the client device to the wireless proximity beacon based at least on the information indicating the strength of the wireless signal emitted by the wireless proximity beacon detected by the client device.

6. The computer-implemented method of claim 1 , comprising:

receiving, from a second application instance operating on a second client device that is associated with the client device, information indicating (i) a second client identifier associated with the second client device, (ii) a particular beacon identifier associated with a particular wireless proximity beacon that is associated with a particular physical location within the space, and (iii) a proximity of the second client device to the particular wireless proximity beacon;

determining, based at least on (i) the physical location within the space associated with the particular wireless proximity beacon, and (ii) the proximity of the second client device to the particular wireless proximity beacon, an estimated physical location of the second client device within the space;

granting second permission to the client device to perform the action authorized by the credential based at least on the estimated physical location of the second client device within the space; and

transmitting, to the client device, the information that enables the application instance operating on the client device to provide, for output at the user interface of the client device, the representation of the credential to perform the action authorized by the credential based at least on (i) granting the permission to the client device to the client device to perform the action authorized by the credential based at least on the determining that the path of movement of the client device within the space satisfies the predetermined pattern of movement that is associated with performing the action, and (ii) granting the second permission to the client device to perform the action authorized by the credential based at least on the estimated physical location of the second client device within the space.

7. The computer-implemented method of claim 1 , comprising:

determining a document that the client device is authorized by the credential to provide for output at the user interface of the client device when a path of the client device is determined to satisfy a particular predetermined pattern of movement;

granting permission to the client device to provide the document for output at the user interface of the client device based at least on determining that the path of movement of the client device within the space satisfies the particular predetermined pattern of movement that is associated with providing the document for output at the user interface of the client device; and

based at least on granting the permission to the client device to provide the document for output at the user interface of the client device, transmitting, to the client device, information that enables the application instance operating on the client device to provide the document for output at the user interface of the client device.

8. The computer-implemented method of claim 1 , comprising:

determining a notification that the client device is authorized by the credential to provide for output at the user interface of the client device when a path of the client device is determined to satisfy a particular predetermined pattern of movement;

granting permission to the client device to provide the notification for output at the user interface of the client device based at least on determining that the path of movement of the client device within the space satisfies the particular predetermined pattern of movement that is associated with providing the notification for output at the user interface of the client device; and

based at least on granting the permission to the client device to provide the notification for output at the user interface of the client device, transmitting, to the client device, information that enables the application instance operating on the client device to provide the notification for output at the user interface of the client device.

9. The computer-implemented method of claim 1 , comprising:

determining particular information that the client device is authorized by the credential to provide for output at the user interface of the client device when a path of the client device is determined to satisfy a particular predetermined pattern of movement;

granting permission to the client device to provide the particular information for output at the user interface of the client device based at least on determining that the path of movement of the client device within the space satisfies the particular predetermined pattern of movement that is associated with providing the particular information for output at the user interface of the client device; and

based at least on granting the permission to the client device to provide the particular information for output at the user interface of the client device, transmitting, to the client device, information that enables the application instance operating on the client device to provide the particular information for output at the user interface of the client device.

10. The computer-implemented method of claim 1 , wherein:

determining the action authorized by the credential that the application instance operating on the client device is permitted to perform when a path of the client device is determined to satisfy the predetermined pattern of movement that is associated with performing the action authorized by the credential comprises determining a secure location within the space that the credential authorizes a user of the client device to access; and

transmitting, to the client device, information that enables the application instance operating on the client device to provide, for output at the user interface of the client device, the representation of the credential to perform the action authorized by the credential comprises transmitting, to the client device, information that enables the application instance operating on the client device to provide, for output at the user interface of the client device, the representation of the credential to perform operations related to providing the user of the client device with access to the secure location within the space.

11. The computer-implemented method of claim 1 , comprising:

identifying an advertisement that the client device is authorized by the credential to provide for output at the user interface of the client device when a path of the client device is determined to satisfy a particular predetermined pattern of movement;

granting permission to the client device to provide the advertisement for output at the user interface of the client device based at least on determining that the path of movement of the client device within the space satisfies the particular predetermined pattern of movement that is associated with providing the advertisement for output at the user interface of the client device; and

based at least on granting the permission to the client device to provide the advertisement for output at the user interface of the client device, transmitting, to the client device, information that enables the application instance operating on the client device to provide the advertisement for output at the user interface of the client device.

12. The computer-implemented method of claim 1 , comprising:

receiving, from one or more application instances each operating on a corresponding different client device, information indicating (i) a client identifier associated with the client device, (ii) a beacon identifier associated with a wireless proximity beacon that is associated with a physical location within the space, and (iii) a proximity of the client device to the wireless proximity beacon; and

determining, based on the information received from each of the one or more application instances, a number of client devices located in each of one or more regions that are defined within the space.

13. The computer-implemented method of claim 12 , comprising:

determining, based at least on the number of client devices located in each of the one or more regions that are defined within the space, one or more population densities that indicate the number of client devices per unit area for a corresponding one or more of the regions that are defined within the space.

14. The computer-implemented method of claim 1 , comprising:

determining an estimated physical location of the client device within the space based at least on (i) a physical location within the space that is associated with a proximity beacon associated with a beacon identifier received at a most recent of the multiple times, and (ii) a proximity of the client device to the wireless proximity beacon associated with the beacon identifier received at the most recent of the multiple times;

determining that the application instance operating on the client device is associated with a second application instance operating on a second client device; and

transmitting, to the second client device, information that indicates the estimated physical location of the client device within the space.

15. The computer-implemented method of claim 1 , wherein determining the action authorized by the credential that the application instance operating on the client device is permitted to perform when a path of the client device is determined to satisfy a predetermined pattern of movement that is associated with performing the action authorized by the credential comprises:

identifying one or more candidate actions authorized by the credential that the application instance operating on the client device is permitted to perform when a path of the client device is determined to satisfy a predetermined pattern of movement that is associated with performing the action authorized by the credential;

determining, for each of the one or more candidate actions, a relevance score for the candidate action; and

selecting, as the action, the candidate action having the relevance score that indicates the strongest relevance of the candidate action.

16. The computer-implemented method of claim 1 , wherein the representation of the credential is one of a textual representation of the credential, a quick response (QR) code, or a barcode.

17. The computer-implemented method of claim 1 , wherein determining the path of movement of the client device within the space based at least on the information received at each of the multiple times indicating (i) the client identifier associated with the client device, (ii) a beacon identifier associated with a wireless proximity beacon that is associated with a physical location within the space, and (iii) a proximity of the client device to the wireless proximity beacon comprises:

determining, for each of the multiple times, an estimated physical location of the client device within the space using at least the information received at a particular time of the multiple times indicating, (i) a physical location within the space associated with a wireless proximity beacon, and (ii) a proximity of the client device to the wireless proximity beacon; and

determining the path of movement of the client device within the space based at least on the estimated physical of the client device within the space at each of the multiple times.

18. A system comprising:

one or more processing elements; and

non-transitory computer-readable storage media storing instructions that, when executed by the one or more processing elements, cause the system to:

receive, from an application instance operating on a client device and at each of multiple times, information indicating (i) a client identifier associated with the client device, (ii) a beacon identifier associated with a wireless proximity beacon that is associated with a physical location within a space, and (iii) a proximity of the client device to the wireless proximity beacon;

determine a path of movement of the client device within the space based at least on the information received at each of the multiple times indicating (i) the client identifier associated with the client device, (ii) a beacon identifier associated with a wireless proximity beacon that is associated with a physical location within the space, and (iii) a proximity of the client device to the wireless proximity beacon;

determine, based at least on the client identifier associated with the client device, a credential associated with a user of the client device;

determine an action authorized by the credential that the application instance operating on the client device is permitted to perform when a path of the client device is determined to satisfy a predetermined pattern of movement that is associated with performing the action authorized by the credential;

grant permission to the client device to perform the action authorized by the credential based at least on determining that the path of movement of the client device within the space satisfies the predetermined pattern of movement that is associated with performing the action; and

based at least on granting the permission to the client device to perform the action authorized by the credential, transmit, to the client device, information that enables the application instance operating on the client device to provide, for output at a user interface of the client device, a representation of the credential to perform the action authorized by the credential.

19. At least one non-transitory computer-readable storage medium storing executable instructions that, when executed by at least one processor, cause the at least one processor to perform operations comprising:

receiving, from an application instance operating on a client device and at each of multiple times, information indicating (i) a client identifier associated with the client device, (ii) a beacon identifier associated with a wireless proximity beacon that is associated with a physical location within a space, and (iii) a proximity of the client device to the wireless proximity beacon;

determining a path of movement of the client device within the space based at least on the information received at each of the multiple times indicating (i) the client identifier associated with the client device, (ii) a beacon identifier associated with a wireless proximity beacon that is associated with a physical location within the space, and (iii) a proximity of the client device to the wireless proximity beacon;

determining, based at least on the client identifier associated with the client device, a credential associated with a user of the client device;

determining an action authorized by the credential that the application instance operating on the client device is permitted to perform when a path of the client device is determined to satisfy a predetermined pattern of movement that is associated with performing the action authorized by the credential;

granting permission to the client device to perform the action authorized by the credential based at least on determining that the path of movement of the client device within the space satisfies the predetermined pattern of movement that is associated with performing the action; and

based at least on granting the permission to the client device to perform the action authorized by the credential, transmitting, to the client device, information that enables the application instance operating on the client device to provide, for output at a user interface of the client device, a representation of the credential to perform the action authorized by the credential.

Assignments (4)
CHANGE OF NAME Recorded Sep 19, 2025
From: MICROSTRATEGY INCORPORATED
To: STRATEGY INC
Reel/Frame 072909/0870 →
TERMINATION AND RELEASE OF PATENT SECURITY AGREEMENT AT REEL/FRAME: 056647/0687, REEL/FRAME: 057435/0023, REEL/FRAME: 059256/0247, REEL/FRAME: 062794/0255 AND REEL/FRAME: 066663/0713 Recorded Sep 26, 2024
From: U.S. BANK TRUST COMPANY, NATIONAL ASSOCIATION, AS SUCCESSOR IN INTEREST TO U.S. BANK NATIONAL ASSOCIATION, IN ITS CAPACITY AS COLLATERAL AGENT FOR THE SECURED PARTIES
To: MICROSTRATEGY INCORPORATED; MICROSTRATEGY SERVICES CORPORATION
Reel/Frame 069065/0539 →
SECURITY INTEREST Recorded Jun 22, 2021
From: MICROSTRATEGY INCORPORATED
To: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 056647/0687 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 24, 2018
From: REYES, BENJAMIN; OWEN, HUGH; DE LA GARZA, JOSE NOCEDAL
To: MICROSTRATEGY INCORPORATED
Reel/Frame 045894/0976 →
Continuity (1)
Provisional Application 62021564 · Jul 7, 2014
Cited By (18)
US 12,208,171 US 12,235,860 US 12,243,079 US 12,243,381 US 12,254,738 US 12,265,994 US 12,265,995 US 12,265,996 US 12,277,580 US 12,277,581 US 12,311,275 US 12,389,224 US 12,450,975 US 12,462,279 US 12,475,201 US 12,548,399 US 12,651,509 US 12,701,387