Notification management keys

A notification unit with management keys synchronizes and deduplicates notifications across devices, addressing inefficiencies in managing notifications and reducing power consumption and duplicates.

WO2026135666A1PCT designated stage Publication Date: 2026-06-25GOOGLE LLC

Patent Information

Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
GOOGLE LLC
Filing Date
2024-12-17
Publication Date
2026-06-25

AI Technical Summary

Technical Problem

Existing computing devices face inefficiencies in managing notifications across multiple devices, leading to increased power consumption and duplicate notifications due to unsynchronized data and lack of effective version management.

Method used

Implementing a notification unit separate from the processing unit to manage graphical, auditory, and haptic components, using notification management keys to synchronize and deduplicate notifications, ensuring only updated versions are displayed while the processing unit operates in low-power mode.

Benefits of technology

This approach reduces power consumption and prevents duplicate notifications, enhancing user experience by maintaining synchronized notification data across devices and conserving computational resources.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure US2024060516_25062026_PF_FP_ABST
    Figure US2024060516_25062026_PF_FP_ABST
Patent Text Reader

Abstract

Techniques are described for an example computing device including a processing unit; a display device; a notification unit; and a storage device that stores instructions executable by the notification unit to: obtain a first notification with a first key; obtain a second notification with a second key, wherein the first notification and the second notification are associated with a software application executed by the computing device; determine, and based on the first key and the second key, whether the second notification is an updated version of the first notification; responsive to determining the second notification is the updated version of the first notification, output the second notification for display; and responsive to determining the second notification is not the updated version of the first notification, block the second notification from being output for display.
Need to check novelty before this filing date? Find Prior Art

Description

Docket No.: 1333-932WO01NOTIFICATION MANAGEMENT KEYSBACKGROUND

[0001] Applications or services may generate “notifications” for alerting a user to new or interesting information for a variety of reasons. For example, an application or service may generate notifications to alert the user to a new text message, a reminder, a sports score, a news headline, and the like. A user may use multiple different computing devices at the same time that are each able to output indications of notifications. For example, a user may use a smartphone, a smart watch, and computerized headphones that each be able to output indications of notifications.SUMMARY

[0002] In general, the techniques of this disclosure are directed to managing versions of notifications. A computing device may include a notification unit (e.g., a microcontroller unit, a system on a chip, an always-on-core, etc.), distinct from a processing unit (e.g., central processing unit). The notification unit may manage graphical, auditory, and haptic components and interactions displayed to and received from the user. The processing unit may manage core functionality associated with the computing device, such as processes associated executing software applications, processes associated with displaying graphical elements via a display device of the computing device, or the like. The notification unit and the processing unit may be configured to manage local notifications and / or external notifications (e.g., deduplicate local notification data and synchronized notification data received from one or more external devices) with dedicated logic for managing notification versions using notification management keys. The notification unit may receive notification data for local notifications (e.g., notifications received via an application executing at the computing device) or notification data for remote notifications (e.g., notifications received via a companion computing device in communication with the computing device). The notification unit may manage local notification data and remotely received notification data using notification management keys. The notification unit may maintain notification management keys for notifications to determine whether two notifications correspond and which of the two notifications includes the up to date data. The notification unit may determine, based on the notification management keys, whether to output a notification and which notification to output, while the processing unit may be operating in a low powerDocket No.: 1333-932WO01 mode. Additionally, or alternatively, the notification unit may update state information of notifications using the notification management keys to synchronize notification state information for the computing device and one or more companion computing devices.

[0003] In some aspects, the techniques described herein relate to a method including: obtaining, by a computing device, a first notification with a first key; obtaining, by the computing device, a second notification with a second key, wherein the first notification and the second notification are associated with a software application executed by the computing device; determining, by the computing device and based on the first key and the second key, whether the second notification is an updated version of the first notification; responsive to determining the second notification is the updated version of the first notification, outputting, by the computing device, the second notification for display; and responsive to determining the second notification is not the updated version of the first notification, blocking, by the computing device, the second notification from being output for display.

[0004] In some aspects, the techniques described herein relate to a computing device including: a memory; and one or more processors configured to: obtain a first notification with a first key; obtain a second notification with a second key, wherein the first notification and the second notification are associated with a software application executed by the computing device; determine, by the computing device and based on the first key and the second key, whether the second notification is an updated version of the first notification; responsive to determining the second notification is the updated version of the first notification, output the second notification for display; and responsive to determining the second notification is not the updated version of the first notification, block the second notification from being output for display.

[0005] In some aspects, the techniques described herein relate to a non-transitory computer- readable storage medium including instructions, that when executed by one or more processors, cause the one or more processors of a computing device to: obtain a first notification with a first key; obtain a second notification with a second key, wherein the first notification and the second notification are associated with a software application executed by the computing device; determine, by the computing device and based on the first key and the second key, whether the second notification is an updated version of the first notification; responsive to determining the second notification is the updated version of the first notification, output the second notification for display; and responsive to determining the second notification is not the updated version of the first notification, block the second notification from being output for display.Docket No.: 1333-932WO01

[0006] The details of one or more examples are set forth in the accompanying drawings and the description below. Other features, objects, and advantages of the disclosure will be apparent from the description and drawings, and from the claims.BRIEF DESCRIPTION OF DRAWINGS

[0007] FIG. 1 is a conceptual diagram illustrating an example computing system configured to manage notifications using example notification management keys, in accordance with one or more aspects of the present disclosure.

[0008] FIG. 2 is a block diagram illustrating an example computing device that manages notifications using example notification management keys, in accordance with one or more aspects of the present disclosure.

[0009] FIG. 3 is a flowchart illustrating an example operation of an example computing device posting a local notification, in accordance with one or more aspects of the present disclosure.

[0010] FIG. 4 is a block diagram illustrating a first example computing device managing local notifications and notifications received from a second example computing device in communication with the first example computing device, in accordance with one or more aspects of the present disclosure.

[0011] FIG. 5 is a block diagram illustrating a first example computing device managing notification data communicated between the first example computing device and a second example computing device, in accordance with one or more aspects of the present disclosure.

[0012] FIG. 6 is a flowchart illustrating an example operation of a first example computing device posting a notification received from a second example computing device, in accordance with one or more aspects of the present disclosure.

[0013] FIG. 7 is a flowchart illustrating an example operation of a first example computing device canceling a notification based on instructions received from a second example computing device, in accordance with one or more aspects of the present disclosure.

[0014] FIG. 8 is a flowchart illustrating an example operation of example computing devices dismissing a notification for a first example computing device and a second example computing device, in accordance with one or more aspects of the present disclosure.

[0015] FIG. 9 is a block diagram illustrating a first example computing device managing notifications received from an example network, in accordance with one or more aspects of the present disclosure.Docket No.: 1333-932WO01

[0016] FIG. 10 is a flowchart illustrating example operations performed by an example computing device that is configured to manage notifications using notification management keys, in accordance with one or more aspects of the present disclosure.DETAILED DESCRIPTION

[0017] FIG. 1 is a conceptual diagram illustrating example computing system 100 configured to manage notifications using example notification management keys 148, in accordance with one or more aspects of the present disclosure. In the example of FIG. 1, computing devices 110A-110N each represents an individual mobile or non-mobile computing device.Examples of each of computing devices 110A-110N may include a mobile phone, a tablet computer, a laptop computer, a desktop computer, a wearable device (e.g., a computerized watch, computerized eyewear, computerized headphones, computerized gloves, etc.), a virtual reality or augmented reality device, a spatial computing device, a server, a mainframe, a set-top box, a television, a home automation device or system (e.g., an intelligent thermostat or home assistant device), a gaming system, a media player, an e-book reader, a television platform, an automobile navigation or infotainment system, or any other type of mobile, non-mobile, wearable, and non-wearable computing device configured to receive, and output an indication (e.g., audible alert, visual alert, haptic alert, voice alert, or other type of indication) of, notification data.

[0018] Computing device 110A may be communicably coupled to computing devices 11 OB- 11 ON via BLUETOOTH, BLE, WI-FI, ultra-wideband (UWB), near-field communication (NFC), or any other suitable wireless communication protocol. In some examples, computing device 110A may be a wearable computing device, such as a smart watch, smart glasses, or the like. In some examples, computing devices 110B-110N may be companion computing devices, such as a smartphone, smart home assistant device, a laptop computer, or the like. In some instances, computing device 110A may communicate with computing devices 110B-110N over a network, such as the Internet.

[0019] Computing device 110, in the example of FIG. 1, may include processing unit 142, user interface component (UIC) 112, user interface (UI) module 120, notification unit 122, notification management module 124, notification management keys 148, and one or more applications 126. Processing unit 142 may implement functionality and / or execute instructions within computing device 110. For example, processing unit 142 may receive and execute instructions that provide functionality of components (e.g., software applications,Docket No.: 1333-932WO01 user interface modules, display devices, etc.) of computing device 110. Processing unit 142 may represent one or more central processing units (CPUs), graphics processing units (GPUs), tensor processing units (TPUs), Application-Specific Integrated Circuits (ASICs), or any other processor for implementing core functionality of computing device 110.

[0020] UIC 112 of computing device 110A may function as an input and / or output device for computing device 110A. UIC 112 may be implemented using various technologies. For instance, UIC 112 may function as an input device using presence-sensitive input screens, microphone technologies, infrared sensor technologies, or other input device technology for use in receiving user input. UIC 112 may function as an output device configured to present output to a user using any one or more display devices, speaker technologies, haptic feedback technologies, or other output device technology for use in outputting information to a user.

[0021] UIC 112 may detect input (e.g., touch and non-touch input) from a user of computing device 110A. UIC 112 may detect indications of input by detecting one or more gestures performed by a user (e.g., the user touching, pointing, and / or swiping at or near one or more locations of UIC 112 with a finger or a stylus pen). UIC 112 may output information to a user in the form of a user interface, which may be associated with functionality provided by computing device 110A.

[0022] UI module 120 of computing device 110A may manage user interactions with UIC 112 and other components of computing device 110A. In other words, UI module 120 may act as an intermediary between various components of computing device 110A to make determinations based on indications of user inputs detected by UIC 112 and generate output at UIC 112 in response to the user inputs. UI module 120 may receive instructions from an application, service, platform, or other module of computing device 110A to cause UIC 112 to output graphical user interfaces.

