Notifications are typically utilized to provide information to users of devices such as smartphones, tablets, and personal computers (PCs) in real-time to deliver up-to-the-minute news and alerts.
This Background is provided to introduce a brief context for the Summary and Detailed Description that follow. This Background is not intended to be an aid in determining the scope of the claimed subject matter nor be viewed as limiting the claimed subject matter to implementations that solve any or all of the disadvantages or problems presented above.
An actionable notification service supports a notification publication and subscription system that interacts with registered endpoints such as smartphones, tablets, and PCs so that notifications can be distributed and effectively managed across multiple endpoints. Applications on registered endpoints can publish notifications into the system to which other registered endpoints may subscribe. The notifications received at the subscribing endpoints are displayed and raised in a manner to be fully actionable so that users can interact with the publishing application as a native experience using either a local handler or by implementing a remote session into the publishing endpoint.
The actionable notification service is arranged to enable users to efficiently manage notifications received across multiple subscribing endpoints by supporting a user interface (UI) for setting endpoint subscription criteria. For example, a user can elect to accept or suppress notifications to an endpoint at certain times of day, or when the endpoint is on a particular network, or when the endpoint is at a particular location. Also, when a user dismisses a notification raised at one endpoint, the notifications at the other subscribing endpoints can also be dismissed by the actionable notification service to eliminate duplicated and redundant notifications.
Advantageously, the actionable notification service gives endpoint users ways to manage notifications in ways that improve user experiences while also enabling control and optimization of endpoint resource consumption and transmission network utilization. For example, users can interact with the actionable notification service to select subscription criteria to suppress notifications to certain subscribing endpoints under some conditions to reduce resource consumption at those endpoints where battery life and resources would otherwise be expended to power the endpoint radio receiver and light up the screen to display the notification. In other scenarios, users may decide to allocate network usage so that notifications can be raised at subscribing endpoints that are on Wi-Fi networks while notifications are suppressed to other subscribing endpoints that may currently have only connectivity to cellular data networks.
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter. Furthermore, the claimed subject matter is not limited to implementations that solve any or all disadvantages noted in any part of this disclosure. It may be appreciated that the above-described subject matter may be implemented as a computer-controlled apparatus, a computer process, a computing system, or as an article of manufacture such as one or more computer-readable storage media. These and various other features may be apparent from a reading of the following Detailed Description and a review of the associated drawings.
Like reference numerals indicate like elements in the drawings. Elements are not drawn to scale unless otherwise indicated. It is emphasized that the particular UIs displayed in the drawings can vary from what is shown according to the needs of a particular implementation. While UIs are shown in portrait mode in the drawings, the present arrangement may also be implemented using a landscape mode.
The IP communications network 115 typically includes interfaces that support a connection to the Internet so that the endpoints 110 can access content provided by one or more content providers 125 and access an actionable notifications service 130 in some cases. The endpoints 110 and IP communications network 115 may be configured to enable device-to-device communication using peer-to-peer and/or server-based protocols. Support for device-to-device communications may be provided, at least in part, using various applications that run on an endpoint 110.
The endpoints 110 may provide various capabilities, such as voice and video calling and messaging, and typically support data-consuming applications such as Internet browsing and multimedia (e.g., music, video, etc.) consumption in addition to various other features. The endpoints 110 may include, for example, user equipment, mobile phones, cell phones, feature phones, tablet computers, and smartphones which users often employ to make and receive voice and/or multimedia (i.e., video) calls, engage in messaging (e.g., texting), use applications and access services that employ data, browse the World Wide Web, and the like.
However, alternative types of electronic endpoint devices are also envisioned to be usable within the communications environment 100 so long as they are configured with communication capabilities and can connect to the IP communications network 115. Such alternative endpoints variously include handheld computing devices, PDAs (personal digital assistants), portable media players, phablet devices (i.e., combination smartphone/tablet devices), wearable computers, navigation devices such as GPS (Global Positioning System) systems, laptop PCs (personal computers), desktop computers, multimedia consoles, gaming systems, networked and/or remotely controlled cameras, or the like. Such cameras may include, for example, room and home surveillance cameras, body-worn cameras, webcams, external cameras used with PCs, tablets, and other computing devices, remote cameras in vehicles, etc. In the discussion that follows, the use of the term “endpoint” is intended to cover all devices that are configured with communication capabilities and have IP access capabilities to the IP communications network 115.
The various endpoints 110 in the environment 100 can support different features, functionalities, and capabilities (here referred to generally as “features”). Some of the features supported on a given endpoint can be similar to those supported on others, while other features may be unique to a given endpoint. The degree of overlap and/or distinctiveness among features supported on the various endpoints 110 can vary by implementation. For example, some endpoints 110 can support touch controls, gesture recognition, natural language interfaces, and voice commands, while others may enable a more limited UI. Some endpoints may support video consumption and Internet browsing, while other devices may support more limited media handling and network interface features.
Accessory devices 114, such as wristbands and other wearable devices may also be present in the environment 100. Such accessory device 114 typically is adapted to interoperate with a device 110 using communication protocols like Bluetooth® and USB (Universal Serial Bus) to support functions such as monitoring of the wearer's physiology (e.g., heart rate, steps taken, calories burned, etc.) and environmental conditions (temperature, humidity, ultra-violet (UV) levels, etc.), and surfacing notifications from the coupled device 110.
Different access networks can have different and varying attributes. For example, as shown in
Multi-point actionable notification experiences may be implemented using components that are instantiated on a given endpoint 110.
The application layer 405 in this illustrative example supports typical applications 430 (e.g., web browser, music player, email application, etc.), as well as specific applications 440 that can generate and/or handle notifications. An actionable notifications client 450 is also instantiated in the application layer 405 in this example. The client 450 typically is configured to interact with the service 130 to implement an actionable notification system, as indicated by line 460.
In some implementations, the actionable notifications service 130 can expose an API (application programming interface), such as a REST (Representational State Transfer) API 465 so that the notification applications 440 can interact directly with the service 130. Accordingly, the client 450 may not need to be installed in some cases or can serve to supplement methods and functions exposed by the API 465. It is noted that the notification applications 440 can include client components that interact with notification push service/systems which can operate using different protocols (e.g., HTTP (HyperText Transfer Protocol), SMS (Short Message Service), SMTP (Simple Mail Transfer Protocol), etc.) over various network types including, for example, cellular, short-range (e.g., Bluetooth, etc.), IP-based including Wi-Fi and Ethernet, public-switched, and the like.
The actionable notifications service 130 may expose management tools 468 in some implementations. The tools 468 may be configured for access using web applications such as a browser to enable users to manage registered endpoints remotely. For example, a user may wish to re-authenticate an endpoint in scenarios in which a device is lost/stolen, or replaced/upgraded. The tools 468 can be used to supplement or replace some of the user interface controls exposed locally on the endpoints as described below in the text accompanying
The applications 430, 440, and 450 are often implemented using locally executing code. However in some cases these applications may rely on services and/or remote code execution provided by remote servers or other computing platforms such as those supported by other cloud-based resources/services 470. While the actionable notifications client 450 is shown here as a component that is instantiated in the application layer 405, it may be appreciated that the functionality that it supports may be implemented, in whole or part, using OS components 475 and/or other components that are supported in the hardware layer 415.
As shown in
The actionable notifications client 450 can include an application launcher 520 that can launch an appropriate application to support a native experience associated with a notification on a local endpoint 110 when a notification is received from a remote publishing endpoint. Typically, the client 450 will pass inbound notification data 525 to the application 440 through an API 530 as may be needed to render the native experience associated with the notification.
In the example shown in
As shown in
As shown in
The actionable notifications client 450 can surface a UI 1005 as shown in
The subscription management feature may facilitate users selecting criteria under which published notifications are received at a subscribing endpoint and criteria for suppressing notification receipt. For example, acceptance and suppression criteria can be specified through the UI 1005 so that notifications can be received at a subscribing endpoint during certain periods of the day and be suppressed at other times. In another example, criteria may be selected so that notifications may be accepted when a subscribing endpoint is on a Wi-Fi access network, but suppressed when on a cellular data access network, unless the notification is high priority. It is emphasized that these are just a few examples of how the subscription management feature may be utilized and that a variety of criteria may be specified using the system inputs 905 (
The UI 1005 can also enable users to respond to notifications 1035 by actioning on notifications received at subscribing endpoints 1040 and dismiss notifications across multiple endpoints 1045 in order to manage and control duplicative notifications. Other features and functions 1050 can also be exposed by the UI 1005 as may be needed for specific implementations of actionable notifications. For example, the UI 1005 can be configured, in some cases, to provide users with a global view of all registered endpoints and details of their associated publication rights and subscriptions.
The initiating endpoint 1102 publishes an actionable notification 1210 into the notification publication and subscription system 600. The system 600 surfaces the actionable notification 1210 on the subscribing endpoints 1115 and 1117 as with the earlier severe weather alert. As shown, the system 600 suppresses the actionable notifications on the subscribing endpoints 1119 and 1121. Criteria were selected, in this particular example, so that actionable notifications are suppressed when the mom's tablet is outside the home Wi-Fi network to reduce bandwidth consumption on the cellular data access network 1215. Criteria were also selected so that notifications are suppressed when the daughter's smartphone is located at school during classroom hours in order to comply with school policies to prevent distractions.
As shown in
In typical implementations the calling window 1705 on the subscribing endpoint appears similarly to the window exposed by the native VoIP calling application on the initiating endpoint and the user can interact with the window 1705 to handle the call in a normal manner. Such operational transparency may be implemented in different ways according to the needs of a given implementation. As shown in
In
As shown in
In step 2205, an actionable notification is received at the endpoint from the notification publication and subscription system. As noted above, subscription criteria are user-selectable to enable user experiences and resources such as battery life and network utilization to be optimized to the user's needs. The received notification is surfaced on the subscribing endpoint's UI in step 2210. Input from the user at the UI is received in step 2215 to action on the notification or dismiss it. When a notification is dismissed, then duplicate notifications received at other subscribing endpoints are also dismissed by the actionable notifications service. When the notification is actioned upon through the UI, then in step 2220, the actionable notifications client can interact through an API with the relevant application on the endpoint to launch the application to handle the notification and provide the appropriate user experience. Alternatively, the service can facilitate a remote experience on the subscribing endpoint that is hosted by the initiating publishing endpoint in step 2225.
A number of program modules may be stored on the hard disk, magnetic disk 2533, optical disk 2543, ROM 2517, or RAM 2521, including an operating system 2555, one or more application programs 2557, other program modules 2560, and program data 2563. A user may enter commands and information into the computer system 2500 through input devices such as a keyboard 2566 and pointing device 2568 such as a mouse. Other input devices (not shown) may include a microphone, joystick, game pad, satellite dish, scanner, trackball, touchpad, touch screen, touch-sensitive device, voice-command module or device, user motion or user gesture capture device, or the like. These and other input devices are often connected to the processor 2505 through a serial port interface 2571 that is coupled to the system bus 2514, but may be connected by other interfaces, such as a parallel port, game port, or universal serial bus (USB). A monitor 2573 or other type of display device is also connected to the system bus 2514 via an interface, such as a video adapter 2575. In addition to the monitor 2573, personal computers typically include other peripheral output devices (not shown), such as speakers and printers. The illustrative example shown in
The computer system 2500 is operable in a networked environment using logical connections to one or more remote computers, such as a remote computer 2588. The remote computer 2588 may be selected as another personal computer, a server, a router, a network PC, a peer device, or other common network node, and typically includes many or all of the elements described above relative to the computer system 2500, although only a single representative remote memory/storage device 2590 is shown in
When used in a LAN networking environment, the computer system 2500 is connected to the local area network 2593 through a network interface or adapter 2596. When used in a WAN networking environment, the computer system 2500 typically includes a broadband modem 2598, network gateway, or other means for establishing communications over the wide area network 2595, such as the Internet. The broadband modem 2598, which may be internal or external, is connected to the system bus 2514 via a serial port interface 2571. In a networked environment, program modules related to the computer system 2500, or portions thereof, may be stored in the remote memory storage device 2590. It is noted that the network connections shown in
The architecture 2600 illustrated in
The mass storage device 2612 is connected to the CPU 2602 through a mass storage controller (not shown) connected to the bus 2610. The mass storage device 2612 and its associated computer-readable storage media provide non-volatile storage for the architecture 2600.
Although the description of computer-readable storage media contained herein refers to a mass storage device, such as a hard disk or CD-ROM drive, it may be appreciated by those skilled in the art that computer-readable storage media can be any available storage media that can be accessed by the architecture 2600.
By way of example, and not limitation, computer-readable storage media may include volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules, or other data. For example, computer-readable media includes, but is not limited to, RAM, ROM, EPROM (erasable programmable read only memory), EEPROM (electrically erasable programmable read only memory), Flash memory or other solid state memory technology, CD-ROM, DVDs, HD-DVD (High Definition DVD), Blu-ray, or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by the architecture 2600.
According to various embodiments, the architecture 2600 may operate in a networked environment using logical connections to remote computers through a network. The architecture 2600 may connect to the network through a network interface unit 2616 connected to the bus 2610. It may be appreciated that the network interface unit 2616 also may be utilized to connect to other types of networks and remote computer systems. The architecture 2600 also may include an input/output controller 2618 for receiving and processing input from a number of other devices, including a keyboard, mouse, or electronic stylus (not shown in
It may be appreciated that the software components described herein may, when loaded into the CPU 2602 and executed, transform the CPU 2602 and the overall architecture 2600 from a general-purpose computing system into a special-purpose computing system customized to facilitate the functionality presented herein. The CPU 2602 may be constructed from any number of transistors or other discrete circuit elements, which may individually or collectively assume any number of states. More specifically, the CPU 2602 may operate as a finite-state machine, in response to executable instructions contained within the software modules disclosed herein. These computer-executable instructions may transform the CPU 2602 by specifying how the CPU 2602 transitions between states, thereby transforming the transistors or other discrete hardware elements constituting the CPU 2602.
Encoding the software modules presented herein also may transform the physical structure of the computer-readable storage media presented herein. The specific transformation of physical structure may depend on various factors, in different implementations of this description. Examples of such factors may include, but are not limited to, the technology used to implement the computer-readable storage media, whether the computer-readable storage media is characterized as primary or secondary storage, and the like. For example, if the computer-readable storage media is implemented as semiconductor-based memory, the software disclosed herein may be encoded on the computer-readable storage media by transforming the physical state of the semiconductor memory. For example, the software may transform the state of transistors, capacitors, or other discrete circuit elements constituting the semiconductor memory. The software also may transform the physical state of such components in order to store data thereupon.
As another example, the computer-readable storage media disclosed herein may be implemented using magnetic or optical technology. In such implementations, the software presented herein may transform the physical state of magnetic or optical media, when the software is encoded therein. These transformations may include altering the magnetic characteristics of particular locations within given magnetic media. These transformations also may include altering the physical features or characteristics of particular locations within given optical media to change the optical characteristics of those locations. Other transformations of physical media are possible without departing from the scope and spirit of the present description, with the foregoing examples provided only to facilitate this discussion.
In light of the above, it may be appreciated that many types of physical transformations take place in the architecture 2600 in order to store and execute the software components presented herein. It may also be appreciated that the architecture 2600 may include other types of computing devices, including handheld computers, embedded computer systems, smartphones, PDAs, and other types of computing devices known to those skilled in the art. It is also contemplated that the architecture 2600 may not include all of the components shown in
The illustrated device 110 can include a controller or processor 2710 (e.g., signal processor, microprocessor, microcontroller, ASIC (Application Specific Integrated Circuit), or other control and processing logic circuitry) for performing such tasks as signal coding, data processing, input/output processing, power control, and/or other functions. An operating system 2712 can control the allocation and usage of the components 2702, including power states, above-lock states, and below-lock states, and provides support for one or more application programs 2714. The application programs can include common mobile computing applications (e.g., image-capture applications, email applications, calendars, contact managers, web browsers, messaging applications), or any other computing application.
The illustrated mobile device 110 can include memory 2720. Memory 2720 can include non-removable memory 2722 and/or removable memory 2724. The non-removable memory 2722 can include RAM, ROM, Flash memory, a hard disk, or other well-known memory storage technologies. The removable memory 2724 can include Flash memory or a Subscriber Identity Module (SIM) card, which is well known in GSM (Global System for Mobile communications) systems, or other well-known memory storage technologies, such as “smart cards.” The memory 2720 can be used for storing data and/or code for running the operating system 2712 and the application programs 2714. Example data can include web pages, text, images, sound files, video data, or other data sets to be sent to and/or received from one or more network servers or other devices via one or more wired or wireless networks.
The memory 2720 may also be arranged as, or include, one or more computer-readable storage media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules or other data. For example, computer-readable media includes, but is not limited to, RAM, ROM, EPROM, EEPROM, Flash memory or other solid state memory technology, CD-ROM (compact-disc ROM), DVD, (Digital Versatile Disc) HD-DVD (High Definition DVD), Blu-ray, or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by the mobile device 110.
The memory 2720 can be used to store a subscriber identifier, such as an International Mobile Subscriber Identity (IMSI), and an equipment identifier, such as an International Mobile Equipment Identifier (IMEI). Such identifiers can be transmitted to a network server to identify users and equipment. The mobile device 110 can support one or more input devices 2730; such as a touch screen 2732; microphone 2734 for implementation of voice input for voice recognition, voice commands and the like; camera 2736; physical keyboard 2738; trackball 2740; and/or proximity sensor 2742; and one or more output devices 2750, such as a speaker 2752 and one or more displays 2754. Other input devices (not shown) using gesture recognition may also be utilized in some cases. Other possible output devices (not shown) can include piezoelectric or haptic output devices. Some devices can serve more than one input/output function. For example, touchscreen 2732 and display 2754 can be combined into a single input/output device.
A wireless modem 2760 can be coupled to an antenna (not shown) and can support two-way communications between the processor 2710 and external devices, as is well understood in the art. The modem 2760 is shown generically and can include a cellular modem for communicating with the mobile communication network 2704 and/or other radio-based modems (e.g., Bluetooth 2764 or Wi-Fi 2762). The wireless modem 2760 is typically configured for communication with one or more cellular networks, such as a GSM network for data and voice communications within a single cellular network, between cellular networks, or between the mobile device and a public switched telephone network (PSTN).
The mobile device can further include at least one input/output port 2780, a power supply 2782, a satellite navigation system receiver 2784, such as a GPS receiver, an accelerometer 2786, a gyroscope (not shown), and/or a physical connector 2790, which can be a USB port, IEEE 1394 (FireWire) port, and/or an RS-232 port. The illustrated components 2702 are not required or all-inclusive, as any components can be deleted and other components can be added.
A graphics processing unit (GPU) 2808 and a video encoder/video codec (coder/decoder) 2814 form a video processing pipeline for high speed and high resolution graphics processing. Data is carried from the GPU 2808 to the video encoder/video codec 2814 via a bus. The video processing pipeline outputs data to an A/V (audio/video) port 2840 for transmission to a television or other display. A memory controller 2810 is connected to the GPU 2808 to facilitate processor access to various types of memory 2812, such as, but not limited to, a RAM.
The multimedia console 1104 includes an I/O controller 2820, a system management controller 2822, an audio processing unit 2823, a network interface controller 2824, a first USB (Universal Serial Bus) host controller 2826, a second USB controller 2828, and a front panel I/O subassembly 2830 that are preferably implemented on a module 2818. The USB controllers 2826 and 2828 serve as hosts for peripheral controllers 2842(1) and 2842(2), a wireless adapter 2848, and an external memory device 2846 (e.g., Flash memory, external CD/DVD ROM drive, removable media, etc.). The network interface controller 2824 and/or wireless adapter 2848 provide access to a network (e.g., the Internet, home network, etc.) and may be any of a wide variety of various wired or wireless adapter components including an Ethernet card, a modem, a Bluetooth module, a cable modem, or the like.
System memory 2843 is provided to store application data that is loaded during the boot process. A media drive 2844 is provided and may comprise a DVD/CD drive, hard drive, or other removable media drive, etc. The media drive 2844 may be internal or external to the multimedia console 1104. Application data may be accessed via the media drive 2844 for execution, playback, etc. by the multimedia console 1104. The media drive 2844 is connected to the I/O controller 2820 via a bus, such as a Serial ATA bus or other high speed connection (e.g., IEEE 1394).
The system management controller 2822 provides a variety of service functions related to assuring availability of the multimedia console 1104. The audio processing unit 2823 and an audio codec 2832 form a corresponding audio processing pipeline with high fidelity and stereo processing. Audio data is carried between the audio processing unit 2823 and the audio codec 2832 via a communication link. The audio processing pipeline outputs data to the A/V port 2840 for reproduction by an external audio player or device having audio capabilities.
The front panel I/O subassembly 2830 supports the functionality of the power button 2850 and the eject button 2852, as well as any LEDs (light emitting diodes) or other indicators exposed on the outer surface of the multimedia console 1104. A system power supply module 2839 provides power to the components of the multimedia console 1104. A fan 2838 cools the circuitry within the multimedia console 1104.
The CPU 2801, GPU 2808, memory controller 2810, and various other components within the multimedia console 1104 are interconnected via one or more buses, including serial and parallel buses, a memory bus, a peripheral bus, and a processor or local bus using any of a variety of bus architectures. By way of example, such architectures can include a Peripheral Component Interconnects (PCI) bus, PCI-Express bus, etc.
When the multimedia console 1104 is powered ON, application data may be loaded from the system memory 2843 into memory 2812 and/or caches 2802 and 2804 and executed on the CPU 2801. The application may present a graphical user interface that provides a consistent user experience when navigating to different media types available on the multimedia console 1104. In operation, applications and/or other media contained within the media drive 2844 may be launched or played from the media drive 2844 to provide additional functionalities to the multimedia console 1104.
The multimedia console 1104 may be operated as a standalone system by simply connecting the system to a television or other display. In this standalone mode, the multimedia console 1104 allows one or more users to interact with the system, watch movies, or listen to music. However, with the integration of broadband connectivity made available through the network interface controller 2824 or the wireless adapter 2848, the multimedia console 1104 may further be operated as a participant in a larger network community.
When the multimedia console 1104 is powered ON, a set amount of hardware resources are reserved for system use by the multimedia console operating system. These resources may include a reservation of memory (e.g., 16 MB), CPU and GPU cycles (e.g., 5%), networking bandwidth (e.g., 8 kbps), etc. Because these resources are reserved at system boot time, the reserved resources do not exist from the application's view.
In particular, the memory reservation preferably is large enough to contain the launch kernel, concurrent system applications, and drivers. The CPU reservation is preferably constant such that if the reserved CPU usage is not used by the system applications, an idle thread will consume any unused cycles.
With regard to the GPU reservation, lightweight messages generated by the system applications (e.g., pop-ups) are displayed by using a GPU interrupt to schedule code to render pop-ups into an overlay. The amount of memory needed for an overlay depends on the overlay area size and the overlay preferably scales with screen resolution. Where a full user interface is used by the concurrent system application, it is preferable to use a resolution independent of application resolution. A scaler may be used to set this resolution such that the need to change frequency and cause a TV re-sync is eliminated.
After the multimedia console 1104 boots and system resources are reserved, concurrent system applications execute to provide system functionalities. The system functionalities are encapsulated in a set of system applications that execute within the reserved system resources described above. The operating system kernel identifies threads that are system application threads versus gaming application threads. The system applications are preferably scheduled to run on the CPU 2801 at predetermined times and intervals in order to provide a consistent system resource view to the application. The scheduling is to minimize cache disruption for the gaming application running on the console.
When a concurrent system application requires audio, audio processing is scheduled asynchronously to the gaming application due to time sensitivity. A multimedia console application manager (described below) controls the gaming application audio level (e.g., mute, attenuate) when system applications are active.
Input devices (e.g., controllers 2842(1) and 2842(2)) are shared by gaming applications and system applications. The input devices are not reserved resources, but are to be switched between system applications and the gaming application such that each will have a focus of the device. The application manager preferably controls the switching of input stream, without knowledge of the gaming application's knowledge and a driver maintains state information regarding focus switches.
Various exemplary embodiments of the present multi-endpoint actionable notifications are now presented by way of illustration and not as an exhaustive list of all embodiments. An example includes a device configured as a registered endpoint with a notification publication and subscription system, comprising: one or more processors; a display that supports a user interface (UI) for interacting with a device user; and a memory storing computer-readable instructions which, when executed by the one or more processors, perform a method for managing notifications across multiple endpoint devices, comprising: receiving a notification from the system according to subscriptions to publishing endpoints, the subscriptions being user-selectable for managing resources across the multiple endpoint devices, the resources including device resources and network resources, surfacing the received notification on the UI, receiving input at the UI to action on the notification or dismiss the notification, a dismissal of the notification at the UI causing dismissal of the notification respectively received at each of the other subscribing endpoints, and when the notification is actioned upon on the UI, launching an application for handling the notification.
In another example, the device further includes publishing a notification into the notification publication and subscription system, the notification being actionable when received and surfaced at subscribing endpoints. In another example, the device further includes hosting a client configured for interacting with the notification publication and subscription system, the client including at least one of launcher for launching the application handling the notification or native notification capabilities. In another example, the device further includes configuring the client to expose an application programming interface (API) to one or more applications, the API arranged to receive outbound notification data associated with notifications that are published into the notification publication and subscription system. In another example, the application is launched using a connection to a publishing endpoint to support a remote experience. In another example, each of the multiple endpoints uses respective access networks having different attributes for connectivity to the notification publication and subscription system and for notification transportation, and the managing includes managing utilization of the different access networks when transporting the notifications to respective multiple endpoints. In another example, the device further includes enabling a user at the UI to interact with the notification handling application as a native experience on the device. In another example, the device further includes configuring the UI for user interaction of one or more of endpoint registration, endpoint subscription management, or endpoint publication management, the endpoint subscription management including setting of criteria for notification acceptance or notification suppression. In another example, the criteria include one of endpoint location, time, notification characteristics, or endpoint state. In another example, the device is further incorporated into one of smartphone, tablet, wearable computing device, personal computer, or gaming device.
A further example includes a method for managing notifications across multiple endpoints, each endpoint being a device registered to a notification publication and subscription system, the method comprising the steps of: supporting a user interface (UI) exposed on a server, the user interface configured for i) enabling endpoints to be registered and unregistered with the notification publication and subscription system, ii) setting publication rights for registered endpoints, and iii) setting subscriptions for registered endpoints; and hosting the notification publication and subscription system for registered endpoints to access over a network, the notification publication and subscription system being arranged for distributing actionable notifications over the network between publishing endpoints and subscribing endpoints according to the publication rights and subscriptions.
In another example, the method further includes configuring the UI for user setting of notification acceptance and notification suppression criteria on a per-endpoint basis. In another example, the method further includes suppressing a notification from reaching an endpoint in accordance with the suppression criteria. In another example, the method further includes triggering establishment of a connection between a subscribing endpoint and a publishing endpoint to support a remote experience hosted on the publishing endpoint for the subscribing endpoint when a notification on the subscribing endpoint is actioned upon. In another example, the method further includes sending a notification with a link to a subscribing endpoint, the link, when followed, providing access to a notification handling application that is available for downloading by the subscribing endpoint. In another example, the method further includes dismissing duplicate notifications across remote endpoints in response to a user dismissing a notification at a local endpoint.
A further example includes one or more computer-readable memory devices storing instructions which, when executed by one or more processors in an electronic device, perform a method for removing duplicate notifications across endpoints being registered to a notification publication and subscription system, comprising: receiving an indication that a notification from a publishing endpoint received at a subscribing endpoint over a network has been dismissed; identifying additional subscribing endpoints that have received the notification from the publishing endpoint over the network; and instructing the additional subscribing endpoints to dismiss the notification received from the publishing endpoint.
In another example, the one or more computer-readable memory devices further include reviewing metadata associated with the notification to verify that the notifications received at the additional subscribing endpoints are duplicative. In another example, the metadata comprises a unique ID for the publishing endpoint. In another example, the notification publication and subscription system is implemented using a server that interoperates with clients disposed on respective registered endpoints.
Based on the foregoing, it may be appreciated that technologies for multi-endpoint actionable notifications have been disclosed herein. Although the subject matter presented herein has been described in language specific to computer structural features, methodological and transformative acts, specific computing machinery, and computer-readable storage media, it is to be understood that the invention defined in the appended claims is not necessarily limited to the specific features, acts, or media described herein. Rather, the specific features, acts, and mediums are disclosed as example forms of implementing the claims.
The subject matter described above is provided by way of illustration only and may not be construed as limiting. Various modifications and changes may be made to the subject matter described herein without following the example embodiments and applications illustrated and described, and without departing from the true spirit and scope of the present invention, which is set forth in the following claims.