IP Library › Granted Patent US 11,848,767
Granted Patent B2
US 11,848,767 · App. 17/722,296 · Granted Dec 19, 2023

Privacy-preserving electronic publication and subscription systems

Inventors: Nicholas J. Circosta (Mountain View, CA); Elliot T. Garner (Cupertino, CA); Aniket A. Zamwar (Milpitas, CA); Yevgeni Pekurovsky (Cupertino, CA); Jared A. Crawford (Apex, NC); Frederic Jacobs (St. Sulpice, CH); Justin S Titi (San Jose, CA); Matthew E. Shepherd (Mountain View, CA); Jose A. Lozano Hinojosa (Santa Clara, CA); Sean Geiger (San Francisco, CA); Ahmed M. Bashir (Saratoga, CA)
Assignee: Apple Inc.
H04L67/55H04L9/3297H04L63/101H04L67/63
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 11,848,767
App. No.
17/722,296
Granted
Dec 19, 2023
Kind
B2
Abstract

Aspects of the subject technology provide for privacy-preserving electronic publication and subscription. A publisher device may establish a publication channel with a publication server and receive a channel identifier and a channel ownership token for the channel. The publisher device may provide the channel identifier and a key for the publication channel to a subscriber device. The publisher device may publish data encrypted using the key to the publication server, the subscriber device may obtain the encrypted published data from the server using the channel identifier, and may decrypt the published data using the key obtained from the publisher device. The published data may include status information for a user of the publisher device, in some examples.

Claims (73)

1. A method, comprising:

establishing, by a server system, a connection to a client device;

receiving a subscription filter at the server system from the client device upon establishing the connection;

identifying, by the server system using the subscription filter, a set of notifications;

providing the set of notifications from the server system to the client device;

deleting, upon termination of the connection to the client device, the subscription filter from the server system; and

after the termination of the connection between the client device and the server system:

establishing a new connection between the server system and the client device;

receiving a new version of the subscription filter at the server system from the client device upon establishing the new connection, the new version of the subscription filter including a time stamp corresponding to a time of a last notification provided to the client device while the client device was previously connected to the server system;

identifying, by the server system using the new version of the subscription filter and the time stamp, a new set of notifications received at the server system between a current time and the time of the last notification corresponding to time stamp; and

providing the new set of notifications from the server system to the client device.

2. The method of claim 1 , further comprising receiving, at the server system, a plurality of notifications from a plurality of publishers, wherein the subscription filter identifies one or more channels corresponding to one or more of the plurality of publishers, and wherein identifying the set of notifications includes identifying a subset of the plurality of notifications that have been received by the server system over the one or more channels.

3. The method of claim 1 , further comprising, while the connection between the server system and the client device is active:

receiving an update to the subscription filter at the server system from the client device;

receiving additional notifications from a plurality of publishers;

identifying a subset of the additional notifications received from one or more of the plurality of publishers indicated in the update to the subscription filter; and

providing the subset of the additional notifications from the server system to the client device.

4. The method of claim 1 , further comprising receiving, at the server system, a plurality of notifications from a plurality of publishers, wherein each of the plurality of notifications is associated with one of the plurality of publishers and one or more categories, and wherein the subscription filter identifies at least one of the plurality of publishers and at least one category associated with the at least one of the plurality of publishers.

5. The method of claim 1 , wherein the server system comprises a primary server and an edge server, the method further comprising:

receiving, by the primary server, a plurality of notifications from a plurality of publishers; and

sending a subset of the plurality of notifications to the edge server, the subset based on multiple subscription filters received by the edge server from multiple client devices that are connected to the edge server.

6. The method of claim 5 , wherein sending the subset of the plurality of notifications to the edge server comprises sending a particular notification of the plurality of notifications to the edge server based on a determination, by the primary server, that at least one of the multiple client devices connected to the edge server is subscribed to a channel corresponding to the particular notification.

7. The method of claim 1 , wherein one of the set of notifications is indicated by a publisher as a notification for a device type, and wherein identifying the set of notifications using the subscription filter includes:

detecting a type of the client device upon establishment of the connection between the server system and the client device; and

identifying the one of the set of notifications using the subscription filter and based on a determination that the type of the client device corresponds to the device type indicated by the publisher for the one of the set of notifications.

8. The method of claim 1 , wherein the subscription filter includes a time stamp for each of one or more notification categories, and wherein identifying the set of notifications using the subscription filter comprises identifying notifications received at the server system for each of the one or more notification categories since a time corresponding to the time stamp for that category in the subscription filter.

9. A server system, comprising:

a memory; and

one or more processors configured to:

establish a connection to a client device;

receive a subscription filter from the client device upon establishing the connection;

identify, using the subscription filter, a set of notifications;

provide the set of notifications to the client device; and

delete, in response to termination of the connection to the client device, the subscription filter from the server system; and

after the termination of the connection between the client device and the server system:

establish a new connection between the server system and the client device;