[0023] Notification unit 122 may include a system on a chip (SOC), a microcontroller unit (MCU), or other always-on-cores (AOC). Notification unit 122 may manage graphical, auditory, and haptic components and interactions displayed to and received based on user inputs associated with UIC 112. Notification unit 122 may be configured to perform notification management tasks, such as receiving and processing notification data associated with one or more applications. In other words, notification unit 122 may be a low-power, specialized unit with dedicated logic for managing notifications. Notification unit 122 may be a distinct component from processing unit 142.

[0024] Computing device 110A may execute one or more applications 126. One or more applications 126 may include computer readable instructions associated with functionality ofDocket No.: 1333-932WO01 a software application, such as a messaging application, a social media application, a health application, a gaming application, a streaming application, a camera application, a word processor, a web browser, a text application, an operating system, a distributed computing application, a graphic design application, a video editing application, a web development application, or any other type of application. In some examples, computing devices 11 OB- 11 ON communicably coupled to computing device 110A may execute corresponding companion applications associated with one or more applications 126. One or more applications 126 may exchange data or otherwise communicate with instances of corresponding companion applications using a wireless communication protocol connected computing device 110A to computing devices 110B-1 ION. For example, applications 126 may use notification unit 122 to send and / or receive notification data associated with applications 126 to and / or from computing devices 110B-1 ION.

[0025] Computing device 110A may synchronize notification data with each of computing devices 110B-1 ION and / or synchronize notification data between processing unit 142 and notification unit 122. For example, computing device 110A may collect notification data associated with applications 126 executing at computing device 110A and collect notification data from computing devices 11 OB-1 ION (e.g., companion devices) associated with companion application instances executing at computing devices 11 OB-1 ION via a communication protocol (e.g., BLE) or network (e.g., the Internet). Computing device 110A may merge notification data associated with applications 126 and notification data associated with companion application instances executing at computing devices 110A-1 ION. In some devices, the device may use a processing unit to synchronize and merge notification data. However, this may result in increased power consumption, especially in instances where the processing unit is operating in a low power mode and would have to wake up to process notification data. Computing device 110, according to the techniques described herein, may offload one or more synchronization operations associated with notification data (e.g., local notification data, external notification data, etc.) to notification unit 122 such that processing unit 142 no longer performs one or more operations associated with notification management; potentially resulting in increased power savings (e.g., reduced power consumption associated with waking up processing unit 142 to process notification data).

[0026] Some devices may update notifications to output multiple times, potentially resulting in multiple versions of the same notification being output on the same device and a bad user experience. Such devices may not synchronize notification data and / or may not consider when notification data is received, which may result in the same notifications being displayedDocket No.: 1333-932WO01 at companion devices when a user takes action on a notification using a device (e.g., dismiss, open the notification, etc.). Such devices posting duplicate notification may unnecessarily impact a power source of such computing devices such as having to wake up a processing unit to post unnecessary, duplicate notifications.

[0027] In accordance with the techniques described herein, notification management module 124 of computing device 110A may manage synchronization of notifications using notification management keys 148. Notification management keys 148 may include key data structures with field values indicating attributes of notifications. For example, notification management key 148 A may include one or more attribute fields 162 A (e.g., a field indicating an identifier for a notification, a field indicating content of a notification, a field indicating a source associated with the notification, etc.) and revision field 164A indicating a time associated with when a notification indicated in attribute fields 162A was obtained and / or state information for the notification (e.g., a dismissal state, a removal state, a read state, etc.). In some instances, notification management keys 148 may include key data structures with field values generated using standard hash functions and / or field values generated using functions for encoding timestamps, notification state information, or other attributes associated with notification data. In some examples, notification management keys 148 may include mapping data (e.g., with an arbitrary size) indicating mappings of notifications data to corresponding field values (e.g., fixed-sized values). By managing notifications based on corresponding notification management keys 148, notification management module 124 may determine updated data associated with notifications, determine whether to output a notification for display via UIC 112, and determine which notification to output, where outputting the notification may result in processing unit 142 exiting low-power mode. In this way, notification management module 124 may selectively output notifications with updated data such that duplicate or outdated notifications are blocked from being output, potentially resulting in reduced computational resource consumption (e.g., power consumption, processing cycles, memory usage, etc.) associated with waking up processing unit 142 from low-power mode and outputting an outdated or duplicate notification.

[0028] In operation, notification management module 124 may obtain a first notification with a first notification management key, where the first notification is associated with an application of one or more applications 126. For example, notification management module 124 may obtain, via a wireless communication protocol and from computing device HOB, a first notification with first notification management key 148 A including one or more attribute fields 162A (e.g., a content field associated with content of the first notification as anDocket No.: 1333-932WO01 indicator of a vector or embedding characterizing the content, a source field associated with a source of the first notification as an indicator of the source, etc.) and revision field 164A associated with when the first notification was obtained (e.g., a timestamp associated with the first notification). In some examples, notification management module 124 may obtain the first notification from an external system (e.g., the Internet, a cloud service, an application service, etc.). In such examples, notification management module 124 may generate notification management key 148 A for the first notification. For example, notification unit 122 may execute notification management module 124 to generate notification management key 148A to include one or more attribute fields 162A (e.g., values indicating a content field associated with content of the first notification, values indicating a source field associated with a source of the first notification, values indicating an identifier associated with the first notification, etc.) and revision field 164A associated with when the first notification was obtained (e.g., a value indicating a timestamp of when the first notification was obtained). Notification management module 124 may temporarily store notification data for the first notification and notification management key 148A (e.g., as cached data).

[0029] Notification management module 124 may obtain a second notification with a second notification management key, where the second notification is associated with the application of one or more applications 126 that is associated with the first notification. For example, notification management module 124 may obtain, via a wireless communication protocol and from computing device 1 ION, a second notification with notification management key 148N including one or more attribute fields 162N (e.g., a content field associated with content of the second notification as a value for an indicator of a vector or embedding characterizing the content, a second source field associated with a source of the second notification as a value for an indicator of the source) and revision field 164N associated with when the second notification was obtained (e.g., a value for an indicator of a timestamp associated with the second notification) and / or state information for the notification (e.g., a dismissal state, a removal state, a read state, etc.). In some examples, notification management module 124 may obtain the second notification from an external system (e.g., the Internet, a cloud service, an application service, etc.). In such examples, notification management module 124 may generate notification management key 148N for the second notification. For example, notification unit 122 may execute notification management module 124 to generate notification management key 148N to include one or more attribute fields 162N (e.g., a content field associated with content of the second notification, a second source field associated with a source of the second notification, an identifier associated with the secondDocket No.: 1333-932WO01 notification, etc.) and revision field 164N associated with when the second notification was obtained. Notification management module 124 may temporarily store notification data for the second notification and notification management key 148N (e.g., as cached data).

[0030] Notification management module 124 may determine whether the second notification is an updated version of the first notification. For example, notification management module 124 may compare field values of notification management key 148 A, associated with the first notification, to field values of notification management key 148N, associated with the second notification, to determine whether the second notification is an updated version of the first notification. Notification management module 124 may, for example, compare one or more attribute fields 162 A of notification management key 148 A to one or more attribute fields 162N of notification management key 148N to determine whether the first notification and the second notification correspond to each other (e.g., the first notification and the second notification are associated with the same notification identifier, the first notification and the second notification are determined to have content with a similarity that satisfies a threshold, etc.). Notification management module 124 may compare revision field 164A of notification management key 148 A to revision field 164N of notification management key 148N to determine whether the second notification may include updated data that differentiates it from the first notification. Notification management module 124 may determine the second notification is an updated version of the first notification, for example, based on revision field 164N of notification management key 148N indicating that the second notification includes updated data received after a time indicated in revision field 164A of notification management key 148A (e.g., comparing history of notifications as tracked in revision fields).

[0031] In response to notification management module 124 determining the second notification is an updated version of the first notification, computing device 110A may output the second notification for display. For example, notification unit 122 may execute notification management module 124 to receive the first notification with notification management key 148 A and the second notification with notification management key 148N while processing unit 142 is operating in low-power mode. Notification management module 124 may determine, while processing unit 142 is operating in low-power mode, that the second notification is an updated version of the first notification (e.g., the first notification is an outdated version of the second notification) based on notification management key 148 A, associated with the first notification, and notification management key 148N, associated with the second notification. Notification management module 124 may send notification data for the second notification to UI module 120 responsive to determining the second notification isDocket No.: 1333-932WO01 an updated version of the first notification. In response to processing unit 142 exiting low- power mode, processing unit 142 may execute UI module 120 to output a graphical element indicating the second notification for display via UIC 112. In this way, computing device 110 may conserve computational resources (e.g., processing cycles, power consumption, memory usage, etc.) associated with outputting outdated messages, such as the first notification in this instance.

[0032] In response to notification management module 124 determining the second notification is not an updated version of the first notification, notification management module 124 may block the second notification from being output for display. For example, computing device 110A may output a graphical element indicating the first notification for display via UIC 112. Computing device 110A, in some instances, may temporarily store notification management key 148 A for the first notification until a user operating computing device 110A performs an action associated with the first notification (e.g., dismisses the first notification, selects a graphical element indicating the first notification, etc.). After some time has elapsed, notification unit 122 may execute notification management module 124 to receive a second notification with notification management key 148N while processing unit 142 is operating in low-power mode. Notification management module 124 may determine, while processing unit 142 is operating in low-power mode, that the second notification is not an updated version of the first notification (e.g., the second notification is a duplicate of the first notification, the second notification is an outdated version of the first notification, etc.) based on notification management key 148 A, associated with the first notification, and notification management key 148N, associated with the second notification. Notification management module 124 may block the second notification from being output for display responsive to determining the second notification is not an updated version of the first notification. In some examples, notification management module 124 may delete data associated with the second notification (e.g., notification data for the second notification, notification management key 148N, etc.) responsive to determining the second notification is not the updated version of the first notification. In this way, computing device 110 may conserve computational resources (e.g., processing cycles, power consumption, memory usage, etc.) associated with waking up processing unit 142 from low-power mode to output an outdated or duplicate notification, such as the second notification in this instance.

