IP Library Granted Patent US 8,996,889
Granted Patent B2
US 8,996,889 · App. 13/853,315 · Granted Mar 31, 2015

Portable computing device with methodologies for client-side analytic data collection

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 8,996,889
App. No.
13/853,315
Granted
Mar 31, 2015
Kind
B2
Abstract

A portable computing device with methodologies for client-side analytic data collection are described. In one embodiment, for example, a method performed by a portable computing device having volatile and non-volatile memory includes obtaining a plurality of events to be logged; serializing the events to be logged; storing the serialized events in the volatile memory; encrypting the serialized events to produce serialized and encrypted events; storing the serialized and encrypted events in the non-volatile memory; decrypting the serialized and encrypted events to produce serialized and decrypted events; storing the serialized and decrypted events in the volatile memory; compressing the serialized and decrypted events to produce compressed, serialized, and decrypted events; encrypting the compressed, serialized, and decrypted events to produce encrypted, compressed, and serialized events and storing the encrypted, compressed, and serialized events in the non-volatile memory.

Claims (89)

1. A computer-implemented method, comprising:

at a portable computing device having volatile memory and non-volatile memory:

(a) obtaining, from a mobile application running on the portable computing device, a plurality of events to be logged;

(b) serializing the plurality of events to be logged to produce a serialized form of the events;

(c) storing the serialized form of the events in volatile memory of the device;

(d) encrypting the serialized form of the events to produce a serialized and encrypted form of the events;

(e) storing the serialized and encrypted form of the events in non-volatile memory of the device;

(f) decrypting the serialized and encrypted form of the events to produce a serialized and decrypted form of the events;

(g) storing the serialized and decrypted form of the events in volatile memory of the device;

(h) compressing the serialized and decrypted form of the events to produce a compressed, serialized, and decrypted form of the events;

(i) encrypting the compressed, serialized, and decrypted form of the events to produce an encrypted, compressed, and serialized form of the events and storing the encrypted, compressed, and serialized form of the events in non-volatile memory of the device.

2. The method of claim 1 , further comprising:

uploading the encrypted, compressed, and serialized form of the events to a server.

3. The method of claim 1 , wherein each obtained event is associated with a string label reflecting a type of the event.

4. The method of claim 1 , wherein each obtained event is associated with a timestamp reflecting a time since the device last booted.

5. The method of claim 1 , wherein the plurality of events to be logged is a first plurality of events; and wherein the method further comprises:

prior to obtaining the first plurality of events, obtaining a second plurality of events to be logged;

determining whether the second plurality of events should be summarized; and

summarizing the second plurality of events to produce the first plurality of events;

wherein the first plurality of events consists of a fewer number of events than the second plurality of events.

6. The method of claim 5 , wherein determining whether the second plurality of events should be summarized includes counting the second plurality of events by event type.

7. The method of claim 1 , wherein encrypting the compressed, serialized, and decrypted form of the events includes encrypting the compressed, serialized, and decrypted form of the events using a cryptographic stream cipher.

8. The method of claim 1 , wherein the serialized form of the events is a JavaScript Object Notation (JSON) form.

9. The method of claim 1 , wherein steps (a), (b), (c), (d), (e) are performed in one or more threads or processes that are separate from one or more threads or processes that perform steps (f), (g), (h), and (i).

10. The method of claim 1 , wherein the steps (a)-(i) of the method of claim 1 are performed by an application executing on the device.

11. The method of claim 1 , further comprising:

flushing a buffer storing the serialized form of the events in volatile memory of the device;

wherein storing the serialized and encrypted form of the events in non-volatile memory of the device is performed in response to flushing the buffer storing the serialized form of the events in volatile memory of the device.

12. The method of claim 1 , further comprising:

streaming the encrypted, compressed, and serialized form of the events from non-volatile memory of the device to produce a stream of the encrypted, compressed, and serialized events in volatile memory of the device;

decrypting the stream of the encrypted, compressed, and serialized events to produce a stream of the decrypted, compressed, and serialized events in volatile memory of the device; and

uploading the stream of the decrypted, compressed, and serialized events from volatile memory of the device to a server.

13. The method of claim 1 , wherein decrypting the serialized and encrypted form of the events and storing the serialized and decrypted form of the events in volatile memory of the device comprises:

streaming the serialized and encrypted form of the events from non-volatile memory of the device to produce a stream of the encrypted and serialized events in volatile memory of the device; and

decrypting the stream of the encrypted and serialized events to produce a stream of the serialized and decrypted events in volatile memory of the device.

14. The method of claim 13 , wherein compressing the serialized and decrypted form of the events to produce a compressed, serialized, and decrypted form of the events, encrypting the compressed, serialized, and decrypted form of the events to produce an encrypted, compressed, and serialized form of the events, and storing the encrypted, compressed, and serialized form of the events in non-volatile memory of the device comprises:

compressing the stream of the serialized and decrypted events to produce a stream of the compressed, serialized, and decrypted events in volatile memory of the device;

encrypting the stream of the compressed, serialized, and decrypted events to produce a stream of the encrypted, compressed, and serialized events; and

storing the stream of the encrypted, compressed, and serialized events in non-volatile memory of the device.

15. The method of claim 1 , wherein the plurality of events are caused by a plurality of mobile applications, that includes the mobile application, running on the portable computing device.

16. The method of claim 1 , wherein the plurality of events to be logged comprises analytic data; wherein the analytic data comprises at least one of:

analytic data reflecting a user interaction with a graphical user interface element of the mobile application;

analytic data reflecting user usage of a feature of the mobile application;

analytic data reflecting a battery level of a battery device of the portable computing device;

analytic data reflecting an error in the mobile application;

analytic data reflecting a byte-rate of data received by the mobile application from a network; or

analytic data reflecting an interaction of the mobile application with another mobile application.

17. A portable computing device comprising:

volatile memory;

non-volatile memory;

one or more processors; and

a logging module configured for:

(a) obtaining, from a mobile application running on the portable computing device, a plurality of events to be logged;

(b) serializing the plurality of events to be logged to produce a serialized form of the events;

(c) storing the serialized form of the events in the volatile memory;

(d) encrypting the serialized form of the events to produce a serialized and encrypted form of the events;

(e) storing the serialized and encrypted form of the events in the non-volatile volatile memory;

(f) decrypting the serialized and encrypted form of the events to produce a serialized and decrypted form of the events;

(g) storing the serialized and decrypted form of the events in the volatile memory;

(h) compressing the serialized and decrypted form of the events to produce a compressed, serialized, and decrypted form of the events;

(i) encrypting the compressed, serialized, and decrypted form of the events to produce an encrypted, compressed, and serialized form of the events and storing the encrypted, compressed, and serialized form of the events in the non-volatile volatile memory.

18. The device of claim 17 , wherein the logging module is further configured for:

uploading the encrypted, compressed, and serialized form of the events to a server.

19. The device of claim 17 , wherein each obtained event is associated with a string label reflecting a type of the event.

20. The device of claim 17 , wherein each obtained event is associated with a timestamp reflecting a time since the device last booted.

21. The device of claim 17 , wherein the plurality of events to be logged is a first plurality of events; and wherein the logging module is further configured for:

prior to obtaining the first plurality of events, obtaining a second plurality of events to be logged;

determining whether the second plurality of events should be summarized; and

summarizing the second plurality of events to produce the first plurality of events;

wherein the first plurality of events consists of a fewer number of events than the second plurality of events.

22. The device of claim 21 , wherein determining whether the second plurality of events should be summarized includes counting the second plurality of events by event type.

23. The device of claim 17 , wherein encrypting the compressed, serialized, and decrypted form of the events includes encrypting the compressed, serialized, and decrypted form of the events using a cryptographic stream cipher.

24. The device of claim 17 , wherein the serialized form of the events is a JavaScript Object Notation (JSON) form.

25. The device of claim 17 , wherein steps (a), (b), (c), (d), (e) are performed in one or more threads or processes that are separate from one or more threads or processes that perform steps (f), (g), (h), and (i).

26. The device of claim 17 , wherein the logging module is a component part of the mobile application.

27. The device of claim 17 , wherein the logging module is further configured for:

flushing a buffer storing the serialized form of the events in the volatile memory;

wherein storing the serialized and encrypted form of the events in the non-volatile volatile memory is performed in response to flushing the buffer storing the serialized form of the events in the volatile memory.

28. The device of claim 17 , wherein the logging module is further configured for:

streaming the encrypted, compressed, and serialized form of the events from the non-volatile volatile memory to produce a stream of the encrypted, compressed, and serialized events in the volatile memory;

decrypting the stream of the encrypted, compressed, and serialized events to produce a stream of the decrypted, compressed, and serialized events in the volatile memory; and

uploading the stream of the decrypted, compressed, and serialized events from the volatile memory to a server.

29. The device of claim 17 , wherein decrypting the serialized and encrypted form of the events and storing the serialized and decrypted form of the events in the volatile memory comprises:

streaming the serialized and encrypted form of the events from the non-volatile volatile memory to produce a stream of the encrypted and serialized events in the volatile memory; and

decrypting the stream of the encrypted and serialized events to produce a stream of the serialized and decrypted events in the volatile memory.

30. The device of claim 29 , wherein compressing the serialized and decrypted form of the events to produce a compressed, serialized, and decrypted form of the events, encrypting the compressed, serialized, and decrypted form of the events to produce an encrypted, compressed, and serialized form of the events, and storing the encrypted, compressed, and serialized form of the events in the non-volatile volatile memory comprises:

compressing the stream of the serialized and decrypted events to produce a stream of the compressed, serialized, and decrypted events in the volatile memory;

encrypting the stream of the compressed, serialized, and decrypted events to produce a stream of the encrypted, compressed, and serialized events; and

storing the stream of the encrypted, compressed, and serialized events in the non-volatile volatile memory.

Assignments (8)
RELEASE OF SECURITY INTEREST Recorded Dec 13, 2024
From: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: DROPBOX, INC.
Reel/Frame 069635/0332 →
SECURITY INTEREST Recorded Dec 12, 2024
From: DROPBOX, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 069604/0611 →
RELEASE OF SECURITY INTEREST Recorded Dec 12, 2024
From: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: DROPBOX, INC.
Reel/Frame 069613/0744 →
RELEASE OF SECURITY INTEREST Recorded Dec 11, 2024
From: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: DROPBOX, INC.
Reel/Frame 069600/0149 →
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 →
SECURITY INTEREST Recorded Mar 24, 2014
From: DROPBOX, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 032510/0890 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 29, 2013
From: CONSALUS, KYLE; SYDELL, ALEX
To: DROPBOX, INC.
Reel/Frame 030115/0265 →