receive a new version of the subscription filter at the server system from the client device upon establishing the new connection, the new version of the subscription filter including a time stamp corresponding to a time of a last notification provided to the client device while the client device was previously connected to the server system;

identify, by the server system using the new version of the subscription filter and the time stamp, a new set of notifications received at the server system between a current time and the time of the last notification corresponding to time stamp; and

provide the new set of notifications from the server system to the client device.

10. The server system of claim 9 , wherein the one or more processors are further configured to receive, at the server system, a plurality of notifications from a plurality of publishers, wherein the subscription filter identifies one or more channels corresponding to one or more of the plurality of publishers, and to identify the set of notifications by identifying a subset of the plurality of notifications that have been received by the server system over the one or more channels.

11. The server system of claim 9 , wherein the one or more processors are further configured to, while the connection between the server system and the client device is active:

receive an update to the subscription filter from the client device;

receive additional notifications from a plurality of publishers;

identify a subset of the additional notifications received from one or more of the plurality of publishers indicated in the update to the subscription filter; and

provide the subset of the additional notifications to the client device.

12. The server system of claim 9 , wherein the one or more processors are further configured to receive, at the server system, a plurality of notifications from a plurality of publishers, wherein each of the plurality of notifications is associated with one of the plurality of publishers and one or more categories, and wherein the subscription filter identifies at least one of the plurality of publishers and at least one category associated with the at least one of the plurality of publishers.

13. The server system of claim 9 , wherein the server system comprises a primary server and an edge server, wherein the primary server is configured to:

receive a plurality of notifications from a plurality of publishers; and

send a subset of the plurality of notifications to the edge server, the subset based on multiple subscription filters received by the edge server from multiple client devices that are connected to the edge server.

14. The server system of claim 13 , wherein the primary server is configured to send the subset of the plurality of notifications to the edge server by sending a particular notification of the plurality of notifications to the edge server based on a determination, by the primary server, that at least one of the multiple client devices connected to the edge server is subscribed to a channel corresponding to the particular notification.

15. The server system of claim 9 , wherein one of the set of notifications is indicated by a publisher as a notification for a device type, and wherein the one or more processors are configured to identify the set of notifications using the subscription filter by:

detecting a type of the client device upon establishment of the connection between the server system and the client device; and

identifying the one of the set of notifications using the subscription filter and based on a determination that the type of the client device corresponds to the device type indicated by the publisher for the one of the set of notifications.

16. The server system of claim 9 , wherein the subscription filter includes a time stamp for each of one or more notification categories, and wherein the one or more processors are configured to identify the set of notifications using the subscription filter by identifying notifications received at the server system for each of the one or more notification categories since a time corresponding to the time stamp for that category in the subscription filter.

17. A non-transitory computer-readable medium is provided that includes instructions, which when executed by at least one computing device, cause the at least one computing device to perform operations comprising:

establishing, by a server system, a connection to a client device;

receiving a subscription filter at the server system from the client device upon establishing the connection;

identifying, by the server system using the subscription filter, a set of notifications;

providing the set of notifications from the server system to the client device; and

deleting, in response to termination of the connection to the client device, the subscription filter from the server system; and

after the termination of the connection between the client device and the server system:

establishing a new connection between the server system and the client device;

receiving a new version of the subscription filter at the server system from the client device upon establishing the new connection, the new version of the subscription filter including a time stamp corresponding to a time of a last notification provided to the client device while the client device was previously connected to the server system;

identifying, by the server system using the new version of the subscription filter and the time stamp, a new set of notifications received at the server system between a current time and the time of the last notification corresponding to time stamp; and

providing the new set of notifications from the server system to the client device.

18. The non-transitory computer-readable medium of claim 17 , wherein the operations further comprise:

receiving, at the server system, a plurality of notifications from a plurality of publishers, wherein the subscription filter identifies one or more channels corresponding to one or more of the plurality of publishers, and wherein identifying the set of notifications includes identifying a subset of the plurality of notifications that have been received by the server system over the one or more channels.

19. The non-transitory computer-readable medium of claim 17 , wherein the operations further comprise:

while the connection between the server system and the client device is active:

receiving an update to the subscription filter at the server system from the client device;

receiving additional notifications from a plurality of publishers;

identifying a subset of the additional notifications received from one or more of the plurality of publishers indicated in the update to the subscription filter; and

providing the subset of the additional notifications from the server system to the client device.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 4, 2022
From: CIRCOSTA, NICHOLAS J.; GEIGER, SEAN; PEKUROVSKY, YEVGENI; JACOBS, FREDERIC; CRAWFORD, JARED A.; GARNER, ELLIOT T.; LOZANO HINOJOSA, JOSE A.; ZAMWAR, ANIKET A.; SHEPHERD, MATTHEW E.; TITI, JUSTIN S.; BASHIR, AHMED M.
To: APPLE INC.
Reel/Frame 059816/0026 →
Continuity (2)
Provisional Application 63195670 · Jun 1, 2021
Related Publication 20220385738A1 · Dec 1, 2022