[0033] In one example, computing device 110A may obtain a third notification with a third notification management key. For example, computing device 110 may obtain, from computing device 110C, a third notification with notification management key 148B.Docket No.: 1333-932WO01Notification management module 124 may determine, while processing unit 142 is operating in low-power mode, the third notification corresponds or is otherwise similar to a notification associated with a notification management key of notification management keys 148 (e.g., an updated version of a notification associated with notification management key 148N). For example, notification management module 124 may determine the third notification corresponds to the notification based on a comparison of corresponding notification management keys. Notification management module 124 may block the third notification from being output for display. For example, responsive to determining the third notification is not an updated version of the notification, notification management module 124 may block the third notification from being output for display via UIC 112, potentially resulting in conservation of computational resources associated with outputting an outdated, duplicate notification.

[0034] The techniques described herein may provide one or more technical advantages that realize one or more practical applications. For example, by managing one or more synchronization operations (synchronization of notification data between processing unit 142 and notification unit 122, synchronization of notification data between computing device 110A and any of computing devices 11 OB-1 ION, etc.) associated with notifications using notification unit 122, rather than processing unit 142, computing device 110A may reduce power consumption of computing device 110A, such as power consumption associated with waking up processing unit 142 to manage and output notifications. Additionally or alternatively, notification management module 124 may prevent duplicate messages from being output and synchronize notification data across computing devices 110 using notification management keys 148. For example, by determining which notification, from two notifications with similar content, has up to date data using respective notification management keys of notification management keys 148, notification management module 124 may prevent a duplicate or outdated notification from being output. By maintaining notification management keys 148 for respective notifications, notification management module 124 may synchronize user actions associated with notifications (e.g., dismissing a notification, opening an application via a notification, etc.) when notification data is synchronized across computing devices 110, potentially resulting in improved user experiences associated with interacting with notifications across computing devices 110.

[0035] FIG. 2 is a block diagram illustrating example computing device 210 that manages notifications using example notification management keys 248, in accordance with one or more aspects of the present disclosure. Computing device 210, processing unit 242, userDocket No.: 1333-932WO01 interface component (UIC) 212, user interface (UI) module 220, notification unit 222, notification management module 224, notification management keys 248, and one or more applications 226 of FIG. 2, may be example or alternative implementations of computing device 110A, processing unit 142, UIC 112, UI module 120, notification unit 122, notification management module 124, notification management keys 148, and one or more applications 126 of FIG. 1, respectively.

[0036] Communication channels 250 (“COMM channel 250”) may interconnect each of the components 242, 212, 244, 246, 252, and 268 for inter-component communications (physically, communicatively, and / or operatively). In some examples, communication channel 250 may include a system bus, a network connection, an inter-process communication data structure, or any other method for communicating data.

[0037] Power source 252 may provide power to one or more components of computing device 210. In some examples, power source 252 may be a battery. Power source 252 may provide power to components 242, 212, 244, 246, and 268 of computing device 210, for example. Examples of power source 252 may include, but are not necessarily limited to, batteries having zinc-carbon, lead-acid, nickel cadmium (NiCd), nickel metal hydride (NiMH), lithium ion (Li-ion), and / or lithium polymer (Lipo) chemistries. In some examples, power source 252 may have a limited capacity (e.g., 1000-3000 mAh).

[0038] One or more input / output components 246 (referred to herein as “I / O components 246”) of computing device 210 may receive inputs and outputs. Examples of input are tactile, audio, and video input. I / O components 246 may include a presence-sensitive display, a fingerprint sensor, touch-sensitive screen, mouse, keyboard, voice responsive system, video camera, microphone, or any other type of device for detecting input from a human or machine. Examples of outputs are tactile, audio, and video output. I / O components 246 may include a presence-sensitive display, sound card, video graphics adapter card, speaker, liquid crystal display (LCD), or any other type of device for generating output to a human or machine and receiving inputs provided by a human or machine. In some instances, UIC 212 may be a component of I / O components 246.

[0039] Communication units 244 of computing device 210 may communicate with one or more external devices via one or more wired and / or wireless networks by transmitting and / or receiving network signals on the one or more networks. Examples of communication units 244 may include a network interface card (e.g., Ethernet card), an optical transceiver, a radio frequency transceiver, a GNSS receiver, or any other type of device that can send and / or receive information. Other examples of communication units 244 may include short waveDocket No.: 1333-932WO01 radios, cellular data radios (for terrestrial and / or satellite cellular networks), wireless network radios, as well as USB controllers. Communication units 244 may implement functionality and / or execute instructions associated with wireless communication stack 270 and / or data exchanger 258. Wireless communication stack 270 may include instructions for implementing one or more wireless communication protocols (e.g., BLUETOOTH, WIFI, Near Field Communication, etc.) to communicate information (e.g., notification data, notification state information, notification management keys, etc.) between computing device 210 and other computing devices associated with computing device 210. Data exchanger 258 may include instructions for directly communicating data between notification unit 222 and processing unit 242 (e.g., data between notification service 234 and device type service 230).

[0040] Communication units 244 may include notification unit 222. Notification unit 222 may manage graphical, auditory, and / or haptic components and interactions displayed to and / or received from users operating computing device 210. Notification unit 222 may implement functionality and / or execute instructions associated with notification management. For example, notification unit 222 may receive and execute instructions that provide at least some functionality of notification management module 224 and / or notification management keys 248. That is notification management module 224 and / or notification management keys 248 may be, at least in part, operable by notification unit 222 to perform various functions described herein.

[0041] Processing unit 242 of computing device 210 may include processing circuitry for implementing functionality and / or execute instructions associated with core functionality of computing device 210. For example, processing unit 242 may receive and execute instructions that provide functionality of operating system (OS) 228, UI module 220, one or more applications 226, device type service 230, notification management module 224, and / or notification management keys 248.

[0042] One or more storage components 268 (referred to herein as “storage components 268”) may store information for processing during operation of computing device 210 (e.g., computing device 210 may store data accessed by OS 228, data exchanger 258, UI module 220, applications 226, notification management keys 248, device type service 230, wireless communication stack 270, and / or notification management module 224 during execution at computing device 210). In some examples, storage components 268 may include temporary memory, meaning that a primary purpose of storage components 268 is not long-term storage. Storage components 268 may be configured for short-term storage of information as volatile memory and therefore not retain stored contents if powered off. Examples of volatileDocket No.: 1333-932WO01 memories include random access memories (RAM), dynamic random access memories (DRAM), static random access memories (SRAM), and other forms of volatile memories.

[0043] Storage components 268 may include one or more computer-readable storage media. Storage components 268 may be configured to store larger amounts of information than volatile memory. Storage components 268 may further be configured for long-term storage of information as non-volatile memory space and retain information after power on / off cycles. Examples of non-volatile memories include magnetic hard discs, optical discs, flash memories, or forms of electronically programmable memories (EPROM) or electronically erasable and programmable (EEPROM) memories. Storage components 268 may store program instructions and / or information associated with OS 228, data exchanger 258, UI module 220, applications 226, notification management keys 248, device type service 230, wireless communication stack 270, and / or notification management module 224.

[0044] OS 228 may control operation of components of computing device 210. For example, OS 228 may facilitate the communication of data exchanger 258, UI module 220, applications 226, notification management keys 248, device type service 230, wireless communication stack 270, and / or notification management module 224 with notification unit 222, communication units 244, processing unit 242, and storage components 268. In some examples, OS 228 may manage interactions between software applications and a user of computing device 210. OS 228 may have a kernel that facilitates interactions with underlying hardware of computing device 210 and provides a fully formed application space capable of executing a wide variety of software applications having secure partitions in which each of the software applications executes to perform various operations.

[0045] In the example of FIG. 2, OS 228 includes low power mode module 254 and operating system (OS) policies 256. Low power mode module 254 may implement operating system policies of OS policies 256 to initiate low power mode of processing unit 242. OS policies 256 may include operating policies associated with transitioning processing unit 242 to a low-power mode state. Low power mode module 254 may implement operating system policies to cause processing unit 242 to enter low-power mode based on utilization of processing unit 242. Utilization of processing unit 242 may include metrics associated with an idle time associated with processing unit 242, task scheduling and load average associated with processing unit 242, an interrupt frequency associated with processing unit 242, thermal metrics associated with processing unit 242, sleep / wake timers associated with processing unit 242, dynamic voltage and frequency scaling (DVFS) metrics associated with processing unit 242, input / output (I / O) activity associated with processing unit 242, performanceDocket No.: 1333-932WO01 counters associated with processing unit 242, context switch rate associated with processing unit 242, or the like. Low power mode module 254 may compare utilization of processing unit 242 to thresholds of an operating policy, stored at OS policies 256, to determine whether to initiate low-power mode of processing unit 242. For instance, based on low power mode module 254 determining utilization of processing unit 242 indicates that an idle time of processing unit 242 satisfies a threshold defined in an operating system policy (e.g., an idle time of processing unit 242 greater than 30 minutes), low power mode module 254 may send a command to processing unit 242 to enter a low-power mode. In response to receiving the command to enter the low-power mode, processing unit 242 may save data stored at processing unit 242 to storage components 268, for example. Processing unit 242 may reduce clock signals and power associated with processing unit 242. Processing unit 242 may, based on saving processing unit data and reducing clocks signals and power, enter the low-power mode. By processing unit 242 operating in a low-power mode, computing device 210 may potentially conserve a capacity of power source 252 (e.g., conserve battery life of power source 252, reduce power provided by power source 252, etc.).

[0046] Notification management module 224, in the example of FIG. 2, may include device type notification rules 232, notification service 234, one or more notification application programming interfaces (APIs) 236, and machine learning model 272. Device type notification rules 232 may include computer readable instructions for implementing configuration information indicating notification rules associated with a device classification (e.g., a wearable computing device classification, a companion computing device classification, a shared computing device, etc.) assigned to computing device 210. For example, device type notification rules 232 may include configuration information indicating rules associated with a time period notification management module 224 may wait before preparing an obtained notification for output, rules associated with maintaining data for notifications (e.g., rules associated with how long to store notification data or notification management keys associated with notifications), rules associated with synchronization of notification state data between processing unit 242 and notification unit 222 and / or between computing device 210 and other computing devices associated with computing device 210, rules associated with customizations (e.g., pixel dimensions, resolutions, amount or type of content included in notification, settings associated with enabling or disabling notifications from one or more applications 226, etc.) of notifications output via UIC 212, or other rules associated with notification data processing performed by computing device 210.

