PRIORITY INFORMATIONThe present application is a divisional of U.S. patent application Ser. No. 15/060,186 filed Mar. 3, 2016 and entitled “System and Method for Blocking Notification Messages During Screen Sharing,” the disclosure of which is hereby incorporated by reference in its entirety.
TECHNICAL FIELDThe present description relates, in general, to communication systems and, more specifically, to systems and techniques for preventing notification messages from displaying during a screensharing communication session.
BACKGROUNDInternet-based screensharing sessions are popular ways to collaborate, and are used to conduct presentations for various purposes such as business meetings, product sales pitches, symposiums, and the like. These sessions have the advantage of allowing groups of people to attend a presentation without having to be physically in the same room.
However, screensharing sessions are often conducted from a presenter's personal or private business computer, and therefore involve sharing the contents of the display of the presenter's computer with the participants of the screensharing session. This raises various privacy and security concerns, including the possibility that notifications and instant messages received by the presenter may “pop up” on the presenter's display during a screen sharing session, and thus be inadvertently shared with the participants of the screensharing session.
Instant messaging systems allow users to communicate asymmetrically by sending text messages back and forth between instant messaging applications on user computers using various appropriate protocols such as Extensible Messaging and Presence Protocol (XMPP). Internet Relay Chat (IRC), Rendezvous Protocol (RVP), etc. Typically, when a user is logged into an instant messaging service via an instant messaging application, some subset of other users of the service (often those on a user's “friend list”) can send messages to the user without the user's prior approval.
For the user's convenience, the instant messaging application may move a messaging window containing the newly received message to the front of the user's display so that the user does not miss the message. Alternatively or in addition, an operating system on the user's computer may cause an alert of some sort to be displayed to the user. For example, the alert may include a small window in a corner of the display which contains at least a preview of the received instant message for several seconds before disappearing in order to alert the user to the received message. The operating system may also facilitate display of other types of notifications as a small window in a corner of the display. For example, the operating system may notify the user that an application requires an update, that a security application has discovered a vulnerability, that a calendar appointment is upcoming, that a new email has been received, or the like.
The contents of instant messages, emails, calendar appointments, and the like may be sensitive. Sharing this sensitive information could be detrimental to business, could reveal legally protected information, or otherwise be very embarrassing for the presenter. It may therefore be desirable to implement systems and methods for preventing such notifications and messages to display on a user's computer screen while that user is presenting in a screensharing session.
SUMMARYIn one example, a method comprises: receiving, by an operating system of a computer, a first instruction from a screensharing application to suspend displaying notification messages by the operating system of the computer. The method further comprises sending visual media of a display screen of the computer by the operating system to the screensharing application during a screen sharing communication session. The method further comprises disregarding the request during the screen sharing communication session in accordance with the first instruction, in response to receiving a request from a first application to display a notification message on the display screen.
In another example, a computing device comprises: a memory containing a machine readable medium comprising machine executable code having stored thereon instructions for performing a method of suspending display of textual messages. The computing device further comprises a processor coupled to the memory. The processor is configured to execute the machine executable code to perform the following actions by a messaging application executed by the processor: receive, by the messaging application, a first instruction from a screensharing application to suspend displaying textual messages on a display screen of a computer executing the screen sharing application during a screen sharing communication session, store a first textual message received from a messaging server in response to receiving the first instruction and without causing the first textual message to be displayed, receive a second instruction from the screensharing application to resume displaying textual messages, wherein the second instruction is received in response to an end of the screen sharing communication session, and display the first textual message in response to receiving the second instruction.
In another example, a computer program having a computer readable medium tangibly recording computer program logic, the computer program product comprises: code to suspend sending messages from a messaging server to a messaging application, in response to receiving a first instruction to suspend sending messages to the messaging application during a screen sharing communication session.
BRIEF DESCRIPTION OF THE DRAWINGSFIG. 1 is a diagram of an embodiment of a system connecting user devices to a collaboration server and a collaboration media sever via a network.
FIG. 2 is an illustration of an example computer system adapted according to an embodiment of the present disclosure.
FIG. 3 is an illustration of an example signal flow diagram according to one embodiment for blocking notification messages at the operating system level.
FIG. 4 is a flowchart illustrating a method for blocking notification messages at the operating system level.
FIG. 5 is an illustration of an example signal flow diagram according to one embodiment for blocking notification messages at the messaging application level.
FIG. 6 is an illustration of an example flowchart according to one embodiment for blocking notification messages at the messaging application level.
FIG. 7 is an illustration of an example signal flow diagram according to one embodiment for blocking notification messages at the messaging server level.
FIG. 8 is an illustration of an example flowchart according to one embodiment for blocking notification messages at the messaging server level.
DETAILED DESCRIPTIONThe detailed description set forth below, in connection with the appended drawings, is intended as a description of various configurations and is not intended to represent the only configurations in which the concepts described herein may be practiced. The detailed description includes specific details for the purpose of providing a thorough understanding of the various concepts. However, it will be apparent to those skilled in the art that these concepts may be practiced without these specific details. In some instances, well-known structures and components are shown in block diagram form in order to avoid obscuring such concepts.
Embodiments of the present disclosure describe systems and methods for blocking notification messages from displaying on a user's computer while the user is sharing the contents of his display output with other users. A notification message may include, for example, an instant message popup notification, an operating system (OS) notification (such as an application update notification, a security scan notification, or the like), or the like. The user may share the contents of his display via a screensharing application, which may send the graphics output of the user's computer to the computers of participants in a screensharing session. The screensharing application may send the graphics output via a screensharing server, or by sending through a direct network connection to a participant's computer.
Screensharing is often used to conduct presentations. For example, a user may create a slide deck as a visual aid for an oral presentation, and may use a screensharing application to present the slides to a group of participants. Such a presentation may be in person or virtual. In the in-person example, the presenter's computer's graphical output may be projected onto a screen, a wall, or the like. In a virtual presentation, the presenter's computer's graphical output may be shared via a communication network (e.g., the Internet) with participants' computers, which may display the graphical output in an application window for the participants.
Many applications on a modern computer provide various notifications to the user. In many cases, these notifications “pop up” onto the display for the user's convenience. For instance, a pop-up may include a selectable, visual object that is rendered on top of a user's display screen, and it may include a part of a message or an entire message and it may be substantially smaller than the entirety of the display screen so that it is not too intrusive but is still readable. For example, an email management application may provide a pop up notification upon receipt of a new email, and may include in that notification a preview of the subject of the email and the first few lines of the body of the email. A calendar application may provide a pop up notification reminding the user of an approaching calendar appointment, and may include in the notification a name of the appointment and a brief description of the appointment, other attendees of the appointment, or the like. A security application may provide notifications of security vulnerabilities that need to be addressed. For simplicity, all such pop up notifications or notification windows will be referred to as notification windows below. All of the above examples of notifications could contain sensitive information that the user does not intend to share with other people, but which participants in a screensharing session may nonetheless see.
In an embodiment of the present disclosure, a screensharing application running on a user's computer may identify various applications, either locally on the user's computer or remotely on other devices such as server computers, that can cause notification windows to appear on the user's computer. When screensharing is initiated through the screensharing application, the screensharing application may send a request to one or more of the identified applications, requesting that those applications not trigger notification messages on the user's computer. When screensharing is ended, the screensharing application may inform the other applications that they may resume triggering notifications. Several examples are described below.
FIG. 1 illustrates anexample network architecture100 adapted according to one embodiment. Thenetwork architecture100 includes user computer102, which is associated with user A in this example. User computer102 may run various applications, which may include an operating system (OS)104, amessaging application106, ascreensharing application108, and variousother applications117. The user computer102 has at least onedisplay110, which contains various display windows such asmiscellaneous application windows112,messaging window114, andnotification window116. In this example, thedisplay110 includes an interactive, visual rendering of the Graphical User Interface (GUI) by theOS104 on a hardware monitor or other physical display screen of user computer102.
TheOS104 underlies the functionality of much of the user computer102, coordinating communication between multiple applications, communication between applications and input/output (I/O) devices, and the like. In some embodiments,OS104 may create notifications that are displayed ondisplay110 in anotification window116. Such notifications may include, for example, software update reminders, security risk notifications, received email previews, calendar appointment reminders, and the like. The notifications may in some cases be created by an application on the computer102 that informs theOS104 that it has a notification for user A.
Messaging application106 facilitates receipt and delivery of, for example, instant messages between the user A's computer102 and other user computers. When messagingapplication106 receives an instant message from another user's computer, such as user B'scomputer126, it displays the message to user A, for example via amessaging window114 ondisplay110. The messaging application may communicate with thedisplay110 via theOS104. For example, theOS104 may provide to applications a software framework for causing display windows to appear.
User computer102 is connected to anetwork118, which may be a local area network (LAN), a wide area network (WAN) such as the Internet, or any other appropriate network. The user computer102 may communicate with various other devices over thenetwork118, including ascreensharing server120, screensharing participants'computers122 and124, one or more other user computers such as User B'scomputer126, amessaging server128, or the like. For example, user computer102 may receive instant messages from user B'scomputer126 or amessaging server128. Additionally, user computer102 may share the contents ofdisplay110 with screensharing participants'computers122 and124 either directly or viascreensharing server120. Dottedarrows130,132, and134 illustrate requests sent from thescreensharing application108 to theOS104,messaging application106, andmessaging server128, respectively, to suspend triggering notifications. In some embodiments, the requests sent tomessaging application106 andmessaging server128 may be facilitated byOS104.
FIG. 2 illustrates anexample computer system200 adapted according to one embodiment of the present disclosure. Thecomputer system200 includes an example system on which embodiments of the present disclosure may be implemented (such asscreensharing server120,messaging server128,participant computers122 and124, or user computers102 and126). Thecomputer system200 includes a digital signal processor (DSP)202, a central processing unit (CPU)204, a random access memory (RAM)206, a read-only memory (ROM)208,secondary storage210, input/output (I/O)devices212, and anetwork interface214, all of which may be communicatively coupled via abus216.
TheCPU204 may be implemented using hardware or a combination of hardware and software. Although illustrated as a single CPU, theCPU204 is not so limited and may include multiple processors. TheCPU204 may be implemented as one or more processors, i.e., as one or more chips, cores (e.g., a multi-core processor), field-programmable gate arrays (FPGAs), and/or application specific integrated circuits (ASICs). Likewise, theDSP202 may be implemented as more than one DSP chip. TheDSP202 may perform transcoding or translating of a media stream or call flow received by anetwork interface214.
Thesecondary storage210 may comprise one or more disk drives or solid state drives and is used for non-volatile storage of data and as an over-flow data storage device if theRAM206 is not large enough to hold all working data. TheRAM206 may be static RAM, dynamic RAM, or the like, and theROM208 may be programmable ROM (PROM), erasable PROM (EPROM), electrically EPROM (EEPROM), or the like. Thesecondary storage210 may be used to store programs that are loaded into theRAM206 when such programs are selected for execution. TheROM208 is used to store instructions and perhaps data that are read during program execution. TheROM208 is a non-volatile memory device that typically has a small memory capacity relative to the larger memory capacity of the secondary storage. TheRAM206 is used to store volatile data and perhaps to store instructions. Access to both theROM208 and theRAM206 is typically faster than to thesecondary storage210.
Thecomputer system200 includes network interfaces214. There may be anetwork interface214 for each communication line (e.g., electrical or optical) coupled to thecomputer system200. Anetwork interface214 may be bidirectional or unidirectional, depending on the embodiment. Eachnetwork interface214 is adapted to couplecomputer system200 to a communication link (e.g., a wired or wireless communication link). In the examples ofFIG. 1, network interfaces214 may couple a respective device to network108 and/or to another network (not shown) such as a wireless network, cellular network or other telephony network.
The I/O devices212 may include a keyboard, a computer mouse, a microphone, and/or adisplay device213 for allowing a user to provide input to and receive output from thecomputer system200. In one example, the user device102 ofFIG. 1 may include tablet computers having touchscreen interfaces, although the scope of embodiments is not limited to any particular I/O devices212.
It is understood that by programming and/or loading executable instructions onto thecomputer system200, at least one of theCPU204, theRAM206, and/or thesecondary storage210 are changed, transforming thecomputer system200 in part into a particular machine or apparatus having the functionality taught by the present disclosure. The executable instructions may be stored on theRAM206 orsecondary storage210 and loaded into theCPU204 for execution. The device functionality described with respect toFIGS. 1 and 3-6 may be implemented as a software application running on theCPU204 and using theRAM206, theROM208, and/orsecondary storage210.
Logic may be encoded in a non-transitory computer-readable medium, such asRAM206 and/orsecondary storage210. Such a medium can take many forms, including but not limited to, non-volatile media and volatile media. In various implementations, non-volatile media includes optical or magnetic disks, such assecondary storage210, and volatile media includes dynamic memory, such as various types ofRAM206.CPU204 reads application code from the readable medium and executes the code to provide the described functionality.
FIG. 3 is a signal diagram300 of notification blocking performed by the operating system, such asOS104 ofFIG. 1. It is understood that signal diagram300 is one embodiment, and the actions shown in signal diagram300 may be performed in a different order in other embodiments. Communications that take place in the actions of signal diagram300 may be conducted with Hypertext Transfer Protocol (HTTP), Session Initiation Protocol (SIP), Short Message Peer-to-Peer (SMPP), or any other appropriate protocol. Media streaming that takes place in actions326-330 may be conducted with h.264, VP8, or any other appropriate protocol that provides for visual media sharing. The below Table 1 contains labels for various elements ofFIG. 3.
| TABLE 1 |
|
| Labels for elements of FIG. 3 |
| Iden- | | Iden- | | Iden- | |
| tifier | Description | tifier | Description | tifier | Description | |
|
| 301 | Open | 303 | Create | 304 | Open |
| Application | | application | | application |
| Window |
| | 1Window | | 1Window |
| 306 | Start session | 308 | Start session | 310 | Connect |
| 312 | Connect | 314 | Get list of | 316 | List of |
| | | displays | | displays |
| 318 | Share | 320 | Start capture: | 322 | Suspend |
| displays 110 | | Display 110 | | Notification |
| | | | | Windows |
|
| 324 | Start capture | 326 | Content: | 328 | Content |
| Display |
| 110 | | Display 110 | | Display 110 |
| 330 | Content | 332 | Message: | 334 | Message: |
| Display 110 | | “Hello” | | “Hello” |
| 336 | Open Message | 338 | Message | 340 | Content: |
| Window: | | Notification | | Display | 110 |
| “Hello” | | Window blocked | | (with no |
| | | | | Message |
| | | | | Window) |
| 342 | Content: | 344 | Content: | 346 | Stop sharing |
| Display |
| 110 | | Display 110 | | display 110 |
| (with no | | (with no |
| Message | | Message |
| Window) | | Window) |
| 348 | Stop capture: | 350 | Stop content | 352 | Stop content |
| Display |
| 110 | | Share | | Share | |
| 354 | Stop content | 356 | Resume |
| Share | | Notification |
| | | Windows |
|
FIG. 3 is a signal diagram300 of notification blocking performed by the operating system, such asOS104 ofFIG. 1. It is understood that signal diagram300 is one embodiment, and the actions shown in signal diagram300 may be performed in a different order in other embodiments. Communications that take place in the actions of signal diagram300 may be conducted with Hypertext Transfer Protocol (HTTP), Session Initiation Protocol (SIP), Short Message Peer-to-Peer (SMPP), or any other appropriate protocol. Media streaming that takes place in actions326-330 may be conducted with h.264, VP8, or any other appropriate protocol that provides for visual media sharing.
Beginning ataction301, afirst user302, called user A in this example, interacts with user computer102 and itsOS104 to command anapplication117 to open anapplication window112. This application may be an application thatuser A302 wishes to use to display material to others via a screensharing session. For example, a slide deck presentation application, an internet browser, a proprietary application whosefunctionality user A302 is demonstrating, or the like.
Ataction303, theapplication117 running on user computer102 initiates creation of anew application window112 ondisplay110 by sending a request toOS104, which is also running on user computer102 in this embodiment. It is understood that in other embodiments different components may be running on different devices.
Ataction304,OS104 opens anapplication window112 in response to the request fromapplication117.OS104 may notifyapplication117 that thewindow112 has been opened so thatapplication117 may provide contents for display inwindow112.
Ataction306, first user302 (user A) commandsscreensharing application108 to begin a screensharing session. Ataction308, thescreensharing application108 communicates withscreensharing server120 to initiate the screensharing session. As one way to get participants to join the screensharing session, thescreensharing application108 may include information detailing contact information (e.g., IP addresses or SIP addresses) for the participants that user A wishes to include in the screensharing session. In this example, user A wishes forparticipants 1 and 2 to join the screensharing session.Screensharing server108 in turn communicates withparticipant 1'scomputer122 andparticipant 2'scomputer124 to connect them to the screensharing session. In this example,computers122 and124 are running a companion screensharing application that facilitates this connection.
Atactions310 and312,participant 1'scomputer122 andparticipant 2'scomputer124 connect to thescreensharing server120 in order to connect to the screensharing session hosted by user A. Once connected to the screensharing session, the companion screensharing applications oncomputers122 and124 may create application windows on the displays ofcomputers122 and124. These applications windows may render an image of whatever thescreensharing application108 sends tocomputers122 and124, in this example the entirety ofdisplay110 of user computer102.
At action314, thescreensharing application108 requests from OS104 a list of displays connected to user computer102. In this example, asingle display110 is connected to the user computer102, but any number of displays may be connected in other embodiments. At action316,OS104 provides the requested list toscreensharing application108, which informsscreensharing application108 that only display110 is connected to the computer102.Screensharing application108 in turn provides this list to user A to allow user A to choose which display or displays to share in the screensharing session.
Ataction318, first user302 (user A) elects to sharedisplay110 in the screensharing session and issues a command accordingly to thescreensharing application108. Ataction320,screensharing application108 requests that theOS104 capture the contents ofdisplay110 and relay the contents toscreensharing application108. Ataction322, thescreensharing application108 also requests that theOS104 suspend displayingnotification windows116 ondisplay110. The request fromscreen sharing application108 to theOS104 may include any kind of command or message, which may in some embodiments be defined by an Application Programming Interface (API), to allowscreensharing application108 to directly suspend display ofnotification windows116.
Ataction324,OS104 begins relaying in real time the content ofdisplay110 toscreensharing application108, and continues doing so until the screensharing application commands it to stop. Ataction326,screensharing application108 relays the real time stream of the content ofdisplay110 toscreensharing server120 in order to share the content with the participants of the screensharing session. Atactions328 and330, thescreensharing server120 in turn relays the real time stream of the content ofdisplay110 toparticipant 1'scomputer122 andparticipant 2'scomputer124, respectively. The companion screensharing applications oncomputers122 and124 may display the real time stream of the content ofdisplay110 in an application window oncomputers122 and124, thereby facilitating user A's presentation of the material contained inapplication117, as well as whatever else is contained indisplay110. Although not shown herein, the presentation may further include other kinds of media, such as audio content or text. In such an instance, the actions326-330 may further include the use of protocols allowing for sharing of those additional types of media content.
Ataction332, asecond user333, called user B in this example, operating auser computer126, sends an instant message tomessaging server128 with instructions to relay the instant message to user A's computer102. In this example, the message says simply “Hello.” Ataction334, themessaging server128 relays this instant message tomessaging application106 on user A's computer102.
Ataction336,messaging application106 requests thatOS104 open amessaging window114 ondisplay110 displaying the message “Hello” that was sent by user B. Alternatively, if amessaging window114 is already active, themessaging application106 requests the message “Hello” to be displayed in themessaging window114, and may additionally request that themessaging window114 be moved to the “front” of anyother application windows112 ondisplay110, that an icon related to themessaging application106 blink, that a notification sound be played, or the like in order to alert user A of the newly received message. It is understood thatOS104 could additionally or alternatively receive requests fromother applications117 to display various messages innotification windows116, or could internally generate notifications for display in anotification window116. These messages may include, for example, software update reminders, security risk notifications, received email previews, calendar appointment reminders, and the like.
Ataction338,OS104 blocks display of the message from user B. Accordingly,OS104 does not create amessaging window116, add the message to an existingmessaging window116, or move thatmessaging window116 to the front of thedisplay110. Depending on theOS104's configuration, theOS104 may or may not still cause an icon related to themessaging application106 to blink, cause a notification sound to be played, or the like to alert User A that a message was received even though it was not displayed. It is understood thatOS104 also blocks any requests it receives fromother applications117 to display a notification message in anotification window116, and additionally does not generate anotification window116 to display any notifications generated internally byOS104, as described above with respect toaction336.
Ataction340,screensharing application108 continues to relay a real time stream of the content ofdisplay110 to thescreensharing server120, and the content ofdisplay110 does not include amessaging window116. Atactions342 and346, thescreensharing server120 continues to relay the real time stream of the content ofdisplay110 toparticipant 1'scomputer122 andparticipant 2'scomputer126. The real time stream of the content ofdisplay110 is accordingly displayed toparticipants 1 and 2 by the companion screensharing application, butparticipants 1 and 2 are left unaware that the message “Hello” has been received by user A.
Ataction346, some time later, first user302 (user A) ends the screensharing session by telling thescreensharing application108 to stop sharing the contents ofdisplay110. Accordingly, ataction348,screensharing application108 requests that theOS104 stop capturing the contents ofdisplay110. Ataction350,screensharing application108 stops relaying the real time stream of the content ofdisplay110 toscreensharing server120. Thescreensharing application108 may also inform thescreensharing server120 that the screensharing session has been ended. Accordingly, atactions352 and354 thescreensharing server120 stops relaying the real time stream of the content ofdisplay110 toparticipant 1'scomputer122 andparticipant 2'scomputer124, and may additionally inform them that the screensharing session has been terminated by user A. Ataction356,screensharing application108 may informOS104 that it may resume displayingnotification windows116 ondisplay110 of user computer102.OS104 may or may not then cause the message to be displayed after the screen sharing session has ended.
In this embodiment,OS104,messaging application106, andscreensharing application108 run on user A's computer102. It is understood that in other embodiments these applications may run in some combination on two or more separate devices connected, for example, by anetwork118.
FIG. 4 is a flow diagram of amethod400 for blocking notification messages at the operating system level, and it accompanies the description ofFIG. 3. Beginning atblock402, as described above ataction303 of signal diagram300, theOS104 running on a user A's computer102 receives a request from anapplication117 to open anapplication window112. Moving to block404, as described above ataction304 of signal diagram300,OS104 opens theapplication window117 as requested.
Moving to block406, as described above at action314 of signal diagram300,OS104 receives a request fromscreensharing application108 to retrieve a list of display screens connected to user computer102. In this example asingle display screen110 is connected to the user computer102, but it is understood that any number of display screens may be connected to the user computer102. Moving to block408, as described above at action316 of signal diagram300,OS104 provides the requested list of display screens toscreensharing application108.
Moving to block410, theOS104 receives an instruction fromscreensharing application108 to begin real time capture of the visual media ofdisplay screen110, as described above ataction320 of signal diagram300.
Moving to block412,OS104 begins real time capture of the visual media ofdisplay screen110 in response to the instruction fromscreensharing application108. In one embodiment, the method moves to block414, andOS104 receives an instruction fromscreensharing application108 to block display of notification messages, as described above ataction322 of signal diagram300. This request may be simultaneous with the instruction ofblock410, or it may come before the instruction ofblock410.
In another embodiment, the method may move fromblock412 to block415, where theOS104 receives directly from user A, by any appropriate input means, an instruction to block display of notification messages, as described above ataction322 of signal diagram300. Alternatively, the method may move fromblock412 to block416, where theOS104 is pre-programmed to block display of notification messages, as described above ataction322 of signal diagram300, when real time capture of the visual media ofdisplay screen110 begins. In some embodiments ofblock416, a user such as user A may be able to toggle a setting ofOS104 that causesOS104 to have this behavior.
Moving to block417,OS104 begins relaying, or streaming, the real time capture of the visual media ofdisplay screen110 toscreensharing application108, as described above ataction324 of signal diagram300. For example,OS104 may be responsible for sending display data fromapplications117,messaging application106, and the like to I/O hardware212, and may simply relay this display data toscreensharing application108 at the same time that it handles display functionality.
Moving to block418,OS104 receives a request frommessaging application106 to open amessaging window114 containing the message “hello,” as described above ataction336 of signal diagram300. Alternatively, if amessaging window114 is already active, themessaging application106 may request theOS104 display the message “hello” in themessaging window114, and may additionally request that themessaging window114 be moved to the “front” of anyother application windows112 ondisplay screen110, that an icon related to themessaging application106 blink, that a notification sound be played, or the like in order to alert user A of the newly received message. As described above with respect toaction336 of signal diagram300, it is understood thatOS104 could additionally or alternatively receive requests fromother applications117 to display various messages innotification windows116, or could internally generate notifications for display in anotification window116. These messages may include, for example, software update reminders, security risk notifications, received email previews, calendar appointment reminders, and the like.
Moving to block420, in accordance with the instruction received atblock414 and as described above ataction338 of signal diagram300,OS104 ignores the request and does not display themessage window112. By the same token,OS104 does not add the message to an existingmessaging window116 or move thatmessaging window116 to the front of thedisplay screen110. As described with respect toaction338 of signal diagram300, it is understood thatOS104 also blocks any requests it receives fromother applications117 to display a notification message in anotification window116, and additionally does not generate anotification window116 to display any notifications generated internally byOS104.
Atblock422, as described above ataction348 of signal diagram300,OS104 receives an instruction fromscreensharing application108 to stop capturing and relaying the visual media ofdisplay screen110 to thescreensharing application108. Accordingly, atblock426,OS104 stops relaying the visual media ofdisplay screen110 toscreensharing application108 and stops real time capture of the visual media ofdisplay screen110.
Atblock426, as described above ataction356 of signal diagram300,OS104 receives a notification fromscreensharing application108 that it may resume allowingnotification windows116,messaging windows114, and the like to be displayed ondisplay screen110.
FIG. 5 is a signal diagram500 of notification blocking performed by the messaging application. It is understood that signal diagram500 is one embodiment, and the actions shown in signal diagram500 may be performed in a different order in other embodiments. Communications that take place in the actions of signal diagram500 may be conducted with HTTP, SIP, SMPP, or any other appropriate protocol. Media streaming that takes place in the actions of signal diagram500 may be conducted with h.264, VP8, or any other appropriate protocol. The below Table 2 contains labels for various elements ofFIG. 5.
| TABLE 2 |
|
| Labels for elements of FIG. 5 |
| Iden- | | Iden- | | Iden- | |
| tifier | Description | tifier | Description | tifier | Description | |
|
| 501 | Open | 502 | Create | 504 | Open |
| Application | | Application | | Application |
| Window |
| | 1Window | | 1Window |
| 506 | Share | 508 | Start session | 510 | Connect |
| display |
| 110 |
| 512 | Connect | 514 | Get list of | 516 | List of |
| | | displays | | displays |
| 518 | Share | 520 | Start capture: | 522 | Suspend |
| displays 110 | | Display 110 | | Notification |
| | | | | Windows |
|
| 524 | Content: | 526 | Content: | 528 | Content: |
| Display 110 | | Display 110 | | Display 110 |
| 530 | Content: | 532 | Message: | 534 | Message: |
| Display 110 | | “Hello” | | “Hello” |
| 536 | Message | 538 | Message | 539 | Message |
| Notification | | Stored, | | Delivered |
| Window | | awaiting |
| blocked | | delivery |
| 540 | Content: | 542 | Content: | 544 | Content: |
| Display 110 | | Display 110 | | Display 110 |
| (with no | | (with no | | (with no |
| Message | | Message | | Message |
| Window) | | Window) | | Window) |
| 546 | Stop sharing | 548 | Stop capture: | 550 | Stop content |
| | | Display |
| 110 | | Share |
| 552 | Stop content | 554 | Stop content | 556 | Resume Message |
| Share | | Share | | Notifications | |
| 558 | Checked for | 560 | Open Message | 562 | “Hello” |
| Stored | | Window: |
| Messages | | “Hello” |
| 564 | Message |
| seen |
|
FIG. 5 is a signal diagram500 of notification blocking performed by the messaging application. It is understood that signal diagram500 is one embodiment, and the actions shown in signal diagram500 may be performed in a different order in other embodiments. Communications that take place in the actions of signal diagram500 may be conducted with HTTP, SIP, SMPP, or any other appropriate protocol. Media streaming that takes place in the actions of signal diagram500 may be conducted with h.264, VP8, or any other appropriate protocol.
In the example ofFIG. 5, actions501-520 are the same as or substantially similar to the actions301-320 ofFIG. 3 (described in detail above). Therefore, the description ofFIG. 5 begins ataction522. Ataction522, thescreensharing application108 requests that themessaging application106 suspend delivering message notifications toOS104. In some embodiments, communication betweenscreensharing application108 andmessaging application106 may be facilitated by an API provided by each application to allow communication. In other embodiments,screensharing application108 andmessaging application106 may be part of a single piece of software, such as a collaboration suite, allowing communication between the two applications.
Actions524-534 are the same as or substantially similar to the actions324-334 ofFIG. 3 (described in detail above). Therefore, the description ofFIG. 5 resumes ataction536. Ataction536, in accordance with the request received ataction522,messaging application106 refrains from sending a request toOS104 to create amessaging window114 ondisplay110. Ataction538,messaging application106 stores the message from user B for display to user A at a later time. For example, themessaging application106 may store the message insecondary storage210 of user computer102. Ataction539,messaging application106 may send a message viamessaging server128 to user B oncomputer126 to inform user B that the message “hello” has been delivered to user A's computer102, but that the message has not been seen by user A.
Actions540-546 are the same as or substantially similar to the actions340-346 ofFIG. 3 (described in detail above). Therefore, the description ofFIG. 5 resumes ataction548. Ataction548,screensharing application108 requests that theOS104 stop capturing the visual media ofdisplay110. In some embodiments, thescreensharing application108 may directly inform theOS104 that the screensharing session has been ended. Ataction550,screensharing application108 stops relaying the real time stream of the content ofdisplay110 toscreensharing server120. Thescreensharing application108 may also inform thescreensharing server120 that the screensharing session has been ended. Accordingly, atactions552 and554 thescreensharing server120 stops relaying the real time stream of the content ofdisplay110 toparticipant 1'scomputer122 andparticipant 2'scomputer124, and may additionally inform them that the screensharing session has been terminated by user A.
Ataction556,screensharing application108 informsmessaging application106 that the screen sharing session is over and that it may resume requesting thatOS104display messaging windows114 ondisplay110 of user computer102. In another embodiment,messaging application106 may communicate withOS104, andOS104 may informmessaging application106 that the screensharing session was ended ataction548.Messaging application106 may be preprogrammed to resume requesting thatOS104display messaging windows114 in this case. In various other embodiments, any appropriate method of coordination between themessaging application106 and thescreensharing application108 may be used to informmessaging application106 that it may resume requesting display ofmessaging windows114.
Ataction558,messaging application106 checks for undelivered messages that it stored for later display ataction538. For example,messaging application106 may searchsecondary storage210 for stored messages. In this case, it finds the message “hello” sent by the second user333 (user B) ataction532. Accordingly, ataction560,messaging application106 sends a request toOS104 to create amessaging window114 to display the message “hello.” Alternatively, if amessaging window114 already exists,messaging application106 may request that the message “hello” be displayed in the existingmessaging window114 and may additionally request that themessaging window114 be moved to the “front” of anyother application windows112 ondisplay110, that an icon related to themessaging application106 blink, that a notification sound be played, or the like in order to alert user A of the newly received message.
Ataction562,OS104 complies with the request ofaction560, creating amessaging window114 ondisplay110 of computer102 and displaying the message “hello” in themessaging window114. Alternatively, if amessaging window114 already exists ondisplay110,OS104 may cause the message “hello” to be displayed in themessaging window114, may move themessaging window114 to the “front” of anyother application windows112 ondisplay110, may cause an icon related to themessaging application106 blink, may cause a notification sound be played, or the like in order to alert user A of the newly received message. Ataction564,messaging application106 may send a message viamessaging server128 to user B atcomputer126 to notify user B that the message “hello” sent ataction532 has been displayed to user A.
FIG. 6 is a flow diagram of amethod600 for blocking notification messages at the messaging application level, and it accompaniesFIG. 5. It is understood thatmethod600 is one embodiment, and the blocks shown inmethod600 may be performed in a different order in other embodiments. Communications that take place in the blocks ofmethod600 may be conducted with HTTP, SIP, SMPP, or any other appropriate protocol. Media streaming that takes place in the blocks ofmethod600 may be conducted with h.264, VP8, or any other appropriate protocol.
Beginning atblock602, as described above ataction522 of signal diagram500,messaging application106 running on user computer102 receives an instruction fromscreensharing application108 to suspend delivering message notifications toOS104. In another embodiment, beginning atblock603,messaging application106 running on user computer102 receives an instruction from user A by any appropriate input means to suspend delivering message notifications toOS104.
Alternatively, beginning atblock604,messaging application106 running on user computer102 may be pre-programmed to suspend delivering message notifications toOS104 while a screensharing session is active on user computer102. In another embodiment ofblock604, a user such as user A may toggle a setting in themessaging application106 that causes it to suspend delivering message notifications toOS104 while a screensharing session is active on user computer102. Themessaging application106 may discover that a screensharing session is active in various ways. For example, thescreensharing application108 and themessaging application106 may be integrated into a single application, and themessaging application106 may be aware when a screensharing session is active. In another example, themessaging application106 may receive notification fromOS104 that a screensharing session is active.
Moving to block605, as described above ataction534 of signal diagram500,messaging application106 receives a textual message from user B viamessaging server128. In this example, the textual message simply says “hello.” Moving to block606, as described above ataction536 of signal diagram500, and in accordance with the instruction received atblock602,messaging application106 refrains from requesting that theOS104 create amessaging window114 ondisplay110 to display the textual message received from user B.
Moving to block608, as described above ataction538 of signal diagram500,messaging application106 may store the textual message from user B for display to user A at a later time. Moving to block610, as described above ataction539 of signal diagram500,messaging application106 informs user B atcomputer126 viamessaging server128 that the textual message was delivered to user A's computer102 but not displayed to user A.
Moving to block612, as described above ataction556 of signal diagram500,messaging application106 receives an instruction fromscreensharing application108 that it may resume requesting thatOS104display messaging windows114 ondisplay110. Moving to block614, as described above ataction558 of signal diagram500,messaging application106 determines whether any textual messages were stored atblock608.
Moving to block616, as described above ataction560 of signal diagram500, if stored textual messages are found,messaging application106 requests thatOS104 create amessaging window114 and display the textual message “hello.” Alternatively, if amessaging window114 already exists,messaging application106 may request that the textual message “hello” be displayed in the existingmessaging window114 and may additionally request that themessaging window114 be moved to the “front” of anyother application windows112 ondisplay110, that an icon related to themessaging application106 blink, that a notification sound be played, or the like in order to alert user A of the newly received textual message.
Moving to block618, as described above ataction564 of signal diagram500, if stored textual messages are found,messaging application106 informs user B atcomputer126 viamessaging server128 that the textual message “hello” has been displayed to user A.
FIG. 7 is a signal diagram700 of notification blocking performed by the messaging server. It is understood that signal diagram700 is one embodiment, and the actions shown in signal diagram700 may be performed in a different order in other embodiments. Communications that take place in the actions of signal diagram700 may be conducted with HTTP, SIP, SMPP, or any other appropriate protocol. Media streaming that takes place in the actions of signal diagram700 may be conducted with h.264, VP8, or any other appropriate protocol. The below Table 3 contains labels for various elements ofFIG. 7.
| TABLE 3 |
|
| Labels for elements of FIG. 7 |
| Iden- | | Iden- | | Iden- | |
| tifier | Description | tifier | Description | tifier | Description |
|
| 701 | Open | 702 | Create | 704 | Open |
| Application | | Application | | Application |
| Window |
| | 1Window | | 1Window |
| 706 | Start session | 708 | Start session | 710 | Connect |
| 712 | Connect | 714 | Get list of | 716 | List of |
| | | displays | | displays |
| 718 | Share | 720 | Start capture: | 722 | Suspend |
| displays 1 | | Display 110 | | Message |
| | | | | Notifications |
|
| 724 | Content: | 726 | Content: | 728 | Content: |
| Display 110 | | Display 110 | | Display 110 |
| 730 | Content: | 732 | Message: | 734 | Message |
| Display |
| 110 | | “Hello” | | Notification |
| | | | | Window |
| | | | | blocked |
| 736 | Message | 737 | Message | 738 | Content: |
| Stored, | | blocked | | Display 110 |
| awaiting | | | | (with no |
| delivery | | | | Message |
| | | | | Window) |
| 740 | Content: | 742 | Content: | 744 | Stop |
| Display |
| 110 | | Display 110 | | sharing |
| (with no | | (with no |
| Message | | Message |
| Window) | | Window) |
| 746 | Stop capture: | 748 | Stop content | 750 | Stop content |
| Display |
| 110 | | Share | | Share | |
| 752 | Stop content | 754 | Resume message | 756 | Checked for |
| Share | | Notifications | | Stored |
| | | | | messages |
| 758 | Message: | 760 | Message | 762 | Open Message |
| “Hello” | | Delivered | | Window: |
| | | | | “Hello” |
| 764 | “Hello” | 766 | Message seen |
|
FIG. 7 is a signal diagram700 of notification blocking performed by the messaging server. It is understood that signal diagram700 is one embodiment, and the actions shown in signal diagram700 may be performed in a different order in other embodiments. Communications that take place in the actions of signal diagram700 may be conducted with HTTP, SIP, SMPP, or any other appropriate protocol. Media streaming that takes place in the actions of signal diagram700 may be conducted with h.264, VP8, or any other appropriate protocol.
In the example ofFIG. 7, actions701-720 are the same as or substantially similar to the actions301-320 ofFIG. 3 (described above). Therefore, the description ofFIG. 7 begins ataction722. Ataction722, thescreensharing application108 requests that themessaging server128 suspend delivering messages tomessaging application106 on user computer102.
Actions724-732 are the same as or substantially similar to the actions324-332 ofFIG. 3 (described above). Therefore, the description ofFIG. 7 resumes ataction734. Ataction734, in accordance with the request received ataction722,messaging server128 refrains from sending the instant message ofaction732 tomessaging application106 on computer102. Ataction736,messaging server128 stores the message from user B for delivery tomessaging application106 on user A's computer102 at a later time. For example,messaging server128 may be a computer device with secondary storage similar tosecondary storage210, and it may store the message in its secondary storage. Ataction737,messaging server128 sends a notification to user B'scomputer126 to inform user B that the message sent ataction732 has been blocked and was not delivered tomessaging application106.
Actions738-752 are the same as or substantially similar to the actions340-354 ofFIG. 3 (described above). Therefore, the description ofFIG. 7 resumes ataction754. Ataction754,screensharing application108 informsmessaging server128 that it may resume sending messages tomessaging application106 on user A's computer102.
Ataction756,messaging server128 checks for undelivered messages that it stored for later delivery to user A. For example,messaging server128 may search secondary storage for stored messages. In this case, it finds the message “hello” sent by user B ataction732. Accordingly, ataction758,messaging server128 delivers the stored message tomessaging application106 on user A's computer102. Ataction760,messaging application106 may send a message viamessaging server128 to user B oncomputer126 to inform user B that the message “hello” has been delivered to user A's computer102, but that the message has not yet been displayed to user A.
Ataction762,messaging application106 sends a request toOS104 to create amessaging window114 to display the message “hello.” Alternatively, if amessaging window114 already exists,messaging application106 may request that the message “hello” be displayed in the existingmessaging window114 and may additionally request that themessaging window114 be moved to the “front” of anyother application windows112 ondisplay110, that an icon related to themessaging application106 blink, that a notification sound be played, or the like in order to alert user A of the newly received message.
Ataction764,OS104 complies with the request ofaction762, creating amessaging window114 ondisplay110 of computer102 and displaying the message “hello” in themessaging window114. Alternatively, if amessaging window114 already exists ondisplay110,OS104 may cause the message “hello” to be displayed in themessaging window114, may move themessaging window114 to the “front” of anyother application windows112 ondisplay110, may cause an icon related to themessaging application106 blink, may cause a notification sound be played, or the like in order to alert user A of the newly received message. Ataction766,messaging application106 may send a message viamessaging server128 to user B atcomputer126 to notify user B that the message “hello” sent ataction532 has been displayed to user A.
In this embodiment,OS104,messaging application106, andscreensharing application108 run on user A's computer102. It is understood that in other embodiments these applications may run in some combination on two or more separate devices connected, for example, by anetwork118.
FIG. 8 is a flow diagram of amethod800 for blocking notification messages at the messaging application level, and it accompaniesFIG. 7. It is understood thatmethod800 is one embodiment, and the blocks shown inmethod800 may be performed in a different order in other embodiments. Communications that take place in the blocks ofmethod800 may be conducted with HTTP, SIP, SMPP, or any other appropriate protocol. Media streaming that takes place in the blocks ofmethod800 may be conducted with h.264, VP8, or any other appropriate protocol.
Beginning atblock802, as described above ataction722 of signal diagram700,messaging server128 receives an instruction fromscreensharing application108 to suspend delivering messages tomessaging application106 of user A's computer102. In another embodiment, beginning atblock803,messaging server128 may receive an instruction from user A to suspend delivering messages tomessaging application106. For example, user A may send such an instruction viamessaging application106.
Alternatively, beginning atblock804, themessaging server128 may be pre-programmed to automatically suspend delivering messages tomessaging application106 while a screensharing session is actively being hosted on user computer102. In another embodiment ofblock804, a user such as user A may toggle a setting at themessaging server128 that causes it to suspend delivering messages tomessaging application106 while a screensharing session is active on user computer102. Themessaging server128 may discover that a screensharing session is active in various ways. For example,messaging application106 may be integrated withscreensharing application108 such thatmessaging application106 is aware when a screensharing session is active,messaging application106 may communicate tomessaging server128 that a screensharing session is active, andmessaging server128 may automatically suspend delivering messages tomessaging application106.
Moving to block805, as described above ataction732 of signal diagram700,messaging application106 receives a message from user B oncomputer126. In this example, the message simply says “hello.” Moving to block806, as described above ataction734 of signal diagram700, and in accordance with the instruction received atblock802,messaging server128 refrains from delivering the message received atblock804 tomessaging application106 of user A's computer102. Moving to block808, as described above ataction736 of signal diagram700,messaging server128 stores the message from user B for display to user A at a later time.
Moving to block810, as described above ataction754 of signal diagram700,messaging server128 receives an instruction fromscreensharing application108 that it may resume delivering messages tomessaging application106 on user A's computer102. Moving to block812, as described above ataction756 of signal diagram500,messaging server128 determines whether any messages were stored atblock808.
Moving to block814, as described above ataction758 of signal diagram700, if stored messages are found,messaging server128 delivers them tomessaging application106 of user A's computer102. Moving to block816, as described above ataction760 of signal diagram700,messaging application106 informsmessaging server128 that the message was delivered to user A's computer102 but not displayed to user A, whichmessaging server128 relays to user B atcomputer126. Moving to block818, as described above ataction766 of signal diagram700,messaging application106 informsmessaging server128 that the message delivered atblock814 has been displayed to user A, andmessaging server128 relays the notification to user B oncomputer126.
Various embodiments of the present disclosure may include advantages over prior solutions. In conventional systems, when a user's entire display is shared during a screensharing session, various sorts of sensitive information that is displayed as a popup notification may be shared with the participants of the screensharing session. By contrast, various embodiments herein cause an operating system to suspend display of notifications, or cause a messaging application or a messaging server to suspend delivery of messages, thereby improving the user's security and privacy by preventing accidental dissemination of confidential or private information. Furthermore, automating the above features to activate any time a screensharing session is initiated protects the user from human error (e.g., protects the user from his own forgetfulness in activating a manual notification blocking system or method).
Furthermore, present embodiments solve a problem unique to network communications. For example, the need to prevent accidental sharing of sensitive messages during a presentation did not exist prior to the use of screensharing software and communication networks.
As those of some skill in this art will by now appreciate and depending on the particular application at hand, many modifications, substitutions and variations can be made in and to the materials, apparatus, configurations and methods of use of the devices of the present disclosure without departing from the spirit and scope thereof. In light of this, the scope of the present disclosure should not be limited to that of the particular embodiments illustrated and described herein, as they are merely by way of some examples thereof, but rather, should be fully commensurate with that of the claims appended hereafter and their functional equivalents.