EFFICIENT TRANSMISSION OF PRESENCE UPDATE INFORMATION TO PRESENCE SERVICE CLIENTS
To promote efficient transmission of presence update information to a presence service client associated or integrated with a communication client such as an instant messaging (IM) client, a separate computing device may be notified when the communication client becomes dormant. The separate device may buffer presence updates destined for the communication client, each presence update containing information regarding availability of at least one of a set of contacts for intercommunication via said communication client. When the separate device learns that either the communication client has ceased being dormant or that an event has occurred which shall cause the communication client to cease being dormant, the buffered presence updates may be sent to the presence service client. Presence updates within the buffered set may be reconciled to eliminate obsolete information. The result may be a conservation of wireless connection bandwidth or reduction in device power consumption.
Latest RESEARCH IN MOTION LIMITED Patents:
- Aligning timing for direct communications
- MANAGING SHORT RANGE WIRELESS DATA TRANSMISSIONS
- METHODS AND SYSTEMS FOR CONTROLLING NFC-CAPABLE MOBILE COMMUNICATIONS DEVICES
- IMAGING COVER FOR A MOBILE COMMUNICATION DEVICE
- MOBILE WIRELESS COMMUNICATIONS DEVICE PROVIDING NEAR FIELD COMMUNICATION (NFC) UNLOCK AND TAG DATA CHANGE FEATURES AND RELATED METHODS
This is a continuation of U.S. application Ser. No. 11/677186, filed Feb. 21, 2007, hereby incorporated herein by reference.
FIELD OF TECHNOLOGYThe present disclosure pertains to presence services, and more particularly to the efficient transmission of presence update information to presence service clients.
BACKGROUNDInstant messaging (“IM”) is a known form of substantially real-time communication between two or more computing devices that is often based on typed text. The text (and, more recently, other types of data, such as electronic files, streaming content or even voice) is conveyed between the computing devices over a network such as the Internet. Each computing device executes an IM client software application (sometimes referred to simply as an “IM client”) associated with an IM service. The IM service defines a protocol for instant messaging which may be proprietary. Popular instant messaging services on the public Internet currently include .NET Messenger Service, AOL® Instant Messenger™ (AIM), Excite® Pal, Gadu-Gadu, Google Talk™, iChat®, ICQ®, Jabber®, Qnext™, QQ®, Skype® and Yahoo!® Messenger. Multi-protocol clients such as Gaim, Trillian™ and Miranda may eliminate or reduce the need for separate client software applications for different IM services. Popular enterprise IM solutions include IBM Lotus Sametime™, Novell GroupWise® and Microsoft® Office Live Communications Server.
Most if not all IM services have an associated presence service. A presence service permits each user to see whether other users in a user-specified set of contacts (commonly known as a “contact list”, “buddy list” or “friend list”) are currently on-line and available for exchanging instant messages. The availability of each contact may be indicated by way of a presence state indicator such as “available”, “busy”, “idle”, “do not disturb”, or “out to lunch” for example, which is displayed by the IM client. Presence information is updated by way of presence updates, which are automatically sent to users who have elected to receive them in respect of a specified set of contacts. A presence service client that is associated with, and in many cases integrated with, the IM client handles presence updates and generally maintains presence state indicators for display to the user, typically by way of the IM client user interface. Presence service clients may also be used in association with other types of communication clients, such as Voice over Internet Protocol (VoIP) clients. When a contact's presence service client detects that the availability of the contact has changed, it automatically reports the changed availability to other users. This is typically done by way of a central server, which in the case of an instant messaging system is a central IM server. Specifically, the report regarding changed status is sent to the central IM server, which in turn reports the changed availability by way of presence updates that are sent to all connected IM users who have elected to receive such updates regarding that contact. A presence update is a communication (e.g. a message) which provides an indication of the current availability of the contact for communication (e.g. instant messaging). Presence services and instant messaging are both described in further detail in “RFC 2778—A Model for Presence and Instant Messaging”, which is available at www.ietf.org/rfc2778.txt and is known to those of ordinary skill in the art.
In some cases, the computing device that executes the presence service client is a wireless communication device. For example, an apparatus and method for wireless instant messaging is described in U.S. Patent Publication No. 2006/0142030 A1, which is incorporated by reference hereinto. The IM client software application executing at a wireless communication device may be referred to as a “mobile IM client”, and the associated presence service client may be referred to as a “mobile presence service client”. Mobile presence service clients may receive presence updates over a wireless connection. If the frequency and number of presence updates is high, as may occur when the number of contacts in the contact list of the wireless communication device user is large, various problems may result. Firstly, a large portion of the wireless connection bandwidth may be consumed by incoming presence updates. Because many wireless service providers charge subscribers based (at least in part) upon the amount of data received, the receipt of frequent and numerous presence updates may disadvantageously increase subscription costs. Secondly, receiving and processing a large number of presence updates may consume a significant amount of power at the wireless communication device, which may in turn undesirably shorten battery life. This may be especially true if each presence update causes the wireless communication device to “awaken” from a power-saving mode and remain in that awakened (non-power-saving) mode for some minimum period of time. Thirdly, because some wireless providers or wireless network types may deem each transmission of one or more presence updates to constitute a “call”, any call statistics that are maintained for the device may be significantly skewed by the transmission of frequent individual presence updates. Finally, the frequent transmission of messages containing only one presence update apiece may be inefficient because the overhead associated with each message (e.g. generating, communicating and interpreting header information such as checksums) may be unacceptably high. These shortcomings may be endemic in presence services regardless of whether they are associated with instant messaging or other forms of communication (e.g. VoIP). A solution which mitigates or obviates one or more of these shortcomings would be desirable.
In the figures which illustrate example embodiments:
In one aspect of the below described embodiment, there is provided a computer-implemented method comprising: receiving an indicator that a communication client executing at or comprising a separate wireless communication device has become dormant; responsive to said receiving, buffering a set of presence updates destined for a presence service client associated with said communication client, each presence update of said set containing information regarding availability of at least one contact of a set of contacts for intercommunication via said communication client; receiving a further indicator indicating either that said communication client has ceased being dormant or that an event has occurred which shall cause said communication client to cease being dormant; and responsive to said receiving of said further indicator, sending said set of presence updates to said presence service client via a wireless connection.
In another aspect of the below described embodiment, there is provided a computing device comprising at least one processor and memory in communication with said at least one processor, said memory storing instructions which, when executed by said at least one processor, adapt said computing device to: receive an indicator that a communication client executing at or comprising a separate wireless communication device has become dormant; responsive to the receipt of said indicator, buffer a set of presence updates destined for a presence service client associated with said communication client, each presence update of said set containing information regarding availability of at least one contact of a set of contacts for intercommunication via said communication client; receive a further indicator indicating either that said communication client has ceased being dormant or that an event has occurred which shall cause said communication client to cease being dormant; and responsive to the receipt of said further indicator, send said set of presence updates to said presence service client via a wireless connection.
In yet another aspect of the below described embodiment, there is provided a machine-readable medium storing instructions which, when executed by at least one processor of a computing device, adapt said computing device to: receive an indicator that a communication client executing at or comprising a separate wireless communication device has become dormant; responsive to the receipt of said indicator, buffer a set of presence updates destined for a presence service client associated with said communication client, each presence update of said set containing information regarding availability of at least one contact of a set of contacts for intercommunication via said communication client; receive a further indicator indicating either that said communication client has ceased being dormant or that an event has occurred which shall cause said communication client to cease being dormant; and responsive to the receipt of said further indicator, send said set of presence updates to said presence service client via a wireless connection.
In yet another aspect of the below described embodiment, there is provided a computer-implemented method comprising, at a wireless communication device: upon detecting that a communication client executing at said wireless communication device has become dormant, said communication client for adapting said device to intercommunicate via a wireless connection with any of a set of user-specified contacts and having an associated presence service client for receiving presence updates via said wireless connection regarding the availability of any of said set of contacts for intercommunication via said communication client, sending a communication for causing said presence updates to be buffered at a separate computing device; and upon detecting that said communication client has ceased being dormant, receiving a set of buffered presence updates at said presence service client from said separate computing device via said wireless connection.
In yet another aspect of the below described embodiment, there is provided a wireless communication device comprising at least one processor and memory in communication with said at least one processor, said memory storing instructions which, when executed by said at least one processor, adapt said device to: upon detecting that a communication client executing at said wireless communication device has become dormant, said communication client for adapting said device to intercommunicate via a wireless connection with any of a set of user-specified contacts and having an associated presence service client for receiving presence updates via said wireless connection regarding the availability of any of said set of contacts for intercommunication via said communication client, send a communication for causing said presence updates to be buffered at a separate computing device; and upon detecting that said communication client has ceased being dormant, receive a set of buffered presence updates at said presence service client from said separate computing device via said wireless connection.
In yet another aspect of the below described embodiment, there is provided a machine-readable medium storing instructions which, when executed by at least one processor of a wireless communication device, adapt said device to: upon detecting that a communication client executing at said wireless communication device has become dormant, said communication client for adapting said device to intercommunicate via a wireless connection with any of a set of user-specified contacts and having an associated presence service client for receiving presence updates via said wireless connection regarding the availability of any of said set of contacts for intercommunication via said communication client, send a communication for causing said presence updates to be buffered at a separate computing device; and upon detecting that said communication client has ceased being dormant, receive a set of buffered presence updates at said presence service client from said separate computing device via said wireless connection.
Referring to
As illustrated, the IM system 10 includes a number of exemplary computing devices 20A, 20B, 20C and 70 operated by users 24A, 24B, 24C and 73 respectively, as well as a network 30 (which in the illustrated embodiment is the public Internet), an IM server 40, a proxy IM server 50 and a wireless network 60.
Computing devices 20A, 20B and 20C (collectively devices 20 and generically device 20) are conventional computing devices, such as Intel® or AMD™ processor-based personal computers. Computing devices 20 have various conventional components, such as network interface cards for providing connectivity to the Internet 30 by way of a Digital Subscriber Line (DSL) or cable modem connection for example, input devices such as keyboards and mice for entering data and controlling the operation of the devices 20, display devices such as liquid crystal displays (LCDs) for displaying graphical user interfaces (GUIs) of executing software applications, and volatile and non-volatile memory for storing operating system software and executable software applications along with data (not expressly illustrated).
The memory of each device 20 stores a conventional IM client software application (“IM client”) 22. IM client 22 is a computer program that permits a user to engage in instant messaging with other users of a particular IM service (e.g. Yahoo!® Messenger, AIM or Google Talk™) who are also executing compatible IM clients at remote computing devices. The responsibilities of IM client 22 include sending and receiving instant messages at the request of the user and automatically intercommunicating with a central IM server 40 using a service-specific IM protocol to report changes in the availability of the IM client user (the latter possibly being handled by a presence service client integrated with the IM client 22). The IM client 22 may for example be the Google Talk™0 1.0.0.100 client, Yahoo!® Messenger client with Voice (BETA) (8.0.0.508), Windows Live Messenger 8.0 client, or GAIM 2.0.0 beta 3.1 client.
Although only three computing device 20A, 20B, 20C and three corresponding users 24A, 24B and 24C are illustrated in
Computing device 70 is a Research in Motion Limited (RIM) BlackBerry™ two-way paging device. The device 70 is a form of wireless communication device, which may alternatively be referred to as a “mobile device” or “mobile station”. The device 70 executes a mobile IM client software application (“mobile IM client”) 134. Like IM client 22, mobile IM client 134 is a computer program that adapts the device 70 to permit a user 73 to engage in instant messaging with other users of the same IM service. The responsibilities of mobile IM client 134 include sending and receiving instant messages at the request of user 73. The mobile IM client 134 has an integrated presence service client 135 which is responsible for automatically intercommunicating with central IM server 40, using the operative IM protocol, to report changes in the availability of user 73. The presence service client 135 also maintains a user-defined contact list 71 identifying all of the users in IM system 10 with whom user 73 is frequently in contact, as described in more detail below. As will become apparent, the presence service client 135 incorporates program logic which cooperates with program logic at IM proxy server 50 (described below) to support efficient transmission of presence update information to device 70.
IM server 40 is a conventional server executing conventional IM server software 42 with integrated presence service capability. The IM server software 42 effects a public IM service, such as Yahoo!® Messenger, AIM, or Google Talk®, which facilitates instant messaging between IM clients, such as IM clients 22 and mobile IM client 134, executing on various remote computing devices, such as devices 20A, 20B, 20C and 70. The IM service is referred to as a “public” service because it is generally accessible to members of the public who choose to subscribe with the service. This is distinguishable from an enterprise IM service, such as IBM Lotus Sametime™, Novell GroupWise® and Microsoft® Office Live Communications Server, which is typically deployed within a secure corporate network that is not generally accessible to the public. An alternative embodiment which involves an enterprise IM service is described below. The responsibilities of IM server software 42 include registering IM users as they log into (i.e. connect to) the IM service, receiving reports regarding the availability of users as are automatically sent by IM clients 22 and 134, and, responsive to the received reports, sending presence updates regarding changes in user availability to any users who have elected to receive such updates.
The IM server software 42 maintains a universal contact list 44. The universal contact list 44 is an amalgamation of the latest contact list information from each user of the IM service, which in the present example includes IM users 24A, 24B, 24C and 73. The IM server software 42 maintains the universal contact list 44 in order to support its presence service capability. Each time that the IM server software 42 receives a report as to the changed availability of a particular IM user from an IM client 22 or 134 of that user (or associated presence service client), the software 42 consults the list 44 in order to determine which other IM users have expressed an interest in receiving presence updates regarding that IM user. The IM server software 42 then proceeds to send presence updates to those users. In the result, each user is provide with the latest information regarding the availability of IM contacts of interest. The contact list 44 may take the form of a database record or electronic file for example.
Proxy IM server 50 is a conventional server executing proxy IM server software 52. The role of the proxy IM server 50 within IM system 10 is to act as a proxy for IM server 40 from the perspective of wireless communication device 70, and any other wireless communication device in communication with proxy IM server 50 via wireless network 60 (of which none are shown in
Proxy IM server software 52 incorporates program logic that cooperates with program logic at the presence service client 135 to efficiently transmit presence update information to device 70. According to this program logic, the proxy IM server software 52 buffers presence updates destined for the wireless communication device 70 when the IM client software application 134 has become dormant. This buffering results in a buffered set of presence updates 54, which set is shown schematically in
Proxy IM server software 52 also stores a contact list for each mobile IM client for which it acts as a proxy. In
An executable image (i.e. machine-readable instructions) of the proxy IM server software 52 may be loaded from a machine-readable medium 55 into volatile or non-volatile memory of server 50 prior to its execution by server 50. The medium 55 may further include an executable image of mobile IM client software application 134 (including presence service client 135), which may be downloaded to the wireless communication device 70 via wireless network 60 by way of an over-the-air download.
Wireless network 60 is a mobile data communication network, such as the Mobitex™, DataTAC™ or General Packet Radio Service (GPRS) network. Wireless network 60 may be designed to operate with any of a variety of voice communication networks, such as Advanced Mobile Phone Service (AMPS), Time Division Multiple Access (TDMA), Code Division Multiple Access (CDMA), Personal Communication Services (PCS), Global System for Mobile communication (GSM), third generation (3G) wireless or Universal Mobile Telecommunications Standard (UMTS) for example, to support voice communications at the wireless communication device 70. The wireless network 60 effects a wireless connection between proxy IM server 50 and wireless communication device 70. The wireless network 60 could alternatively be a IEEE 802.11 compliant (“WiFi”) wireless network, with appropriate changes to the network topology.
Referring to
Various other parts of the wireless communication device 70 are shown schematically in
The processor 78 executes operating system software (not expressly illustrated) which may be stored in a persistent store, such as the flash memory 116, or may be stored in other types of computer-readable memory devices, such as a read only memory (ROM—not expressly illustrated) or other storage media. The operating system of the present embodiment is a proprietary, multitasking operating system designed by Research In Motion Limited (RIM) that is capable of switching between multiple, concurrently executing software applications. At any given time, one application is executed as a foreground process while one or more applications may be executed as background processes. A user 73 interacting with the device 70 may cause the operating system to change an application from executing as a background process to executing as a foreground process (and vice-versa) in a manner that is known in the art. As applications are executed, they may be temporarily loaded, in whole or in part, into a volatile store, such as RAM 118. Communication signals received by the wireless communication device may also be stored in RAM 118.
Flash memory 116 stores various software applications 130, 132 and 134 that may be executed by processor 78. A predetermined set of applications that control basic device operations, such as voice and data communications 130 and 132, may be installed during manufacture of the device 70. Other applications may be installed either during manufacture or subsequently. These other applications include mobile IM client software application 134 and integrated presence service client 135, which is a focus of the present disclosure and is described in more detail below. Flash memory 116 may further contain a number of other software modules 136. Each module 136 may have an associated icon that is presented by the operating system on a home screen (this is also true for mobile IM client 134). The set of icons may be referred to as a “ribbon”. User selection of an icon from the ribbon may cause the corresponding module 136 (or client 134) to be invoked.
RAM 118 stores contact list 71. As noted above, contact list 71 is a list generated by user 73 identifying all of the users of IM system 10 with whom the user is frequently in contact. The list 71 may be a data record, electronic file or other data representation. Although list 71 is illustrated separately from IM client software application 134 in
Referring to
Referring back to
Network access requirements vary depending upon the type of communication system. For example, in the Mobitex™ and DataTAC™ networks, wireless communication devices are registered on the network using a unique personal identification number or PIN associated with each device. In GPRS networks, however, network access is associated with a subscriber or user of a device. A GPRS device therefore requires a subscriber identity module, commonly referred to as a SIM card, in order to operate on a GPRS network.
When required network registration or activation procedures have been completed, the wireless communication device 70 may send and receive communication signals over the communication network 60. Signals received from the communication network 60 by the antenna 154 are routed to the receiver 150, which provides for signal amplification, frequency down conversion, filtering, channel selection, etc., and may also provide analog-to-digital conversion. Analog-to-digital conversion of the received signal allows the DSP 158 to perform more complex communication functions, such as demodulation and decoding. In a similar manner, signals to be transmitted to the network 60 are processed (e.g. modulated and encoded) by the DSP 158 and are then provided to the transmitter 152 for digital-to-analog conversion, frequency up conversion, filtering, amplification and transmission to the communication network 60 (or networks) via the antenna 156.
In addition to processing communication signals, the DSP 158 provides for control of the receiver 150 and the transmitter 152. For example, gains applied to communication signals in the receiver 150 and transmitter 152 may be adaptively controlled through automatic gain control algorithms implemented in the DSP 158.
In a data communication mode, a received signal, such as an instant message, text message or web page download, is processed by the communication subsystem 100 and is input to the microprocessor 78. The received signal is then further processed by the microprocessor 78 for output to the display 76, e.g. in accordance with an executing software application or module, or alternatively to some other auxiliary I/O devices 106. A device user may also compose data items, such as instant messages or email messages, using the keyboard 74 and/or some other auxiliary I/O device 106, such as a touchpad, a trackball, rocker switch, a thumb-wheel, or some other type of input device. The composed data items may then be transmitted over the communication network 60 via the communication subsystem 100. Instant message data communication by the device 70 is described in more detail below.
In a voice communication mode, overall operation of the device is substantially similar to the data communication mode, except that received signals are output to a speaker 111, and signals for transmission are generated by a microphone 112. Alternative voice or audio I/O subsystems, such as a voice message recording subsystem, may also be implemented on the device 70. In addition, the display 76 may also be utilized in voice communication mode, for example to display the identity of a calling party, the duration of a voice call, or other voice call related information.
The short-range communications subsystem 102 enables communication between the wireless communication device 70 and other proximate systems or devices, which need not necessarily be similar devices. For example, the short-range communications subsystem may include an infrared device and associated circuits and components, or a BluetoothTM communication module to provide for communication with similarly-enabled systems and devices.
Operation of the illustrated embodiment for efficiently communicating presence update information to presence service clients is shown in
It is initially assumed that users 24A, 24B, 24C and 73 have used their IM clients 22 or 134 to specify IM usernames of “Joe”, “Bob”, “Mary” and “Steve” (respectively) by which they shall be known to other users of the IM service, as indicated in
In the description of operation below, the following definitions will be used:
(1) User activity: At wireless communication device 70, any manipulation of keyboard 74 or other input device of auxiliary I/O devices 106 (e.g. a touchscreen, trackball, thumb-wheel, or mouse) when the device 70 is not in a key-locked state or password-locked state (as defined below) is considered to constitute user activity. When the device 70 is in a key-locked or password-locked state, any such manipulation—including manipulation for entering a password or for attempting to unlock the device (i.e. to remove the device from a key-locked state or a password-locked state)—is not considered to constitute user activity. User activity with respect to a software application means user activity detected by an executing software application, and may be referred to as user interaction with the software application.
(2) Key-locked: The device 70 is considered to be in a key-locked or “hold” state when the device 70 rejects all input except a pre-defined unlock combination which removes the device 70 from the key-locked state. The purpose of this state is to effectively “lock the keys” of the device 70 (i.e. make the buttons or other input mechanisms inoperative) to avoid the accidental generation of spurious input, as may occur if buttons are inadvertently depressed when the device 70 in a pocket of the user's clothing or in a purse. The device may be placed into a key-locked state by manipulation of an electro-mechanical input mechanism or control, such as a slide switch which resists inadvertent depression, or automatically after the passage of a predetermine time period with no user activity. The device may be removed from the key-locked state by entry of the pre-defined unlock combination, which may be a complementary manipulation of a control (e.g. sliding the slide-switch in an opposite direction to that which caused the device to become key-locked). In the case of the BlackBerry device, key locking may only be available if password locking (described below) is disabled. To key-lock the BlackBerry device, a GUI control is selected. To unlock a BlackBerry device, the thumb-wheel is depressed twice in succession. Depending upon the type and manufacturer of the wireless communication device 70, application data may or may not be visible when a device is key-locked. For example, BlackBerry devices do not show any application data when key-locked. Accordingly, the key-locked state for a BlackBerry device is almost the same as the password-locked state (defined below), except that password entry is not required for unlocking the device. This is not necessarily true for other types of wireless communication devices.
(3) Password-locked: The device 70 is considered to be in a password-locked state when a password must be entered in order to access the device. The device may be placed into a password-locked state at the user's initiation (e.g. through selection of a GUI control) or automatically, upon detecting that the device has been placed into a holster or detecting the passage of a predetermine time period with no user activity. When in this state, no application data (including presence information, in the case of the IM client software application 134) is presented on a display of the device until the correct password is entered.
(4) Presence Information Displayable: Presence information is considered to be displayable by an IM client software application 134 or presence service client 135 at wireless communication device 70 when the device 70 is capable of presenting current IM contact presence information on display 76 substantially in real time. In the case of the BlackBerry device, this occurs when: (a) the IM client software application 134 is executing in the foreground; (b) the device is not key-locked; and (c) the device is not password-locked. At other types of wireless communication devices, the set of conditions to be met in order for presence information to be considered to be displayable may be different. For example, some devices may be capable of being in the “presence information displayable” state even when key-locked, if they continue to display current application data while key-locked. In another example, an IM client software application GUI may be minimized and thus may not be considered to be “in the foreground” in a conventional sense, but may continue to display at least some current presence information, e.g. within an icon in a “system tray” or similar GUI construct, in which case presence information may still be considered to be displayable.
(5) Presence Information Undisplayable: Presence information is considered to be undisplayable by an IM client software application at wireless communication device 70 when the device 70 does not present current IM contact presence information from the application on display 76 substantially in real time. In the case of a BlackBerry device, this may be for failure of the device to meet each of conditions (a), (b) and (c) described above. In some wireless communication device embodiments, the “presence information undisplayable” state may also be entered either when the device display has been placed into a power-saving mode or when a screen saver has been activated—each of these situations preventing current IM presence information from being seen by the user.
Referring to
At wireless communication device 70, it is assumed that, from 11:15 AM onward, device 70 is neither key-locked nor password-locked and mobile IM client 134 executes as a foreground process. Referring to
It is assumed that, at 11:25 AM, the mobile IM client software application 134 becomes “dormant”. This can occur in one of two ways. First, presence information may become undisplayable (as described above) and remain undisplayable for a predetermined period of time TO, which may be 5 minutes for example (
Referring to
The HOLD message 800 is received by the proxy IM server software 52 shortly after it is sent, resulting in a transition 610 of the state machine 600 from the SEND PRESENCE UPDATES state 602 to a HOLD PRESENCE UPDATES state 604 (
Over the next forty minutes, it is assumed that four presence updates regarding users Joe, Bob and Mary are received by proxy IM server software 52 and are buffered. The buffered set of presence updates 54 is illustrated as a table in
Referring to
Subsequently, an event occurs at wireless communication device 70 which results in the mobile IM client 134 ceasing to be dormant. The event may be one of: presence information once again becoming displayable (
It will be appreciated that the transition 718 differs from the transitions 714 and 716 because it is based on a condition (i.e. the receipt of an instant message or login notification) that is known to proxy IM server software 52 before it is known to IM client 34 (since the instant message or login notification will have come from IM proxy server software 52). For this reason, when transition 718 occurs, it may be said that the Proxy IM server software 52 has “taken the IM client 134 out of the dormant mode”. This is in contrast to the IM client 134 “taking itself out of dormant mode” based on conditions known locally to IM client 134 but not known to the Proxy IM server 50 (as for transitions 714 and 716).
Regardless of which of transitions 714, 716 and 718 occurred, the software application 134 will have transitioned from the MOBILE IM CLIENT DORMANT state 704 back to the MOBILE IM CLIENT ACTIVE state 702. It will be appreciated that entering back into the MOBILE IM CLIENT ACTIVE state 702 does not necessarily mean that presence information has once again become displayable (assuming transition 710 had been the reason for the state machine 700 being in state 704). For example, if an instant message has been received at the IM client 134 but the device 70 remains password-locked, state machine 700 could be in state 702 despite the fact that presence information remains undisplayable.
The transitions 714 and 716 to MOBILE IM CLIENT ACTIVE state 702 reflect the fact that the mobile IM client 134 has ceased being dormant. This is detected at S506 (
Referring to
Referring again to
Subsequently, the proxy IM server software 52 undertakes processing for sending the buffered presence updates 54 (
Subsequently, operation 400 and 500 of
It will be appreciated from the above description that, for each transition into the MOBILE IM CLIENT ACTIVE state 702, the state machine 700 remains in that state for at least time T0 or T1. This is done intentionally, to ensure that once mobile IM client 134 ceases to be dormant, it will spend at least time T0 or T1 in a non-dormant state (i.e. state 702). If this were not done, and if one of the conditions which otherwise causes transition 710 or 712 is already present when the state machine transitions into state 702, then the result would be an immediate transition back to the MOBILE IM CLIENT DORMANT state 704. Since transitioning into the MOBILE IM CLIENT ACTIVE state 702 causes the transmission of an UNHOLD message 900 to the software 52 (at least in the case of transitions 714 and 716) and transitioning back into the MOBILE IM CLIENT DORMANT state 704 causes transmission of a HOLD message 800 from device 70 to the proxy IM server software 52, such rapid transitions may result in an unnecessary flurry of communications between the wireless communication device 70 and proxy IM server 50. Requiring the state machine 700 to stay in state 702 for at least time T0 or T1 serves to mitigate this eventuality. Put another way, if a user has received an instant message recently, the user may be likely to receive another instant message again soon. Thus it is desirable to prevent a transition back into state 704 too soon, even if the user has, e.g., placed the application into the background or password-locked (or key-locked) the device. Of course, for some embodiments, or in certain situations, it may be determined that the additional message traffic is acceptable. In that case, the minimum time period durations may be reduced or, in the case of T0, avoided altogether. The use of two time periods T0 and T1 permits flexibility in configuring system behavior. In some embodiments, this flexibility may not be required, such that only one time period may be used for both transitions (which is what effectively occurs if time periods T0 and T1 are both set to the same duration).
In the above-described embodiment, the proxy IM server 50 upon which proxy IM server software 52 is executed may send IM message traffic to wireless communication device 70 by way of a relay server that stores and forwards communications (not only instant messages, but other communications such as email for example) that are destined for wireless communication device 70. In a conventional configuration, the relay server may be situated between the proxy IM server 50 and wireless network 60 of
In another alternative, when an enterprise IM server is used to provide IM service to users connected to a secure corporate network within an enterprise, the proxy server capability described above in conjunction with
As illustrated in
As will be appreciated by those skilled in the art, modifications can be made to the above-described embodiments without departing from the essence of the invention. For example, wireless communication device 70 need not be a BlackBerry device using a proprietary RIM operating system. Other forms of wireless communication devices, such as WinCE or PalmOS operating system based devices, or possibly even devices executing operating system software that is not capable of multitasking, could be employed.
In some embodiments, the format of the HOLD and UNHOLD messages may be different from the formats shown in
It is not absolutely necessary for the Proxy IM Server software 52 to store the contact list 71. Since presence updates coming from the IM Server 40 may contain all information that the IM client software application 134 needs, the Proxy IM Server software 52 may simply maintain the buffered presence updates 54 without maintaining the contact list 71.
In the embodiments described above, when login notification is enabled in respect of an IM contact, no presence updates at all are buffered for that contact (whether login notifications or otherwise). In alternative embodiments, this setting may only prevent the buffering of login notifications. Other types of presence updates could feasibly still be buffered.
Fundamentally, it will be appreciated that the techniques described in the present disclosure are applicable to presence services and presence service clients used in any communication system, whether associated with instant messaging, VoIP calling, or otherwise. Presence service clients may be integrated with or otherwise associated with communication client software applications (such as IM clients or VoIP clients). Such communication clients software applications could be implemented in firmware or hardware instead of software, and thus may generically be referred to as “communication clients”. Thus the term “communication client” may be used to refer to a software or firmware application executing at a wireless communication device or the wireless communication device itself. Generically, IM contacts may be referred to as “contacts” for such systems generally.
As well, it should be appreciated that the present disclosure applies to peer-to-peer embodiments in which no intermediate or central server exists. In such embodiments, presence updates may ordinarily be sent directly from any device at which a change in presence status has occurred to one or more other devices (peers) that have been configured to receive (e.g. at a presence service client) presence updates in respect of that device. In such embodiments, a first wireless communication device at which changes in presence status have occurred may buffer presence updates destined for a second (peer) wireless communication device upon receiving an indicator indicating that a communication client executing at or comprising the second device has become dormant. Upon receiving a further indicator indicating that the communication client has ceased being dormant, a set of buffered presence updates, possibly reconciled to eliminate redundant or obsolete information, may be sent to the second device.
Other modifications will be apparent to those skilled in the art and, therefore, the invention is defined in the claims.
Claims
1. A method performed by a server that is configured to wirelessly transmit presence updates to a presence service client associated with a communication client executing on a wireless communication device, comprising:
- receiving an indication that the communication client has become dormant;
- in response to receiving the indication, buffering presence updates destined for the presence service client, each presence update indicating availability of a contact for communication with the communication client;
- receiving a further indication that an event has occurred that will cause, but has not yet caused, the communication client to cease being dormant; and
- in response to receiving the further indication, transmitting the buffered presence updates to the presence service client.
2. The method of claim 1 wherein the indication is a communication from the communication client.
3. The method of claim 1 wherein the communication client is an instant messaging client.
4. The method of claim 1 wherein the further indication is based on a condition that is known to the server before it is known to the communication client.
5. The method of claim 4 wherein the condition comprises a communication, other than a presence update, destined for the communication client.
6. The method of claim 4 wherein the condition is that a contact of interest of the communication client has logged into an instant messaging service.
7. The method of claim 1 wherein the transmitting occurs despite the server not having received an unhold message from the communication client.
8. The method of claim 1 wherein the communication client becoming dormant comprises presence information being undisplayable on a screen of the communication device.
9. The method of claim 1 wherein the transmitting includes reconciling the presence updates into a single presence update and transmitting the single presence update.
10. A method performed by a server that is configured to wirelessly transmit presence updates to a presence service client associated with a communication client executing on a wireless communication device, comprising:
- receiving an indication that the communication client has become dormant;
- in response to receiving the indication, buffering presence updates destined for the presence service client, each presence update indicating availability of a contact for communication with the communication client;
- receiving a further indication that an event has occurred that will cause the communication client to cease being dormant; and
- in response to receiving the further indication, transmitting the buffered presence updates to the presence service client, despite the server not having received a notification from the communication client that the communication client has ceased being dormant.
11. The method of claim 10 wherein the communication client is an instant messaging client, and the indication is an instant message from the communication client.
12. The method of claim 10 wherein the further indication is based on a condition that is known to the server before it is known to the communication client.
13. The method of claim 12 wherein the condition comprises a communication, other than a presence update, destined for the communication client.
14. The method of claim 12 wherein the condition is that a contact of interest of the communication client has logged into an instant messaging service.
15. The method of claim 10 wherein the communication client becoming dormant comprises presence information being undisplayable on a screen of the communication device.
16. The method of claim 10 wherein the transmitting includes reconciling the presence updates into a single presence update and transmitting the single presence update.
17. A method performed by a server that is configured to wirelessly transmit presence updates to a presence service client associated with a communication client executing on a wireless communication device, comprising:
- receiving an indication that the communication client has become dormant;
- in response to receiving the indication, buffering presence updates destined for the presence service client, each presence update indicating availability of a contact for communication with the communication client;
- receiving a further indication that an event has occurred that will cause the communication client to cease being dormant;
- reconciling the presence updates into a single presence update; and
- in response to receiving the further indication, transmitting the single presence update in place of the buffered presence updates.
18. The method of claim 17 wherein the reconciling includes retaining only a most recent of the buffered updates.
19. The method of claim 17 wherein the communication client is an instant messaging client, and the indication is an instant message from the communication client.
20. The method of claim 17 wherein the communication client becoming dormant comprises presence information being undisplayable on a screen of the communication device.
Type: Application
Filed: Dec 7, 2011
Publication Date: Mar 29, 2012
Applicant: RESEARCH IN MOTION LIMITED (Waterloo)
Inventors: H. K. Michael Hung (Toronto), Andreea Manolescu (Toronto), Gerhard Dietrich Klassen (Waterloo)
Application Number: 13/313,514