[0047] Notification service 234 may include computer readable instructions for comparingDocket No.: 1333-932WO01 notification management keys for notifications to determine whether a second notification is an updated version of a first notification. For example, notification service 234 may compare attribute fields of a first notification management key for a first notification (e.g., attribute fields 162 A of notification management key 148 A of FIG. 1) to attribute fields of a second notification management keys for a second notification (e.g., attribute fields 162N of notification management key 148N of FIG. 1) to determine the first notification corresponds to the second notification (e.g., an attribute field indicating a notification content identifier of the first notification matches an attribute field indicating a notification content identifier of the second notification). Notification service 234 compare a revision field of the first notification management key for the first notification (e.g., revision field 164A of notification management key 148A of FIG. 1) to a revision field of the second notification management key for the second notification (e.g., revision field 164N of notification management key 148N of FIG. 1) to determine whether the second notification is an updated version of the first notification. Notification service 234 may analyze notification management keys 248 including notification management keys for obtained notifications while processing unit 242 is operating in low power mode.

[0048] In some examples, notification service 234 may execute machine learning model 272 to determine whether a first notification corresponds to a second notification. For example, machine learning model 272 may include computer readable instructions for executing a machine learning model (e.g., distance-based machine learning models that determine Euclidean distances, cosine similarities, Manhattan distances, Jaccard similarities, or the like; probabilistic models such as Latent Dirichlet Allocation, LDA, models, Gaussian models, or the like; embedding-based models such as transformer models; neural networks; etc.) trained to quickly and efficiently determine that a first notification corresponds to a second notification (e.g., a similarity score associated with attribute fields of a first notification management key for the first notification and attribute fields of a second notification management key for the second notification satisfies a similarity threshold). In some examples, notification service 234 may provide machine learning model 272 notification management keys for notifications. Machine learning model 272 may include a machine learning model trained to process notification management keys to determine which notification is associated with the up to date notification data. Machine learning model 272 may be trained to determine similarities of notifications and / or determine which notifications have the up to date data based on training data including training samples of notification management keys labeled with ground truth information (e.g., ground truth informationDocket No.: 1333-932WO01 indicating notification management keys satisfy a similarity threshold, ground truth information indicating a second notification is an updated version of a first notification, etc.).

[0049] In some instances, notification service 234 may include computer readable instructions for implementing a service for maintaining notification state information for notifications associated with one or more applications 226. For example, notification service 234 may store, update, delete, or otherwise modify notification state information for a notification indicating a dismissal state for the notification based on user inputs associated with the notification. In some examples, notification service 234 may provide an interface for notification management module 224 to send notification information to device type service 230. Device type service 230 may include computer readable instructions for implementing a service configured to send notification information, received from notification service 234, to UI module 220 based on a device classification assigned to computing device 210. For example, notification service 234 may, responsive to instructions received from device type notification rules 232 (e.g., responsive to device type notification rules 232 triggering output of a notification based on configuration information associated with a device classification assigned to computing device 210), send notification information for a notification (e.g., notification data indicating content of the notification) to device type service 230. Device type service 230 may generate instructions for generating a graphical element for the notification based on a device classification assigned to computing device 210. Device type service 230 may send the instructions for generating the graphical element for the notification to UI module 220. UI module 220 may generate, based on the instructions, the graphical element for the notification to output for display via UIC 212.

[0050] One or more notification APIs 236 may include one or more interfaces configured with rules, protocols, tools, or the like that allow one or more applications 226 to interact with notification management module 224. For example, one or more notification APIs 236 may include one or more interfaces configured to receive notification data for notifications generated by one or more applications 226. In some examples, one or more notification APIs 236 may include one or more interfaces configured with rules, protocols, tools, etc. for synchronizing notification state information for notifications between processing unit 242 and notification unit 222 and / or between computing device 210 and other computing devices associated with computing device 210. For example, responsive to receiving an indication that a notification was dismissed by a computing device associated with computing device 210, one or more notification APIs may update state information for the notification (e.g., state information stored by notification service 234) to indicate the notification is dismissedDocket No.: 1333-932WO01 and that the notification should not be output by computing device 210.

[0051] FIG. 3 is a flowchart illustrating an example operation of example computing device 302 posting a local notification, in accordance with one or more aspects of the present disclosure. Computing device 302, application 326, notification management module 324, data exchanger 358, device type service 330, and UI module 320 of FIG. 3 may be example or alternative implementations of computing device 210, one or more applications 226, notification management module 224, data exchanger 258, device type service 230, and UI module 220 of FIG. 2, respectively. FIG. 3 may be discussed with respect to FIG. 2 for example purposes only.

[0052] Application 326 may send device type service 330 an indication that a notification is posted (SI). For example, application 326 may receive (e.g., from sensors of computing device 302, a network, computing system, computing device, etc.) an indication of an event associated with a notification. Application 326 may generate notification data based on the indication of the event. Application 326 may send (e.g., via one or more notification APIs 236) device type service 330 the notification data as the indication that the notification is posted.

[0053] Device type service 330 may enqueue the posted notification via data exchanger 358 (S2). For example, responsive to receiving the indication that the notification is posted, device type service 330 may add the notification to a notification queue managed by data exchanger 358. Data exchanger 358 may post the notification to notification management module 324 (S3). For example, data exchanger 358 may post the notification to notification management module 324 by sending notification management module 324 notification data for the notification enqueued in a notification queue managed by data exchanger 358.

[0054] Notification management module 324 may determine state information associated with the notification (S4). For example, notification management module 324 may determine state information associated with the notification by using notification service 234 to synchronize state information for the notification between processing unit 242 and notification unit 222 and / or across computing devices that may have received a copy of the notification. Notification management module 324 may, for instance, determine state information associated with the notification as a dismissal state indicating that the notification has not been opened, viewed, or is otherwise unread. Notification management module 324 may generate instructions to update state information associated with the notification based on the determination of the state information (S5). Notification management module 324 may enqueue the instructions to update state information associated with the notification viaDocket No.: 1333-932WO01 data exchanger 358 (S6). For example, notification management module 324 may send data exchanger 358 the instructions to update state information associated with the notification. Data exchanger 358 may enqueue the instructions to update state information associated with the notification in a state update queue.

[0055] Data exchanger 358 may determine whether a processing unit of computing device 302 is awake (S7A). For example, data exchanger 358 may request OS 228 for an indication of whether processing unit 242 is in low power mode. In response to determining the processing unit is awake (e.g., processing unit 242 is not in low power mode), data exchanger 358 may dequeue the instructions to update state information associated with the notification (S7B). For example, data exchanger 358 may dequeue the instructions to update state information associated with the notification by sending device type service 330 the instructions to update state information associated with the notification. Device type service 330 may update state information associated with the notification (S8). For example, device type service 330 may execute the instructions, received from data exchanger 358, to update state information associated with the notification based on the determination of the state information in step S4.

[0056] Device type service 330 may generate an event to post the notification via UI module 320 (S9). For example, device type service 330 may send UI module 320 notification data for the notification (e.g., notification data obtained at step SI). In some instances, device type service 330 may send notification data to UI module 320 with instructions to generate a graphical element for the notification according to a classification assigned to computing device 302. Device type service 330 may, additionally or alternatively, generate an event to update state information for the notification via UI module 320 (S10). For example, device type service 330 may send UI module 320 an indication of updates to state information associated with the notification performed in step S8.

[0057] UI module 320 may perform alerting effects associated with steps S9 and S10 (SI 1). For example, UI module 320 may determine whether the updated state information obtained in step S10 indicates that the notification has not been viewed, has not been opened, or is otherwise unread. In response to determining that the state information obtained in S10 indicates that the notification has been unread, UI module 320 may generate data for a graphical element indicating the notification based on notification data for the notification received in step S9. UI module 320 may output the graphical element indicating the notification via a display device of computing device 302 (e.g., UIC 212).

[0058] FIG. 4 is a block diagram illustrating first example computing device 410A managingDocket No.: 1333-932WO01 local notifications and notifications received from second example computing device 41 OB in communication with first example computing device 410A, in accordance with one or more aspects of the present disclosure. Computing devices 410A-410B, application instances 426A-426B, notification management module 424A-424B, user interface (UI) module 420, user interface component (UIC) 412, and notification management keys 448A-448B of FIG. 4 may be example or alternative implementations of computing devices 110, applications 126, notification management module 124, UI module 120, UIC 112, and notification management keys 148 of FIG. 1, respectively. FIG. 4 may be discussed with respect to FIG. 2 for example purposes only.

[0059] In the example of FIG. 4, application instance 426 A of computing device 410A may output, to notification management module 424 A of computing device 410A, notification data for notification 438 A with notification management key 448 A. Notification 438 A may represent one version of a notification associated with applications instances 426 A and 426B. For example, in instances where application instances 426 A and 426B correspond to a messaging application for a user associated with computing device 410A and 410B, notification 438 A may represent one version of a message received by the messaging application. Notification management key 448A may include a numeric revision field associated with whether notification 438 A may be newer than notification 438B, where notification 438B may represent a second version of the notification associated with application instances 426 A and 426B. Application instance 426B of computing device 410B may output, to notification management module 424B of computing device 410B, notification data for notification 438B with notification management key 448B. Notification management key 448B may include a numeric revision field associated with whether notification 438B may be newer than notification 438 A.

[0060] Notification management module 424B may send notification management module 424 A notification 438B with notification management key 448B. For example, notification management module 424B may send, using a wireless communication protocol, notification management module 424 A data associated with notification 438B and notification management key 448B. Notification management module 424A may merge notification 438 A and notification 438B into a single notification based on available information associated with notification 438 A and notification 438B. For example, notification management module 424 A may merge notification 438 A and notification 438B based on notification management module 424A determining notification management key 448A and notification management key 448B indicating notification 438 A and notification 438BDocket No.: 1333-932WO01 correspond to the same notification that were posted on different devices. Notification management module 424A and notification management module 424B may include a unified API such that copies of a notification may be output at computing device 410A and computing device 41 OB in the same way, regardless of which device generated notification data for the notification. In this way, notification management module 424A and notification management module 424B may replace a first version of a notification for a software application with a second version of the notification obtained from another device in instances where the second version of the notification includes newer content.

