A key problem with interacting with mobile web pages on mobile phones is the time it takes for the device to complete the download operation of each page, from the time the user selects a link to the time when the page is fully downloaded. This is primarily because mobile networks are relatively slow, devices frequently suspend connections preserve battery life, and mobile connections are unreliable.
To download a single page, a mobile device has to establish a network connection, locate the server, request the page and download the page. Establishing the connection, locating the server and requesting the page can take a relatively long time, sometimes exceeding fifty percent of the overall download time.
When dealing with messaging applications in which a user interacts with a page's content and may communicate with multiple users, the overall loading time can be significant. For example, consider a mobile user that already has a messaging conversation taking place with two users, User A and User B, in which messages are being exchanged. To view a message received from user A requires one page load, and to respond with a message to user A requires another page load after submitting the message. To then view a message received from user B requires one more page load, and to respond with a message to user B requires another page load after submitting the message to user B. Therefore, to exchange one full round of messages with two users, the user's device is required to perform four page loads; two full rounds of messages with two users would take eight page loads, and so forth. This is time-consuming and frustrating to users.
This Summary is provided to introduce a selection of representative concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used in any way that would limit the scope of the claimed subject matter.
Briefly, various aspects of the subject matter described herein are directed towards providing a single page of data that when rendered displays combined content from multiple endpoints (e.g., corresponding to messaging participants) on a single page, and allows for separate communication back to each endpoint via interaction with that page. Bidirectional communication logic such as a messaging application is coupled to the display and input mechanism of a computing device such as a mobile device. The bidirectional communication logic provides a user interface that displays content received from at least two endpoints in a single page, and provides for user interaction with the single page to selectively communicate data to any of the endpoints.
In one example messaging implementation, a page collapsing mechanism limits the message content displayed on the single page, such as based on a number of conversations. In one example messaging implementation, content corresponding to each conversation is displayed in a separate area, which includes an interactive mechanism (e.g., a text input area and a send mechanism) for sending a message to the messaging participant associated with that conversation. In one example messaging implementation, at least one indication when message content has changed relative to previously displayed message content is provided, such as by providing a notification indication such as a banner, and/or by changing the appearance (e.g., color) of message content that has changed.
Other advantages may become apparent from the following detailed description when taken in conjunction with the drawings.
The present invention is illustrated by way of example and not limited in the accompanying figures in which like reference numerals indicate similar elements and in which:
Various aspects of the technology described herein are generally directed towards a messaging framework, including a messaging service and a messaging application that runs in mobile web browsers. The messaging service and application allows the user to communicate with multiple users from one page, instead of loading multiple pages (e.g., one page for communicating with each different user).
In one example implementation, Windows® Messenger is represented as the messaging service and application, however it will be understood that this is only an example, and that the various concepts and aspects described herein are not limited to any particular service and/or application. Further, while the messaging application provides significant benefits with mobile browsers that render messaging content as a page, the various concepts and aspects described herein apply to any type of endpoint device capable of receiving and outputting messaging content, including a personal computer or other communications device.
As such, the present invention is not limited to any particular embodiments, aspects, concepts, protocols, structures, mechanisms, algorithms, functionalities or examples described herein. Rather, any of the embodiments, aspects, concepts, protocols, structures, mechanisms, algorithms, functionalities or examples described herein are non-limiting, and the present invention may be used various ways that provide benefits and advantages in computing and user interface navigation in general.
Turning to
As described below, page combiner logic 108 combines the messaging (or other) content from the various other users into a data comprising a single page 110 received at the mobile device 102. A bidirectional communication mechanism exemplified in
In general, the server 104 includes a memory 220 and cache 222 in which messages are stored for each user. Note that for space considerations, messages may be discarded from the cache 222 for size and/or time reasons. For each mobile user running the messaging application 112 (FIG., 1), the page combiner logic 108 knows to retrieve the content sent by others for that user, and combine the content into a single set of data (corresponding to the page) before sending that page data to the user.
More particularly, it is more beneficial (faster) to aggregate content so as to download one page with as much content as possible than to split the content across several small pages. At the same time, the aggregation has to be conducted in such manner that the application program remains highly useable. For example, consider that downloading a page on a mobile device takes two seconds to establish a network connection, one second to locate the server, one second to request the page and one second to download a 10 kb page. Therefore, with these example times, downloading a 10 kb page will on average take five seconds, whereas downloading two 10 kb pages will take between eight and ten seconds (depending on whether the device suspended the connection after downloading the first page which happens after a period of inactivity, or whether the two pages were downloaded within a small interval of time).
However, when the page combiner logic 108 combines the content of the two example pages, the total download time is only six seconds, because the steps prior to downloading are executed only once per a downloaded page. Note that if the pages are fairly short and similar, the time will be even shorter because when two pages are combined together, the overhead (e.g., the HTML opening and closing tags, and/or HTML markup representing branding and navigational elements often present in the header and the footer of each page) are needed only once, so the total of two pages can be less than 20 kb.
Note that combining relatively static content (that does not change frequently over time) is straightforward, e.g., a single news article may be split into two pages or presented as one combined page. However, bi-directional communication with frequent changes as in messaging has other issues that need to be dealt with. As described herein, because of various aspects handled at the server and mobile messaging application, including the per-user information maintained in the memory 220 and cache 222, as well as the features of the mobile messaging application 112, bi-directional communication is now able to be conducted with multiple endpoints from one page, without compromising usability aspects of the communication.
As represented in the example page 3301, each conversation has its own interaction area, 3341 and 3361, respectively for User A and User B. The text of the conversation content 3321 and 3341 are in these areas 3341 and 3361 respectively, along with user input areas, such as text input areas 3381 and 3391, send buttons 3401 and 3411, selectable icons (the unlabeled circles below the a text input area 3381) and a “more” selection, and selections for viewing the full conversation or closing the conversation. Note that the “more” selection allows the mobile messaging application 112 or alternatively (or in addition to) the server 104 to trim the amount of message content shown per conversation. Size, number of messages, and/or time data accompanying each message may be used to determine how much message content to show.
By receiving and maintaining identity information for each other user at the messaging application 112, the messaging application 112 allows the user to separately interact with each other user from the single page. For example, as represented in
In
Similarly, the banner area in
While in the black-and-white image of
To determine when a page has changed, the server 104 maintains the timestamps of messages maintained for a user and a timestamp of the last page load of that user. If the user requests a page, the timestamps of each message will indicate to the server any new message content since the last load, whereby a new message notification (e.g., for the mobile device's displayed area 440) and highlighted message content can be provided to the mobile device messaging application 112.
As described below, much of the functionality described herein may be performed at the server or at the mobile device's messaging application program, or by some combination of both. Note that the server knows when a mobile device's messaging application (e.g., versus a personal computer's messaging application) is requesting content, so the server at least knows to combine multiple conversation's messages into a single page, and may further format and/or otherwise modify some of the content accordingly, e.g., to change the page's appearance when rendered. Alternatively, the server may provide metadata along with the message content to the mobile device's messaging application so that the messaging application can locally format and/or modify the content's appearance prior to being rendered. Both alternatives are generally described herein, along with combinations thereof, and it can be readily appreciated that it is equivalent to adjust any of the page content at the server, at an endpoint, or via any combination of server and endpoint structure and/or functionality.
In addition to combining pages to facilitate faster times yet while maintaining usability, the application and/or server addresses usability implications of efficient, but potentially harder to interact-with longer pages. More particularly, if a page would become too large to navigate efficiently, a mechanism is provided to bring only the most important information to the user's attention. In a messaging scenario, the most recently changed conversations are considered the most important, and thus the mechanism collapses older conversations. Criteria to determine when to collapse one or more conversations may be an estimated or actual length, or based on the number of conversations that are open.
For example, in one example implementation, the oldest conversation or conversations get collapsed if there are already five open conversations, so that the message content of no more than five conversations are viewable on the page. While this makes interacting with older messages less convenient (interaction with the older messages are significantly slower due to the need to fetch the content and render it as a new page), collapsing older messages is generally more efficient because the user is more likely to interact with more recent active conversations than those that have not been active for a longer time.
As described above, when some collapsing criteria is met as evaluated by step 606, the server 104 can collapse the page data, as represented by step 608. For example, the server can simply not provide the message content for the oldest conversation or conversations beyond the maximum number (e.g., five) most-recently active conversations. Alternatively, the server 104 can provide the message content even for conversations that will be collapsed, whereby it is up to the mobile messaging application 112 to collapse the page. As can be readily appreciated, a tradeoff between longer downloads (if letting the mobile messaging application 112 collapse the page) versus slower accessibility (if collapsing the page at the server) is present. The amount of data to download may be a factor in having the server or the mobile messaging application 112 collapse the page.
Thus, steps 606 and 608 may be performed by the server 104, by the mobile messaging application 112, or by some combination thereof. For example, the server may send the page containing at least five conversations, and may send more conversation data up to some size limit, whereby it is up to the mobile messaging application 112 to collapse the page as needed to show a maximum of five conversations.
Step 610 of
Similarly, the message content to be rendered can be modified at the server 104 so that it will be highlighted when rendered. Alternatively, other metadata can indicate to the messaging application 112 that it should change the way it renders the new content. Having the mobile messaging application 112 modify the page appearance adds complexity to the mobile messaging application 112, but allows the user to locally customize the rendered appearance on the mobile device without requiring the server to store that user's notification and highlighting preferences.
Step 614 represents building the page at the server, which includes the combined message content for possibly multiple conversations, as well as any change notification for a new message. Step 616 represents sending the page to the user X's mobile device.
As is understood, the above approach to consolidating content into one page and allowing the user to interact with multiple parties via that page is especially beneficial in data-intense scenarios, such as in the case of a messaging application. Notwithstanding, the above-concepts can be easily extended to other bi-directional communication scenarios, such as editing multiple contact information from a single page.
While the invention is susceptible to various modifications and alternative constructions, certain illustrated embodiments thereof are shown in the drawings and have been described above in detail. It should be understood, however, that there is no intention to limit the invention to the specific forms disclosed, but on the contrary, the intention is to cover all modifications, alternative constructions, and equivalents falling within the spirit and scope of the invention.