System, Method, and computer program product for customizing channels, content, and data for mobile devices
Claim Score by NHIP
Abstract
Described herein are systems, methods, computer program products, and combinations and sub-combinations thereof, for enabling web content (as well as other objects) to be loaded on mobile devices (as well as other types of devices), and for users of mobile devices to operate with such web content on their mobile devices in an interactive manner while in an off-line mode.

Term
Term ended
Projected expiry passed 14 July 2021, 5.2 years ago.
- Priority
- Filed
- Published
- Projected expiry
- Today
5 claims: 2 independent, 3 dependent
- 1Broadest claimClaim Score 69, broad(NHIP)A method for enabling a user to create customized channels for mobile devices, comprising the steps of:1) creating a bookmark to an automatic channel Web page;2) surfing to a Web site;3) invoking said automatic channel bookmark, thereby displaying said automatic channel Web page;4) querying a browser via said automatic channel Web page for a URL (Universal Resource Locator) of said Web site;5) automatically populating an automatic channel form for said Web site: and 6) automatically adding said Web site as a new channel to be stored in a database.
- 3A method for enabling a user to create customize channels for mobile devices, comprising the steps of:1) surfing to a Web page having a quick channel button, wherein said quick channel button indicates that a user would want said Web page loaded onto said mobile device;2) activating said quick channel button, whereby said user is brought to a server Web site;3) attempting to determine if said user is registered with said server;4) adding said Web page as said new channel and returning said user to said Web page;and 5) presetting state information regarding said Web page for subsequent synchronization operations.
Independent claims2
472 paragraphs in 4 sections, as filed
[0001] “System, Method, and Computer Program Product for Enabling On-Device Servers, Offline Forms, and Dynamic Ad Tracking On Mobile Devices,” Serial No. (to be assigned), Attorney Docket No. 1933.0010001, filed concurrently herewith.
[0002] “System, Method, and Computer Program Product for Syncing to Mobile Devices,” Serial No. (to be assigned), Attorney Docket No. 1933.0010002, filed concurrently herewith.
[0003] “System, Method, and Computer Program Product for Administering Channels, Content, and Data for Mobile Devices,” Serial No. (to be assigned), Attorney Docket No. 1933.0010003, filed concurrently herewith.
[0004] “System, Method, and Computer Program Product for Web Content Aggregation and Development, and Web Content Delivery to Clients,” Serial No. (to be assigned), Attorney Docket No. 1933.0010005, filed concurrently herewith.
BACKGROUND OF THE INVENTION
[0005] 1. Field of the Invention
[0006] The present invention relates generally to mobile cornmunications, and more particularly relates to technology for using interactive applications while on-line and off-line on mobile devices.
[0007] 2. Related Art
[0008] A variety of mobile devices (such as personal data assistants, or PDAs) exist. Such mobile devices include ones based on the Palm operating environment and the Windows CE operating environment.
[0009] A variety of software applications for those mobile devices also exist.
[0010] What does not exist prior to the invention are software applications for enabling web content (as well as other objects) to be loaded on mobile devices, and for users of mobile devices to operate with such web content on their mobile devices in an interactive manner while in an off-line mode.
SUMMARY OF THE INVENTION
[0011] Briefly stated, the invention includes systems, methods, computer program products, and combinations and sub-combinations thereof for enabling web content (as well as other objects) to be loaded on mobile devices (as well as other types of devices), and for users of mobile devices to operate with such web content on their mobile devices in an interactive manner while in an off-line mode.
[0012] These and additional features and advantages of the present invention will become more apparent from the detailed description set forth below when taken in conjunction with the drawings in which like reference characters generally identify corresponding elements throughout.
BRIEF DESCRIPTION OF THE FIGURES
P-0013[0013] The accompanying drawings, which are incorporated herein and form part of the specification, illustrate embodiments of the present invention and, together with the description, further serve to explain the principles of embodiments of the invention.
P-0014[0014]FIG. 1A is a block diagram of the invention according to an embodiment of the invention;
P-0015[0015]FIG. 1B is an alternative block diagram of the invention according to an embodiment of the invention;
P-0016[0016]FIG. 1B<b>1</b> is a block diagram of an example data processing unit useful for implementing items from FIGS. 1A and 1B;
P-0017[0017]FIG. 1C is an example flowchart of a process to interact with objects on a client in an off-line mode according to an embodiment of the invention;
P-0018[0018]FIG. 1D is an example flowchart of a process to interact with forms on a client according to an embodiment of the invention;
P-0019[0019]FIG. 1E is an example flowchart of a process to interact with multi-page forms on a client according to an embodiment of the invention;
P-0020[0020]FIG. 1F<b>1</b> is an example flowchart of a process for tracking client activity according to an embodiment of the invention;
P-0021[0021]FIG. 1F<b>2</b> is an example flowchart of a process for context sensitive processing (such as but not limited to processing relating to advertising) on a client according to an embodiment of the invention;
P-0022[0022]FIG. 1G is an example flowchart of an initialization process according to an embodiment of the invention;
P-0023[0023] FIGS. <b>1</b>H<b>1</b> and <b>1</b>H<b>2</b> collectively illustrate an example flowchart of an “off by N” synchronization process according to an embodiment of the invention;
P-0024[0024]FIG. 1I<b>1</b> is an example flowchart of a synchronization process (where the client is connected directly to the server) according to an embodiment of the invention;
P-0025[0025]FIG. 1I<b>2</b> is an example flowchart of a synchronization process (where the client is connected to the server via an adapter) according to an embodiment of the invention;
P-0026[0026]FIG. 1J is an example flowchart relating to server side maintenance of client status information according to an embodiment of the invention;
P-0027[0027]FIG. 1K is an example flowchart relating to optimizing content for a particular client according to an embodiment of the invention;
P-0028[0028]FIG. 1L is an example flowchart relating to selectively sending objects to a client depending on whether the client already has the objects according to an embodiment of the invention;
P-0029[0029]FIG. 1M is an example flowchart relating to syncing channels having collections of objects according to an embodiment of the invention;
P-0030[0030]FIG. 1N is an example flowchart relating to fleet management according to an embodiment of the invention;
P-0031[0031]FIG. 1O is an example flowchart relating to automatically adding a channel to the server's collection of channels according to an embodiment of the invention;
P-0032[0032]FIG. 1P is an example flowchart relating to enabling providers to optimize their objects for use on clients by using predefined meta tags according to an embodiment of the invention;
P-0033[0033]FIG. 1Q is an example flowchart relating to client side processing of objects based on meta tags contained in the objects according to an embodiment of the invention;
P-0034[0034]FIG. 1R is an example flowchart relating to server side processing of objects based on meta tags contained in the objects according to an embodiment of the invention;
P-0035[0035]FIG. 1S is an example flowchart relating to selecting a channel and registering a client, if necessary, according to an embodiment of the invention;
P-0036[0036]FIG. 1T is an example flowchart relating to processing an anonymous account according to an embodiment of the invention;
P-0037[0037]FIGS. 1U, 1V, <b>1</b>W, <b>1</b>X, <b>1</b>Y, <b>1</b>Z, <b>1</b>AA, and <b>1</b>AB are used to generally describe embodiments of the invention;
P-0038[0038]FIG. 2 is an example flowchart of a process to obtain objects from providers according to an embodiment of the invention;
P-0039[0039]FIG. 3A is an alternative embodiment of a synchronization process;
P-0040[0040]FIG. 3B is an example block diagram illustrating how XML objects can be served to clients according to an embodiment of the invention;
P-0041[0041]FIGS. 3C and 4A are views of synchronization processes according to embodiments of the invention;
P-0042[0042]FIG. 4B is used to indicate how the invention processes hash results according to an embodiment;
P-0043[0043]FIGS. 5A, 5B, <b>5</b>C, <b>5</b>D, <b>5</b>E, <b>5</b>F, <b>5</b>G, <b>5</b>H, <b>5</b>I, <b>5</b>J, <b>5</b>K, <b>5</b>L, and <b>5</b>M relate to user interface functionality according to embodiments of the invention;
P-0044[0044] FIGS. <b>6</b>-<b>62</b> illustrate example screen shots according to embodiments of the invention; and
P-0045[0045]FIGS. 63A and 63B are event trace diagrams used to describe a synchronization process according to an embodiment of the invention.
P-0046[0046] It should be understood that these figures depict embodiments of the invention. Variations of these embodiments will be apparent to persons skilled in the relevant art(s) based on the teachings contained herein. For example, the flow charts contained in these figures depict particular operational flows. However, the functions and steps contained in these flow charts can be performed in other sequences, as will be apparent to persons skilled in the relevant art(s) based on the teachings contained herein.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
P-0047[0047] 1. Overview of Embodiments of the Present Invention
P-0048[0048] Embodiments of the present invention are briefly described in this section.
P-0049[0049] Briefly stated, the invention is directed to placing objects such as, but not limited to, Internet or Web content on data processing devices, such as but not limited to mobile devices. Table 1 lists examples of such Internet content, although the invention is not limited to these examples. <tables id="TABLE-US-00001" num="1"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="center" /><thead><row><entry namest="1" nameend="1" align="center">TABLE 1</entry></row><row><entry /></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row><row><entry>Internet Content</entry></row><row><entry>Internet content includes but is not limited to:</entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></thead><tbody valign="top"><row><entry>HTML</entry></row><row><entry>JavaScript ™</entry></row><row><entry>Channels</entry></row><row><entry>Java ™</entry></row><row><entry>ActiveX</entry></row><row><entry>Multimedia:</entry></row><row><entry>Images (e.g., JPEG, GIF, PNG, vector graphics, etc.)</entry></row><row><entry>Audio Files (e.g. MP3)</entry></row><row><entry>Video (e.g. AVI)</entry></row><row><entry>Streaming Content: Voice/Data/Video</entry></row><row><entry>Binary files</entry></row><row><entry>XML</entry></row><row><entry>Applications</entry></row><row><entry>Data Objects</entry></row><row><entry>Documents</entry></row><row><entry>Anything that can be delivered via a “browser”</entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
P-0050[0050] Table 2 lists examples of mobile devices, although the invention is not limited to these examples. <tables id="TABLE-US-00002" num="2"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="center" /><thead><row><entry namest="1" nameend="1" align="center">TABLE 2</entry></row><row><entry /></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row><row><entry>Mobile Devices</entry></row><row><entry>Mobile devices include but are not limited to:</entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></thead><tbody valign="top"><row><entry>Handheld Computers</entry></row><row><entry>Cellular Phones</entry></row><row><entry>Internet-enabled Phones</entry></row><row><entry>Pagers</entry></row><row><entry>Radios</entry></row><row><entry>TVs</entry></row><row><entry>Audio Devices</entry></row><row><entry>Car Audio Systems</entry></row><row><entry>Recorders</entry></row><row><entry>Text-to-Speech Devices</entry></row><row><entry>Bar-code Scanners</entry></row><row><entry>Net Appliances</entry></row><row><entry>Mini-browsers</entry></row><row><entry>Personal Data Assistants (PDAs)</entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
P-0051[0051]FIG. 1U illustrates the concept of the invention of placing objects on data processing devices, such as mobile devices.
P-0052[0052] 1.1. Enabling Mobile Devices to Interact With Networked Applications
P-0053[0053] The invention includes technology for using applications on mobile devices that interact with the Internet or with intranets. The invention enables applications available via a network or via an Internet/intranet to download and to run on mobile devices. Consequently, the invention includes software and methods for administering a server that manages the variables relevant to a mobile device/server environment.
P-0054[0054] The invention enables:
P-0055[0055] Mobile devices to operate in conjunction with a Web server, even when the mobile devices are not coupled directly to the PC using portable on-device servers: Web pages are loaded, viewed, cached, and deleted even when the device is not coupled to any network.
P-0056[0056] Mobile devices to operate in conjunction with the Web, Internet, or intranet via a connection mechanism and then in disconnected mode or with the Web, Internet, or intranet in wireless mode with a continuous or a discontinuous connection mechanism.
P-0057[0057] A technique for interactive connectivity between handheld computers and computer networks.
P-0058[0058] Fleet management for centrally administering information in a handheld network environment that includes, but is not limited to, user data, user groups, group channels, channel data, personal channels, commercial channels, user accounts, corporate account, software groupings, personal information management, form delivery, form management, device configuration, device databases, device contents, and devices parameters.
P-0059[0059] Obtaining updated Web pages and other network objects, for use when the mobile device is not communicating with the PC.
P-0060[0060] An example mobile device/server environment is shown in FIG. 1V.
P-0061[0061] 1.2. Rapid Transfer of Web Pages to Mobile Devices
P-0062[0062] To improve efficiency of data exchange between mobile devices and networked content, the invention includes an improved communication protocol that collects requests and responses for network objects into a smaller number of protocol (such as HTTP) requests and responses. The server also determines the nature and the resources of the mobile device. This protocol is represented, for example, in FIG. 1W.
P-0063[0063] Downstream, the data is encoded in a data format called ABC (tokenized version of the data) and sent to the device. Already Been Chewed (ABC) format creates a tokenized codification of HTML pages that is sent to the device. (The device receives the ABC and presents the material on the device.)
P-0064[0064] The HTML page is encoded into ABC and sent to the device. The encoding is a mapping of parent and child HTML elements and/or resources to alphanumeric values.
P-0065[0065] The sync operation of the invention includes various synchronization processes that can collect information from the Internet to a server, and to the client. The usage of the term “sync,” as described herein, refers to the overall operation of connecting a client to a server for the exchange, interaction, creation, and removal of data.
P-0066[0066] In one embodiment, syncing can be defined as mirroring data on a client and a server, such that the data is the same on client and server. In other embodiments, syncing can be defined as overwriting data on a client or on a server, such that the data on either a client replaces the data on a server, and vice versa.
P-0067[0067] In one embodiment, a sync operation involves a user placing a mobile device into an adapter that includes a sync button. The adapter is connected to a server. Upon pressing the sync button, the user initiates the sync operations of the present invention, which include various synchronization processes (specific delivery modes). Thus, the term sync is meant to refer to the overall operation of linking a client to a server. Synchronization is meant to refer to the specific process of copying, adding, filtering, removing, updating and merging the information between a client and a server. Any number of synchronization processes can be executed during a sync.
P-0068[0068] Before being sent downstream the data is compared to the data that is known to be on the client and then the client is updated all at once in a one-up/one-down synchronization method, which is represented in FIG. 1X. The server sets the client to preemptively prepare all device information necessary during the sync. Then the server receives the set of information in a one-up fashion. The server collates the information and sends the information in a one-down fashion. This optimizes the sync's efficiency and speed. The sync process is represented in FIGS. 1Y and 1Z.
P-0069[0069] 1.3. Optimizing Content of Web Pages for Mobile Devices
P-0070[0070] When Web content and other network objects pass through the server they are processed to minimize their size and to optimize their delivery to mobile devices: for presentation, for ease of use, for efficiency, for size, etc.
P-0071[0071] The invention uses server logic to optimize content. The server assesses the mobile device to optimize web content for the device. Factors that the server logic considers when performing this optimization include, but are not limited to:
P-0072[0072] Dynamic memory specifications
P-0073[0073] High memory specifications
P-0074[0074] Protected Memory
P-0075[0075] Storage Memory
P-0076[0076] Database Memory
P-0077[0077] Available storage space
P-0078[0078] Screen size
P-0079[0079] User profile(s)
P-0080[0080] Color depth
P-0081[0081] Applications on device
P-0082[0082] Buttons on-device
P-0083[0083] Data markers (e.g., cookies, tokens)
P-0084[0084] Preferences
P-0085[0085] Fonts
P-0086[0086] Font specifications
P-0087[0087] Sync type
P-0088[0088] Synchronization types
P-0089[0089] Supported data types
P-0090[0090] Supported mime types
P-0091[0091] Connection/Network profile
P-0092[0092] An example optimization process is shown in FIG. 1AA.
P-0093[0093] On the server, the graphic is optimized per the state information of the device. If the device sends down the need for the graphic on a page for a device with a display that is 27 cm wide and in grayscale, the server sends its best version of a graphic optimized for that environment.
P-0094[0094] The technology of the invention is extended by tags on HTML pages that identify content that is designed for additional modifications. Any and all bytes processed by the server are potentially examined for compression/optimization. The server detects the tag and executes the necessary logic.
P-0095[0095] Table 3 illustrates example tags (the invention is not limited to the tags shown in Table 3). <tables id="TABLE-US-00003" num="3"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="center" /><thead><row><entry namest="1" nameend="1" align="center">TABLE 3</entry></row></thead><tbody valign="top"><row><entry /></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row><row><entry>Sample Markup Language</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="1" colwidth="105PT" align="left" /><colspec colname="2" colwidth="112PT" align="left" /><tbody valign="top"><row><entry>Tag</entry><entry>Effect</entry></row><row><entry namest="1" nameend="2" align="center" rowsep="1" /></row><row><entry><META NAME=“Handheld-</entry><entry>This tag enables several HTML</entry></row><row><entry>Friendly” content=“True”></entry><entry>features that are normally turned off.</entry></row><row><entry /><entry>Most notably, The invention does not</entry></row><row><entry /><entry>try to display TABLE tags or the</entry></row><row><entry /><entry>HSPACE and VSPACE attributes of</entry></row><row><entry /><entry>IMG tags unless the page is marked</entry></row><row><entry /><entry>as “HandheldFriendly”. Most</entry></row><row><entry /><entry>TABLEs or H/VSPACEs are</entry></row><row><entry /><entry>designed for much larger screens.</entry></row><row><entry><AGIGNORE></AGIGNORE></entry><entry>Used in a wireless channel. Use the</entry></row><row><entry /><entry>AGIGNORE tag to surround content</entry></row><row><entry /><entry>within an HTML page that may be</entry></row><row><entry /><entry>inappropriate or unattractive on</entry></row><row><entry /><entry>Internet-enabled phones.</entry></row><row><entry><AGPAGEBREAK TITLE=“your</entry><entry>Used in a wireless channel. Breaks up</entry></row><row><entry>title”></entry><entry>pages on request. When processing</entry></row><row><entry /><entry>pages for devices other than WAP</entry></row><row><entry /><entry>phones, the server ignores the</entry></row><row><entry /><entry>AGPAGEBREAK tag.</entry></row><row><entry namest="1" nameend="2" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
P-0096[0096] Web Content Aggregation, Web Channel Development, and Web Content Delivery for Users of the Internet and of Mobile Devices
P-0097[0097] The invention is extended by the coupling of devices to the content available at the server web site (see the example shown in FIG. 1AB).
P-0098[0098] These and other embodiments of the present invention are described in greater detail below.
P-0099[0099] Structural Embodiments of the Present Invention
P-0100[0100]FIG. 1A is a block diagram of a data processing environment <b>102</b> according to an embodiment of the invention. The data processing environment <b>102</b> includes a server <b>104</b> (although only one server <b>104</b> is shown, in practice the data processing environment <b>102</b> may include a plurality of servers), one or more devices <b>106</b>, one or more adapters <b>118</b>, and one or more providers <b>128</b>.
P-0101[0101] Generally, the server <b>104</b> maintains a collection of channels. In an embodiment, a channel comprises a collection of objects. An object is any entity that can be transferred to a client <b>108</b>, such as but not limited to content, applications, services, images, movies, music, links, etc.
P-0102[0102] A channel includes a number of properties. At least some of these properties define the objects that the channel includes. Such properties include, but are not limited to, the following:
P-0103[0103] A name of the channel.
P-0104[0104] A location of a root object (such as but not limited to a URL). In an embodiment, this root object is included in the channel.An indication of the number of levels below the root object, for which to include objects in the channel. For example, in an embodiment, if this property is equal to “1 level,” then all objects that are 1 level down from the root object (reached by traversing links in the root object), are included in the channel. If this property is equal to “2 levels,” then all objects that are 1 level down from the root object (reached by traversing links in the root object), and all objects that are I level down from those objects (reached by traversing links in those objects), are included in the channel. Embodiments of the invention allow “uneven” trees, where some branches of the tree extent to a greater number of levels than other branches of the tree. In other embodiments, the trees are even or balanced.
P-0105[0105] A maximum size of the channel. For example, if this is set to 500 Kbytes, then the aggregate size of the objects in the channel cannot be greater than 500 Kbytes. If the aggregate size of the objects in the channel is greater than this value, then embodiments of the invention may delete objects from the channel and/or delete portions of objects in the channel.
P-0106[0106] An indication of which resource objects are enabled for the channel:
P-0107[0107] An indication of whether or not images are to be included in or excluded from objects in the channel; and
P-0108[0108] An indication of whether or not scripts are enabled in objects in the channel.
P-0109[0109] A refresh methodology.
P-0110[0110] It is noted that the properties associated with channels may vary from implementation to implementation. Also, implementations may employ combinations of the above properties, and/or properties in addition to the following, as will be appreciated by persons skilled in the relevant art(s).
P-0111[0111] The invention includes processes for managing channels, including but not limited to adding channels to the collection of channels maintained by the server <b>104</b>.
P-0112[0112] The server <b>104</b> offers channels to clients <b>108</b>. A client <b>108</b> may access the server <b>104</b> and view the collection of channels. The client <b>108</b> may then select any combination of the channels in the collection. The server <b>104</b> maintains a list of the channels associated with each of the clients <b>108</b>.
P-0113[0113] During a synchronization process, the server <b>104</b> loads a device <b>108</b> with the channels associated with the client <b>108</b>. Generally, the server <b>104</b> does this by obtaining from providers <b>128</b> the objects defined by the channels, and causing those objects to be stored on the client <b>108</b>. Thus, during the synchronization process, the server <b>104</b> will load the client <b>108</b> with the selected channels. More particularly, the server <b>104</b> will load the client <b>108</b> with the objects associated with the channels.
P-0114[0114] The client <b>108</b> may process and use those objects when not connected to the server <b>104</b>. The invention enables the client <b>108</b> to actively interact with the objects and channels.
P-0115[0115] In one embodiment, the client <b>108</b>A directly interacts with the server <b>104</b> via some transmission medium <b>120</b>B, which may be any wired or wireless medium using any communication protocol.
P-0116[0116] In another embodiment, the client <b>108</b>B indirectly interacts with the server <b>104</b> via an adapter <b>118</b>. For example, the client <b>108</b>B may be a mobile device (such as a Palm device) and the adapter <b>118</b> may be a cradle and a computer coupled to the cradle (the mobile device is inserted into the cradle). In this instance, the adapter <b>118</b> presents itself to the server <b>104</b> as a client <b>108</b>B (via client communications module <b>110</b>C). When the server <b>104</b> sends objects to the adapter <b>118</b>, the adapter interface module <b>116</b> writes those objects to client <b>108</b>B. In embodiments, adapter interface module <b>116</b> can be a Hot Sync™ Manager, an Active Sync™, etc. It is noted that the invention is not limited to any of the implementation examples discussed herein.
P-0117[0117] The components shown in FIG. 1A shall now be described in greater detail.
P-0118[0118] The server <b>104</b> includes an administration module <b>122</b>, a database module <b>126</b>, a user interface <b>130</b>, a web synchronization module <b>124</b>, a server extension module <b>156</b>, a fleet management module <b>154</b>, a notification module <b>132</b>, and a server communication module <b>114</b>. Other embodiments of server <b>104</b> may include a subset of these modules, and/or may include additional modules.
P-0119[0119] The administration module <b>122</b> controls and manages the states of the server <b>104</b> and the clients <b>108</b>. For example, the administration module <b>122</b> manages and controls groups of clients <b>108</b>, permissions assigned to clients <b>108</b>, groups, and channels. For example, the administration module <b>122</b> administers the users/clients <b>108</b> assigned to groups, and the channels associated with users. These and additional functions performed by the administration module <b>122</b> are described herein.
P-0120[0120] The database module <b>126</b> controls access to databases associated with the server <b>104</b>. The database module <b>126</b> maintains information relevant to the clients <b>108</b>, as well as information relevant to the modules contained in the server <b>104</b>. The database module <b>126</b> manages information on the collection of channels maintained by server <b>104</b>. These and additional functions performed by the database module <b>126</b> are described herein.
P-0121[0121] The user interface <b>130</b> is, in an embodiment, a graphical user interface (GUI) that enables users and clients <b>108</b> to access functions and modules offered by the server <b>104</b>. More generally, the user interface <b>130</b> within server <b>104</b> provides access to server <b>104</b> and the modules and resources contained therein.
P-0122[0122] The invention supports various server web sites that are available through any communication medium, such as but not limited to the Internet, intranets, direct dial up links, etc. The UI <b>130</b> enables such web sites.
P-0123[0123] These and additional functions performed by the user interface <b>130</b> are described herein.
P-0124[0124] The web synchronization module <b>124</b> is an application/instance of server extension module <b>156</b>, and controls synchronization of web content to client <b>108</b>. The invention may include other synchronization modules (which are application/instances of server extension module <b>156</b>) that control synchronization of other types of objects to clients <b>108</b>. For example, the server <b>104</b> may administer a calendar that may be installed on clients <b>108</b>. The synchronization of appointments, events and/or dates on this calendar between clients <b>108</b> and the server <b>104</b> may be performed by a calendar synchronization module. These and additional functions performed by the server extension module <b>156</b> are described herein.
P-0125[0125] The fleet management module <b>154</b> performs functions associated with fleets of clients <b>108</b>, which are groups of clients <b>108</b>. For example, fleet management module <b>154</b> may perform global or mass operations on groups (fleets) of clients <b>108</b>, such as loading or updating an application on groups (fleets) of clients <b>108</b>. Another example of a mass operation is retrieval of information on clients <b>108</b> in a fleet, such as the free memory in clients <b>108</b> in a fleet (this would help an organization determine if its clients <b>108</b> need a memory upgrade). These and additional functions performed by the fleet management module <b>154</b> are described herein.
P-0126[0126] The server extension interface/module <b>156</b> enables modules, such as third party modules, to operate in or work with the server <b>104</b> (and modules contained in the server <b>104</b>). The server extension module <b>156</b> presents an API (application programming interface). Modules in the server <b>104</b> may operate with other devices in the server <b>104</b> by conforming to the server API.
P-0127[0127] For example, the web synchronization module <b>124</b> and the fleet management module <b>154</b> (as well as other types of synchronization modules, not shown in FIG. 1A) may interact with databases on the server <b>104</b> via the database module <b>126</b> by going through the server extension module <b>156</b>. The web synchronization module <b>124</b> and the fleet management module <b>154</b> may not be able to interact directly with the database module <b>126</b> for a number of reasons. For example, they may support different data formats, or simply “speak different languages.” However, they can interact via the server extension module <b>156</b> as well as other server modules as long as they conform to the API of the server extension module <b>156</b>. This is true of any modules in the server <b>104</b>, or that interact with the server <b>104</b>.
P-0128[0128] Server communication module <b>114</b> enables communication between the server <b>104</b> and entities external to the server <b>104</b>, such as clients <b>108</b>, adapters <b>118</b>, providers <b>128</b>, work stations, etc. The server <b>104</b> communicates with these entities via communication mediums <b>120</b>, which may be any type of wireless or wired communication using any protocol. It is noted that multiple server communication modules <b>114</b> may execute in a single server <b>104</b>. For example, in one embodiment, server communication module <b>114</b> is a TCP/IP stack. In another embodiment, server communication module <b>114</b> is a secure socket layer stack or a compression stack. The invention is not limited to any implementation examples discussed herein. These and additional functions performed by the server communication module <b>114</b> are described herein.
P-0129[0129] The notification module <b>132</b> sends objects to clients <b>108</b> beyond objects related to channels associated with clients <b>108</b>. Such objects could be requested by client <b>108</b> in advance. For example, a client <b>108</b> could ask for a notification when an event happens, such as when a stock reaches a target price. When the event occurs, the notification module <b>132</b> would cause an appropriate notification(s)/object(s) to be sent to the client <b>108</b>. Alternatively, the notification module <b>132</b> may send objects to clients <b>108</b> without any prior explicit request from the client <b>108</b>. For example, the notification module <b>132</b> might send channels to clients <b>108</b> when such channels are identified to be similar to those already selected by the clients <b>108</b>. Also, the notification module <b>132</b> might send appropriate notifications/objects to the clients <b>108</b> when such clients <b>108</b> receive email or faxes at the server <b>104</b>. In embodiments, the notification module <b>132</b> transmits such objects to the client <b>108</b> immediately when the event occurs, during the next synchronization with the client <b>108</b>, or at some other future synchronization.
P-0130[0130] An alternative representation of server <b>104</b> is shown in FIG. 1B. FIG. 1B illustrates, for example, that messages from entities outside of server <b>104</b> are received by server extension interface/module <b>156</b> via server communications modules <b>114</b>. Generally, such messages represent requests for the server <b>104</b> to perform various functions. The server extension module <b>156</b> conceptually operates as a dispatcher who routes such messages to other modules contained in the server <b>104</b>, such as web synchronization module <b>124</b> (who handles requests to synchronize with web content), notification module <b>132</b>, fleet management module <b>154</b> (who handles fleet related requests), and/or third party modules <b>155</b> (such as other synchronization modules). Thus, the invention supports modules <b>155</b> generated by third parties to perform various functions. Such modules <b>155</b> “plug-in” to the server <b>104</b> via the server extension module <b>156</b>.
P-0131[0131] Referring again to FIG. 1, the devices <b>106</b> may be any type of data processing device. In embodiments of the invention, the devices <b>106</b> are mobile computing devices, although the invention is not limited to these embodiments. In such example embodiments, the devices <b>106</b> may include, but are not limited to, handheld computers, cellular phones, internet-enabled phones, pagers, radios, tvs, audio devices, car audio systems, recorders, text-to-speech devices, bar-code scanners, net appliances, mini-browsers, personal data assistants (PDAs), etc.
P-0132[0132] In embodiments of the invention, the devices <b>106</b> include software, hardware, and/or combinations thereof related to client functionality (such client functionality is described herein). When a device <b>106</b> includes such software, hardware, and/or combinations thereof, the device <b>106</b> is referred to herein as a client <b>108</b>. Accordingly, it can be said that the data processing environment <b>102</b> includes one or more clients <b>108</b>.
P-0133[0133] Clients <b>108</b> each may include a layout and rendering module <b>134</b>, a forms module <b>136</b>, a control module <b>142</b>, a user interface <b>144</b>, a client extension interface <b>138</b>, a client interface module <b>112</b>, a client communications module <b>110</b>, a JavaScript™ engine <b>140</b>, and a database module <b>146</b>. Other embodiments of clients <b>108</b> may include a subset of these modules, and/or may include additional modules.
P-0134[0134] Layout and rendering module <b>134</b> controls the processing of data objects on client <b>108</b>, such as the layout and rendering of data objects on client <b>108</b>. For example, the layout portion of module <b>134</b> obtains information from databases of the client <b>108</b> (via the database manager <b>146</b>) and determines where such information should be rendered on the display of the client <b>108</b>. Such information may include anything that can be rendered, such as but not limited to images, text, links, etc. The rendering portion of module <b>134</b> is responsible for drawing items on the display (drawing bits to the screen). These and additional functions performed by the layout and rendering module <b>134</b> are described herein.
P-0135[0135] The forms module <b>136</b> controls and manages forms. For example, in embodiments the forms module <b>136</b> manages aspects of off-line forms, such as HTML forms and/or multi-page forms. The forms module <b>136</b> enables access to and user interaction with forms (in some embodiments, the forms module <b>136</b> via UI <b>144</b> enables users of client <b>108</b> to directly access forms). The forms module <b>136</b> maintains the status of forms. Forms module <b>136</b> can also include a forms manager (not shown) to provide added functionality. These and additional functions performed by the forms module <b>136</b> are described herein.
P-0136[0136] The user interface <b>144</b> is preferably a graphical user interface that enables users to interact with client <b>108</b> and functions and modules provided by the client <b>108</b>. More generally, UI <b>144</b> controls how functions presented by modules of the client <b>108</b> are presented to users. The UI <b>144</b> controls how users interact with such functions and modules. It is noted that the functionality of the UI <b>144</b> may be distributed. For example, portions of the UI <b>144</b> may reside in the forms module <b>136</b>, as well as other modules of client <b>108</b>. These and additional functions performed by the user interface <b>144</b> are described herein.
P-0137[0137] The client extension interface <b>138</b> enables modules, such as third party modules, to operate in or work with the client <b>108</b> (and modules contained in the client <b>108</b>). The client extension interface <b>138</b>, also known as an on-device server, presents an API (application programming interface) that is, in embodiments, common to clients <b>108</b> on many architectures.
P-0138[0138] Modules in the client <b>108</b> can work together via the client extension interface <b>138</b>. For example, the JavaScript™ engine <b>140</b> may decide that it wishes to display a message to the user. To do this, the JavaScript™ engine <b>140</b> would work through the client extension interface <b>138</b> to cause the UI <b>144</b> to display the message to the user. The JavaScript™ engine <b>140</b> may not know how to directly interact with the UI <b>144</b>. However, as long as both the JavaScript™ engine <b>140</b> and the UI <b>144</b> conform to the API of the client extension interface <b>138</b>, then they can operate together.
P-0139[0139] Similarly, the control module <b>142</b> may decide that it needs to store some data in a database. The control module <b>142</b> would do this by working with the client extension interface <b>138</b> to access the database module <b>146</b> to effect such a modification to the databases in the client <b>108</b>. These and additional functions performed by the client extension interface <b>138</b> are described herein.
P-0140[0140] The JavaScript™ engine <b>140</b> executes objects written in the JavaScript™ language that operate on client <b>108</b>. As noted, the JavaScript™ engine <b>140</b> conforms to the API of the client extension interface <b>138</b>, and works with the client extension interface <b>138</b> to work with other modules in client <b>108</b>. These and additional functions performed by the JavaScript™ engine <b>140</b> are described herein.
P-0141[0141] Although not shown in FIG. 1A, embodiments of the invention include other engines for executing other types of scripts on client <b>108</b>. These other engines can interact with other modules on client <b>108</b> as long as the engines conform to the API of the client extension interface <b>138</b>.
P-0142[0142] The database module <b>146</b> controls access to databases associated with client <b>108</b>. More generally, the database manager <b>146</b> controls access to resources on the client <b>108</b>. For example, the control module <b>142</b> may interact with the database manager <b>146</b> to open an address book in the databases, and to write a record to the address book. Alternatively, the forms module <b>136</b> can interact with the database module <b>146</b> to access forms that are stored in the databases. These and additional functions performed by the database module <b>146</b> are described herein.
P-0143[0143] Client communications module <b>110</b> enables the client <b>108</b> to interact with external entities, such as server <b>104</b>. In embodiments, the client communications module <b>110</b> enables TCP/IP traffic, although the invention is not limited to this example. More generally, the client communications module <b>110</b> enables communication over any type of communication medium <b>120</b>, such as wireless, wired, etc., using any communication protocol, such as a pager protocol. These and additional functions performed by the client communications module <b>110</b> are described herein. The client interface module <b>112</b> enables the client <b>108</b> to communicate with adapters <b>118</b>. Client interface module <b>112</b> optionally links to client communications module <b>110</b> in some embodiments to provide functionality (for example, when the client communications module <b>110</b> uses a wireless modem's drivers, which are accessed via client interface module <b>112</b>). In embodiments, the client interface module <b>112</b> may be Hot Sync™ Manager in the Palm operating environment, or Active SynC™ in the Windows CE™ operating environment, or Pilot Link™ in the Unix operating environment. It is noted that these implementation examples are provided for illustrative purposes only. The invention is not limited to these examples. These and additional functions performed by the client interface module <b>112</b> are described herein.
P-0144[0144] The control module <b>142</b> coordinates the activities of the other modules in client <b>108</b> so that all the modules share resources properly. For instance, control module <b>142</b> can determine priorities for shared resources such as processing time, accessing memory, etc.
P-0145[0145] Providers <b>128</b> are sources of various types of objects, such as but not limited to content (content providers <b>128</b>A), applications (application providers <b>128</b>B), services (service providers <b>128</b>C), etc. Providers <b>128</b> may also include servers <b>104</b>′ (similar to server <b>104</b>), which may provide objects such as but not limited to content, applications, services, etc. For example, and without limitation, the application providers <b>128</b>B may provide objects relating to (without limitation) operating system updates/changes, system upgrades, application updates/changes, etc.
P-0146[0146] Adapters <b>118</b> include an adapter interface module <b>116</b>, a user interface <b>148</b>, a database module <b>150</b>, an adapter synchronization module <b>152</b>, and a client communications module <b>110</b>. Other embodiments of adapters <b>118</b> may include a subset of these modules, and/or may include additional modules.
P-0147[0147] Client communications module <b>110</b> is the same as similarly named modules in clients <b>108</b>.
P-0148[0148] The adapter interface module <b>116</b> enables the adapter <b>118</b> to communicate with clients <b>108</b>.
P-0149[0149] The adapter synchronization module <b>152</b> is involved with synchronization operations between server <b>104</b> and clients <b>108</b>.
P-0150[0150] The UI <b>148</b> enables users to interact with modules and functions of adapter <b>118</b>.
P-0151[0151] The database module <b>150</b> controls access to databases associated with adapter <b>118</b>. The database module <b>150</b> manages information needed for clients <b>108</b> to remain in sync with server <b>104</b>. In some embodiments, the adapter <b>118</b> does not include the database module <b>150</b> or the UI <b>148</b> (i.e., in embodiments where the adapter <b>118</b> operates essentially as a pipe, as in some embodiments on Unix).
P-0152[0152] These and additional functions performed by modules of the adapter <b>118</b> are described herein.
P-0153[0153] 2.1. Example Implementation Embodiments
P-0154[0154]FIG. 1B<b>1</b> illustrates a block diagram of a data processing unit <b>103</b>A that can be used to implement the entities shown in FIGS. 1A and 1B. It is noted that the entities shown in FIGS. 1A and 1B may be implemented using any number of data processing units <b>103</b>A, and the configuration actually used is implementation specific.
P-0155[0155] Data processing unit <b>103</b>A may represent laptop computers, hand held computers, lap top computers, and/or any other type of data processing devices. Which type of data processing device used to implement entities shown in FIGS. 1A and 1B is implementation specific.
P-0156[0156] Data processing unit <b>103</b>A includes a communication medium <b>103</b>B (such as a bus, for example) to which other modules are attached.
P-0157[0157] Data processing unit <b>103</b>A includes one or more processor(s) <b>103</b>C, and a main memory <b>103</b>D. Main memory <b>103</b>D may be RAM, ROM, or any other memory type, or combinations thereof.
P-0158[0158] Data processing unit <b>103</b>A may include secondary storage devices <b>103</b>E, such as but not limited to hard drives <b>103</b>F or computer program product interfaces <b>103</b>G. Computer program product interfaces <b>103</b>G are devices that access objects (such as information and/or software) stored in computer program products <b>103</b>. Examples of computer program product interfaces <b>103</b>G include, but are not limited to, floppy drives, ZIP™ drives, JAZ™ drives, optical storage devices, etc. Examples of computer program products <b>103</b>H include, but are not limited to, floppy disks, ZIP™ and JAZ™ disks, memory sticks, memory cards, or any other medium on which objects may be stored.
P-0159[0159] The computer program products <b>103</b>H include computer useable mediums in which objects may be stored, such as but not limited to optical mediums, magnetic mediums, etc.
P-0160[0160] Control logic or software may be stored in main memory <b>103</b>D, secondary storage device(s) <b>103</b>E, and/or computer program products <b>103</b>H.
P-0161[0161] More generally, the term “computer program product” refers to any device in which control logic (software) is stored, so in this context a computer program product could be any memory device having control logic stored therein. The invention is directed to computer program products having stored therein software that enables a computer/processor to perform functions of the invention as described herein.
P-0162[0162] The data processing unit <b>103</b>A may also include an interface <b>103</b>J which may receive objects (such as data, applications, software, images, etc.) from external entities <b>103</b>N via any communication mediums including wired and wireless communication mediums. In such cases, the objects <b>103</b>L are transported between external entities <b>103</b>N and interface <b>103</b>J via signals <b>103</b>K, <b>103</b>M. In other words, such signals <b>103</b>K, <b>103</b>M include or represent control logic for enabling a processor or computer to perform functions of the invention. According to embodiments of the invention, such signals <b>103</b>K, <b>103</b>M are also considered to be computer program products, and the invention is directed to such computer program products.
P-0163[0163] 3. Operational Embodiments of the Present Invention
P-0164[0164] 3.1. Enabling On-device Servers, Off-line Forms, and Dynamic Ad Tracking on Mobile Devices
3.1.1. Caching Objects on Clients for Off-line Browsing
P-0165[0165] Referring to FIG. 1C, a flowchart <b>160</b> is shown that illustrates a process by which content is captured and stored on client <b>108</b> to thereby allow the user to view the content on device <b>106</b> offline, according to an embodiment of the invention. Flowchart <b>160</b> begins with a user expressing the desire to see content on device <b>106</b> (step <b>160</b>A). Device <b>106</b> may be a handheld unit of the type as described herein.
P-0166[0166] It is noted that when client <b>108</b> is resident on device <b>106</b>, the terms client and device are used interchangeably herein (unless noted otherwise either explicitly or implicitly by context).
P-0167[0167] For convenience, functions are described herein as being performed by certain module(s). The invention is not limited to these descriptions. In embodiments, such functions are performed by other module(s). This is true throughout the discussion herein.
P-0168[0168] While device <b>106</b> is described in terms of the above-mentioned units, this is for convenience only and is not intended to limit its application. In fact, after reading the following description, it will be apparent to one skilled in the relevant art(s) how to implement the following invention in alternative embodiments (e.g., by providing the functionality of device <b>106</b> in emulation on a desktop PC or workstation).
P-0169[0169] In manipulating device <b>106</b>, the user interacts with server <b>104</b> via user interface <b>130</b> to identify channels (step <b>160</b>B). In one embodiment of the invention, channels contain content. As previously mentioned, content can be information. Additionally, content may be organized topically into areas of interest to a user. Generally, the channels can include any objects.
P-0170[0170] In another embodiment of the invention, the content in channels may be altered over time. For example, channels may be updated periodically in a predetermined fashion. In another example, channels are updated conditionally upon the occurrence of an event. In order to obtain the altered content, the user synchronizes device <b>106</b> via server <b>104</b> (step <b>160</b>C). The synchronization process is discussed in detail in later sections of this application. During synchronization, server <b>104</b> gathers channel content and sends it to device <b>106</b> (step <b>160</b>D).
3.1.2. Channel Aggregation and Selection by Clients
P-0171[0171] As discussed herein, the server <b>104</b> collects or aggregates channels for selection by clients <b>108</b>.
P-0172[0172]FIG. 2 is a flow diagram describing in further detail the process <b>160</b>D for gathering channels and sending the channels to device <b>106</b> according to an embodiment of the invention. The process begins with step <b>202</b>.
P-0173[0173] In step <b>202</b>, top level resources that server <b>104</b> needs to fulfill client <b>108</b>'s request are identified by server <b>104</b>. For example, if client <b>108</b> is requesting a full synchronization, server <b>104</b> will identify any changed objects from providers <b>128</b> and send them to client <b>108</b>. Client <b>108</b> can also request that a subset of providers <b>128</b> be updated Server <b>104</b> will identify any changed objects within the subset of providers <b>128</b> and send them to client <b>108</b>.
P-0174[0174] In step <b>204</b>, Web synchronization module <b>124</b> communicates with providers <b>128</b> to obtain the top-level resources. Other resources, such as images, links, JavaScript™, etc., needed to maintain the integrity of the information provided for each object are then determined in step <b>206</b>. In step <b>207</b>, objects are transformed so that they fit within the parameters of device <b>106</b>. Such parameters may include, but are not limited to, memory size, the size of device <b>106</b>, capabilities of device <b>106</b>, etc. When all resources have been amassed to fulfill client <b>108</b>'s request, the process proceeds to step <b>208</b>.
P-0175[0175] In step <b>208</b>, the objects retrieved in the preceding steps are compared with the objects already cached on device <b>106</b>. Server <b>104</b> determines the set of changes that have occurred between the retrieved objects and the objects already cached on device <b>106</b> in step <b>210</b>. Only the set of changes determined in step <b>210</b> are transmitted to device <b>106</b>. To improve the efficiency of the synchronization session between client <b>108</b> and server <b>104</b>, as well as optimize the content displayed by client <b>108</b>, a communication protocol collects requests and responses for network objects into a smaller number of protocol (such as HTTP) requests and responses. In an embodiment of the present invention, specific values are transformed in a conversion process to a tokenized encoding that is optimized for the device, client, and/or application. In one example, the encoding can be a mapping of parent and child HTML elements and/or resources to alphanumeric values designed to present content on the client's display.
P-0176[0176]FIG. 1W illustrates a block diagram of one embodiment of the optimized downstream protocol. FIG. 1W illustrates raw objects from provider <b>128</b>, server <b>104</b>, and device <b>106</b>. Server <b>104</b> transforms the raw objects into an efficient representation for displaying the objects on device <b>106</b>. For example, HTML objects are transformed into a tokenized compressed version of HTML. In another example, resources such as images, JavaScript™, etc. are transformed into tokenized compressed versions of resources. Generally, “human friendly” HTML is transformed into “machine friendly” format that is compact and regular (thereby reducing the requirements on the client <b>108</b> to process the objects). During the synchronization session, server <b>104</b> also determines the nature and the resources of device <b>106</b>. Thus, server <b>104</b> can determine the amount of content to download to device <b>106</b> as well as the features of device <b>106</b>. For example, device <b>106</b> may or may not be able to display color graphics and text. Therefore, a gif image would be scaled to fit the screen size of client <b>108</b> as well as reducing the color to a black and white image.
P-0177[0177] Returning again to FIG. 1C, the revised channels are cached on device <b>106</b> so that the content can be later accessed (step <b>160</b>E) by the user in an off-line manner.
P-0178[0178] In order to access the cached content, the user launches client <b>108</b> on device <b>106</b> (step <b>160</b>F). The user selects channels via user interface <b>144</b> (step <b>160</b>G). User interface <b>144</b> provides logic for displaying the means to access the resources of client <b>108</b>. In one embodiment, user interface <b>144</b> displays a list of channels from which a user may select specific channels.
P-0179[0179] Once a channel is selected, layout and rendering module <b>134</b> displays the selected channel (step <b>160</b>H). In one embodiment, the content of the selected channel is presented. In another embodiment, a form is presented for a user to enter a query. Thus, the invention allows the user to interact with the channels (step <b>160</b>I) even when not connected to server <b>104</b> or provider(s) <b>128</b>. In one embodiment, a user is essentially viewing Internet content off-line via cached Web pages.
3.1.3. Forms to Enable Off-line Interactive Processing by Clients
P-0180[0180] As described herein, in one embodiment channel content may contain a form or forms. For a single form, the form may be a multiple submit form or a single submit form. A multiple submit form contains multiple submissions for a single page. A single submit form contains one submission for a single page. Multiple submit forms will allow a user to submit the form multiple times prior to synchronization. Alternatively, the single submit form can only be submitted once per synchronization. Referring to FIG. 1D, flowchart <b>160</b>I illustrates a user's interaction with a channel having a single form (FIG. 1D is an example embodiment of step <b>160</b>I in FIG. 1C). Starting with step <b>162</b>A, a page is displayed by user interface <b>144</b> that contains form elements. Form elements may contain fields for the entry of data/commands such as query criteria. For example, query criteria may include identification information, location information, etc. Additionally, form elements may present a user with a list of choices and means by which a choice can be selected, such as radio boxes, check boxes, popup menus, etc. A user enters data/commands into the form elements via user interface <b>144</b> (step <b>162</b>B).
P-0181[0181] Forms module <b>136</b> caches the data/commands for later synchronization (step <b>162</b>C). During the synchronization process, which is discussed below in detail, control module <b>142</b> provides an appropriate notification (step <b>162</b>D). In one embodiment, the appropriate notification is a message displayed by control module <b>142</b> that the response to the form will be obtained during the next synchronization.
P-0182[0182] Forms module <b>136</b> maintains the status of the forms cached and manages the completion of the forms (step <b>162</b>E). In one embodiment, a user can access forms module <b>136</b> directly and review the cached forms before and after synchronization.
P-0183[0183] Multiple page forms may also be implemented. Multiple page forms may result from a single form that is too large to display on client <b>108</b>. In this instance, server <b>104</b> transforms the single page form into multiple page forms for display on client <b>108</b>. Referring to FIG. 1E, flowchart <b>160</b>I′ illustrates user interaction with a multiple page form (FIG. 1E is an embodiment of step <b>160</b>I in FIG. 1C). Starting with step <b>164</b>A, the user accesses a channel containing a multiple page form. User interface <b>144</b> displays the first page of the form (step <b>164</b>B). In much the same way as in step <b>162</b>B of FIG. 1D, the user enters data/commands into the form elements on the page of the displayed form (step <b>164</b>C).
P-0184[0184] Client extension interface <b>138</b> stores the data/commands from the displayed form page (step <b>164</b>D). User interface <b>144</b> displays the next page of the form (step <b>164</b>E). Steps <b>164</b>C, <b>164</b>D, and <b>164</b>E are repeated until all the pages of the form are completed. In one embodiment, client extension interface <b>138</b> delivers the completed multiple page form as a single form to forms module <b>136</b> (step <b>164</b>F). In another embodiment, client extension interface <b>138</b> delivers each completed page of the form to the forms module <b>136</b> (not shown). During the synchronization process, which is discussed below in detail, control module <b>142</b> provides an appropriate notification (step <b>164</b>G). In one embodiment, the appropriate notification is a message displayed by control module <b>142</b> that the response to the form will be obtained during the next synchronization. Similarly to step <b>162</b>E of FIG. 1D, forms module <b>136</b> maintains and manages the forms (step <b>164</b>H).
3.1.4. Tracking Client Behavior
P-0185[0185] As described herein, the invention enables client <b>108</b> to record user/client behavior. Examples may include, but are not limited to, tracking page impressions, such as tracking the number of times that a particular user has viewed a particular page or listened to a particular song, the amount of time a user spends viewing a page, or any other client activity. Other information that can be tracked includes, but is not limited to, user name, current time of request, page that is being viewed, the referred page, etc.
P-0186[0186]FIG. 1F<b>1</b> is a flow diagram describing a method for tracking page impressions offline, and for tracking other client <b>108</b> activity. In step <b>166</b>A, the user selects a page to view. It is then determined whether provider <b>128</b> of the page/object has requested that client activity be tracked and recorded (step <b>166</b>B). If provider <b>128</b> has not requested that client activity be recorded, the page is displayed and the client is not tracked (step <b>166</b>C). If provider <b>128</b> has requested that client activity be tracked and recorded, the process proceeds to step <b>166</b>D.
P-0187[0187] In step <b>166</b>D, client extension interface <b>138</b> tracks client activity (as defined by the provider <b>128</b>). The process proceeds to step <b>166</b>E.
P-0188[0188] In step <b>166</b>E, the tracked information is transmitted to server <b>104</b> upon synchronization. In step <b>166</b>F, server <b>104</b> then sends the information to the appropriate provider <b>128</b>. The provider <b>128</b> may pay some compensation for this service.
3.1.5. Display of Context Sensitive Objects
P-0189[0189] The invention enables the processing of context sensitive objects based on context sensitive triggers while the client <b>108</b> is browsing pages/objects in either an off-line mode (i.e., when not connected to server <b>104</b>) or an on-line mode (i.e., when connected to server <b>104</b>). Table 4 displays a listing of exemplary context sensitive objects. Table 5 displays a listing of exemplary context sensitive triggers. One skilled in the relevant art(s) would realize that other context sensitive objects and context sensitive triggers may be used without departing from the scope of the present invention. This process is shown in FIG. 1F<b>2</b>. <tables id="TABLE-US-00004" num="4"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="center" /><thead><row><entry namest="1" nameend="1" align="center">TABLE 4</entry></row><row><entry /></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row><row><entry>Context Sensitive Objects</entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></thead><tbody valign="top"><row><entry>Business card</entry></row><row><entry>Advertisement</entry></row><row><entry>e-mail</entry></row><row><entry>to do list</entry></row><row><entry>calendar event</entry></row><row><entry>ticket notification</entry></row><row><entry>channels</entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
P-0190[0190]<tables id="TABLE-US-00005" num="5"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="center" /><thead><row><entry namest="1" nameend="1" align="center">TABLE 5</entry></row><row><entry /></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row><row><entry>Context Sensitive Triggers</entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></thead><tbody valign="top"><row><entry>Global positioning satellite locator</entry></row><row><entry>Zip code</entry></row><row><entry>Time of day</entry></row><row><entry>User preferences</entry></row><row><entry>Last sync location</entry></row><row><entry>In range of a transmitter (e.g., bluetooth)</entry></row><row><entry>Credit card</entry></row><row><entry>Temperature</entry></row><row><entry>Altitude</entry></row><row><entry>Agent, arbiter, avatar</entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
P-0191[0191] In step <b>167</b>A, the user selects a page to view on the client <b>108</b>. The page is obtained from the cache of the client <b>108</b>, or if not in the cache then from the server <b>104</b> (in on-line mode, or via the sync process when not on-line).
P-0192[0192] In step <b>167</b>B, the client <b>108</b> determines if there are any context sensitive objects. Such objects may be related to the page of step <b>167</b>A, or status information of client <b>108</b>, or a combination thereof (or sensitive to other factors, as will be appreciated to persons skilled in the relevant art(s)).
P-0193[0193] If there are not context sensitive objects, then in step <b>167</b>D the page is displayed on client <b>108</b>.
P-0194[0194] If there are context sensitive objects, then in step <b>167</b>C the objects are processed and the page is displayed on client <b>108</b>. Processing of the objects depends on the nature of the objects. For example, if the object is an image, then the image is displayed. If the object is a script, then the script is processed.
P-0195[0195] In an embodiment, the objects may be advertisements, although the invention is not limited to this example. The sources of objects may pay the server <b>104</b> (or a party associated with server <b>104</b>) for the ability to have such objects loaded and processed on clients <b>108</b>.
P-0196[0196] 3.2. Syncing to Mobile Devices
P-0197[0197] Referring to FIG. 1G, flowchart <b>168</b> illustrates a synchronization initialization process according to an embodiment of the present invention. This process is also explained by a corresponding example event trace diagram in FIGS. 63A and 63B.
P-0198[0198] Client <b>108</b> initializes a synchronization session and sends a null data marker [Cn] to server <b>104</b> (step <b>168</b>A). See <b>6304</b> in FIG. 63A. In one embodiment, a data marker is a synchronization token associated with the state of data on the client <b>108</b>. More specifically, in one example, a synchronization token is a number that is sequentially increased by server <b>104</b> with each synchronization. Server <b>104</b> tells client <b>108</b> which client databases it wishes to track and sends data marker [C<b>1</b>] to client <b>108</b> (step <b>168</b>B). See <b>6306</b> in FIG. 63A. At this point, the synchronization data marker for the client <b>108</b> is equal to C<b>1</b> at both the client <b>108</b> and the server <b>104</b>, as indicated by <b>6308</b> and <b>6310</b>, respectively.
P-0199[0199] FIGS. <b>1</b>H<b>1</b> and <b>1</b>H<b>2</b> collectively illustrate a synchronization process that occurs subsequent to the initialization process of FIG. 1G.
P-0200[0200] As shown in flowcharts <b>170</b> in FIG. 1H<b>1</b>, and <b>170</b>′ in FIG. 1H<b>2</b>, the synchronization process checks to see if it can proceed from an earlier known state of information on the client. In one embodiment, client communication module <b>110</b> of client <b>108</b> initializes a synchronization session (step <b>170</b>A). Client control module <b>110</b> of client <b>108</b> sends a current data marker C<b>1</b> to web synchronization module <b>124</b> on server <b>104</b> (step <b>170</b>B). This is indicated by <b>6320</b> in FIG. 63B.
P-0201[0201] Server <b>104</b> uses the data marker C<b>1</b> received from client <b>108</b> (<b>6320</b> in FIG. 63B) to determine whether the last synchronization with client <b>108</b> was successful (step <b>170</b>C). In an embodiment, a successful synchronization is indicated if the value of the synchronization data marker that is maintained by the server <b>104</b> for the client <b>108</b> is equal to the data marker sent by the client <b>108</b> to the server <b>104</b> in the sync request. In the example of FIG. 63A, the data marker sent by the client <b>108</b> to the server <b>104</b> in the sync request is C<b>1</b> (<b>6320</b> in FIG. 63B), which matches the data marker maintained in the server <b>104</b> for the client <b>108</b> (<b>6310</b> in FIG. 63B). Accordingly, in the example of FIG. 63B, the server <b>104</b> in step <b>170</b>D determines that the last sync with the client <b>108</b> was successful. Accordingly, in step <b>170</b>E, a normal sync process is performed, which is described below.
P-0202[0202] If the last sync was not successful as determined in step <b>170</b>D, then control flows to step <b>170</b>F (described below). FIG. 63B shows an example where the sync with client <b>108</b> is not successful. At <b>6324</b>, the client <b>108</b> sends a sync request with data marker C<b>2</b>. At this point in time, the data marker maintained by the server <b>104</b> for the client <b>108</b> is equal to C<b>2</b> (<b>6312</b> in FIG. 63B). Accordingly, a match exists, and in <b>6326</b> the server <b>104</b> performs a normal sync and transmits new data marker C<b>3</b> to client <b>108</b>. However, due to some event <b>6328</b>, this transmission is not received by client <b>108</b>. Thus, client <b>108</b> never receives the new data marker C<b>3</b>. When the client <b>108</b> sends the next sync request, it transmits data marker C<b>2</b> (<b>6330</b> in FIG. 63B). At this point in time, the data marker maintained by the server <b>104</b> for the client <b>108</b> is equal to C<b>3</b> (<b>6316</b> in FIG. 63B), which does not match data marker C<b>2</b> received from the client <b>108</b> in the sync request (<b>6330</b> in FIG. 63B). Thus, the server <b>104</b> in step <b>170</b>D determines that the last sync with client <b>108</b> was not successful. Accordingly, step <b>170</b>F is performed.
P-0203[0203] In step <b>170</b>F, the server <b>104</b> compares the latest data marker received from the client <b>108</b> (C<b>2</b> in the example of <b>63</b>B) with ones stored in the server <b>104</b> for the client <b>108</b>. Essentially, the server <b>104</b> attempts in step <b>170</b>F to “roll back” to a previous known state of client <b>108</b>. In the example of FIG. 63B, the server <b>104</b> in step <b>170</b>F determines that it can roll back to a known state of the client <b>108</b> corresponding to data marker C<b>2</b> (<b>6312</b> in FIG. 63B).
P-0204[0204] In steps <b>170</b>G, <b>170</b>H, and <b>170</b>I, the server <b>104</b> determines what instructions are needed to cause the client <b>108</b> to roll back to the known state associated with data marker C<b>2</b> identified in step <b>170</b>F, and what instructions are needed to cause the client <b>108</b> to move forward from the previous state associated with data marker C<b>2</b> to the current state associated with data marker C<b>3</b>.
P-0205[0205] In steps <b>170</b>J, the instructions determined from steps <b>170</b>G, <b>170</b>H, and <b>170</b>I are sent to client <b>108</b>, along with the new data marker C<b>3</b> (<b>6332</b> in FIG. 63B). In one embodiment, a data marker is a synchronization token which is specifically constructed to provide information about the state of information on a client.
P-0206[0206] In steps <b>170</b>K and <b>170</b>L, the client interface module <b>112</b> executes these instructions to update the client <b>108</b>, and saves the new data marker C<b>3</b> (<b>6318</b> in FIG. 63B).
P-0207[0207] Referring back to step <b>170</b>F, if the server <b>104</b> cannot find a previous state of the client <b>108</b> corresponding to the data marker contained in the latest sync request from the client <b>108</b> (<b>6330</b> in FIG. 63B), then step <b>170</b>M is performed. In step <b>170</b>M, the server <b>104</b> identifies the instructions needed to initialize the client <b>108</b>. In one embodiment, the server <b>104</b> initializes the client <b>108</b> completely. Control then passes to step <b>170</b>J, described above.
P-0208[0208] The full normal synchronization step discussed at step <b>170</b>E in FIG. 1H<b>1</b> is shown in FIG. 1I<b>1</b>. This process applies to a case where the client <b>108</b> communicates directly with the server <b>104</b>.
P-0209[0209] Control module <b>142</b> identifies the deltas in the client databases identified by server <b>104</b> during initialization in step <b>168</b>B (step <b>172</b>A). In one embodiment of the present invention, a delta is a set of differences between versions of content or, more generally, objects (i.e., different versions of the same pages, documents, links, images, applications, services, etc.). In other words, deltas are sets of differences in the state of the objects currently being offered and the state of the objects in client <b>108</b>.
P-0210[0210] Control module <b>142</b> sends the deltas to synchronization module(s) <b>155</b> via server extension module <b>156</b> (step <b>172</b>B). In an embodiment, these deltas are sent in the synchronization request from client <b>108</b> to server <b>104</b>. This is possible since the client <b>108</b> knows which databases the server is interested in. This enables the client <b>108</b> to only make one transmission to server <b>104</b> during the synchronization process, thereby improving performance.
P-0211[0211] In one embodiment, synchronization module(s) <b>155</b> include web synchronization module <b>124</b>, fleet management module <b>154</b>, and/or other synchronization modules. These modules are responsible for synchronizing to different types of providers <b>128</b>. Server extension module <b>156</b> checks database module <b>126</b> to obtain a list of synchronization modules <b>155</b> resident on server <b>104</b>. Depending on the implementation, only some synchronization modules are present on server <b>104</b>. The server extension module <b>156</b> distributes the synchronization responsibilities among the synchronization modules <b>155</b>. Synchronization modules <b>155</b> synchronize the deltas from client <b>108</b> with providers <b>128</b> (step <b>172</b>C). Based on the information from provider(s) <b>128</b>, synchronization modules <b>155</b> compile instructions to synchronize the client <b>108</b> with providers <b>128</b> (step <b>172</b>D). Synchronization module <b>155</b> sends such instructions to client <b>108</b>, plus updated data marker (step <b>172</b>E).
P-0212[0212] Note this is the only transmission from the server <b>104</b> to the client <b>108</b> during the synchronization process. Thus, the invention achieves a one-up/one-down synchronization process, thereby improving performance. The instructions are transmitted via any reliable transport medium. For example, in one embodiment, HTTP is used. Control module <b>142</b> on the client <b>108</b> then executes the instructions (step <b>172</b>F).
P-0213[0213]FIG. 1I<b>2</b> illustrates a synchronization process of step <b>170</b>E (FIG. 1H<b>1</b>) applied to a case where client <b>108</b>B communicates with server <b>104</b> via adapter <b>118</b>.
P-0214[0214] Adapter <b>118</b> reads data from the client <b>108</b> (step <b>172</b>M). Specifically, adapter interface module <b>116</b> reads data from client <b>108</b> that includes state information about the resources of the device <b>106</b>, user specific information, etc.
P-0215[0215] Adapter <b>118</b> identifies deltas in client databases identified by server <b>104</b> in step <b>168</b>B (step <b>172</b>N). Adapter <b>118</b> sends these deltas to synchronization module(s) <b>155</b> via server extension module <b>156</b> (step <b>1720</b>). Such deltas are transmitted in the initial synchronization request, thus effecting a “one-up” protocol.
P-0216[0216] As discussed above, synchronization module(s) <b>155</b> on server <b>104</b> synchronize deltas from adapter <b>118</b> with providers <b>128</b> (step <b>172</b>P). Synchronization module(s) <b>155</b> compile instructions to synchronize client <b>108</b> with providers <b>128</b> (step <b>172</b>Q). These instructions are transmitted to the adapter <b>118</b>, along with the updated data marker (step <b>172</b>R). This is the only transmission from the server <b>104</b> to the adapter <b>118</b> during the synchronization process, thus effecting a “one-down” protocol. Adapter <b>118</b> then writes the updated data to client <b>108</b> (step <b>172</b>T).
P-0217[0217]FIG. 1X is another view of the synchronization process. As discussed herein, the device <b>106</b> or client <b>108</b> provides information about itself and the content it wishes to receive in a single “up” transmission, and the server <b>104</b>, upon identifying the device <b>106</b> or client <b>108</b>, returns the desired information along with new synchronization changes in a single “down” transmission. Synchronization tokens are passed between client <b>108</b> and server <b>104</b> so that future transmissions only need to include the information which has changed since the last synchronization session. In other embodiments, a one up and many down synchronization process can be implemented to accommodate the implementation requirements of synchronization modules <b>155</b>. In still further embodiments, the synchronization session can be implemented on the server <b>104</b> by server extension module <b>156</b>. In such an embodiment, the implementation requirements of synchronization modules <b>155</b> would be irrelevant to the “down” transmission, because the server extension module <b>156</b> would cache all the information and instructions on behalf of the client and transmit them in all at once.
P-0218[0218]FIG. 1Y illustrates another view of the synchronization process.
P-0219[0219] Other synchronization embodiments shall be discussed. It is noted that the synchronization embodiments can be used individually or in combination, as will be appreciated by persons skilled in the relevant art(s).
P-0220[0220]FIG. 1Z illustrates a granular variable synchronization protocol, according to an embodiment of the present invention. Here, adapter <b>118</b> is referred to generically as “PC” and performs the same interface functions as described herein.
P-0221[0221]FIG. 3A shows flowchart <b>300</b> that illustrates the variable granular protocol according to yet another embodiment of the present invention. In step <b>304</b>, client <b>108</b> couples to adapter <b>118</b> using a connector or medium (for example, Bluetooth, infrared, etc.).
P-0222[0222] In step <b>306</b>, client <b>108</b> sends updated information to adapter <b>118</b>.
P-0223[0223] In step <b>308</b>, server <b>104</b> receives updated information from adapter <b>118</b> (one-up transmission).
P-0224[0224] In step <b>310</b>, server <b>104</b> examines the updated information and in step <b>312</b>, server <b>104</b> obtains updated information from provider(s) <b>128</b>.
P-0225[0225] In step <b>314</b>, server <b>104</b> receives information regarding the sets of content available from provider(s) <b>128</b>.
P-0226[0226] In step <b>316</b>, server <b>104</b> constructs a set of content requests for provider(s) <b>128</b>.
P-0227[0227] In step <b>318</b>, server <b>104</b> sends requests to provider(s) <b>128</b>.
P-0228[0228] In step <b>320</b>, server <b>104</b> receives responses from provider(s) <b>128</b>.
P-0229[0229] In step <b>322</b>, server <b>104</b> interacts with client <b>108</b> to determine the state of its resources.
P-0230[0230] As already described herein, client <b>108</b> provides state information regarding the nature of its resources. In one embodiment, server <b>104</b> assesses the state information preemptively prepared and sent down in order to fit all the required information to the all the necessary device specifications including but not limited to: Dynamic memory specifications, high memory specifications, available storage space, screen size, user profile(s), color depth, applications on device, buttons on-device, data markers, preferences, fonts, sync type, supported data types, supported mime types, and connection/network profile. These types of state information are only for illustration and are not intended to limit the present invention.
P-0231[0231] In step <b>324</b>, server <b>104</b> optimizes the content received from provider(s) <b>128</b>. In one embodiment, HTML content is optimized into a tokenized “machine friendly” format which provide specific functionality for client <b>108</b>. Other embodiments include optimized formats for XML, JavaScript™, music files, images, etc. For example, as shown in FIG. 1AA, an image is optimized to meet the requirements of client <b>108</b> as determined by the state information determined in step <b>322</b>. As described already herein, image <b>1</b>A<b>1</b> is optimized into image <b>1</b>A<b>2</b>, which may be in color, reduced to fewer colors, etc.
P-0232[0232] In step <b>326</b>, server <b>104</b> encodes the content received from provider(s) <b>128</b> for transmission to adapter <b>118</b> and/or client <b>108</b>. Some of the content may be optimized for display, storage, and/or other functionality on client <b>108</b>. Some other content may not require any optimization. All content is then encoded for transmission. In one embodiment, the encoding protocol is HTTP. In another embodiment, the transmission protocol is TCP/IP. Various transmissions protocols can be implemented in the present invention with little or no added steps or loss of functionality.
P-0233[0233] In step <b>328</b>, adapter <b>118</b> signals that it is ready to process content and other network objects from server <b>104</b>. Client <b>108</b> may or may not signal its readiness. In embodiments described herein, client <b>108</b> does not communicate with server <b>104</b> other than to provide the “up” transmission with all the information required for server <b>104</b> to respond completely.
P-0234[0234] In step <b>330</b>, server <b>104</b> constructs a transmission protocol message for the content and other network objects to be transmitted to adapter <b>118</b> or client <b>108</b>. As discussed with regard to step <b>326</b>, the transmission protocol selected may determine the characteristics of the message, but not the content of the message.
P-0235[0235] In step <b>332</b>, server <b>104</b> sends protocol message to providers(s) <b>128</b>. In one embodiment, the messages sent are queries for forms which were selected and activated by a user of client <b>108</b>.
P-0236[0236] In step <b>334</b>, server <b>104</b> receives responses from provider(s) <b>128</b> with interactive content. As discussed with regard to step <b>332</b>, in one embodiment the interactive content can be the responses to form queries.
P-0237[0237] In step <b>336</b>, server <b>104</b> presents the responses from provider(s) <b>128</b> to client <b>108</b> and/or adapter <b>118</b>.
P-0238[0238] In step <b>338</b>, server <b>104</b> sends modified content to client <b>108</b> and/or adapter <b>118</b>.
P-0239[0239] In step <b>340</b>, server <b>104</b> sends updated content to client <b>108</b> and/or adapter <b>118</b>.
P-0240[0240] The variable granularity protocol discussed in FIGS. 1Z, 3A and in the methods of FIGS. 1G -<b>1</b>I<b>2</b> do not use file serving or other conventional methods for synchronizing a device to a server or desktop. Instead, the synchronization methods of the present invention can synchronize by using any reliable transport protocol because the delivery of the byte code is transportable in the widest array of delivery protocols. HTTP is one embodiment described herein which is widely implemented and accepted in current computer network topologies. The protocol of the present invention enables operation between client <b>108</b> and server <b>104</b> and pre-configures the client to preemptively send sets of data to the server <b>104</b>. This synchronization process of the present invention dynamically checks the need to update or not update content. In one embodiment, it checks the integrity of all data on any page sent via the protocol for the level of granularity. Granularity is determined by a set of deltas. For example, the protocol could acknowledge and read tags associated with HTML and/or XML and sort the objects modeled by theses languages to a client or to a database during a synchronization. In addition this synchronization enables clients with disparate data markers (synchronization tokens) to synchronize by resetting data marker data and maintaining authentication integrity. The features of the present invention described herein are now discussed in more detail with respect to certain embodiments.
P-0241[0241] As an extension of the variable granular protocol and the use of deltas to determine what should be transmitted up or down, server <b>104</b> can deliver XML objects to client <b>108</b>. The server <b>104</b> creates data structures for applications on a client <b>108</b> and can receive data structures from the client <b>108</b> for conversion to XML for use with a database.
P-0242[0242]FIG. 3B shows block diagram <b>350</b> of one embodiment of the present invention where XML is served to a device <b>106</b>. Device <b>106</b> synchronizes with server <b>104</b> and has its data structure with XML output <b>354</b> from database <b>352</b>. XML table <b>358</b> illustrates the format for the results and the structure of inputted queries <b>356</b>. Layout and rendering module <b>134</b> displays the XML output on device <b>106</b>. This XML output is obtained from server <b>104</b> through a XML style and rendering specification <b>360</b>. Device <b>106</b> is able to store and display XML structured information. FIG. 3C shows block diagram <b>375</b> of one embodiment of the present invention of off-by-any-number synchronization recovery. See also FIGS. 63A and 63B. FIGS. <b>1</b>H<b>1</b> and <b>1</b>H<b>2</b> above discuss the steps of this embodiment in detail. FIG. 3C provides additional illustration to aid the explanation and is not intended to limit the present invention.
P-0243[0243] 3.3. Administering Channels, Content, and Data for Mobile Devices
P-0244[0244] Example administrative related functions are described below. It is noted that these functions are described for illustrative purposes only, and are not limiting.
3.3.1. Cached Device Information on Server
P-0245[0245] Conventionally, state information on a user or device <b>106</b> is stored on the device <b>106</b> (such as HTML data markers). Accordingly, functionality to process and maintain such state information resides on a device <b>106</b>. Locating such functionality on the device <b>106</b> may not be optimal in some situations where the resources of the device <b>106</b> are limited, such as when the device <b>106</b> is a handheld computer.
P-0246[0246] Accordingly, according to embodiments of the invention, state information (and associated functionality) associated with clients <b>108</b> is maintained or cached on the server <b>104</b>.
P-0247[0247]FIG. 1J is a flowchart representative of the manner in which state information is cached on server <b>104</b>.
P-0248[0248] In step <b>174</b>A, the client <b>108</b> accesses a provider <b>128</b> via the server <b>104</b>.
P-0249[0249] In step <b>174</b>B, the provider <b>128</b> returns some state information to the server <b>104</b>. This may be a data marker, for example, or any other type of information on the device/client/user/transaction/etc.
P-0250[0250] In step <b>174</b>C, the server <b>104</b> maintains such state information on behalf of the client <b>108</b>. This is performed by the web synchronization module <b>124</b> and the database module <b>126</b>.
P-0251[0251] In step <b>174</b>D, the client <b>108</b>A requests the server <b>104</b> to access the same provider <b>128</b> as in step <b>174</b>A.
P-0252[0252] In step <b>174</b>E, the server <b>104</b> (specifically, the web synchronization module <b>124</b>) accesses the provider <b>128</b> using the state information that is maintained on behalf of the client <b>108</b>.
3.3.2. Server Side Optimization of Content
P-0253[0253] When the server <b>104</b> obtains an object from a provider <b>128</b>, the server <b>104</b> in some instances passes that object to a client <b>108</b>. In other cases, however, it may be more efficient for the server <b>104</b> to transform the object to a form that is more suitable for use by the client <b>108</b>. In an embodiment, this transformation is performed by the web synchronization module <b>124</b>.
P-0254[0254] This process is represented, for example, in FIG. 1K. Steps <b>176</b>A-<b>176</b>C illustrate the initial configuration actions in one embodiment of the present invention. Steps <b>176</b>D and <b>176</b>E illustrate an embodiment of any subsequent actions where the client's state information is already stored on the server <b>104</b>.
P-0255[0255] In step <b>176</b>A, client <b>108</b> sends state information to server <b>104</b> via client communications module <b>110</b>. State information may contain, among other things, user identity, secure login information, current resources, etc.
P-0256[0256] In step <b>176</b>B, server communications module <b>114</b> receives client's state information.
P-0257[0257] In step <b>176</b>C, server communications module <b>114</b> forwards the received state information to database module <b>126</b> and web synchronization module <b>124</b>.
P-0258[0258] In the case where the client's state information is already stored by database module <b>126</b>, steps <b>176</b>D and <b>176</b>E replace steps <b>176</b>A-<b>176</b>C.
P-0259[0259] In step <b>176</b>D, client <b>108</b> identifies itself to server <b>104</b>.
P-0260[0260] In step <b>176</b>E, server <b>104</b> obtains state information about client <b>108</b> from database module <b>126</b>.
P-0261[0261] In step <b>176</b>F, the web synchronization module <b>124</b> obtains an object from a provider <b>128</b>. In one embodiment, the object is content which conforms to that which is requested by client's <b>108</b> state information, although the object can be any entity, such as an application, service, etc.
P-0262[0262] In step <b>176</b>G, the web synchronization module <b>124</b> translates/transforms/optimizes the object for use by a particular client. The state information of the device <b>106</b> and/or client <b>108</b> is considered in this optimization process. The following list of state information is only some of the factors that the web synchronization module <b>124</b> considers when performing this optimization (and when determining what, if any, transformations/conversions/optimizations to perform):
P-0263[0263] Dynamic memory specifications
P-0264[0264] High memory specifications
P-0265[0265] Protected memory
P-0266[0266] Storage memory
P-0267[0267] Database memory
P-0268[0268] Available storage space
P-0269[0269] Screen size
P-0270[0270] User profile(s)
P-0271[0271] Color depth
P-0272[0272] Applications on device
P-0273[0273] Buttons on-device
P-0274[0274] Data markers (e.g., cookies, tokens)
P-0275[0275] Preferences
P-0276[0276] Fonts
P-0277[0277] Font specifications
P-0278[0278] Synctype
P-0279[0279] Synchronization types
P-0280[0280] Supported data types
P-0281[0281] Supported mime types
P-0282[0282] Connection/Network profile
P-0283[0283] Other factors will be apparent to persons skilled in the relevant art(s) bases on the teachings contained herein.
P-0284[0284]FIG. 4A shows block diagram <b>400</b> which illustrates the detection <b>410</b> of device/client state information by server <b>104</b> (or components thereof). In diagram <b>400</b>, the synchronization process <b>412</b> includes only kinds of content <b>414</b> supported by various devices/clients <b>416</b>.
3.3.3. Hashed Device State
P-0285[0285] In embodiments, during synchronization operations, prior to sending an object to a client <b>108</b>, the server <b>104</b> checks to see if the object differs from the instance of the object already resident on the client <b>108</b>. If the object is the same as that already resident on the client <b>108</b>, then the server <b>104</b> does not send the object to the client <b>108</b>. This process is illustrated in FIG. 1L.
P-0286[0286] In step <b>178</b>A, the client <b>108</b> requests an object (directly or indirectly).
P-0287[0287] In step <b>178</b>B, the web synchronization module <b>124</b> obtains the requested object from a provider <b>128</b>.
P-0288[0288] In step <b>178</b>C, the web synchronization module <b>124</b> performs a hash operation on the object and compares the hash result to a previously stored hash result for the object.
P-0289[0289] In step <b>178</b>D, the web synchronization module <b>124</b> determines if the hash result generated in step <b>178</b>C is the same as the previously generated and stored hash result of the object.
P-0290[0290] In step <b>178</b>E, if they are the same, then the client <b>108</b> is informed that the object has not changed.
P-0291[0291] In step <b>178</b>F, if they are not the same, then object is transformed as in step <b>176</b>B of FIG. 1K. Also, the new hash value generated in step <b>178</b>C is stored by the server <b>104</b>.
P-0292[0292] In step <b>178</b>G, the web synchronization module <b>124</b> performs a hash operation on the transformed object.
P-0293[0293] In step <b>178</b>H, the web synchronization module <b>124</b> compares the hash result of the transformed object to a previously stored hash result of the transformed object.
P-0294[0294] In step <b>178</b>I, the web synchronization module <b>124</b> determines if the hash result generated in step <b>178</b>G is the same as the previously generated and stored hash result of the transformed object.
P-0295[0295] In step <b>178</b>E, if they are the same, then the client <b>108</b> is informed that the object has not changed.
P-0296[0296] In step <b>178</b>J, if they are not the same, then the transformed object is sent to the client <b>108</b>. Also, the new hash value generated in step <b>178</b>G is stored by the server <b>104</b>.
P-0297[0297] Thus, according to embodiments of the invention, the server <b>104</b> determines whether current versions of objects already reside on clients <b>108</b> by using hash results, as opposed to the objects themselves. This reduces the amount of memory needed on the server <b>104</b> (since only the hash results need to be stored, not the objects themselves).
P-0298[0298] Also, according to embodiments, there are two checks to see if the current versions of objects already reside on clients <b>108</b>. The first check is made to the raw object, and the second check is made to the transformed versions of the objects.
P-0299[0299]FIG. 4B shows block diagram <b>402</b> illustrating the hashed device state process described herein. In diagram <b>402</b>, Server <b>104</b> synchronizes with device <b>106</b> identifiers for updated device information <b>422</b>. The synchronization <b>422</b> includes state information <b>426</b> and data <b>427</b> that is stored by server <b>104</b> using global unique identifiers (GUIDs) <b>424</b> for each object. GUIDs provide the hash object for the hash operations/comparisons described herein. A hash value is the result of a hash operation. In an embodiment, a hash value is a numerical fingerprint of any amount of data. In one embodiment, hash values are calculated for each HTML document. This hash value is smaller and more efficient to store on server <b>104</b>. Additionally, server <b>104</b> can compare two or more hash values more readily and faster than comparing the complete documents than the hash values. It is noted that in embodiments, data <b>427</b> have hash operations performed on them more frequently than state information <b>426</b>. For example, the screen size of a device will likely remain constant while the data on the device changes repeatedly.
3.3.4. Syncing Music, Movies, Books, Photo Albums, and Other Collections of Objects
P-0300[0300] The invention supports channels which comprise web sites having collections of objects, such as collections of music, images, books, movies, applications, services, etc. By selecting such a channel, the client <b>108</b> can be populated with such collections of objects.
P-0301[0301] For example, if a channel having a collection of music is selected, then it is possible to turn the client <b>108</b> into a “jukebox” once the music collection is stored on the client <b>108</b> during the synchronization process. Similarly, a client <b>108</b> can become a photo album, a book library, a movie theater, an application library, etc., by selecting appropriate channels. This process is represented by FIG. 1M. It is noted that this process is applied to collections of music, but it is also applicable to collections of any types of objects. It is also noted that a given channel may have combinations of different types of objects, such as combinations of music, movies, applications, images, services, etc.
P-0302[0302] In step <b>180</b>A, a provider <b>128</b> is added to list of the channels supported by the server <b>104</b>. The provider <b>128</b> offers a collection of objects.
P-0303[0303] In step <b>180</b>B, a user of client <b>108</b> selects the channel <b>128</b>.
P-0304[0304] In step <b>180</b>C, during the next synchronization operation, the selected channel is synchronized with client <b>108</b>.
3.3.5. Fleet Management
P-0305[0305] The invention supports organizing groups of clients <b>108</b> as “fleets.” For example, all clients <b>108</b> associated with employees of a company, or of a department of a company, may be a fleet. As another example, client <b>108</b> in a family can be a fleet. Generally, any group of clients <b>108</b> can be a fleet.
P-0306[0306] The invention supports performing mass operations on or relating to clients <b>108</b> in a given fleet (or multiple fleets). This process is shown, for example, in FIG. 1N.
P-0307[0307] In step <b>182</b>A, a desired mass operation is defined. For example, one may define a mass operation to be the collection and processing of state information relating to clients <b>108</b> in a fleet. Another operation could involve installing an application on all clients <b>108</b> in a fleet. In embodiments, a third party is permitted to define the mass operation by paying some amount to the server <b>104</b> (specifically, by providing some compensation or consideration to the entity associated with or responsible for the server <b>104</b>).
P-0308[0308] In step <b>182</b>B, the fleet or fleets are identified.
P-0309[0309] Steps <b>182</b>D and <b>182</b>C/<b>182</b>E illustrate processing relating to two types of mass operations.
P-0310[0310] In step <b>182</b>C, cached information in server <b>104</b> relating to the clients <b>108</b> in the identified fleet(s) are collected and processed in a manner defined by the mass operation defined in step <b>182</b>A. Optionally in step <b>182</b>E, perhaps upon payment by a third party of some consideration to the entity associated with or responsible for server <b>104</b>, such information is used in a manner desirable to the third party (such as providing marketing information to the third party).
P-0311[0311] In step <b>182</b>D, during synchronization with the clients <b>108</b> in the fleet(s), the desired mass operation defined in step <b>182</b>A is performed on the client <b>108</b> (such as upgrading software on the clients <b>108</b>).
P-0312[0312] 3.4. Customizing Channels, Content, and Data
3.4.1. Creating Custom Channels
P-0313[0313] As described herein, the invention provides a user or an administrator with the ability to navigate or “surf” to a Web page or site and automatically add that Web page or site to the user's list of channels and/or to the channels provided by server <b>104</b>, respectively. FIG. 1O is a flow diagram describing a process <b>184</b> for automatically adding a Web page or Web site to a user's list of channels from a Web browser. Although flow diagram <b>184</b> is described from a user's perspective, flow diagram <b>184</b> is equally applicable to an administrator for automatically adding channels provided by server <b>104</b>. Process <b>184</b>, as well as other applicable processes described herein, may be performed using a desktop Web browser, such as Internet Explorer, developed by Microsoft and Netscape Communicator, developed by Netscape, or other browsers. Process <b>184</b> begins with step <b>184</b>A.
P-0314[0314] In step <b>184</b>A, the user bookmarks an automatic channel link from the Web page of server <b>104</b>. Bookmarking identifies the URL (Uniform Resource Locator) of the automatic channel Web page. For example, with Internet Explorer 4.0, the user creates a bookmark by right clicking on the automatic channel link and selecting “Add to Favorites.” In another example, using Netscape Communicator 4.0, a bookmark is created by right clicking on the automatic channel link and selecting “Add Bookmark.” Bookmarking is a well known technique to those skilled in the relevant art(s). The process proceeds to step <b>184</b>B.
P-0315[0315] In step <b>184</b>B, the user surfs to a Web site. The user determines that he/she wishes to create a channel. In step <b>184</b>C, the user invokes the automatic channel bookmark. The process then proceeds to step <b>184</b>D, where the user is brought back to the automatic channel Web page. The URL of the preceding Web site is now available to server <b>104</b>. The process proceeds to step <b>184</b>E.
P-0316[0316] In step <b>184</b>E, in an embodiment, a script in the automatic channel Web page queries the browser for the URL of the previous Web site and automatically populates an automatic channel form for the Web site to be added to the user's list of channels. In another embodiment, a header is used to determine the URL of the previous Web site. The automatic channel form contains fields identifying the title and URL of the Web site, the maximum channel size, the link depth, whether images are to be included, whether to follow off-site links, when to refresh, etc. The process proceeds to step <b>184</b>F.
P-0317[0317] In step <b>184</b>F, the user reviews the channel settings that were automatically generated, and, if satisfied, selects the save channel button to save the channel settings. If the user is not satisfied, the user may modify the settings to the user's satisfaction and then select the save button to save the channel settings. The process proceeds to step <b>184</b>G.
P-0318[0318] In step <b>184</b>G, user interface <b>130</b> causes a new channel to be added to the user's list of channels. The new channel is entered in database module <b>126</b> of server <b>104</b>. On the next sync of client <b>106</b>, the new channel will be synced to the client.
P-0319[0319] The invention also allows a provider <b>128</b> to enable a user of device <b>106</b> to have the Web page of provider <b>128</b> loaded on the user's device <b>106</b>. Provider <b>128</b> provides a link or quick channel button on its Web page that, if selected by the user, indicates that the user would want the Web page converted into a channel that is loaded on his/her mobile device. This process does not require that the user be a registered user of server <b>104</b>. FIG. 1S describes a process <b>192</b> for allowing a provider <b>128</b> to enable a user of device <b>106</b> to have the Web page of provider <b>128</b> converted into a channel that is then loaded on device <b>106</b>. As described herein, device <b>106</b> may be a mobile device. Process <b>192</b> begins with step <b>192</b>A.
P-0320[0320] In step <b>192</b>A, a user surfs to the Web page of a provider <b>128</b>. Provider <b>128</b> has a quick channel button that, when selected by the user, links the user to a Web page of server <b>104</b>. The process proceeds to step <b>192</b>B.
P-0321[0321] In step <b>192</b>B, the user selects the quick channel button indicating that the user would like the Web page converted into a channel that is loaded on his/her device <b>106</b>. In step <b>192</b>C, the user is automatically sent to the Web site of server <b>104</b> by selecting the quick channel button. The process proceeds to step <b>192</b>D.
P-0322[0322] In step <b>192</b>D, the server attempts to determine whether the user is a registered user of server <b>104</b>. The process proceeds to step <b>192</b>E.
P-0323[0323] In step <b>192</b>E, server <b>104</b> determines if the user is a registered user of the Web site of server <b>104</b>. If the user is detected to be a registered user with the Web site of server <b>104</b>, the process proceeds to step <b>192</b>F. If the user cannot be detected as a registered user of the Web site of server <b>104</b>, the process proceeds to step <b>192</b>G.
P-0324[0324] In step <b>192</b>G, server <b>104</b> queries the user as to whether or not the user is registered with the server <b>104</b>. If the user's response is yes, the process proceeds to step <b>192</b>I. In step <b>192</b>I, the user logs on to server <b>104</b>. The process then proceeds to step <b>192</b>F.
P-0325[0325] Returning to step <b>192</b>G, if the user response is no, that he/she is not registered as a user of the Web site of server <b>104</b>, the process proceeds to step <b>192</b>H. In step <b>192</b>H, the server allows the user to register by taking the user through the registration process. The process proceeds to step <b>192</b>F.
P-0326[0326] In step <b>192</b>F, server <b>104</b> adds a new channel (that is, the Web site of the content provider having the quick channel button) to the user's list of channels, returns the user to the Web site from which it was linked, and presets state information to enable the Web site to be displayed on the user's device <b>106</b> on the next syncing operation.
3.4.2. Tags
P-0327[0327] As described herein, the invention delivers Web content to clients <b>108</b>. Server <b>104</b> optimizes the Web content display to enable the display to fit within the parameters of the client <b>108</b>. Such parameters may include, but are not limited to, dynamic memory specifications, high memory specifications, protected memory, storage memory, database memory, available storage space, screen size, user profile(s), color depth, applications on the device, buttons on the device, data markers, preferences, fonts, font specifications, sync type, supported data types, supported mime types, and connection/network profile. FIG. 1AA illustrates an optimization of a Web site page for display on a handheld device. As shown in FIG. 1AA, Web page graphic display <b>1</b>A<b>1</b> is from a large screen desktop display and Web page graphic display <b>1</b>A<b>2</b> is an optimized version <b>1</b>A<b>2</b> of Web page graphic display <b>1</b>A<b>1</b> that has been optimized to fit on a handheld device, such as device <b>106</b>.
P-0328[0328] The invention also identifies Web content that is designed for additional modifications. Server <b>104</b> identifies the additional modifications through the use of tags. Any and all bytes processed by server <b>104</b> are potentially examined for compression. Server <b>104</b> detects the tag and executes the necessary logic. FIG. 1P is a flow diagram describing an overview of a process <b>186</b> for handling predefined tags by server <b>104</b> and clients <b>108</b>. The process begins with step <b>186</b>A.
P-0329[0329] In step <b>186</b>A, providers <b>128</b> create Web page content using predefined tags to optimize use on devices <b>106</b>. The process proceeds to step <b>186</b>B.
P-0330[0330] In step <b>186</b>B, server <b>104</b> and clients <b>108</b> process objects within the Web page using tags contained therein.
P-0331[0331]FIG. 1Q is a flow diagram describing process <b>186</b>B in greater detail when a client <b>106</b> accesses a Web page having predefined tags. The process begins with step <b>188</b>A.
P-0332[0332] In step <b>188</b>A, client <b>108</b> accesses a Web page cached in client <b>108</b> or provided to client <b>108</b> by server <b>104</b>. The process proceeds to step <b>188</b>B.
P-0333[0333] In step <b>188</b>B, client <b>108</b> processes the Web page based on the presence or absence of tags. For example, META tags may be used. An example META tag is <META NAME=“Handheld-Friendly” content=“True”>. This META tag (if set to true) enables several HTML features that are normally turned off. For example, most TABLES, HSPACEs, and VSPACES are designed for much larger screens, and are therefore not usually processed by client <b>108</b>. However, TABLE tags are displayed, and HSPACE and VSPACE attributes of IMG (image) tags are processed if the page is marked as “Handheld Friendly.” Another exemplary tag is an <AGIGNORE> or </AGIGNORE> tag used in a wireless channel. The AGIGNORE tag is used to surround content within an HTML page that may be inappropriate or unattractive on Internet-based phones. Content surrounded by this tag is ignored by client <b>108</b>. A tag also exists to control how JavaScript™ is handled. If the tag exists, JavaScript™ behavior is enabled. If the tag does not exist, JavaScript™ behavior is ignored.
P-0334[0334] A page tracking tag may be used that enables client <b>108</b> to report to server <b>104</b> the number of times a user has viewed a Web page (in embodiments, the client <b>108</b> may report other client activity). A page break tag, <PAGEBREAK TITLE=“your title”> is used in a wireless channel. Such a tag breaks up pages on request. When processing pages for devices other than WAP (Wireless Application Protocol) phones, server <b>104</b> ignores the page break tag.
P-0335[0335]FIG. 1R is a flow diagram describing process <b>186</b>B in greater detail when a server <b>104</b> accesses a Web page having predefined tags. The process begins with step <b>190</b>A.
P-0336[0336] In step <b>190</b>A, server <b>104</b> accesses a Web page. The process proceeds to step <b>190</b>B.
P-0337[0337] In step <b>190</b>B, server <b>104</b> processes the Web page based on the presence or absence of tags, as previously described above. In one embodiment, tags exist for server <b>104</b> that indicate whether to follow a link, not to follow a link, or to follow a link a number of layers (N) down.
P-0338[0338] The invention is not limited to the tags described above. One skilled in the relevant art(s) would know that other types of tags may be used without departing from the scope of the present invention, based on the teachings contained herein.
3.4.3. Client Registration Process Embodiment
P-0339[0339] In one embodiment, the invention includes a client registration process that includes GUI elements for the capture and configuration of client details and preferences. The invention is not limited to all of the steps described herein. One skilled in the relevant art(s) would know that other steps may be used without departing from the scope of the present invention, based on the teachings contained herein.
P-0340[0340] In one embodiment, the invention registers a user from the Web site of server <b>104</b>. FIGS. 5A through 5J are flow diagrams describing the registration process. In FIG. 5A, the process begins with step <b>502</b>. In step <b>502</b>, a user arrives at the home page of server <b>104</b>. The user may arrive at the home page from a link or a direct URL. If the user has previously registered, the user is identified via a data marker, and the user's identification is displayed on the screen.
P-0341[0341] In step <b>504</b>, if the user is a current user, the process proceeds to step <b>508</b>. If the user is not a current user, the process proceeds to step <b>506</b>.
P-0342[0342] In step <b>506</b>, a new user is registered. The registration process for a new user is described below with reference to FIGS. <b>5</b>I-<b>5</b>J.
P-0343[0343] In step <b>508</b>, the current user may select between an editing option for editing their account or an add channel(s) option for adding additional channels to their account. If the current user selects the add channel(s) option, the process proceeds to step <b>512</b>.
P-0344[0344] In step <b>512</b>, the user may add new channels using an “Add featured channels” option or the user may add new channels via an explore and add new channels option. If the user adds new channels via the “Add featured channels” option, the process proceeds to step <b>514</b>.
P-0345[0345] In step <b>514</b>, the user may select channels from a featured channels list. The added channel is displayed in a smart little unit (SLU) labeled “user account.” An indicator will appear beside the added channel to indicate that the channel has not been synchronized with client <b>108</b> (step <b>516</b>). Returning to step <b>512</b>, if the user adds new channels via the “explore and add new channels” option, the process proceeds to step <b>518</b>. In step <b>518</b>, the user selects a category from a directory of channel categories. A list of Web sites from the selected category is displayed in step <b>520</b>. In step <b>522</b>, the user may explore any Web site in the list and/or add any of the Web sites to their account. If the user adds a Web site to their account, the process proceeds to step <b>516</b>.
P-0346[0346] Returning back to step <b>508</b>, if the user selects the edit account option, the process proceeds to step <b>510</b>. In step <b>510</b>, the user is linked to a “user channel” page of the Web site of server <b>104</b>. The process then proceeds to step <b>524</b> in FIG. 5B.
P-0347[0347] In step <b>524</b>, the user is presented with a plurality of options. The user may add and remove channels, export channels, import older channels and data files for viewing, alter settings, upgrade the software, or view their sync history. If the user wishes to view their sync history, the process proceeds to step <b>526</b>.
P-0348[0348] In step <b>526</b>, the user selects the sync log option. The user's sync history is accessed and displayed in step <b>528</b>.
P-0349[0349] Returning to step <b>524</b>, if the user wishes to alter their account settings, the process proceeds to step <b>530</b>. In step <b>530</b>, the user selects the settings option. The user is then linked to an account settings page in step <b>532</b>. In step <b>534</b>, the user is queried to change their password and email address, as well as other user information.
P-0350[0350] Returning back to step <b>524</b>, if the user wishes to export channels, the process proceeds to step <b>538</b>. In step <b>538</b>, the user selects the export channels option. URLs from the user's channels are automatically generated for adding the channels to another user account.
P-0351[0351] Returning back to step <b>524</b>, if the user wishes to import older channels and data files, the process proceeds to step <b>585</b>. In step <b>585</b>, the user selects the import option. Old versions of channels and data files are then selected and displayed in step <b>587</b>.
P-0352[0352] Returning back to step <b>524</b>, if the user wishes to modify their existing channel(s), the process proceeds to step <b>581</b>. In step <b>581</b>, the user clicks on a channel to edit. Once the clicks on the channel, the channels parameter settings are displayed. In step <b>583</b>, the user may edit the channel parameter settings. Channel parameter settings may include, but are not limited to, the channel name, root URL, an images option, link depth, an offsite links option, maximum size, and refresh period.
P-0353[0353] Returning back to step <b>524</b>, if the user wishes to add a customized channel, the process proceeds to step <b>540</b> in FIG. 5C. In step <b>540</b>, the user selects a “create custom channel” option. The user is then queried to manually enter information for adding a user favorite Web site to the SLU. The process then proceeds to step <b>516</b> in FIG. 5A, where the added channel is entered into the SLU.
P-0354[0354] Returning back to step <b>524</b> in FIG. 5B, if the user wishes to add a channel automatically, the process proceeds to step <b>544</b> in FIG. 5C. In step <b>544</b>, the user selects the automatic channel option. A channel is then created while surfing the Web when the user clicks a button or chooses a bookmark, as described with reference to FIGS. 1O and 1S. The process then proceeds to step <b>516</b> in FIG. 5A, where the added channel is entered into the SLU.
P-0355[0355] Returning back to step <b>524</b> in FIG. 5B, if the user wishes to remove a channel, the process proceeds to step <b>548</b> in FIG. 5C. In step <b>548</b>, the user removes a channel by checking the channel to be deleted in the SLU and selecting the delete button.
P-0356[0356] Returning back to step <b>524</b> in FIG. 5B, if the user wishes to update the software, the process proceeds to step <b>550</b> in FIG. 5D. In step <b>550</b>, the user selects the software setup option. The user is then linked to a software setup page in step <b>552</b>. The process proceeds to step <b>554</b>.
P-0357[0357] In step <b>554</b>, the user may either download the software or configure a client communication module <b>110</b>. If the user selects the configure client communication module <b>110</b>, the process proceeds to step <b>562</b>.
P-0358[0358] In step <b>562</b>, the user is linked to a configure client communications page. In step <b>564</b>, the user must click the select button to begin the configuration. Therefore, the client communication module <b>110</b> is configured to identify the particular server that will send data to device <b>106</b>.
P-0359[0359] In step <b>566</b>, the software is configured to communicate with the appropriate servers. The process then proceeds to step <b>590</b> in FIG. 5H.
P-0360[0360] In step <b>590</b>, a browser prompts the user to sync the device. In one embodiment, a browser prompts the user to place their device in a cradle and synchronize the device. In step <b>592</b>, the user synchronizes the device. A notification from the browser will be displayed to indicate that the client communication module <b>110</b> process is complete.
P-0361[0361] Returning to step <b>554</b> in FIG. 5D, if the user wishes to download the software, the download software option is selected. The process proceeds to step <b>556</b>.
P-0362[0362] In step <b>556</b>, the software is downloaded. In step <b>558</b>, a notification is displayed to indicate that client <b>108</b> will be installed on device <b>106</b> upon synchronization.
P-0363[0363] In step <b>560</b>, the browser is displayed to prompt the user to sync the device. In one embodiment, the browser prompts the user to place the device in the cradle and press the sync button to sync the device <b>106</b>. The process then proceeds to step <b>568</b> in FIG. 5E.
P-0364[0364] In step <b>568</b>, the browser queries the user as to whether the user wants to use their present account or create a new account. In step <b>570</b>, if the user selects to use their existing account, the process proceeds to step <b>562</b> in FIG. 5D to configure the client communication module <b>110</b>. If, in step <b>570</b>, the user selects to create a new account, the process proceeds to step <b>572</b>. In step <b>572</b>, a new account for the user is created. The process then proceeds to step <b>562</b> in FIG. 5D to configure the client communication module <b>110</b>.
P-0365[0365] The process of configuring the software to communicate with the servers, such as server <b>104</b>, will now be described in greater detail in FIG. 5F. The process begins with step <b>574</b>.
P-0366[0366] In step <b>574</b>, it is determined whether the user is a pre-existing user. If the user is a pre-existing user, the user is queried for the type of device that will use the server in step <b>576</b>. In step <b>578</b>, the user selects the type of device. The process then proceeds to step <b>580</b>.
P-0367[0367] Returning to step <b>574</b>, if the user is not a pre-existing user, the process proceeds to step <b>580</b>.
P-0368[0368] In step <b>580</b>, details of the configuration are displayed. The process proceeds to step <b>582</b>.
P-0369[0369] In step <b>582</b>, the user may replace their existing server profile or add another server profile. Many reasons may exist as to why a single user may want different server profiles. For example, a first server profile may contain only sports channels and a second server profile may be directed to stock channels. The process then proceeds to step <b>584</b> in FIG. 5G.
P-0370[0370] The user has the option of testing their settings. In step <b>584</b>, the user is queried as to whether the user desires to test their settings. If the user selects the test settings option, the process proceeds to step <b>586</b>. In step <b>586</b>, the results of the tests are displayed. The process then proceeds to step <b>588</b>.
P-0371[0371] Returning to step <b>584</b>, if the user does not select the test settings option, the process proceeds to step <b>588</b>.
P-0372[0372] In step <b>588</b>, the process ends.
P-0373[0373]FIG. 5I is a flow diagram illustrating registration process <b>506</b> for a new user. The process begins with step <b>501</b>. In step <b>501</b>, the user selects the sign-up prompt. The user is then linked to the software setup page in step <b>503</b>.
P-0374[0374] In step <b>505</b>, the user selects the type of mobile device the user will be synchronizing.
P-0375[0375] In step <b>507</b>, a security notification pertaining to import/export laws is displayed.
P-0376[0376] In step <b>509</b>, the user selects the download software prompt. The software is downloaded in step <b>511</b>. A notification is displayed indicating that the software has been successfully downloaded in step <b>513</b>.
P-0377[0377] In step <b>515</b>, the browser prompts the user to sync the device. In one embodiment, the browser prompts the user to place their device <b>106</b> into a cradle and initialize the sync process for the device. The process then proceeds to step <b>517</b> in FIG. 5J.
P-0378[0378] In step <b>517</b>, the user is prompted to enter their user account information. The user account information may include, but is not limited to, the user's name, address, email address, and password. The process then proceeds to step <b>519</b>.
P-0379[0379] In step <b>519</b>, the browser is displayed for configuring the client communication module <b>110</b>. The client communication module <b>110</b> application must be informed of the server that will send data to the user's device <b>106</b>. The client communication module <b>110</b> is processed in a similar matter as described in steps <b>562</b>, <b>564</b>, and <b>566</b> of FIG. 5D.
P-0380[0380] In step <b>521</b>, it is determined whether the new user is pretending to be a new user or is a real new user. If the user is pretending to be a new user, the process proceeds to step <b>523</b>, where steps <b>582</b>-<b>588</b> in FIGS. 5F and 5G are performed to allow the user to replace their existing server profile, and to test the settings, if desired. If the user is an actual new user, the process proceeds to step <b>525</b>. In step <b>525</b>, the user is instructed to perform the synchronization process as described in steps <b>590</b>-<b>594</b> in FIG. 5H.
P-0381[0381] In one embodiment, a user may have access to a user account without having to be registered. FIG. 1T is a flow diagram describing a process for enabling an unregistered user to access server <b>104</b>. The process begins with step <b>194</b>A.
P-0382[0382] In step <b>194</b>A an unregistered user invokes client <b>108</b>. Control then proceeds to step <b>194</b>B.
P-0383[0383] In step <b>194</b>B, client <b>108</b> is synchronized with server <b>104</b>. Server <b>104</b> assigns client <b>108</b> an anonymous account in step <b>194</b>C. The process proceeds to step <b>194</b>D.
P-0384[0384] In step <b>194</b>D, server <b>104</b> periodically reminds client <b>108</b> to register. It is not a requirement that the user register. If the user registers, in step <b>194</b>E, the user is promoted to a registered user.
3.4.4. Selecting and Organizing Channels for a Client
P-0385[0385] As described herein, the invention allows a user to select and organize channels for client <b>108</b> of device <b>106</b>. FIG. 5K is a flow diagram describing a method for selecting and organizing channels. A process <b>531</b> begins with step <b>533</b>. In step <b>533</b>, a SLU, also referred to as a basket or cart, displays the current channels in a user's account. The SLU is representative of the user's account. In step <b>535</b>, the SLU enables the user to create, remove, or modify channels.
P-0386[0386]FIG. 5L is a flow diagram describing in greater detail, process <b>535</b> for creating, modifying, and removing channels. The process begins with decision step <b>537</b>. In step <b>537</b>, if the user wishes to create channels to place into their SLU, the process proceeds to step <b>539</b>.
P-0387[0387] In step <b>539</b>, the user may select the create channel button displayed in the SLU. In step <b>541</b>, the user is then linked to the create channel page, where the user may manually enter information to add a favorite site to their account. The user may also create a new channel automatically using the automatic channel methods described above.
P-0388[0388] Returning to decision step <b>537</b>, if the user wishes to remove channels from their SLU, the process proceeds to step <b>543</b>. In step <b>543</b>, the user selects the removal link associated with the channel to be deleted in the SLU. In step <b>545</b>, the channel is deleted.
P-0389[0389] Returning to decision step <b>537</b>, if the user wishes to modify channels that are contained in their SLU, the process proceeds to step <b>547</b>.
P-0390[0390] In step <b>547</b>, the user selects the edit button displayed on their SLU. The edit button links the user to the “user channels” page. In step <b>549</b>, the user may click on a channel to be modified. Parameter data for that channel is then displayed, the parameter data may include, but is not limited to, the channel name, root URL, maximum size, link depth, an offsite links option, and refresh period setting.
P-0391[0391] In step <b>551</b>, the user may modify the parameter(s) for the channel.
P-0392[0392] Device <b>106</b> may contain a channel manager. The channel manager operates in a similar manner as the SLU.
3.4.5. An Account Management Process
P-0393[0393] The invention also allows a user to manage their accounts without having to use the registration process for a current user. A flow diagram describing an account management process is shown in FIG. 5M. With the account management process, a user may choose to alter the settings of their account, update the software, view their sync history, create custom channels manually or automatically, export channels, import channels, modify channels, and delete channels. The process begins with step <b>555</b>. In step <b>555</b>, a user is allowed to manage their account from the “user channels” page of the Web site for server <b>104</b>.
P-0394[0394] If the user wishes to alter their settings, the process proceeds to step <b>557</b>. Account settings, such as the user's password and/or email address, may be altered in a similar manner as described in FIG. 5B. If the user wishes to update the software, the process proceeds to step <b>563</b>. The software may then be updated in a similar manner as described in FIGS. 5D, 5E, and <b>5</b>H.
P-0395[0395] If the user wishes to view their sync history, the process proceeds to step <b>565</b>. The user may view their sync history in a similar manner as described in FIG. 5B.
P-0396[0396] If the user wishes to create customized channels manually, the process proceeds to step <b>567</b>. Customized channels are created in a similar manner as described in FIG. 5C.
P-0397[0397] If the user wishes to create channels automatically while surfing, the process proceeds to step <b>569</b>. Channels are automatically created in a similar manner as described in FIG. 5C.
P-0398[0398] If the user wishes to export channels to other users, the process proceeds to step <b>571</b>. The user's channels are exported to other users in a similar manner as described in FIG. 5B.
P-0399[0399] If the user wishes to import old channels and data files, the process proceeds to step <b>573</b>. Old channels and data files are imported for viewing as described in FIG. 5B.
P-0400[0400] If the user wishes to modify channels, the process proceeds to step <b>575</b>. Current user channels may be modified in a similar manner as described in FIG. 5B.
P-0401[0401] If the user wishes to remove channels from their account, the process proceeds to step <b>577</b>. Channels are removed from the user's account in a similar manner as described in FIG. 5C.
P-0402[0402] 4. Example User Interface Screen Shots
P-0403[0403] Various example screen shots related to the functionality of the invention are considered in this section. It is noted that these screen shots are provided for illustrative purposes only, and are not limiting. Additional screen shots will be apparent to persons skilled in the relevant art(s).
P-0404[0404] These screen shots are generated by the user interfaces of the invention, such as user interface <b>130</b> in the server <b>104</b> and user interface <b>144</b> in the clients <b>108</b>. However, other modules of the invention may also contribute to the user interface function with regard to their respective functionalities and responsibilities. For example, and without limitation, the forms module <b>136</b> may contribute to user interface functionality with regard to forms.
P-0405[0405] Generally, screen shots are generated to enable interaction with users. For example, screen shots may be generated to provide information to users, or to obtain information from users. Other uses of screen shots will be apparent to persons skilled in the relevant art(s).
P-0406[0406] The screen shots in FIGS. <b>6</b>-<b>62</b> depict functionality of embodiments of the invention. The invention is directed to such functionality.
P-0407[0407]FIG. 6 is an example screen shot generated by forms module <b>136</b>. This screen shot shows the status of forms completed by the client <b>108</b>. Via this screen, the client <b>108</b> may obtain additional information on forms, and may manipulate the forms (such as delete selected forms).
P-0408[0408]FIG. 7 is a screen shot of an example completed form displayed on a client <b>108</b>.
P-0409[0409]FIG. 8 is an example screen shot relating to the channel manager displayed on a client <b>108</b> (preferably, but not limited to, a device operating according to Windows CE). In this screen, the client <b>108</b> can remove channels, as well as perform other administrative tasks on channels.
P-0410[0410]FIG. 9 is an example screen shot displayed on a client <b>108</b> relating to browsing options on client <b>108</b>.
P-0411[0411] According to the invention, the client <b>108</b> can cache web pages in the databases of the client <b>108</b> when it is browsing the Internet (while connected to the server <b>104</b>, for example). Then, when not connected to the Internet, the user of the client <b>108</b> may browse and interact with pages stored in the cache. FIG. 10 is an example screen shot that enables the client <b>108</b> to delete pages from the cache.
P-0412[0412]FIG. 11 is an example screen shot of an application menu displayed on the client <b>108</b>. Item <b>1102</b> enables the user of the client <b>108</b> to access the functions of the client <b>108</b>.
P-0413[0413]FIG. 12 is an example screen shot representing a channel subscription page displayed on the client <b>108</b>. When in the off-line mode, a user of the client <b>108</b> can elect to subscribe to channels listed in the channel subscription page. In an embodiment, the selected channels are loaded on the client <b>108</b> during the next synchronization operation.
P-0414[0414]FIG. 13 is an example screen shot of a find function available on the client <b>108</b>.
P-0415[0415] According to an embodiment of an invention, a corporate entity (or enterprise) controls a server <b>104</b>, and its employees have devices <b>106</b> that interact with the server <b>104</b> in the manner discussed herein. The server <b>104</b> may support channels that are specific to the enterprise, or otherwise relevant to the enterprise (as well as supporting any other channels). FIG. 14 is an example screen shot of a home page for an enterprise having a server <b>104</b>. The home page includes personal channels <b>1402</b> and group channels <b>1404</b>. FIG. 20 shows an example screen shot corresponding to an enterprise specific channel that is displayed on the client <b>108</b>.
P-0416[0416]FIG. 15 is an example screen shot of a home page that is displayed on the client <b>108</b> when the client <b>108</b> connects to the server <b>104</b>. The client <b>108</b> may be connected to the server <b>104</b> via a wireless link, for example (although the invention is not limited to this example).
P-0417[0417]FIG. 16 is an example notification message that is displayed on the client <b>108</b> when the client <b>108</b> attempts to access a web page or other object that is not resident on the client <b>108</b> (either because the object was not loaded on the client <b>108</b> during the sync process, or the page is not in the on-device cache).
P-0418[0418]FIG. 17 is an example screen shot displayed on the client <b>108</b> showing preferences for operation on the client <b>108</b> (preferably, but not limited to, devices <b>106</b> using the Palm operating system).
P-0419[0419]FIG. 18 is an example screen shot displayed on the client <b>108</b> wherein a user may enter a URL to retrieve an object corresponding to the URL. When connected to server <b>104</b>, server <b>104</b> will retrieve the object at the URL (although an attempt is first made to locate the object on the client <b>108</b>). When not connected to the server <b>104</b>, the on-device cache is checked for the object. If the object is not found, then in an embodiment the request for the URL is cached and then processed during the next sync (an example notification screen is shown in FIG. 19).
P-0420[0420]FIG. 19 is the confirmation message for action <b>162</b>D of FIG. 1D.
P-0421[0421]FIG. 20 is a sample enterprise application optimized for use on the client in a mobile device.
P-0422[0422]FIGS. 21 and 22 indicate that it is possible to change fonts and font sizes on the client <b>108</b> to enhance display quality.
P-0423[0423]FIG. 23 shows an example screen shot displayed on a client <b>108</b> showing example navigation controls: links <b>2302</b>, back <b>2304</b>, forward <b>2306</b>, home <b>2308</b>, and scroll <b>2310</b>.
P-0424[0424]FIG. 24 shows an alternative menu/tool bar displayed on some clients <b>108</b> (such as clients <b>108</b> operating according to Windows CE environment). FIG. 25 illustrates a home page and FIG. 26 illustrates a find function displayed on some clients <b>108</b> (such as clients <b>108</b> operating according to Windows CE environment). FIG. 27 illustrates an example home page for an enterprise displayed on some clients <b>108</b> (such as clients <b>108</b> operating according to Windows CE environment).
P-0425[0425]FIG. 28 shows an example enterprise server home page.
P-0426[0426]FIG. 29 shows example enterprise user interface naming conventions.
P-0427[0427]FIG. 30 illustrates an example enterprise software architecture.
P-0428[0428]FIG. 31 shows an example screen shot to enter new channels.
P-0429[0429]FIG. 32 shows an example screen shot to set refresh properties. It is noted that the user of the client <b>108</b> is permitted to indicate whether a particular object is refreshed at each sync, only once per day, or according to some other schedule. Accordingly, when a statement is made herein that some channel, object or other entity is loaded on the client <b>108</b> “during the next sync” (or using similar language), it should be understood that loading of the object/entity on the client <b>108</b> may occur during some other future sync operation (not just at the “next sync”).
P-0430[0430]FIG. 33 shows an example screen shot to update user membership in a group.
P-0431[0431]FIG. 34 shows an example edit server profile dialog.
P-0432[0432]FIG. 35 shows an example screen shot to modify channels, and to display a sync history for a client <b>108</b>.
P-0433[0433]FIG. 36 shows an alternative view of the architecture of embodiments of the invention.
P-0434[0434]FIG. 37 shows an example enterprise server status page.
P-0435[0435]FIG. 38 shows an example find user page.
P-0436[0436]FIG. 39 shows an example user detail/account information page.
P-0437[0437]FIG. 40 shows an example screen shot to modify groups.
P-0438[0438]FIG. 41 shows an example screen shot showing group information.
P-0439[0439]FIG. 42 shows an example screen shot to change admin passwords.
P-0440[0440]FIG. 43 shows an example screen shot to establish channel properties when adding a channel to the collection of channels supported by server <b>104</b>.
P-0441[0441]FIG. 44 shows an example screen shot regarding a process for automatically adding channels, as described elsewhere herein.
P-0442[0442]FIG. 45 shows an example screen shot to create a channel to add to the collection of channels supported by server <b>104</b>.
P-0443[0443]FIG. 46 shows an example personal account page. This page could be displayed on the device <b>108</b> or on some computer connected to the server <b>104</b> through any means, such as but not limited to the Internet. This page shows a list <b>4602</b> of the channels to which the user (or client <b>108</b>) is currently subscribed. The page also shows a list <b>4604</b> of featured channels. The channels in the list <b>4604</b> of featured channels can be selected according to any procedure. For example, this list <b>4604</b> may include most frequently selected channels. Also, the list <b>4604</b> may be compiled based on financial considerations. For example, providers <b>128</b> may pay some compensation to have their channels in the featured channels list <b>4604</b>. This compensation may be adjusted based on which slot on the featured channels list <b>4604</b> they have (such as the top spot <b>4606</b>, the second spot <b>4608</b>, etc.).
P-0444[0444]FIG. 47 shows an example channel manager page. This page could be displayed on the device <b>108</b> or on some computer connected to the server <b>104</b> through any means, such as but not limited to the Internet. In this page, the user can delete channels to which he is currently subscribed. The user can also add channels (to his or other users' accounts) via options designated as <b>4702</b>. An icon is displayed if an account needs to be synced with the client <b>108</b>.
P-0445[0445]FIG. 48 shows an account settings page to enable a user/client <b>108</b> to make changes to his account. This page could be displayed on the device <b>108</b> or on some computer connected to the server <b>104</b> through any means, such as but not limited to the Internet.
P-0446[0446] FIGS. <b>49</b>-<b>62</b> relate to registering a new client <b>108</b>. These pages could be displayed any data processing device connected to the server <b>104</b> through any means, such as but not limited to the Internet.
P-0447[0447]FIG. 49 shows an example software set up page. In this page, the user can elect which version of client software to download. FIG. 50 shows a display box that indicates the state of downloading the software selected in FIG. 49. After the software is downloaded, a notifier box shown in FIG. 51 informs the user that the client software will be install on the device <b>106</b> during the next sync between the device <b>106</b> and the computer that contains the software downloaded via FIGS. <b>49</b>-<b>50</b>. FIG. 52 is an instruction screen to help the user load the client software on device <b>106</b>.
P-0448[0448] After the client software is installed on device <b>106</b>, example screen shot in FIG. 53 is displayed. In this page, the user is able to indicate whether he is an existing user and wishes to use his existing account, or whether he wishes to open a new account. If the user indicates that he wants to open a new account, then the registration process follows (described elsewhere herein).
P-0449[0449]FIG. 54 is an example screen shot to enable the client <b>108</b> to configure client software to enable the client <b>108</b>A to communication with the server <b>104</b>. In an enterprise environment, clicking button <b>5402</b> will configure the client <b>108</b>A to speak with the enterprise server <b>104</b> (i.e., a typically private server <b>104</b> controlled by an enterprise). In a non-enterprise environment, clicking button <b>5402</b> will configure the client <b>108</b>A to speak with a non-enterprise server <b>104</b> (i.e., a typically publicly available server <b>104</b>).
P-0450[0450]FIG. 55 is an example page that enables the user to select which device <b>106</b> to configure for communication with the server <b>104</b> (the user may have multiple devices <b>106</b>).
P-0451[0451]FIG. 56 is an example summary page indicating the user's selections from FIGS. 54 and 55.
P-0452[0452]FIG. 57 is an example page that enables the user to indicate whether he wishes to add another server profile, or to overwrite the existing server profile.
P-0453[0453]FIG. 58 is an example page that enables the user to test the connection between client <b>108</b>A and server <b>104</b>. FIG. 59 is an example page displayed if this test is successful. FIG. 60 is a summary page that indicates the state of the status of the set up process.
P-0454[0454]FIG. 61 is an example page that provides information regarding syncing with the server <b>104</b>.
P-0455[0455]FIG. 62 is an example page confirming successful registration with server <b>104</b>.
P-0456[0456] 5. Conclusion
P-0457[0457] While various embodiments of the present invention have been described above, it should be understood that they have been presented by way of example only, and not limitation. It will be understood by those skilled in the art that various changes in form and details may be made therein without departing from the spirit and scope of the invention as defined in the appended claims. Thus, the breadth and scope of the present invention should not be limited by any of the above-described exemplary embodiments, but should be defined only in accordance with the following claims and their equivalents.
Contents4
74 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12 Sheet 13 Sheet 14 Sheet 15 Sheet 16 Sheet 17 Sheet 18 Sheet 19 Sheet 20 Sheet 21 Sheet 22 Sheet 23 Sheet 24 Sheet 25 Sheet 26 Sheet 27 Sheet 28 Sheet 29 Sheet 30 Sheet 31 Sheet 32 Sheet 33 Sheet 34 Sheet 35 Sheet 36 Sheet 37 Sheet 38 Sheet 39 Sheet 40 Sheet 41 Sheet 42 Sheet 43 Sheet 44 Sheet 45 Sheet 46 Sheet 47 Sheet 48 Sheet 49 Sheet 50 Sheet 51 Sheet 52 Sheet 53 Sheet 54 Sheet 55 Sheet 56 Sheet 57 Sheet 58 Sheet 59 Sheet 60 Sheet 61 Sheet 62 Sheet 63 Sheet 64 Sheet 65 Sheet 66 Sheet 67 Sheet 68 Sheet 69 Sheet 70 Sheet 71 Sheet 72 Sheet 73 Sheet 74
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| WO2008084308A3 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US9910685B2 | Cited by | United States of America | Applicant |
| US10592073B2 | Cited by | United States of America | Applicant |
| US9665850B2 | Cited by | United States of America | Applicant |
| US2010313183A1 | Cited by | United States of America | Pre-grant |
| US7684074B2 | Cited by | United States of America | Applicant |
| US2006184968A1 | Cited by | United States of America | Pre-grant |
| US8351897B2 | Cited by | United States of America | Search report |
| US2011021243A1 | Cited by | United States of America | Pre-grant |
| US7606837B2 | Cited by | United States of America | Applicant |
| US8818349B2 | Cited by | United States of America | Applicant |
| US8090844B2 | Cited by | United States of America | Applicant |
| US9619116B2 | Cited by | United States of America | Applicant |
| US11915016B2 | Cited by | United States of America | Applicant |
| US9854064B2 | Cited by | United States of America | Applicant |
| US2012046069A1 | Cited by | United States of America | Pre-grant |
| US2006077440A1 | Cited by | United States of America | Pre-grant |
| US10997562B2 | Cited by | United States of America | Applicant |
| US2013215126A1 | Cited by | United States of America | Pre-grant |
| US2004181555A1 | Cited by | United States of America | Pre-grant |
| US10572574B2 | Cited by | United States of America | Applicant |
| US2007226730A1 | Cited by | United States of America | Pre-grant |
| US7721192B2 | Cited by | United States of America | Applicant |
| US9319444B2 | Cited by | United States of America | Applicant |
| US7774504B2 | Cited by | United States of America | Applicant |
| US9405527B2 | Cited by | United States of America | Applicant |
| US10235155B2 | Cited by | United States of America | Applicant |
| WO2004042507A3 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US10482429B2 | Cited by | United States of America | Applicant |
| US2005198564A1 | Cited by | United States of America | Pre-grant |
| EP1851954A2 | Cited by | European Patent Office (EPO) | Search report |
| EP1367800A2 | Cited by | European Patent Office (EPO) | Search report |
| EP1367800A3 | Cited by | European Patent Office (EPO) | Search report |
| US8543697B2 | Cited by | United States of America | Search report |
| WO2004042507A2 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US7318073B2 | Cited by | United States of America | Applicant |
| US8818338B2 | Cited by | United States of America | Search report |
| US2006080731A1 | Cited by | United States of America | Pre-grant |
| US9727989B2 | Cited by | United States of America | Applicant |
| US2007077405A1 | Cited by | United States of America | Pre-grant |
| US10635266B2 | Cited by | United States of America | Applicant |
| US2010321393A1 | Cited by | United States of America | Pre-grant |
| US9154567B2 | Cited by | United States of America | Search report |
| US10909429B2 | Cited by | United States of America | Applicant |
| US2007118606A1 | Cited by | United States of America | Pre-grant |
| US7633644B2 | Cited by | United States of America | Applicant |
| US9858094B2 | Cited by | United States of America | Applicant |
| US2007088837A1 | Cited by | United States of America | Pre-grant |
| US2012278187A1 | Cited by | United States of America | Pre-grant |
| US2007067743A1 | Cited by | United States of America | Pre-grant |
| US10115215B2 | Cited by | United States of America | Applicant |
| WO2011045812A2 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US2005005235A1 | Cited by | United States of America | Pre-grant |
| US10437431B2 | Cited by | United States of America | Applicant |
| US2006077426A1 | Cited by | United States of America | Pre-grant |
| US2006080397A1 | Cited by | United States of America | Pre-grant |
| US7287249B2 | Cited by | United States of America | Search report |
| US2007198715A1 | Cited by | United States of America | Pre-grant |
| US2008155112A1 | Cited by | United States of America | Pre-grant |
| WO2005043408A1 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US2008233977A1 | Cited by | United States of America | Pre-grant |
| US2006077446A1 | Cited by | United States of America | Pre-grant |
| US2007198634A1 | Cited by | United States of America | Pre-grant |
| US2012072856A1 | Cited by | United States of America | Pre-grant |
| WO2006008720A3 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US7421652B2 | Cited by | United States of America | Applicant |
| WO2006044046A3 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| CN107925696A | Cited by | China | Search report |
| US2006279474A1 | Cited by | United States of America | Pre-grant |
| US2006077436A1 | Cited by | United States of America | Pre-grant |
| US9875009B2 | Cited by | United States of America | Applicant |
| US10642927B2 | Cited by | United States of America | Applicant |
| US2006077413A1 | Cited by | United States of America | Pre-grant |
| WO2005043408A1 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US9317777B2 | Cited by | United States of America | Applicant |
| US9037685B2 | Cited by | United States of America | Search report |
| US8195763B2 | Cited by | United States of America | Applicant |
| US8621048B2 | Cited by | United States of America | Search report |
| US2005021361A1 | Cited by | United States of America | Pre-grant |
| EP1959365A1 | Cited by | European Patent Office (EPO) | Search report |
| US2006073785A1 | Cited by | United States of America | Pre-grant |
| US2015088993A1 | Cited by | United States of America | Pre-grant |
| US7930215B2 | Cited by | United States of America | Applicant |
| US10482637B2 | Cited by | United States of America | Applicant |
| US2008114830A1 | Cited by | United States of America | Pre-grant |
| US2006077414A1 | Cited by | United States of America | Pre-grant |
| US7895530B2 | Cited by | United States of America | Search report |
| US10521081B2 | Cited by | United States of America | Applicant |
| US9983892B2 | Cited by | United States of America | Applicant |
| US9864489B2 | Cited by | United States of America | Applicant |
| US9626337B2 | Cited by | United States of America | Applicant |
| US2002035617A1 | Cited by | United States of America | Pre-grant |
| US9525747B2 | Cited by | United States of America | Search report |
| US8595691B2 | Cited by | United States of America | Search report |
| US2006103588A1 | Cited by | United States of America | Pre-grant |
| KR20180030724A | Cited by | Republic of Korea | Search report |
| US8761815B2 | Cited by | United States of America | Search report |
| US11074087B2 | Cited by | United States of America | Applicant |
| US2008155123A1 | Cited by | United States of America | Pre-grant |
| US2010269154A1 | Cited by | United States of America | Pre-grant |
31 members in 4 offices
Priority claims18
| Document | Office | Kind | Date |
|---|---|---|---|
| 39339099 | United States of America | A | |
| 39339099 | United States of America | A | |
| 17380799 | United States of America | P | |
| 17380799 | United States of America | P | |
| 18996900 | United States of America | P | |
| 18996900 | United States of America | P | |
| 56095700 | United States of America | A | |
| 56095700 | United States of America | A | |
| 89248201 | United States of America | A | |
| 09393390 | – | – | – |
| 09560957 | – | – | – |
| 60173807 | – | – | – |
| 60189969 | – | – | – |
| US19990173807P | – | – | – |
| US19990393390 | – | – | – |
| US20000189969P | – | – | – |
| US20000560957 | – | – | – |
| US20010892482 | – | – | – |
Members31
| Document | Office | Kind | |
|---|---|---|---|
| WO0118688A2 | World Intellectual Property Organization (WIPO) | A2 | |
| AU4674400A | Australia | A | |
| US2001047394A1 | United States of America | A1 | |
| US2001051979A1 | United States of America | A1 | |
| US6341316B1 | United States of America | B1 | |
| US2002046296A1 | United States of America | A1 | |
| US2002052781A1 | United States of America | A1 | |
| US2002052916A1 | United States of America | A1 | |
| GB0207917D0 | United Kingdom | D0 | |
| US6421717B1 | United States of America | B1 | |
| GB2371902A | United Kingdom | A | |
| US6553412B1 | United States of America | B1 | |
| WO0118688A3 | World Intellectual Property Organization (WIPO) | A3 | |
| US6779042B1 | United States of America | B1 | |
| GB2371902B | United Kingdom | B | |
| US6839744B1 | United States of America | B1 | |
| US7000032B2 | United States of America | B2 | |
| US2006036493A1 | United States of America | A1 | |
| US2006036494A1 | United States of America | A1 | |
| US2006036495A1 | United States of America | A1 | |
| US2006136571A1 | United States of America | A1 | |
| US7263547B2 | United States of America | B2 | |
| US2008120184A1 | United States of America | A1 | |
| US2008134031A1 | United States of America | A1 | |
| US7392308B2 | United States of America | B2 | |
| US2008215672A1 | United States of America | A1 | |
| US7840647B2 | United States of America | B2 | |
| US7987420B1 | United States of America | B1 | |
| US8595308B1 | United States of America | B1 | |
| US2014237065A1 | United States of America | A1 | |
| US9456048B2 | United States of America | B2 |
71 transactions on the USPTO file
Allowed after 3 non-final rejections, 2 final rejections and 2 RCEs.
- Non-final rejections
- 3
- Final rejections
- 2
- RCEs
- 2
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Payment of Maintenance Fee, 12th Year, Large EntityM1553 | M1553 | |
| Correspondence Address ChangeC.ADB | C.ADB | |
| Recordation of Patent Grant MailedPGM/ | PGM/ | |
| Patent Issue Date Used in PTA CalculationAllowedPTAC | PTAC | |
| Issue Notification MailedAllowedWPIR | WPIR | |
| Dispatch to FDCD1935 | D1935 | |
| Application Is Considered Ready for IssuePILS | PILS | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Date Forwarded to Examiner | – | |
| Date Forwarded to Examiner | – | |
| Disposal for a RCE / CPA / R129AbandonedABN9 | ABN9 | |
| Request for Continued Examination (RCE)RCEX | RCEX | |
| Request for Extension of Time - GrantedXT/G | XT/G | |
| Workflow - Request for RCE - BeginBRCE | BRCE | |
| Mail Advisory Action (PTOL - 303)MCTAV | MCTAV | |
| Advisory Action (PTOL-303)CTAV | CTAV | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Final ActionA.NE | A.NE | |
| Request for Extension of Time - GrantedXT/G | XT/G | |
| Mail Final Rejection (PTOL - 326)Final rejectionMCTFR | MCTFR | |
| Final RejectionFinal rejectionCTFR | CTFR | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Non-Final ActionA... | A... | |
| Request for Extension of Time - GrantedXT/G | XT/G | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Date Forwarded to Examiner | – | |
| Date Forwarded to Examiner | – | |
| Disposal for a RCE / CPA / R129AbandonedABN9 | ABN9 | |
| Request for Continued Examination (RCE)RCEX | RCEX | |
| Request for Extension of Time - GrantedXT/G | XT/G | |
| Workflow - Request for RCE - BeginBRCE | BRCE | |
| Mail Final Rejection (PTOL - 326)Final rejectionMCTFR | MCTFR | |
| Final RejectionFinal rejectionCTFR | CTFR | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Non-Final ActionA... | A... | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Non-Final ActionA... | A... | |
| Workflow incoming amendment IFWWAMD | WAMD | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Information Disclosure Statement (IDS) Filed | – | |
| Information Disclosure Statement (IDS) Filed | – | |
| IFW TSS Processing by Tech Center CompleteTSSCOMP | TSSCOMP | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Information Disclosure Statement (IDS) Filed | – | |
| Information Disclosure Statement (IDS) Filed | – | |
| Reference capture on IDSRCAP | RCAP | |
| Information Disclosure Statement (IDS) Filed | – | |
| Information Disclosure Statement (IDS) Filed | – | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Reference capture on IDSRCAP | RCAP | |
| Information Disclosure Statement (IDS) Filed | – | |
| Information Disclosure Statement (IDS) Filed | – | |
| Application Dispatched from OIPEOIPE | OIPE | |
| Application Is Now CompleteCOMP | COMP | |
| Reference capture on IDSRCAP | RCAP | |
| Information Disclosure Statement (IDS) Filed | – | |
| Information Disclosure Statement (IDS) Filed | – | |
| Correspondence Address ChangeC.AD | C.AD | |
| IFW Scan & PACR Auto Security Review | – | |
| Claims PTOCPTO | CPTO | |
| Preliminary AmendmentA.PE | A.PE | |
| Initial Exam Team nnIEXX | IEXX |
6 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Maintenance fee paymentMAFP | MAFP | |
| Fee paymentFPAY | FPAY | |
| Fee paymentFPAY | FPAY | |
| Information on status: patent grantGrantedPATENTED CASESTCF | STCF | |
| AssignmentAS | AS | |
| AssignmentAS | AS |
Numbers
- Publication, DOCDB
- 2002052916
- Publication, EPODOC
- US2002052916
- Application
- 9892482
- Application, DOCDB
- 89248201
- Application, EPODOC
- US20010892482
Titles
- English
- System, Method, and computer program product for customizing channels, content, and data for mobile devices
Patent term adjustment
- A delay
- +797 daysthe office missed an examination deadline
- Applicant delay
- −124 days
- Net adjustment
- 673 days
Classification
- CPC, 19
- H04W4/00
- G06F17/30902
- G06F16/9574
- G06F17/30905
- G06F16/9577
- H04L29/06
- H04L67/02
- H04L67/04
- H04L67/06
- H04L67/14
- H04L67/22
- H04L67/2852
- H04L67/289
- H04L67/30
- H04L67/306
- H04L67/34
- H04L69/329
- H04W72/00
- H04W72/02
- IPC, 3
- G06F17 30
- H04L29 06
- H04L29 08
- USPC, 7
- 709203000
- 707E17120
- 707E17121
- 709213000
- 715206000
- 715234000
- 715864000