[0061] Notification management module 424A may determine, based on notification management key 448 A associated with notification 438 A and notification management key 448B associated with notification 438B, whether notification 438B is an updated version of notification 438 A. For example, notification management module 424 A may determine notification 438B is an updated version of notification 438 A based on a comparison between a revision field of notification management key 448B and a revision field of notification management key 448 A indicating the notification 438B includes newer data (e.g., a change to a message associated with notifications 438 A and 438B).

[0062] In response to determining notification 438B is an updated version of notification 438 A, notification management module 424 A may output notification data for notification 438B to UI module 420. UI module 420 may generate data for a graphical element indicating content associated with notification data of notification 438B (e.g., a graphical element for notification 438B displayed in notification tray 474). UI module 420 may output the data for the graphical element for display via UIC 412.

[0063] In some examples, notification management module 424A and / or notification management module 424B may implement notification rules associated with computing device 410A and / or computing device 410B. In one example, notification management module 424A and notification management module 424B may implement a rule based on device classifications assigned to computing device 410 and computing device 410 (e.g., a rule specifying that a notification for a software application is to be output at computing device 410A based on computing device 410A being assigned a device classification of a wearable device and / or specifying that the notification for the software application is not to be output, i.e., blocked, at computing device 410B based on computing 410B being assigned a device classification of a handheld device). In another example, notification management module 424A may implement a rule indicating that in instances where computing device 410A is wirelessly connected to computing device 410B (e.g., via a BLUETOOTHDocket No.: 1333-932WO01 connection), notification management module 424A may not post and / or download notification data for notifications received from computing device 41 OB (e.g., notification 438B). In this way, computing device 410A may conserve computational resources (e.g., power consumption, processing usage, memory usage, etc.) associated with obtaining and output notifications in instances where computing device 410A is in close proximity to computing device 41 OB. Once notification management module 424 A determines that computing device 410A is no longer wirelessly connected to computing device 41 OB, notification management module 424A may synchronize notification state information for notifications associated with application instances 426A and 426B and / or obtain different versions of notifications via a notification management system associated with notifications for application instances 426A and 426B. In this way, notification management module 424A may output updated versions of notifications (e.g., notification 438B) in instances where computing device 410A is not in close proximity to computing device 410B.

[0064] In another example, notification management module 424A may implement a rule indicating that high priority notifications (e.g., emergency notifications) may be output regardless of whether there are updated versions of the high priority notifications. For example, notification management module 424A may send notification data for a high priority notification to UI module 420- to output for display at UIC 412- based on determining the notification data arrived first. In this way, notification management module 424A may reduce latency associated with outputting high priority notifications.

[0065] Notification management module 424A may implement rules for outputting versions of notifications according to configurations associated with application instances 426A and 426B. For example, notification management module 424 A may include notification APIs (e.g., notification APIs 236) that allow developers of application instances 426 A and 426B to define rules. Notification management module 424A may implement rules established using notification APIs to, for example, block notifications from certain sources in various connectivity conditions, potentially resulting in a reduction in computational resources associated with obtaining and outputting notifications. In this way, notification management module 424A may dynamically block notifications from sources (e.g., a notification management system) in instances where another source (e.g., computing device 410B) may use fewer computational resources when sending notification information (e.g., notification data, notification management keys, notification state information, etc.) to computing device 410A, thereby potentially conserving computational resources.

[0066] In another example, notification management module 424A may implement a ruleDocket No.: 1333-932WO01 indicating actions associated with user inputs applied to graphical elements of notifications output for display via UIC 412. For example, notification management module 424A may implement a rule to perform a particular action, responsive to a user input associated with a notification, based on a device classification assigned to computing device 410A. For example, in instances where computing device 410A is assigned a device classification of a wearable device, notification management module 424A may implement a rule to generate and output data for a graphical user interface associated with application instance 426B for display at a display device of computing device 41 OB (e.g., opening a software application associated with application instances 426 A and 426B at computing device 41 OB) responsive to a user input associated with selecting, via UIC 412, a notification associated with application instance 426A. In this way, computing device 410A may conserve computational resources associated with outputting data for application instance 426A responsive to a user input selecting a notification associated with application instance 426A. By configuring rules associated with particular notifications for particular software applications, computing device 410A may provide a seamless user experience associated with interacting with notifications for the software applications across a user’s registered devices (e.g., computing device 410A and computing device 41 OB).

[0067] FIG. 5 is a block diagram illustrating first example computing device 510A managing notification data communicated between first example computing device 510A and second example computing device 51 OB, in accordance with one or more aspects of the present disclosure. Computing device 510A, application instances 526A, 526B, notification management modules 524A, 524B, user interface (UI) module 520, and computing device 51 OB of FIG. 5 may be example of alternative implementations of computing device 410A, application instances 426A, 426B, notification management modules 424A, 424B, UI module 420, and computing device 41 OB of FIG. 4, respectively. Additionally or alternatively, computing devices 510A, application instance 526A, device type service 530A, notification service 534A, data exchanger 558, notification management module 524A, wireless communication stack 570A, 570B, and UI module 520 of FIG. 5 may be example or alternative implementations of computing device 210, applications 226, device type service 230, notification service 234, data exchanger 258, notification management module 224, wireless communication stack 270, and UI module 220 of FIG. 2, respectively. FIG. 5 may be discussed with respect to FIG. 1 for example purposes only.

[0068] In the example of FIG. 5, computing device 510A may execute functionality associated with application instance 526A, device type service 530A, notification serviceDocket No.: 1333-932WO01534A, and UI module 520 using a processing unit (e.g., processing unit 142). Computing device 510A may execute at least some synchronization functionality associated with notification management module 524A and wireless communication stack 570A using a dedicated, low power processor for notifications (e.g., notification unit 122) and / or an application processor (e.g., processing unit 142). Notification management module 524A may manage notification management keys (e.g., notification management keys 148) for notifications associated with application instance 526A and originating from two or more sources (e.g., notifications locally generated by application instance 526A of computing device 510A, notifications received from computing device 510B, etc.). Notification management module 524A may, based on notification management keys for notifications, buffer bridged notification data (e.g., notifications data received from computing device 51 OB) and send the notification data to be output for display once the processing unit of computing device 510 is awake or is not operating in a low power mode. In general, notification management module 524A may analyze notification management keys for notifications to manage versions of notifications stored and output for display at computing device 510A.

[0069] Application instance 526A may generate notification data for a local notification based on a notification event (e.g., receiving an indication of a message associated with application instance 526A, receiving an indication of an alert associated with application instance 526A, etc.). Application instance 526A may send the notification data for the local notification to device type service 530A. Device type service 530A may forward the notification data for the notification to notification service 534A with a timestamp indicating a time associated with when the notification event associated with the local notification was detected and / or when the notification data for the notification was generated. Notification service 534A may generate a notification management key for the local notification (e.g., notification management key 148 A) that includes fields that identify the local notification. For example, notification service 534A may generate the notification management key for the local notification to include a content field indicating an identifier for content associated with notification data of the local notification, a source field indicating the local notification originated from computing device 510A, and / or a revision field indicating the timestamp for the local notification obtained from device type service 530A. Notification service 534A may send notification data for the local notification and the notification management key for the local notification to notification management module 524 A via data exchanger 558.

[0070] Notification management module 524A may additionally or alternatively receive aDocket No.: 1333-932WO01 bridged notification from computing device 510B. For example, application instance 526B may send notification data for a bridged notification to notification management module 524B with a notification management key for the bridged notification that indicates an identity and revision information associated with the bridged notification. Notification management module 524B may send notification management module 524A notification data for the bridged notification and the notification management key for the bridged notification via wireless communication stacks 570A, 570B. For instance, notification management module 524B may offload or otherwise synchronize notifications associated with application instances 526 A, 526B according to a synchronization and wireless communication protocol specified in wireless communication stacks 570A, 570B. Notification management module 524B may use wireless communication stack 570B to send a copy of notification data for a bridged notification and a copy of a notification management key for the bridged notification to notification management module 524A using a wireless communication device (e.g., a BLUETOOTH chip). Notification management module 524A may temporarily store (e.g., cache) the notification data for the bridged notification and the notification management key for the bridged notification, even in instances where a processing unit of computing device 510A is asleep or otherwise operating in a low power mode.

[0071] Notification management module 524A may determine which notifications to output for display based on notification management keys for the notifications. For example, notification management module 524A may compare a first notification management key for a local notification (e.g., a notification generated by application instance 526A) to a second notification management key for a bridged notification (e.g., a notification obtained from computing device 510B that corresponds to application instances 526A, 526B). Notification management module 524A may determine that the bridged notification corresponds to the local notification based on the first management key and the second management key. For example, notification management module 524A may determine the bridged notification corresponds to the local notification based on determining that an identifier of the second management key, associated with the bridged notification, matches an identifier of the first management key, associated with the local notification.

[0072] Based on determining a bridged notification corresponds to a local notification, notification management module 524A may merge notification information for the bridged notification with notification information for the local notification. For example, notification management module 524 A may merge notification information (e.g., as indicated in the second notification management key) for the bridged notification indicating a first dismissalDocket No.: 1333-932WO01 state with notification information (e.g., as indicated in the first notification management key) for the local notification indicating a second dismissal state by creating a merged notification and merged notification management key that includes updated notification information associated with the local notification and the bridged notification. In response to generating the merged notification and the merged notification management key, notification management module 524A may delete data associated with the local notification and the bridged notification to reduce memory usage associated with storing multiple versions of notifications.

[0073] Notification management module 524A may generate a merged notification and a merged notification management key for a bridged notification that corresponds to a local notification based on a determination of whether the bridged notification is an updated version of the local notification. For example, notification management module 524 A may compare a first revision field of a first notification management key, associated with a local notification, to a second revision field of a second notification management key, associated with a bridged notification, to determine whether notification data associated with the bridged notification was obtained after the local notification and / or determine whether notification data associated with the bridged notification includes more up-to-date data compared to notification data associated with the local notification. Notification management module 524A may generate a merged notification and a merged notification management key based on determining the up to date data associated with the local notification and the bridged notification. For example, notification management module 524 A may generate a merged notification and a merged notification management key to include notification information associated with a bridged notification based on a determination that the bridged notification is an updated version of a local notification. Notification management module 524A may send instructions to UI module 520 to generate, and output for display, a graphical element with notification data of a merged notification according to notification configurations associated with computing device 510A and / or application instance 526A.

[0074] Additionally, or alternatively, notification management module 524A may compare a first revision field of a first notification management key, associated with a local notification, to a second revision field of a second notification management key, associated with a bridged notification, to determine whether to update state information associated with the local notification. For example, notification management module 524 A may store a first notification management key for a local notification that includes a revision field indicating a dismissal state of “unread.” Notification management module 524A may obtain, fromDocket No.: 1333-932WO01 computing device 51 OB, a second notification management key for a bridged notification that includes a revision field indicating a dismissal state of “read.” In response to notification management module 524A determining the bridge notification corresponds to the local notification, notification management module 524A may update the revision field of the first notification management key, associated with the local notification, to indicate a dismissal state of “read.” Notification management module 524A may block, while a processing unit of computing device 510A is operating in a low power mode, the local notification and / or the bridged notification from being output based on the corresponding notification management keys indicating a dismissal state of “read.” In this way, notification management module 524A may conserve computational resources associated with outputting already viewed notifications and / or associated with waking up a processing unit of computing device 510A to output an already viewed notification.

[0075] FIG. 6 is a flowchart illustrating an example operation of first example computing device 610A posting a notification received from second example computing device 61 OB, in accordance with one or more aspects of the present disclosure. Computing device 610A, wireless communication stack 670A, notification management module 624A, data exchanger 658, device type service 630, and UI module 620 of FIG. 6 may be example or alternative implementations of computing device 210, wireless communication stack 270, notification management module 224, data exchanger 258, device type service 230, and UI module 220 of FIG. 2, respectively. Additionally or alternatively, computing device 610B, notification management module 624B, wireless communication stack 670B, computing device 610A, wireless communication stack 670A, notification management module 624A, data exchanger 658, device type service 630, and UI module 620 of FIG. 6 may be example or alternative implementations of computing device 510B, notification management module 524B, wireless communication stack 570B, computing device 510A, wireless communication stack 570A, notification management module 524A, data exchanger 558, device type service 530, and UI module 520 of FIG. 5, respectively.

[0076] In the example of FIG. 6, notification management module 624B may send a bridged notification with a notification management key to wireless communication stack 670B (S12). Wireless communication stack 670B may determine whether to dispatch the bridged notification and the notification management key based on a synchronization protocol and a wireless communication protocol associated with notification management between computing device 510A and computing device 510B. In response to determining that the bridged notification is to be dispatched, wireless communication stack 670B may send anDocket No.: 1333-932WO01 indication to notification management module 624B that the bridged notification and notification management key have been accepted for dispatch (SI 3). Notification management module 624B may label the bridged notification and notification management key with a token indicating that the bridged notification and notification management key have been approved for dispatch (S14).

[0077] Wireless communication stack 670B may wait until computing device 61 OB is connected to computing device 610A (SI 5 A). In response to computing device 61 OB connecting to computing device 610A (e.g., via a wireless network), wireless communication stack 670B may post or otherwise send a bridge notification with a notification management key to wireless communication stack 670A of computing device 610A (S15B). Wireless communication stack 670A may post or otherwise send notification management module 624A notification data for a bridged notification and a notification management key for the bridged notification (SI 6). Notification management module 624 A may enqueue the notification data for the bridged notification via data exchanger 658 (SI 7).

[0078] Additionally, or alternatively, notification management module 624A may determine state information for the bridged notification (SI 8). For example, notification management module 624A may determine state information for the bridged notification based on field values included in the notification management key for the bridged notification. Notification management module 624 A may update state information for the bridged notification (SI 9). For example, based on a notification management key for a bridged notification indicating a dismissal state of “read” (e.g., was opened at computing device 610B), notification management module 624A may update state information for the bridged notification to indicate the dismissal state of “read,” and block the notification from being output to potentially conserve computational resources associated with outputting the bridged notification. Notification management module 624A may enqueue notification state update data for the bridged notification via data exchanger 658 (S20). In some instances, notification management module 624A may wake up a processing unit of computing device 610A via data exchanger 658 to dequeue data enqueued in steps S17 and / or S20 (S21).

[0079] Data exchanger 658 may determine whether a processing unit of computing device 610A is awake (S22). In response to data exchanger 658 determining the processing unit is awake, data exchanger 658 may dequeue posted notification data for a bridged notification enqueued in step S17 and / or dequeue posted notification state updates enqueued in step S20 (S23). Data exchanger 658 may dequeue the enqueued notification data by sending the enqueued notification data to device type service 630. Device type service 630 may storeDocket No.: 1333-932WO01(e.g., as cached data associated with a processing unit of computing device 610A) the notification data for the bridged notification, as well as the notification management key for the bridged notification, and / or update state information for the bridged notification (S24).

[0080] Device type service 630 may send, to UI module 620, an event to post the bridged notification (S25). Additionally, or alternatively, device type service 630 may send, to UI module 620, an event indicating a notification state update associated with the bridged notification (S26). UI module 620 may perform alerting effects based on events posted in steps S25 and / or S26 (S27). For example, UI module 620 may perform an alerting effect by generating an output (e.g., vibration, audio tone, graphical element, etc.) associated with the bridged notification.

[0081] FIG. 7 is a flowchart illustrating an example operation of first example computing device 710A canceling a notification based on instructions received from second example computing device 710B, in accordance with one or more aspects of the present disclosure. Computing device 710B, notification management module 724B, wireless communication stack 770B, computing device 710A, wireless communication stack 770A, notification management module 724 A, data exchanger 758, device type service 730, and UI module 720 of FIG. 7 may be example or alternative implementations of computing device 610B, notification management module 624B, wireless communication stack 670B, computing device 610A, wireless communication stack 670A, notification management module 624A, data exchanger 658, device type service 630, and UI module 620 of FIG. 6, respectively.

[0082] Notification management module 724B may send an indication to wireless communication stack 770B to cancel a bridged notification queued to be sent to computing device 710A (S28). In some instances, if wireless communication stack 770B has not sent the bridged notification to computing device 710A, wireless communication stack 770B may cancel the sending of the bridged notification by preventing the dispatch of the bridged notification to computing device 710A. In some examples, in instances where wireless communication stack 770B has sent a bridged notification and a notification management key for the bridged notification to computing device 710A, wireless communication stack 770B may send notification management module 724B an indication that canceling the bridged notification has failed (S29). In response to receiving an indication that canceling the bridged notification has failed, notification management module 724B may send a request to remove the sent bridged notification from storage devices of computing device 710B and / or computing device 710A (S30). Wireless communication stack 770B may accept the request and send instructions to notification management module 724B to delete data associated withDocket No.: 1333-932WO01 the bridged notification from a storage device of computing device 710B (S31). Notification management module 724B may execute the instructions to delete the data associated with the bridged notification from the storage device (S32).

[0083] Additionally, or alternatively, in response to accepting a request to remove data associated with a bridged notification from a storage device of computing device 710A, wireless communication stack 770B may determine whether computing device 71 OB is connected to computing device 710A (S33A). In response to determining computing device 71 OB is connected to computing device 710A, wireless communication stack 770B may send instructions to wireless communication stack 770A of computing device 710A instructions for removing data associated with the bridged notification from the storage device of computing device 710A (S33B). Wireless communication stack 770A may forward the instructions to remove the data associated with the bridged notification to notification management module 724A (S34).

[0084] Notification management module 724A may enqueue instructions to remove data associated with a bridged notification via data exchanger 758 (S35). Data exchanger 758 may send notification management module 724A an indication that the instructions to remove the data associated with the bridged notification has been enqueued (S36). Notification management module 724A may determine a notification state of the bridged notification is “canceled” (S37). Notification management module 724 A may update state information for the bridged notification (e.g., in a notification management key for the bridged notification) to indicate that the bridged notification is to be removed (S38). Notification management module 724A may enqueue a state update for the bridged notification indicating that the bridged notification is canceled via data exchanger 758 (S39). Data exchanger 758 may send notification management module 724A an indication that the state update for the bridged notification has been enqueued (S40). Notification management module 724A may remove or otherwise delete data associated with the bridged notification from portions of a storage device of computing device 710A accessed by a notification unit of computing device 710A (e.g., notification unit 122 of FIG. 1) (S41).

[0085] Additionally, or alternatively, in response to enqueueing instructions to remove data associated with a bridged notification and / or instructions for updating state information for the bridged notification, data exchanger 758 may determine whether a processing unit of computing device 710A is awake (S42). In response to determining the processing unit of computing device 710A is awake, data exchanger 758 may dequeue the instructions to remove data associated with the bridged notification (S43) and / or dequeue the instructions forDocket No.: 1333-932WO01 updating state information for the bridged notification (S44) by sending the instructions to device type service 730. Device type service 730 may execute the instructions to remove the data associated with the bridge notification by removing or otherwise deleting the data from portions of a storage device of computing device 710A accessed by the processing unit of computing device 710A (S45). Device type service 730 may execute the instructions for updating the state information for the bridged notification by updating the state information for the bridged notification to indicate the bridged notification is canceled or otherwise removed (S46). Device type service 730 may send, to UI module 720, an event to remove data (e.g., graphical data) associated with the bridged notification that may have been output or otherwise prepared by UI module 720 (S47). Device type service 730 may send, to UI module 720, an event to update state information for the bridged notification, stored at UI module 720, to indicate the bridged notification is canceled or otherwise removed (S48). UI module 720 may generate graphical data based on the events received from device type service 730 (S49). For example, UI module 720 may update a notification tray graphical element to remove indications of the canceled bridged notification.

[0086] FIG. 8 is a flowchart illustrating an example operation of example computing devices 810A, 810B dismissing a notification for first example computing device 810A and second example computing device 810B, in accordance with one or more aspects of the present disclosure. Computing device 810B, notification management module 824B, wireless communication stack 870B, computing device 810A, wireless communication stack 870A, notification management module 824A, data exchanger 858, device type service 830, and UI module 820 of FIG. 8 may be example or alternative implementations of computing device 710B, notification management module 724B, wireless communication stack 770B, computing device 710A, wireless communication stack 770A, notification management module 724 A, data exchanger 758, device type service 730, and UI module 720 of FIG. 7, respectively.

[0087] In the example of FIG. 8, UI module 820 may send an indication to device type service 830 that a bridged notification (e.g., a notification synchronized between computing device 810A and computing device 810B) is dismissed (S50). For example, UI module 820 may determine that a user input applied to a display device of computing device 810 indicates that a bridged notification has been viewed, closed, or otherwise dismissed by a user operating computing device 810A, and send an indication of the user input to device type service 830. Device type service 830 may enqueue instructions to update state information for the bridged notification (e.g., in a notification management key for the bridgedDocket No.: 1333-932WO01 notification) to indicate a dismissal state of “dismissed” via data exchanger 858 (S51). Data exchanger 858 may forward the instruction to update the state information for the bridged notification to notification management module 824A (S52). Notification management module 824A may determine current state information for the bridged notification indicating a dismissal state of “not dismissed” (S53). Notification management module 824A may send wireless communication stack 870A instructions to update state information for the bridged notification at computing device 81 OB (S54). Wireless communication stack 870A may send notification management module 824A and indication that the instructions to update the state information for the bridged device at computing device 810B are accepted (S55).Notification management module 824A may update state information for the bridged notification to indicate a dismissal state of “dismissed” (S56).

[0088] Notification management module 824A may enqueue instructions for device type service 830 to remove data associated with a bridged notification via data exchanger 858(557) and / or enqueue instructions for device type service 830 to update state information for a bridged notification to indicate a dismissal state of “dismissed” via data exchanger 858(558). Notification management module 824A may remove data associated with a bridged notification from a storage device of computing device 810A accessed by a notification unit of computing device 810A (e.g., notification unit 122 of FIG. 1) (S59). In response to data exchanger 858 determining a processing unit of computing device 810A is awake, data exchanger 858 may dequeue the instructions to remove data associated with the bridged notification (S61) and / or dequeue the instructions to update state information for the bridged notification (S62) by sending the instructions to device type service 830. Device type service 830 may execute the instructions to remove data associated with the bridged notification (e.g., from a storage device accessed by the processing unit) and / or the instructions to update state information for the bridged notification (e.g., update state information in a revision field of a notification management key for the bridged notification to indicate a dismissal state of “dismissed”) (S63). Device type service 830 may send, to UI module 820, an event to remove data associated with the bridged notification from graphical data output via a display device of computing device 810A (S64). Device type service 830 may send, to UI module 820, an event to update state information associated with the bridged notification (e.g., stored at UI module 820) to indicate a dismissal state of “dismissed” (S65).

[0089] In response to step S55 of wireless communication stack 870A sending an indication to notification management module 824A that instructions to dismiss a bridged notification at computing device 810B is accepted, wireless communication stack 870A may determineDocket No.: 1333-932WO01 whether computing device 810A is connected to computing device 810B. In response to determining computing device 810A is connected to computing device 81 OB, wireless communication stack 870A may send instructions to dismiss a bridged notification to wireless communication stack 870B of computing device 81 OB (S66). Wireless communication stack 870A may forward the instructions to dismiss the bridged notification to notification management module 824B (S67). Notification management module 824B may execute the instructions to dismiss the bridged notification (S68).

[0090] FIG. 9 is a block diagram illustrating first example computing device 910A managing notifications received from example network 990, in accordance with one or more aspects of the present disclosure. Computing device 910A, UI module 920, device type service 930, data exchanger 958, notification management module 924 A, wireless communication stack 970A, computing device 910B, notification management module 924A, and wireless communication stack 970B of FIG. 9 may be example or alternative implementations of computing device 810A, UI module 820, device type service 830, data exchanger 858, notification management module 824A, wireless communication stack 870A, computing device 810B, notification management module 824 A, and wireless communication stack 870B of FIG. 8, respectively.

[0091] Cloud server 980 may represent any suitable remote computing system, such as one or more desktop computers, laptop computers, mainframes, servers, cloud computing systems, etc. capable of sending and receiving information both to and from a network, such as network 990. Cloud server 980 may host (or at least provides access to) a notification service, such as a push notification service for sending notification data to computing device 910A and / or computing device 910B. In some examples, cloud server 980 may represent cloud computing systems that provide access to their respective services via a cloud.

[0092] Network 990 may include any public or private communication network, such as a cellular network, Wi-Fi network, a direct cell-to-satellite communication network, or other type of network for transmitting data between computing device 910A, cloud server 980, and computing device 910B. In some examples, network 990 may represent one or more packet switched networks, such as the Internet. Computing device 910A may send and receive data to and from computing device 910A, computing device 910B, and cloud server 980 across network 990 using any suitable communication techniques. For example, computing device 910A, computing device 910B, and cloud server 980 may each be operatively coupled to network 990 using respective network links. Network 990 may include network hubs, network switches, network routers, etc., that are operatively inter-coupled thereby providingDocket No.: 1333-932WO01 for the exchange of information between computing device 910A, computing device 91 OB, and cloud server 980. In some examples, network links of network 990 may be Ethernet, ATM or other network connections. Such connections may include wireless and / or wired connections.

[0093] In the example of FIG. 9, notification management module 924 may manage bridged notifications synchronized via network 990. For example, wireless communication stack 970A of computing device 910A may receive a first bridged notification with a first notification management key from cloud server 980, via network 990, and a second bridged notification (e.g., dispatched by notification management module 924A) with a second notification management key from wireless communication stack 970B of computing device 910B via network 990. Wireless communication stack 970A may send the first notification management key and the second notification management key to notification management module 924A. Notification management module 924A may compare the first notification management key, associated with the first bridged notification, to the second notification management key, associated with the second bridged notification, to determine whether the first bridged notification corresponds to the second bridged notification.

[0094] In response to determining the first bridged notification corresponds to the second bridged notification, notification management module 924A may merge the first bridged notification and the second bridged notification to generate a merged bridged notification. Notification management module 924A may create a merged notification management key for the merged bridged notification to include the up to date data associated with the first bridged notification and / or the second bridged notification. For example, notification management module 924A may analyze revision fields of the first notification management key and the second notification management key to determine which of the first bridged notification or the second bridged notification is associated with more recent state information (e.g., state information with timestamps indicating when the state information has been updated or created). Notification management module 924A may determine a synchronization of the first bridged notification and the second bridged notification is complete based on the creation of the merged bridged notification and the merged notification management key. In this way, notification management module 924A may consistently determine recent versions of notifications received from multiple sources.

[0095] Notification management module 924A may implement a notification synchronization protocol to synchronize local notifications (e.g., generated at computing device 910A) and bridged notifications (e.g., received via network 990 and generated by cloud server 980Docket No.: 1333-932WO01 and / or computing device 91 OB). Notification management module 924A may implement the notification synchronization protocol through two or more dedicated notification channels established with network 990 (e.g., a notification channel associated with cloud server 980 and a notification channel associated with computing device 91 OB). Notification management module 924A may implement the notification synchronization protocol to determine merge state information for bridged notifications received via the two or more dedicated notification channels. Notification management module 924 may implement the notification synchronization protocol to synchronize merged state information for bridged notification received via two or more dedicated notification channels with state information for local notifications generated by computing device 910A responsive to determining a processing unit (e.g., processing unit 242 of FIG. 2) is awake or is otherwise not operating in a low power mode. In this way, notification management modules 924A, 924B may manage synchronization associated with remote notifications received via network 990 while a processing unit is operating in a low power mode, then further synchronize the remote notifications with local notifications responsive to the processing unit not operating in a lower power mode; potentially resulting in improved computational resource utilization associated with managing versions of notifications from various sources.

[0096] FIG. 10 is a flowchart illustrating example operations performed by an example computing device that is configured to manage notifications using notification management keys, in accordance with one or more aspects of the present disclosure. FIG. 10 may be discussed with respect to a FIG. 1 for example purposes only.

[0097] Computing device 110A may obtain a first notification with a first key (1002). Computing device 110A may obtain a second notification with a second key, the first notification and the second notification are associated with a software application of one or more applications 126 (1004). Computing device 110A may determine, based on the first key and the second key, whether the second notification is an updated version of the first notification (1006). Responsive to determining the second notification is the updated version of the first notification, computing device 110A may output the second notification for display (e.g., via UIC 112) (1008). Responsive to determining the second notification is not the updated version of the first notification, computing device 110A may block the second notification from being output for display (1010).

[0098] Aspects of this disclosure include the following examples.

[0099] Example 1 : A method includes obtaining, by a computing device, a first notification with a first key; obtaining, by the computing device, a second notification with a second key,Docket No.: 1333-932WO01 wherein the first notification and the second notification are associated with a software application executed by the computing device; determining, by the computing device and based on the first key and the second key, whether the second notification is an updated version of the first notification; responsive to determining the second notification is the updated version of the first notification, outputting, by the computing device, the second notification for display; and responsive to determining the second notification is not the updated version of the first notification, blocking, by the computing device, the second notification from being output for display.

[0100] Example 2: The method of example 1, further includes merging, based on the first key and the second key, the first notification and the second notification.

[0101] Example 3: The method of any of examples 1 and 2, wherein the first key includes a first content field associated with content of the first notification, a first source field associated with a source of the first notification, and a first revision field associated with when the first notification was obtained, the second key includes a second content field associated with content of the second notification, a second source field associated with a source of the second notification, and a second revision field associated with when the second notification was obtained, and wherein determining whether the second notification is the updated version of the first notification comprises: determining, based on the first content field and the second content field, the first notification corresponds to the second notification; and determining whether the first revision field indicates a time preceding a time indicated by the second revision field.

[0102] Example 4: The method of example 3, further includes blocking notifications from the source of the second notification.

[0103] Example 5: The method of any of examples 1 through 4, further includes obtaining a third notification with a third key; determining, by a notification unit of the computing device and while a processing unit of the computing device is in low-power mode, the third notification corresponds to the second notification based on the second key and the third key; and blocking, by the notification unit, the third notification from being output for display.

[0104] Example 6: The method of any of examples 1 through 5, wherein the computing device is a first computing device, and wherein obtaining the second notification comprises: obtaining the second notification from a second computing device wirelessly connected to the first computing device.

[0105] Example 7: The method of any of examples 1 through 6, wherein the computing device is a first computing device, and wherein obtaining the first notification comprises:Docket No.: 1333-932WO01 obtaining the first notification from a second computing device wirelessly connected to the first computing device.

[0106] Example 8: The method of any of examples 1 through 7, wherein outputting the second notification for display further comprises: deleting data associated with the first notification.

[0107] Example 9: The method of any of examples 1 through 8, wherein the software application is a messaging application.

[0108] Example 10: A computing device includes a processing unit; a display device; a notification unit; and a storage device that stores instructions executable by the notification unit to: obtain a first notification with a first key; obtain a second notification with a second key, wherein the first notification and the second notification are associated with a software application executed by the computing device; determine, and based on the first key and the second key, whether the second notification is an updated version of the first notification; responsive to determining the second notification is the updated version of the first notification, output the second notification for display; and responsive to determining the second notification is not the updated version of the first notification, block the second notification from being output for display.

[0109] Example 11 : The computing device of example 10, wherein the storage device further stores instructions executable by the notification unit to: merge, based on the first key and the second key, the first notification and the second notification.

[0110] Example 12: The computing device of any of examples 10 and 11, wherein the first key includes a first content field associated with content of the first notification, a first source field associated with a source of the first notification, and a first revision field associated with when the first notification was obtained, the second key includes a second content field associated with content of the second notification, a second source field associated with a source of the second notification, and a second revision field associated with when the second notification was obtained, and wherein to determine whether the second notification is the updated version of the first notification, the storage device stores instructions executable by the notification unit to: determine, based on the first content field and the second content field, the first notification corresponds to the second notification; and determine whether the first revision field indicates a time preceding a time indicated by the second revision field.

[0111] Example 13: The computing device of example 12, wherein the storage device further stores instructions executable by the notification unit to: block notifications from the source of the second notification.Docket No.: 1333-932WO01

[0112] Example 14: The computing device of any of examples 10 through 13, wherein the storage device further stores instructions executable by the notification unit to: obtain a third notification with a third key; determine, while the processing unit is in low-power mode, the third notification corresponds to the second notification based on the second key and the third key; and block the third notification from being output for display.

[0113] Example 15: The computing device of any of examples 10 through 14, wherein to obtain the second notification, the storage device stores instructions executable by the notification unit to: obtain the second notification from an external device wirelessly connected to the computing device.

[0114] Example 16: The computing device of any of examples 10 through 15, wherein to obtain the first notification, the storage device stores instructions executable by the notification unit to: obtain the first notification from an external device wirelessly connected to the computing device.

[0115] Example 17: The computing device of any of examples 10 through 16, wherein to output the second notification for display, the storage device further stores instructions executable by the notification unit to: delete data associated with the first notification.

[0116] Example 18: The computing device of any of examples 10 through 17, wherein the software application is a messaging application.

[0117] Example 19: Computer-readable storage media encoded with instructions that, when executed, cause a computing device to: obtain a first notification with a first key; obtain a second notification with a second key, wherein the first notification and the second notification are associated with a software application executed by the computing device; determine, and based on the first key and the second key, whether the second notification is an updated version of the first notification; responsive to determining the second notification is the updated version of the first notification, output the second notification for display; and responsive to determining the second notification is not the updated version of the first notification, block the second notification from being output for display.

[0118] Example 20: The computer-readable storage media of example 19, wherein the instructions further cause the computing device to: merge, based on the first key and the second key, the first notification and the second notification.

[0119] Example 21 : The computer-readable storage media of any of examples 19 and 20, wherein the first key includes a first content field associated with content of the first notification, a first source field associated with a source of the first notification, and a first revision field associated with when the first notification was obtained, the second keyDocket No.: 1333-932WO01 includes a second content field associated with content of the second notification, a second source field associated with a source of the second notification, and a second revision field associated with when the second notification was obtained, and wherein to determine whether the second notification is the updated version of the first notification, the instructions cause the computing device to: determine, based on the first content field and the second content field, the first notification corresponds to the second notification; and determine whether the first revision field indicates a time preceding a time indicated by the second revision field.

[0120] Example 22: The computer-readable storage media of example 21, wherein the instructions further cause the computing device to: block notifications from the source of the second notification.

[0121] Example 23: The computer-readable storage media of any of examples 19 through 22, wherein the instructions further cause the computing device to: obtain a third notification with a third key; determine, by a notification unit of the computing device and while a processing unit of the computing device is in low-power mode, the third notification corresponds to the second notification based on the second key and the third key; and block the third notification from being output for display.

[0122] Example 24: The computer-readable storage media of any of examples 19 through 23, wherein to obtain the second notification the instructions cause the computing device to: obtain the second notification from an external device wirelessly connected to the computing device.

[0123] Example 25: The computer-readable storage media of any of examples 19 through 24, wherein to obtain the first notification the instructions cause the computing device to: obtain the first notification from an external device wirelessly connected to the computing device.

[0124] Example 26: The computer-readable storage media of any of examples 19 through 25, wherein to output the second notification for display, the instructions further cause the computing device to: delete data associated with the first notification.

[0125] Example 27: The computer-readable storage media of any of examples 19 through 26, wherein the software application is a messaging application.

[0126] Example 28: A computing system comprising means for performing any of the methods of examples 1-9.

[0127] Example 29: Computer-readable storage media encoded with instructions that cause a computing system to perform any of the methods of examples 1-9.

[0128] Example 30: A computer program product comprising at least one non-transitory computer-readable media including one or more instructions that, when executed by at leastDocket No.: 1333-932WO01 one processor, cause the at least one processor to perform any of the methods of examples 1- 9.

[0129] By way of example, and not limitation, such computer-readable storage media can comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage, or other magnetic storage devices, flash memory, or any other storage medium that can be used to store desired program code in the form of instructions or data structures and that can be accessed by a computer. Also, any connection is properly termed a computer- readable medium. For example, if instructions are transmitted from a website, server, or other remote source using a coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, then the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the definition of medium. It should be understood, however, that computer-readable storage mediums and media and data storage media do not include connections, carrier waves, signals, or other transient media, but are instead directed to nontransient, tangible storage media. Disk and disc, as used herein, includes compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and Blu-ray disc, where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above should also be included within the scope of a computer-readable medium.

[0130] Instructions may be executed by one or more processors, such as one or more digital signal processors (DSPs), general purpose microprocessors, application specific integrated circuits (ASICs), field programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuitry. Accordingly, the term “processor,” as used herein may refer to any of the foregoing structures or any other structures suitable for implementation of the techniques described herein. In addition, in some aspects, the functionality described herein may be provided within dedicated hardware and / or software modules. Also, the techniques could be fully implemented in one or more circuits or logic elements.

[0131] The techniques of this disclosure may be implemented in a wide variety of devices or apparatuses, including a wireless handset, an integrated circuit (IC) or a set of ICs (e.g., a chip set). Various components, modules, or units are described in this disclosure to emphasize functional aspects of devices configured to perform the disclosed techniques, but do not necessarily require realization by different hardware units. Rather, as described above, various units may be combined in a hardware unit or provided by a collection of interDocket No.: 1333-932WO01 operative hardware units, including one or more processors as described above, in conjunction with suitable software and / or firmware.

[0132] Various embodiments have been described. These and other embodiments are within the scope of the following claims.

Claims

Docket No.: 1333-932WO01WHAT IS CLAIMED IS:

1. A method comprising: obtaining, by a computing device, a first notification with a first key; obtaining, by the computing device, a second notification with a second key, wherein the first notification and the second notification are associated with a software application executed by the computing device; determining, by the computing device and based on the first key and the second key, whether the second notification is an updated version of the first notification; responsive to determining the second notification is the updated version of the first notification, outputting, by the computing device, the second notification for display; and responsive to determining the second notification is not the updated version of the first notification, blocking, by the computing device, the second notification from being output for display.

2. The method of claim 1, further comprising: merging, based on the first key and the second key, the first notification and the second notification.

3. The method of any of claims 1-2, wherein the first key includes a first content field associated with content of the first notification, a first source field associated with a source of the first notification, and a first revision field associated with when the first notification was obtained, the second key includes a second content field associated with content of the second notification, a second source field associated with a source of the second notification, and a second revision field associated with when the second notification was obtained, and wherein determining whether the second notification is the updated version of the first notification comprises: determining, based on the first content field and the second content field, the first notification corresponds to the second notification; and determining whether the first revision field indicates a time preceding a time indicated by the second revision field.

4. The method of claim 3, further comprising: blocking notifications from the source of the second notification.Docket No.: 1333-932WO015. The method of any of claims 1-4, further comprising: obtaining a third notification with a third key; determining, by a notification unit of the computing device and while a processing unit of the computing device is in low-power mode, the third notification corresponds to the second notification based on the second key and the third key; and blocking, by the notification unit, the third notification from being output for display.

6. The method of any of claims 1-5, wherein the computing device is a first computing device, and wherein obtaining the second notification comprises: obtaining the second notification from a second computing device wirelessly connected to the first computing device.

7. The method of any of claims 1-6, wherein the computing device is a first computing device, and wherein obtaining the first notification comprises: obtaining the first notification from a second computing device wirelessly connected to the first computing device.

8. The method of any of claims 1-7, wherein outputting the second notification for display further comprises: deleting data associated with the first notification.

9. The method of any of claims 1-8, wherein the software application is a messaging application.

10. A computing device, comprising: a processing unit; a display device; a notification unit; and a storage device that stores instructions executable by the notification unit to: obtain a first notification with a first key; obtain a second notification with a second key, wherein the first notification and the second notification are associated with a software application executed by the computing device; determine, and based on the first key and the second key, whether the second notification is an updated version of the first notification;Docket No.: 1333-932WO01 responsive to determining the second notification is the updated version of the first notification, output the second notification for display; and responsive to determining the second notification is not the updated version of the first notification, block the second notification from being output for display.

11. The computing device of claim 10, further comprising means for performing any of the methods of claims 2-9.

12. A computing system comprising means for performing any of the methods of claims 1-9.

13. Computer-readable storage media encoded with instructions that cause a computing system to perform any of the methods of claims 1-9.

14. A computer program product comprising at least one non-transitory computer- readable media including one or more instructions that, when executed by at least one processor, cause the at least one processor to perform any of the methods of claims 1-9.