Home
Patent Search
IMT Blog
REGISTER
|
SIGN IN
United States Patent
6341316
Kloba , ; et al.
January 22, 2002
Title
System, method, and computer program product for synchronizing content between a server and a client based on state information
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.
Inventors:
Kloba; David D.
(Mountain View,
CA
)
, Gray; Michael R.
(Foster City,
CA
)
, Moore; David M.
(San Francisco,
CA
)
, Whittaker; Thomas E.
(Belmont,
CA
)
, Williams; David J.
(San Francisco,
CA
)
, Weinstein; Rafael Z.
(San Francisco,
CA
)
, Freeman; Joshua E.
(San Jose,
CA
)
, Upson; Linus M.
(Redwood City,
CA
)
Assignee:
AvantGo, Inc.
(San Mateo,
CA
)
Appl. No.:
560965
Filed:
April 28, 2000
Current U.S. Class:
709/248
709/250
Field of Search:
709/248,243,250,228
U.S. Patent Documents
5349678
September 1994
Morris et al.
5377326
December 1994
Murata et al.
5392390
February 1995
Crozier
5410543
April 1995
Seitz et al.
5426594
June 1995
Wright et al.
5666530
September 1997
Clark et al.
5666553
September 1997
Crozier
5673322
September 1997
Pepe et al.
5684828
November 1997
Bolan et al.
5684990
November 1997
Boothby
5694546
December 1997
Reisman
5727129
March 1998
Barrett et al.
5727159
March 1998
Kikinis
5727202
March 1998
Kucala
5732074
March 1998
Spaur et al.
5740364
April 1998
Drerup
5754774
May 1998
Bittinger et al.
5768511
June 1998
Galvin et al.
5790977
August 1998
Ezekiel
5794259
August 1998
Kikinis
5799063
August 1998
Krane
5802292
September 1998
Mogul
5805807
September 1998
Hanson et al.
5809242
September 1998
Shaw et al.
5813007
September 1998
Nielsen
5832489
November 1998
Kucala
5850517
December 1998
Verkler et al.
5862339
January 1999
Bonnaure et al.
5862346
January 1999
Kley et al.
5864676
January 1999
Beer et al.
5873100
February 1999
Adams et al.
5877766
March 1999
Bates et al.
5881234
March 1999
Schwob
5884323
March 1999
Hawkins et al.
5890158
March 1999
House et al.
5895471
April 1999
King et al.
5896502
April 1999
Shieh et al.
5906657
May 1999
Tognazzini
5918013
June 1999
Mighdoll et al.
5918237
June 1999
Montalbano
5922045
July 1999
Hanson
5928329
July 1999
Clark et al.
5937163
August 1999
Lee et al.
5943676
August 1999
Boothby
5946697
August 1999
Shen
5948066
September 1999
Whalen et al.
5953392
September 1999
Rhie et al.
5954795
September 1999
Tomita et al.
5961601
October 1999
Iyengar
5961602
October 1999
Thompson et al.
5974238
October 1999
Chase, Jr.
5978828
November 1999
Greer et al.
5978833
November 1999
Pashley et al.
5978842
November 1999
Noble et al.
5987454
November 1999
Hobbs
5987476
November 1999
Imai et al.
5987499
November 1999
Morris et al.
5991800
November 1999
Burke et al.
6000000
December 1999
Hawkins et al.
6006231
December 1999
Popa
6006274
December 1999
Hawkins et al.
6009462
December 1999
Birrell et al.
6012083
January 2000
Savitzky et al.
6021433
February 2000
Payne et al.
6023698
February 2000
Lavey, Jr. et al.
6023708
February 2000
Mendez et al.
6026474
February 2000
Carter et al.
6029175
February 2000
Chow et al.
6029195
February 2000
Herz
6032162
February 2000
Burke
6035324
March 2000
Chang et al.
6041360
March 2000
Himmel et al.
6049821
April 2000
Theriault et al.
6052735
April 2000
Ulrich et al.
6058416
May 2000
Mukherjee et al.
6061718
May 2000
Nelson
6065051
May 2000
Steele et al.
6065059
May 2000
Shieh et al.
6070184
May 2000
Blount et al.
6076109
June 2000
Kikinis
6085192
July 2000
Mendez et al.
6119167
September 2000
Boyle et al.
6131096
October 2000
Ng et al.
6148330
November 2000
Puri et al.
6161146
December 2000
Kley et al.
6167255
December 2000
Kennedy, III et al.
6195692
February 2001
Hsu
6209027
March 2001
Gibson
6209111
March 2001
Kadyk et al.
6226650
May 2001
Mahajan et al.
Foreign Patent Documents
0 848 339
Jun., 1998
EP
0 876 034
Nov., 1998
EP
0 944 009
Sep., 1999
EP
WO 00/14625
Mar., 2000
WO
WO 94/12938
Jun., 1994
WO
WO 98/34203
Aug., 1998
WO
WO 98/34422
Aug., 1998
WO
WO 99/22322
May., 1999
WO
Other References
"Method for bookmarking web pages of temporary interest," Research Disclosure, RD429108, Disclosed by Ericsson, Inc., Jan. 2000, Kenneth Mason Publications, Ltd., http://www.researchdisclosure.com. .
"Appointments off by one hour after Synchronization," http://support.microsoft.com/support/kb/articles/q195/5/79.asp, last visited Jul. 25, 2000, Microsoft.Com. .
"Russian Nino Computer," http://webideas.com/russian/systems/nino301.html, last visited Jul. 25, 2000, Web Ideas Int'l Co. .
"512KB Organizer w/Synchronization," http://www.codemicro.com/fs/p11109.html, last visited Jul. 25, 2000, codemicro.com. .
"Synchronization between your handheld PC and your desktop PC," http://www.microsoft.com/MOBILE/hpc/features/synch.asp, last visited Jul. 25, 2000, Microsoft, Inc. .
"Puma adds security to wireless syncing software," internet.com Corp, 1999, http://devices.internet.com/news/q29908/990802puma/990802puma.html, last visited Jul. 25, 2000, internet.com. .
"iMobile Data Synchronization Replicates Mobile Databases," http://www.synchrologic.com/about/about_imobile_data_synchronization.html, 2 pages, last visited Jul. 25, 2000, Synchrologic, Inc. .
"WeSync.com Previews Wireless Synchronization Solution for Handheld Computers: Collaborative Service for Handheld Users Moves Into Public Beta Today; Wireless Refress (TM) Lets Users Perform Narrow Bandwidth Wireless Syncs," http://www.palmsizepc.com/oct99-20-1.html, last visited Jul. 25, 2000, 3 pages, WeSync.com, Inc. .
"XTNDConnect Server White Papers," http://www.extendsys.com/prodinfo/white/serversync/, last visited Jul. 25, 2000, Extended Systems, Inc. .
"Introduction to Wireless Internet & Mobile Computing Market," Wireless Internet & Mobile Computing, 1999, http://www.wirelessinternet.com/introtol.htm, last visited Jul. 24, 2000. .
"Databites," http://www.databites.com/company_info.htm, Databites Corporation, 2 pages, last visited Jul. 26, 2000. .
Tools for the TEKS: Integrating Technology in the Classroom: "Offline Web Browsing=No More Excuses!," Wesley A. Fryer, 1998, last visited Jun. 22, 2000, http://www.wtvi.com/teks/article4.html, 9 pages, WesTech Vision, Inc. .
Story, Derrick "Palm Browsing," Miller-Freeman, Inc., Jul. 30, 1999, last visited Jun. 22, 2000, http://www.webreview.com/pub/1999/07/30/feature/index.html, Miller Freeman, Inc., 2 pages. .
Shultz, Greg "Take Advantage of Offline Browsing Tools: Learn to browse Web site content without being connected to the Internet," ZD Inc., last visited Jun. 22, 2000, http://www.zdnet.com/zdhelp/stories/main/0,5594,2395480,00.html, 2 pages. .
Dalrymple, Jim "Palm-like Internet appliance on the way from 3Com," Mar. 27, 2000, Mac Publishing LLC, last visited Jun. 20, 2000, http://www.maccentral.com/news/0003/27.palm.shtml, 3 pages. .
"Offline," Microsoft Corporation, Mar. 18, 1999, http://www.microsoft.com/windows/Ie/Features/offline.asp, last visited Jun. 22, 2000. .
"InContext FlashSite," internet.com Corp., Jan. 12, 1999, http://ipw.internet.com/clients_servers/offline_browsers/916161991.html, last visited Jun. 22, 2000. .
"Avant Go Enterprise," Avant Go, Inc., 2000, http://avantgo.com/enterprise/products/index.html, 2 pages, last visited Jun. 21, 2000. .
"PalmPilot Software Programming and Development," Pen Computer Solutions, Inc., Jun. 16, 2000, http://www.pencomputersolutions.com/, 4 pages, last visited Jun. 21, 2000. .
"Pocket Browser 1.52 for Palm-size PC," CEShopper.com, 200, http://www.ceshopper.com/ceshopper/pocketbrowser.html, last visited Jun. 22, 2000. .
"Answers & Tips: Browse the web on any palm," ZDTV LLC, 1999, http://web.zdnet.com/zdtv/screensavers/answerstips/story/ 0,3656,2408515,00.html, 2 pages, last visited Jun. 22, 2000. .
"Palm Announces Mobile Internet Kit, Linking Palm Handhelds With Mobile Phones for Wireless Web Connectivity: New Web Clipping Applications to Provide Out-of-the-box Access to Leading Internet Content," Yahoo!, Jun. 27, 2000, last visited on Jun. 29, 2000, http://biz.yahoo.com/bw/000627/ny_palm_2.html, 3 pages. .
"GoAmerica Licenses Oracle Platform," internet.com Corp, Jun. 27, 2000, last visited on Jun. 29, 2000, http://www.allnetdevices.com/wireless/news/2000/06/27/goamerica_licenses. html, 2 pages. .
"ProxiWeb," America Online, Inc., Apr. 25, 2000, last visited on Jun. 29, 2000, http://aolcom.cnet.com/downloads/0-10126-100-1757359.html?tag=st.d1. 10126_106_1.1st.td, 2 pages. .
Wilcox, Joe "IBM aims to put computers on the wrist," CNET Networks, Inc., Jun. 27, 2000, last visited on Jul. 5, 2000, http://cnet.com/news/0-1006-200-2160685.html, 3 pages. .
Portable Internet, Portable Internet, Inc., http://www.portableinternet.com/, last visited on Jul. 5, 2000. .
BravuraNet, BravuraNet, 2000, http://www.bravuranet.com, last visited Jul. 13, 2000. .
"HotLinks: Store Bookmarks Online," Dec. 3, 1999, ZD Inc., http://www.zdnet.com/pcmag/stories/firstlooks/0,6763,2403245,00.html, 2 pages, last visited Jul. 13, 2000. .
"MyBookmars," MyBookmars.com, LLC, last visited Jul. 13, 2000, http://www.mybookmarks.com. .
AvantGo Server Administration Guide, Version 2.0 for Windows NT, AvantGo Inc., Sep. 1988. .
Press Release, "AvantGo Presents Mobile Computing Software at Herring On the Enterprise: Organization such as Grenley-Stewart Resources and Rosenbluth International Already Reaping Benefits," Apr. 6, 1998, AvantGo, Inc. .
Press Release, "AvantGo to Demonstrate New Enterprise Applications for the 3Com.RTM. PalmPilot.TM. Connected Organizer at Seybold '98; Applications Enable Networked Digital Workflows for Publishing Environments," 2 pages, Mar. 17, 1998, AvantGo, Inc. .
Press Release, "AvantGo Software Extends Enterprise Applications to Handheld Devices: New Company Provides Instant Access to Essential Information for Mobile Professionals," 3 pages, Feb. 17, 1998, AvantGo, Inc. .
Press Release, "Visto and AvantGo Team to Extend Web-Based Personal Content to Palm Pilot and Windows CE Devices: Visto Briefcase Will Leverage AvantGo 2.0 for Mobile Workforce," 2 pages, Sep. 21, 1998, AvantGo, Inc. .
Press Release, "UpShot Partners with AvantGo to Display Latest Sales Data on Handhelds: Field Sales Representative Will Have the Power of Sales Automation at Their Fingertips," 2 pages, Sep. 21,1998, AvantGo, Inc. .
Press Release, "AvantGo Announces Business Partner Program: VARs,Systems Integrators, Distributors and Consultants to Deliver Enterprise Applications for Handheld Computers," 2 pages, Sep. 21, 1998, AvantGo, Inc. .
Press Release, "Industry Bigshots and Upstarts Rally Around AvantGo 2.0: Microsoft, IBM, Oracle, Symbol Technologies and Palm Computing Support AvantGo," 3 pages, Sep. 21, 1998, AvantGo, Inc. .
Press Release, "Novatel Wireless and AvantGo Team Up to Provide Corporate Information to Wirelessly-Enabled Handhelds: Minstrel Modem and AvantGo 2.0 Extend Enterprise Connectivity," 2 pages, Sep. 21, 1998, AvantGo, Inc. .
Press Release, "AvantGo Releases AvantGo 2.0- The Definitive Enterprise Solution for Managing Mobile Information: New Product Offering Provides Centralized Administration, Universal Remote Access and Mobile Transactions Between Corporate Databases and Handhelds," 3 pages, Sep. 21, 1998, AvantGo, Inc. .
Press Release, "Casio Announces Support for AvantGo: AvantGo to Deliver Enterprise Applications for Casio's Windows CE-Compatible Devices," 2 pages, Sep. 21, 1998, AvantGo, Inc. .
AvantGo, "Readme," 2 pages, Jan. 20, 1998, AvantGo, Inc. .
Press Release, AvantGo Integrated Into Pocket Internet Explorer for Pocket PCs: AvantGo Available on New Pocket PC Devices from Casio, Compaq, Hp and Symbol Technologies, 3 pages, Apr. 19, 2000, AvantGo, Inc. .
Press Release, "AvantGo Completes $31 Million Mezzanine Financing: Goldman Sachs, American Express, Ford Motor Company, McKessonHBOC and Research In Motion (RIM) Accelerate Growth of Business-to-Business Mobile Internet Company," 2 pages, Apr. 17, 2000, AvantGo, Inc. .
Press Release, "AvantGo Empowers BG's Leading Lights with Mobile Intranet and Internet Access: Mobile Software gives International Energy Company an Advantage in Customer care and Business Management," 3 pages, Apr. 4, 2000, AvantGo, Inc. .
Press Release, "AvantGo Embraces Macintosh Community: AvantGo Delivers Free Mobile Internet Service to Macintosh Users," 2 pages, Mar. 27, 2000, AvantGo, Inc. .
Press Release, "AvantGo Joins GPRS Application Alliance: AvantGo Teams up with Ericsson to support Wireless Standards for Mobile Devices," 2 pages, Feb. 28, 2000, AvantGo, Inc. .
Press Release, "AvantGo Integrated in Microsoft's Internet Explorer for the Pocket PC: Out of the Box, Mobile Users Gain Access to the Mobile Internet via Pocket Internet Explorer and AvantGo," 2 pages, Feb. 24, 2000, AvantGo, Inc. .
Press Release, "AvantGo Joins Motorola web w/o Wires Alliance Program: AvantGo Now Easily Accessible from Motorola Web Phones," 2 pages, Feb. 24, 2000, AvantGo, Inc. .
Press Release, "AvantGo Optimizes User Experience On Palm IIIc.TM. Handheld Computers: With enhanced image support from AvantGo, Users Can View Web-Based Photos and Graphics in Color On New Devices," 2 pages, Feb. 24, 2000, AvantGo, Inc. .
Press Release, "AvantGo.Com Bolsters Business Channels: New relationships with Business Week, Infonautics, The Economist, Fidelity Investments and The Financial News among the more than 80 Optimized AvantGo.com Business Channels for Mobile Device Users," 2 pages, Feb. 16, 2000, AvantGo, Inc. .
Press Release, "Leading Labels and Music Sites Go Mobile With AvantGo.Com: Columbia Records, Universal's Interscope Geffen A&M, Ticketmaster Online-CitySearch's LiveDaily.com and Milor Entertainment Group join Amazon.com and mySimon.com to bring the Music Industry to Mobile Devices," 2 pages, Feb. 14, 2000, AvantGo, Inc. .
Press Release, "AvantGo Names Head of Dell Online, Richard Owen, CEO: Mobile Computing Leader Bolsters Management Team With Key New Hires," Jan. 25, 2000, AvantGo, Inc. .
Press Release, "AvantGo Expands Relationship with InfoSpace.com: AvantGo to offer InfoSpace.com's Mobile Private Label Portals to Users of Palm Computing Platform, Windows CE and Wireless PDAs," 2 pages, Jan. 18, 2000, AvantGo, Inc. .
Press Release, "AvantGo.Com Availabe to Macintosh Users," Jan. 5, 2000, AvantGo, Inc. .
Press Release, "Verian Technologies and AvantGo Team Up to Resell Mobile Procurement Application: Bundled Software Package from Verian Provides Improved Inventory Management for Mobile Professionals," 2 pages, Jan. 3, 2000, AvantGo, Inc. .
Press Release, "AvantGo Drives Healthcare Market Adoption of Handheld Devices: CHW, Mass General, McKessonHBOC, US Surgical, Norton Healthcare, Handheldmed.com, FitForAll.com and Asimba.com Select AvantGo to Deliver Critical Health Information to Mobile Devices," 3 pages, Dec. 14, 1999, AvantGo, Inc. .
Press Release, "AvantGo Announces New AvantGo Enterprise Publisher: Mobile Leader Expands Enterprise Offerings to Extend Corporate Web Content to Mobile Devices," 2 pages, Dec. 6, 1999, AvantGo, Inc. .
Press Release, "Go Network Delivers Mobile Solutions with AvantGo: Partnership to Give Wireless User Access to GO Network Anytime, Anywhere," 2 pages, Nov. 11, 1999, AvantGo, Inc. .
Press Release, "AvantGo Delivers Award-Winning Mobile Computing Software and Popular Consumer Internet Service to Europe: Company Expands into Europe; Phillip Hibberd to Head European Operations," 2 pages, Nov. 1, 1999, AvantGo, Inc. .
Press Release, "AvantGo Mobile Unity Brings the Web to Wireless Devices: Mobile Computing Leader Brings the Web to Internet-enabled Phones and Wireless Handheld Devices; Integrates with Wireless Solutions," 4 pages, Oct. 25, 1999, AvantGo, Inc. .
Press Release, Leading Mobile Computing Companies Form Industry Association: Puma, Aether Systems, Attachmate, AvantGo, Certicom, Globalware, Epocrates and the Windward Group Establish Mobile Application Link Forum to Advance and Promote Open Source Communications Protocol for Networked Applications, 3 pages, Oct. 18, 1999, AvantGo, Inc. .
Press Release, "AvantGo Ships with New Special Edition Palm Vx.TM. Organizer," 2 pages, Oct. 13, 1999, AvantGo, Inc. .
Press Release, "FT.Com and AvantGo Put the Latest International Business News in the Palm of Your Hand," 2 pages, Oct. 4, 1999, AvantGo, Inc. .
Press Release, "Amazon.com First to Join AvantGo.com E-Commerce Initiative," 2 pages, Oct. 4, 19999, AvantGo, Inc. .
Press Release, "AvantGo Teams With HP: AvantGo.com Now Available on the New HP Jornada 430se Palm-size PC," 2 pages, Sep. 27, 1999, AvantGo, Inc. .
Press Release, "Sony Online Entertainment and AvantGo Announce Jeopardy! 2001 Online to be Delivered to Users of Handheld Devices: The Station @sony.com ventures beyond the Internet to extend distribution," 2 pages, Sep. 20, 1999, AvantGo, Inc. .
Press Release, "AvantGo.com Scales to Showcase the Power of AvantGo Enterprise 3: Free Interactive Service Delivers More Than 15 Million Web Pages Daily to Hundreds of Thousands of Users," 2 pages, Sep. 7, 1999, AvantGo, Inc. .
Press Release, "AvantGo Enterprise 3 Breaks Barrier Between Enterprise and Handhelds: Attachmate Corporation and AvantGo enter Into Business Alliance," 3 pages, Sep. 7, 1999, AvantGo, Inc. .
Press Release, "AvantGo Signs CFO Thomas Hunter: Former IBM and First Data Corp. Executive Joins Leading Handheld Software Provider," Aug. 23, 1999, AvantGo, Inc. .
Press Release, Microsoft and AvantGo Deliver Personalized Content from Slate to AvantGo.com: Customized Information from Slate Now Available to Users of Palm OS-and Windows CE-Based Handheld Devices Through AvantGo.com, 2 pages, Aug. 9, 1999, AvantGo, Inc. .
Press Release, "Salon.com to Provide Content for Palm Pilots and other Handheld Devices through AvantGo.com: News, Technology and other content from Salon.com now available to over 300,000 AvantGo.com subscribers," 2 pages, Jul. 26, 1999, AvantGo, Inc. .
Press Release, "WisdomWare Partners with AvantGo to Provide Handheld Marketing and Sales Intelligence Solution: Reseller Agreement Enables Planned WisdomWare AnyWhere.TM. Service," 2 pages, Jul. 26, 1999, AvantGo, Inc. .
Press Release, "Ontheroad.com Snapshots Double Every Two Weeks with AvantGo.com," 2 pages, Jul. 19, 1999, AvantGo, Inc. .
Press Release, "AvantGo Partners with Vicinity to Provide Maplast! Maps and directions to Handheld Device Users Through AvantGo.com," 2 pages, Jun. 28, 1999, AvantGo, Inc. .
Press Release, "Microsoft and 3Com Invest in AvantGo: Mobile Computing Leader takes $14.7 Million in Third Round Funding from Microsoft, 3Com, Fayez Sarofim & Co., 21.sup.st Century Internet Venture Partners, H & Q Venture Associates and Adobe Ventures," 3 pages, Jun. 18, 1999, AvantGo, Inc. .
Press Release, "AvantGo Teams with The Wall Street Journal Interactive Edition to Introduce New Personalized Content for AvantGo.com: AvantGo.com Provides News Services to PalmOS and Windows CE handheld users," 2 pages, May 17, 1999, AvantGo, Inc. .
Press Release, "AvantGo.com bolstered by Name Brand Hendheld Makers, Wireless Providers and Content Publishers: Microsoft, Phillips, Casio, IBM, AT&T Wireless, GoAmerica, Novatel Wireless and Others Endorse Interactive Service with 100 Optimized Channels from Leading Content Proviers," 6 pages, May 10, 1999, AvantGo, Inc. .
Press Release, "AvantGo Unleashes AvantGo.com, the First Free Interactive Service for Mobile Device User: New Personalized Service Puts the Power of the Web in the Palm of Your Hand," 3 pages, May 10, 1999, AvantGo, Inc. .
Press Release, "David Harris Joins AdvantGo as Vice President of Worldwide Sales and Business Development: Former Member of Adobe Senior Management Sings on with Industry-Leading Mobile Computing Company," 2 pages, Apr. 19, 1999, AvantGo, Inc. .
Press Release, "AvantGo Logo Created by 1185 Design Recognized as Outstanding: Design Receives Prestigious Communications Arts (CA) Magazine Award; Logo to Appear in CA and American Corporate Identity Publications," Mar. 29, 1999, AvantGo, Inc. .
Press Release, "AvantGo Licenses Certicom's SSL Plus for Embedde Systems: Advanced Certicom security Technology now Available to Mobile Enterprise customers Using AdvantGo with Windows CE and Palm Computing handhelds," 2 pages, Apr. 13, 1999, AvantGo, Inc. .
Press Release, "AvantGo Integrates Seamlessly with New Minstrel III by Novatel Wireless: Interactive Wireless Data Capabilities Allow Real-time Access to Critical Information on Palm Computing Platform Devices," 2 pages, Apr. 6, 1999, AvantGo, Inc. .
Press Release, "AvantGo and Microsoft Silicon Valley Developer Center to Offer Free Seminars to Enterprises Interested in Extending Applications to Windows CE-Based Devices: Attendees Can Register Today for Technical Sessions on Apr. 26-27 and May 24-25," 2 pages, Mar. 16, 1999, AvantGo, Inc. .
Press Release, "AvantGo and the Windward Group Offer Free Seminars to Enterprises Interested in Extending Applications to Mobile Devices: Attendees Can Register Today for by Bay Area Sessions on Apr. 28 & 29," 2 pages, Mar. 15, 1999, AvantGo, Inc. .
Press Release, "AvantGo Recognized again for Execllence in Mobile Computing: Mobile Insights Chooses AvantGo as Best Mobile Computing Solution in "Wireless Internet and Intranet" Category," 2 pages, Mar. 8, 1999, AvantGo, Inc. .
Press Release, "AvantGo and Puma Deliver Open Source Code for Handheld-to-Server Connectivity: Microsoft, Sybase and Symbol Support Mobile Application Link as Key to Corporate Handheld Market Growth," 2 pages, Mar. 1, 1999, AvantGo, Inc. .
Press Release, "AvantGo Takes Home Seven leading Industry Awards: Hot Mobile computing Software Company Recognized during 1998 for Creativity, Innovation and Candor," Feb. 8, 1999, AvantGo, Inc. .
Press Release, "AvantGo Receives Two Awards from Tap Magazine," Feb. 26, 1999, AvantGo, Inc. .
Press Release, "Symbol Technologies and AvantGo Announce Relationships To Provide Barcode Scanning Web Client on Symbol's New Palm Terminals," 2 pages, Feb. 1, 1999, AvantGo, Inc. .
Press Release, "AvantGo Announces Support for the Latest Version of Windows CE for the Palm-Size PC: Leader in Managing Mobile Information Allows its Growing Number of Users to Take Advantage of More Windows CE Functionality, Including Color," 2 pages, Feb. 1, 1999, AdvantGo, Inc. .
Press Release, "InfoSpace.com and AdvantGo Deliver New Optimized Channels of Web Content to Handheld Devices: Companies introduce a Comprehensive offering of Web Content for Handheld," 2 pages, Jan. 28, 1999, AvantGo, Inc. .
Press Release, "CNNfn and AvantGo Team Up to Help Users Keep Track of Breaking Business News on their Handheld Devices," 2 pages, Jan. 26, 1999, AvantGo, Inc. .
Press Release, "CommerceNet Awards Ecommerce Innovation: AvantGo, Brokat, DealTime, eBay, and General Magic Receive Awards," Dec. 16, 1998, AvantGo, Inc. .
Press Release, "AvantGo and Puma Technology Join Forces on Open Industry Initiative for Mobile Device/Corporate Enterprise Application Connectivity: Mobile Application Link Initiative Lauded as Key to Market Growth," 3 pages, Dec. 2, 1998, AvantGo, Inc. .
Press Release, "The Supporting News to Deliver News, Scores to Handheld Devices: The Sporting News teams with AvantGo to offer In-Depth News, Analysis and Scores to Portable Platforms," 2 pages, Nov. 20, 1998, AvantGo, Inc. .
Press Release, "Knight Ridder Real Cities and AdvantGo Team up to Provide City Sites, News and Information on Handheld Computers: Visitors to sites have a Chance to Win Free Palm III Organizers in Introductory Contest," 2 pages, Nov. 18, 1998, AvantGo, Inc. .
Press Release, "AvantGo and Oracle Team up to Deliver Mobile Applications to Handheld Devices: Combination of AvantGo and Oracle Lite Enables Unique Mobile Device Access to Oracle8i," 2 pages, Nov. 9, 1998, AvantGo, Inc. .
Press Release, "Ziff-Davis and AvantGo Bring Award Winning Content From ZDNet.com to Handheld Devices," 2 pages, Oct. 26, 1998, AvantGo, Inc. .
Press Release, "USA Today Online Partners with AvantGo to Deliver News, Sports & Money Briefs, Travel Tips and Dow Jones Charts to Users of Handheld Devices," 2 pages, Oct. 20, 1998, AdvantGo, Inc. .
Press Release, "IndustryWeek and AdvantGo Team Up to Deliver Management Best Practices News and Information to Users of Handheld Devices," 2 pages, Oct. 6, 1998, AvantGo, Inc. .
Press Release, "The Industry Standard and AdvantGo Team Up to Deliver News to Portable Devices: New Business Publication Takes Advantage of Publishing Trend Toward New Delivery Formats," 2 pages, Aug. 24, 1998, AvantGo, Inc. .
Press Release, "AT&T Executive Joins AdvantGo Board of Directors: Robert J. Lesko Brings Global Services Experties to Hot Start-Up," Aug. 10, 1998, AvantGo, Inc. .
Press Release, "AvantGo Announces Agreemment to Deliver News From The Wall Street Journal Interactive Edition to Handheld Computers," 2 pages, Aug. 3, 1998, AvantGo, Inc. .
Press Release, "Get Your Five-Day Weather Forecast-On A Handheld: Weather24 and AvantGo Deliver "Weather to Go" Content for Mobile Computer Users," 2 pages, Jun. 29, 1998, AvantGo, Inc. .
Press Release, "News America Digital Publishing Teams with AvantGo to Provide News, Sports, Business and Entertainment Information to Mobile Users," 2 pages, Jun. 22, 1998, AvantGo, Inc. .
Press Release, "AvantGo Secures $3.5 Million in Venture Capital: Hambrecht & Quist, Adobe Ventures and 21.sup.st Century Internet Venture Partners Invest; Chris Hollenbeck Joins AvantGo Board of Directors," 2 pages, Jun. 8, 1998, AvantGo, Inc. .
Press Release, "AvantGo Signs Stuart Read As Vice President of Marketing: Past Founder of Diba Joins Fast Growing Mobile Computing Company," May 26, 1998, AvantGo, Inc. .
Press Release, "AvantGo Teams with Leading Publishers to Serve Up News from Mobile Users: Wired Digital, The New York Times, Mercury Center, InfoWorld and CNET Deliver Content for Handhelds," 3 pages, May 18, 1998, AvantGo, Inc. .
Press Release, "AvantGo wins DMBS Magazine Editor's Choice Award: Hot Mobile Computing Software Start-Up Recognized for Creativity and Innovation," Apr. 20, 1998, AvantGo, Inc. .
Press Release, "AvantGo Licenses Java Technology to Palm Computing for the Conduit Development Kit, Java Edition: Technology Extends Enterprise Java Applications to the 3Com Palm Pilot Connected Organizer," 2 pages, Mar. 23, 1998, AvantGo, Inc..~
Primary Examiner:
Maung; Zarni
Attorney, Agent or Firm:
Sterne, Kessler, Goldstein & Fox P.L.L.C.
Parent Case Text
CROSS-REFERENCE TO RELATED APPLICATIONS
This application is a continuation-in-part application of pending Ser. No.09/393,390, "Interactive Applications for Handheld Computers," filed Sep. 10, 1999, and claims the benefit of U.S. Provisional Application No. 60/173,807, "Arrangements for Providing Improved Network Services to Wireless Handheld Devices," filed Dec. 30, 1999, and U.S. Provisional Application No. 60/189,969, "Arrangements for Providing Improved Network Services to Wireless Handheld Devices," filed Mar. 17, 2000, all of which are incorporated by reference herein in their entireties.
This patent application is potentially related to the following co-pending U.S. utility patent applications, which are all herein incorporated by reference in their entireties:
"System, Method, and Computer Program Product for Enabling On-Device Servers, Offline Forms, and Dynamic Ad Tracking On Mobile Devices," Ser. No. 09/559,964, filed concurrently herewith.
"System, Method, and Computer Program Product for Administering Channels, Content, and Data for Mobile Devices," Ser. No. 09/559,965, filed concurrently herewith.
"System, Method, and Computer Program Product for Customizing Channels, Content, and Data for Mobile Devices," Ser. No. 09/560,957, filed concurrently herewith.
"System, Method, and Computer Program Product for Web Content Aggregation and Development, and Web Content Delivery to Clients," Ser. No. 09/560,956, filed concurrently herewith.
Claims
What is claimed is:
1. A method of synchronizing a server and a client on behalf of a user, comprising the steps of:
(1) receiving at least one synchronization request comprising information enabling the server to update the client;
(2) accessing providers using state information to retrieve content associated with the user according to at least said at least one synchronization request, wherein said state information is maintained by the server and said state information indicates content which the user wishes to transmit to the client;
(3) generating at least one instruction to update the client based on content obtained from the providers in step (2); and
(4) transmitting said at least one instruction, wherein the client is updated according to said at least one instruction.
2. The method of claim 1, wherein synchronization of the server and the client is substantially achieved via receipt of a single transmission in step (1), and a single transmission in step (4).
3. The method of claim 1, further comprising the following step that is performed prior to step (1):
(5) identifying to the client information that is of interest during synchronization sessions.
4. The method of claim 1, wherein said at least one synchronization request and said at least one instruction are transmitted using a hypertext transfer protocol (HTTP).
5. The method of claim 4, wherein said at least one synchronization request and said at least one instruction are formatted using an extensible markup language (XML).
6. The method of claim 1, wherein step (2) comprises the steps of:
(a) obtaining an object from a provider;
(b) hashing said object to calculate a hash result;
(c) comparing said hash result with a previous hash result, if available; and
(d) if it is determined in step (c) that said hash result corresponds to said previous hash result, then determining that no update regarding the object is needed.
7. The method of claim 6, further comprising the steps of:
(e) if it is determined in step (d) that said first hash result does not correspond to said first previous hash result or said first previous hash result is not available, then transforming said object into a form operable for a client;
(f) hashing said transformed object to calculate a second hash result;
(g) comparing said second hash result with a second previous hash result, if available; and
(i) if it is determined in step (g) that said second hash result corresponds to said second previous hash result, then determining that no update regarding the object is needed.
8. A computer program product comprising a computer useable medium including control logic stored therein, said control logic enabling synchronization of a server and a client on behalf of a user, said control logic comprising:
receiving means for enabling a processor to receive at least one synchronization request comprising information enabling the server to update the client;
accessing means for enabling a processor to access providers using state information to retrieve content associated with the user according to at least said at least one synchronization request, wherein said state information is maintained by the server and said state information indicates content which the user wishes to transmit to the client;
generating means for enabling a processor to generate at least one instruction to update the client based on content obtained from the providers; and
transmitting means for enabling a processor to transmit said at least one instruction, wherein the client is updated according to said at least one instruction.
9. The computer program product of claim 8, wherein synchronization of the server and the client is substantially achieved via receipt of a single transmission involving said receiving means, and a single transmission involving said transmitting means.
10. The computer program product of claim 8, said control logic further comprises:
means for enabling a processor to identify to the client information that is of interest during synchronization sessions.
11. The computer program product of claim 8, wherein said at least one synchronization request and said at least one instruction are transmitted using a hypertext transfer protocol (HTTP).
12. The computer program product of claim 11, wherein said at least one synchronization request and said at least one instruction are formatted using an extensible markup language (XML).
13. The computer program product of claim 8, wherein accessing means comprises:
obtaining means for enabling a processor to obtain an object from a provider;
hashing means for enabling a processor to hash said object to calculate a hash result;
comparing means for enabling a processor to compare said hash result with a previous hash result, if available; and
determining means for enabling a processor to determine if in step (c) that said hash result corresponds to said previous hash result, then determining that no update regarding the object is needed.
14. The computer program product of claim 13, further comprising the steps of:
first determining means for enabling a processor to determine if in step (d) that said first hash result does not correspond to said first previous hash result or said first previous hash result is not available, then transforming said object into a form operable for a client;
hashing determining means for enabling a processor to hash said transformed object to calculate a second hash result;
comparing determining means for enabling a processor to compare said second hash result with a second previous hash result, if available; and
second determining means for enabling a processor to determine if in step (g) that said second hash result corresponds to said second previous hash result, then determining that no update regarding the object is needed.
15. The computer program product of claim 8, wherein said at least one synchronization request and said at least one instruction are transmitted using a hypertext transfer protocol (HTTP).
16. The computer program product of claim 15, wherein said at least one synchronization request and said at least one instruction are formatted using an extensible markup language (XML).
17. A method of synchronizing a server and a client on behalf of a user, comprising the steps of:
(1) generating at least one synchronization request comprising information enabling the server to update the client;
(2) transmitting said at least one synchronization request to the server;
(3) receiving from the server at least one instruction generated based on content retrieved by the server from providers that were accessed using state information according to at least said at least one synchronization request, wherein said state information is maintained by the server and said state information indicates content which the user wishes to transmit to the client; and
(4) updating the client according to said at least one instruction.
18. The method of claim 17, wherein synchronization of the server and the client is substantially achieved via a single transmission in step (2), and receipt of a single transmission from the server in step (3).
19. The method of claim 17, further comprising the following step that is performed prior to step (1):
(5) receiving notice of information that is of interest during synchronization sessions.
20. The method of claim 17, wherein said at least one synchronization request and said at least one instruction are transmitted using a hypertext transfer protocol (HTTP).
21. The method of claim 20, wherein said at least one synchronization request and said at least one instruction are formatted in an extensible markup language (XML).
22. A computer program product comprising a computer useable medium including control logic stored therein, said control logic enabling synchronization of a server and a client on behalf of a user, said control logic comprising:
generating means for enabling a processor to generate at least one synchronization request comprising information enabling the server to update the client;
transmitting means for enabling a processor to transmit said at least one synchronization request to the server;
receiving means for enabling a processor to receive from the server at least one instruction generated based on content retrieved by the server from providers that were accessed using state information according to at least said at least one synchronization request, wherein said state information is maintained by the server and said state information indicates content which the user wishes to transmit to the client; and
updating means for enabling a processor to update the client according to said at least one instruction.
23. The computer program product of claim 22, wherein synchronization of the server and the client is substantially achieved via a single transmission involving said transmitting means, and receipt of a single transmission involving said receiving means.
24. The computer program product of claim 22, wherein said control logic further comprises:
means for enabling a processor to receive notice of information that is of interest during synchronization sessions.
Description
BACKGROUND OF THE INVENTION
1. Field of the Invention
The present invention relates generally to mobile communications, and more particularly relates to technology for using interactive applications while on-line and off-line on mobile devices.
2. Related Art
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.
A variety of software applications for those mobile devices also exist.
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
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.
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
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.
FIG. 1A is a block diagram of the invention according to an embodiment of the invention;
FIG. 1B is an alternative block diagram of the invention according to an embodiment of the invention;
FIG. 1B1 is a block diagram of an example data processing unit useful for implementing items from FIGS. 1A and 1B;
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;
FIG. 1D is an example flowchart of a process to interact with forms on a client according to an embodiment of the invention;
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;
FIG. 1F1 is an example flowchart of a process for tracking client activity according to an embodiment of the invention;
FIG. 1F2 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;
FIG. 1G is an example flowchart of an initialization process according to an embodiment of the invention;
FIGS. 1H1 and 1H2 collectively illustrate an example flowchart of an "off by N" synchronization process according to an embodiment of the invention;
FIG. 1I1 is an example flowchart of a synchronization process (where the client is connected directly to the server) according to an embodiment of the invention;
FIG. 1I2 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;
FIG. 1J is an example flowchart relating to server side maintenance of client status information according to an embodiment of the invention;
FIG. 1K is an example flowchart relating to optimizing content for a particular client according to an embodiment of the invention;
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;
FIG. 1M is an example flowchart relating to syncing channels having collections of objects according to an embodiment of the invention;
FIG. 1N is an example flowchart relating to fleet management according to an embodiment of the invention;
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;
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;
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;
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;
FIG. 1S is an example flowchart relating to selecting a channel and registering a client, if necessary, according to an embodiment of the invention;
FIG. 1T is an example flowchart relating to processing an anonymous account according to an embodiment of the invention;
FIGS. 1U, 1V, 1W, 1X, 1Y, 1Z, 1AA, and 1AB are used to generally describe embodiments of the invention;
FIG. 2 is an example flowchart of a process to obtain objects from providers according to an embodiment of the invention;
FIG. 3A is an alternative embodiment of a synchronization process;
FIG. 3B is an example block diagram illustrating how XML objects can be served to clients according to an embodiment of the invention;
FIGS. 3C and 4A are views of synchronization processes according to embodiments of the invention;
FIG. 4B is used to indicate how the invention processes hash results according to an embodiment;
FIGS. 5A, 5B, 5C, 5D, 5E, 5F, 5G, 5H, 5I, 5J, 5K, 5L, and 5M relate to user interface functionality according to embodiments of the invention;
FIGS. 6-62 illustrate example screen shots according to embodiments of the invention; and
FIGS. 63A and 63B are event trace diagrams used to describe a synchronization process according to an embodiment of the invention.
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
1. Overview of Embodiments of the Present Invention
Embodiments of the present invention are briefly described in this section.
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.
TABLE 1. Internet Content Internet content includes but is not limited to: HTML JavaScript .TM. Channels Java .TM. ActiveX Multimedia: Images (e.g., JPEG, GIF, PNG, vector graphics, etc.) Audio Files (e.g. MP3) Video (e.g. AVI) Streaming Content: Voice/Data/Video Binary files XML Applications Data Objects Documents Anything that can be delivered via a "browser"
Table 2 lists examples of mobile devices, although the invention is not limited to these examples.
TABLE 2. Mobile Devices Mobile devices 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)
FIG. 1U illustrates the concept of the invention of placing objects on data processing devices, such as mobile devices.
1.1. Enabling Mobile Devices to Interact With Networked Applications
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.
The invention enables:
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.
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.
A technique for interactive connectivity between handheld computers and computer networks.
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.
Obtaining updated Web pages and other network objects, for use when the mobile device is not communicating with the PC.
An example mobile device/server environment is shown in FIG. 1V.
1.2. Rapid Transfer of Web Pages to Mobile Devices
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.
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.)
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.
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.
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.
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.
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.
1.3. Optimizing Content of Web Pages for Mobile Devices
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.
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:
Dynamic memory specifications
High memory specifications
Protected Memory
Storage Memory
Database Memory
Available storage space
Screen size
User profile(s)
Color depth
Applications on device
Buttons on-device
Data markers (e.g., cookies, tokens)
Preferences
Fonts
Font specifications
Sync type
Synchronization types
Supported data types
Supported mime types
Connection/Network profile
An example optimization process is shown in FIG. 1AA.
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.
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.
Table 3 illustrates example tags (the invention is not limited to the tags shown in Table 3).
TABLE 3. Sample Markup Language Tag Effect <META NAME="Handheld- This tag enables several HTML Friendly" content="True"> features that are normally turned off. Most notably, The invention does not try to display TABLE tags or the HSPACE and VSPACE attributes of IMG tags unless the page is marked as "HandheldFriendly". Most TABLEs or H/VSPACEs are designed for much larger screens. <AGIGNORE></AGIGNORE> Used in a wireless channel. Use the AGIGNORE tag to surround content within an HTML page that may be inappropriate or unattractive on Internet-enabled phones. <AGPAGEBREAK TITLE="your Used in a wireless channel. Breaks up title"> pages on request. When processing pages for devices other than WAP phones, the server ignores the AGPAGEBREAK tag.
Web Content Aggregation, Web Channel Development, and Web Content Delivery for Users of the Internet and of Mobile Devices
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).
These and other embodiments of the present invention are described in greater detail below.
STRUCTURAL EMBODIMENTS OF THE PRESENT INVENTION
FIG. 1A is a block diagram of a data processing environment 102 according to an embodiment of the invention. The data processing environment 102 includes a server 104 (although only one server 104 is shown, in practice the data processing environment 102 may include a plurality of servers), one or more devices 106, one or more adapters 118, and one or more providers 128.
Generally, the server 104 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 108, such as but not limited to content, applications, services, images, movies, music, links, etc.
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:
A name of the channel.
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 1 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.
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.
An indication of which resource objects are enabled for the channel:
An indication of whether or not images are to be included in or excluded from objects in the channel; and
An indication of whether or not scripts are enabled in objects in the channel.
A refresh methodology.
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).
The invention includes processes for managing channels, including but not limited to adding channels to the collection of channels maintained by the server 104.
The server 104 offers channels to clients 108. A client 108 may access the server 104 and view the collection of channels. The client 108 may then select any combination of the channels in the collection. The server 104 maintains a list of the channels associated with each of the clients 108.
During a synchronization process, the server 104 loads a device 108 with the channels associated with the client 108. Generally, the server 104 does this by obtaining from providers 128 the objects defined by the channels, and causing those objects to be stored on the client 108. Thus, during the synchronization process, the server 104 will load the client 108 with the selected channels. More particularly, the server 104 will load the client 108 with the objects associated with the channels.
The client 108 may process and use those objects when not connected to the server 104. The invention enables the client 108 to actively interact with the objects and channels.
In one embodiment, the client 108A directly interacts with the server 104 via some transmission medium 120B, which may be any wired or wireless medium using any communication protocol.
In another embodiment, the client 108B indirectly interacts with the server 104 via an adapter 118. For example, the client 108B may be a mobile device (such as a Palm device) and the adapter 118 may be a cradle and a computer coupled to the cradle (the mobile device is inserted into the cradle). In this instance, the adapter 118 presents itself to the server 104 as a client 108B (via client communications module 110C). When the server 104 sends objects to the adapter 118, the adapter interface module 116 writes those objects to client 108B. In embodiments, adapter interface module 116 can be a Hot Sync.TM. Manager, an Active Sync.TM., etc. It is noted that the invention is not limited to any of the implementation examples discussed herein.
The components shown in FIG. 1A shall now be described in greater detail.
The server 104 includes an administration module 122, a database module 126, a user interface 130, a web synchronization module 124, a server extension module 156, a fleet management module 154, a notification module 132, and a server communication module 114. Other embodiments of server 104 may include a subset of these modules, and/or may include additional modules.
The administration module 122 controls and manages the states of the server 104 and the clients 108. For example, the administration module 122 manages and controls groups of clients 108, permissions assigned to clients 108, groups, and channels. For example, the administration module 122 administers the users/clients 108 assigned to groups, and the channels associated with users. These and additional functions performed by the administration module 122 are described herein.
The database module 126 controls access to databases associated with the server 104. The database module 126 maintains information relevant to the clients 108, as well as information relevant to the modules contained in the server 104. The database module 126 manages information on the collection of channels maintained by server 104. These and additional functions performed by the database module 126 are described herein.
The user interface 130 is, in an embodiment, a graphical user interface (GUI) that enables users and clients 108 to access functions and modules offered by the server 104. More generally, the user interface 130 within server 104 provides access to server 104 and the modules and resources contained therein.
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 130 enables such web sites.
These and additional functions performed by the user interface 130 are described herein.
The web synchronization module 124 is an application/instance of server extension module 156, and controls synchronization of web content to client 108. The invention may include other synchronization modules (which are application/instances of server extension module 156) that control synchronization of other types of objects to clients 108. For example, the server 104 may administer a calendar that may be installed on clients 108. The synchronization of appointments, events and/or dates on this calendar between clients 108 and the server 104 may be performed by a calendar synchronization module. These and additional functions performed by the server extension module 156 are described herein.
The fleet management module 154 performs functions associated with fleets of clients 108, which are groups of clients 108. For example, fleet management module 154 may perform global or mass operations on groups (fleets) of clients 108, such as loading or updating an application on groups (fleets) of clients 108. Another example of a mass operation is retrieval of information on clients 108 in a fleet, such as the free memory in clients 108 in a fleet (this would help an organization determine if its clients 108 need a memory upgrade). These and additional functions performed by the fleet management module 154 are described herein.
The server extension interface/module 156 enables modules, such as third party modules, to operate in or work with the server 104 (and modules contained in the server 104). The server extension module 156 presents an API (application programming interface). Modules in the server 104 may operate with other devices in the server 104 by conforming to the server API.
For example, the web synchronization module 124 and the fleet management module 154 (as well as other types of synchronization modules, not shown in FIG. 1A) may interact with databases on the server 104 via the database module 126 by going through the server extension module 156. The web synchronization module 124 and the fleet management module 154 may not be able to interact directly with the database module 126 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 156 as well as other server modules as long as they conform to the API of the server extension module 156. This is true of any modules in the server 104, or that interact with the server 104.
Server communication module 114 enables communication between the server 104 and entities external to the server 104, such as clients 108, adapters 118, providers 128, work stations, etc. The server 104 communicates with these entities via communication mediums 120, which may be any type of wireless or wired communication using any protocol. It is noted that multiple server communication modules 114 may execute in a single server 104. For example, in one embodiment, server communication module 114 is a TCP/IP stack. In another embodiment, server communication module 114 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 114 are described herein.
The notification module 132 sends objects to clients 108 beyond objects related to channels associated with clients 108. Such objects could be requested by client 108 in advance. For example, a client 108 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 132 would cause an appropriate notification(s)/object(s) to be sent to the client 108. Alternatively, the notification module 132 may send objects to clients 108 without any prior explicit request from the client 108. For example, the notification module 132 might send channels to clients 108 when such channels are identified to be similar to those already selected by the clients 108. Also, the notification module 132 might send appropriate notifications/objects to the clients 108 when such clients 108 receive email or faxes at the server 104. In embodiments, the notification module 132 transmits such objects to the client 108
immediately when the event occurs, during the next synchronization with the client 108, or at some other future synchronization.
An alternative representation of server 104 is shown in FIG. 1B. FIG. 1B illustrates, for example, that messages from entities outside of server 104 are received by server extension interface/module 156 via server communications modules 114. Generally, such messages represent requests for the server 104 to perform various functions. The server extension module 156 conceptually operates as a dispatcher who routes such messages to other modules contained in the server 104, such as web synchronization module 124 (who handles requests to synchronize with web content), notification module 132, fleet management module 154 (who handles fleet related requests), and/or third party modules 155 (such as other synchronization modules). Thus, the invention supports modules 155 generated by third parties to perform various functions. Such modules 155 "plug-in" to the server 104 via the server extension module 156.
Referring again to FIG. 1, the devices 106 may be any type of data processing device. In embodiments of the invention, the devices 106 are mobile computing devices, although the invention is not limited to these embodiments. In such example embodiments, the devices 106 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.
In embodiments of the invention, the devices 106 include software, hardware, and/or combinations thereof related to client functionality (such client functionality is described herein). When a device 106 includes such software, hardware, and/or combinations thereof, the device 106 is referred to herein as a client 108. Accordingly, it can be said that the data processing environment 102 includes one or more clients 108.
Clients 108 each may include a layout and rendering module 134, a forms module 136, a control module 142, a user interface 144, a client extension interface 138, a client interface module 112, a client communications module 110, a JavaScript.TM. engine 140, and a database module 146. Other embodiments of clients 108 may include a subset of these modules, and/or may include additional modules.
Layout and rendering module 134 controls the processing of data objects on client 108, such as the layout and rendering of data objects on client 108. For example, the layout portion of module 134 obtains information from databases of the client
108 (via the database manager 146) and determines where such information should be rendered on the display of the client 108. Such information may include anything that can be rendered, such as but not limited to images, text, links, etc. The rendering portion of module 134 is responsible for drawing items on the display (drawing bits to the screen). These and additional functions performed by the layout and rendering module 134 are described herein.
The forms module 136 controls and manages forms. For example, in embodiments the forms module 136 manages aspects of off-line forms, such as HTML forms and/or multi-page forms. The forms module 136 enables access to and user interaction with forms (in some embodiments, the forms module 136 via UI 144 enables users of client 108 to directly access forms). The forms module 136 maintains the status of forms. Forms module 136 can also include a forms manager (not shown) to provide added functionality. These and additional functions performed by the forms module 136 are described herein.
The user interface 144 is preferably a graphical user interface that enables users to interact with client 108 and functions and modules provided by the client 108. More generally, UI 144 controls how functions presented by modules of the client
108 are presented to users. The UI 144 controls how users interact with such functions and modules. It is noted that the functionality of the UI 144 may be distributed. For example, portions of the UI 144 may reside in the forms module 136, as well as other modules of client 108. These and additional functions performed by the user interface 144 are described herein.
The client extension interface 138 enables modules, such as third party modules, to operate in or work with the client 108 (and modules contained in the client 108). The client extension interface 138, also known as an on-device server, presents an API (application programming interface) that is, in embodiments, common to clients 108 on many architectures.
Modules in the client 108 can work together via the client extension interface 138. For example, the JavaScript.TM. engine 140 may decide that it wishes to display a message to the user. To do this, the JavaScript.TM. engine 140 would work through the client extension interface 138 to cause the UI 144 to display the message to the user. The JavaScript.TM. engine 140 may not know how to directly interact with the UI 144. However, as long as both the JavaScript.TM. engine 140 and the UI
144 conform to the API of the client extension interface 138, then they can operate together.
Similarly, the control module 142 may decide that it needs to store some data in a database. The control module 142 would do this by working with the client extension interface 138 to access the database module 146 to effect such a modification to the databases in the client 108. These and additional functions performed by the client extension interface 138 are described herein.
The JavaScript.TM. engine 140 executes objects written in the JavaScript.TM. language that operate on client 108. As noted, the JavaScript.TM. engine 140 conforms to the API of the client extension interface 138, and works with the client extension interface 138 to work with other modules in client 108. These and additional functions performed by the JavaScript.TM. engine 140 are described herein.
Although not shown in FIG. 1A, embodiments of the invention include other engines for executing other types of scripts on client 108. These other engines can interact with other modules on client 108 as long as the engines conform to the API of the client extension interface 138.
The database module 146 controls access to databases associated with client 108. More generally, the database manager 146 controls access to resources on the client 108. For example, the control module 142 may interact with the database manager
146 to open an address book in the databases, and to write a record to the address book. Alternatively, the forms module 136 can interact with the database module 146 to access forms that are stored in the databases. These and additional functions performed by the database module 146 are described herein.
Client communications module 110 enables the client 108 to interact with external entities, such as server 104. In embodiments, the client communications module 110 enables TCP/IP traffic, although the invention is not limited to this example. More generally, the client communications module 110 enables communication over any type of communication medium 120, such as wireless, wired, etc., using any communication protocol, such as a pager protocol. These and additional functions performed by the client communications module 110 are described herein. The client interface module 112 enables the client 108 to communicate with adapters 118. Client interface module 112 optionally links to client communications module 110 in some embodiments to provide functionality (for example, when the client communications module 110 uses a wireless modem's drivers, which are accessed via client interface module 112). In embodiments, the client interface module 112 may be Hot Sync.TM. Manager in the Palm operating environment, or Active Sync.TM. in the Windows CE.TM. operating environment, or Pilot Link.TM. 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 112 are described herein.
The control module 142 coordinates the activities of the other modules in client 108 so that all the modules share resources properly. For instance, control module 142 can determine priorities for shared resources such as processing time, accessing memory, etc.
Providers 128 are sources of various types of objects, such as but not limited to content (content providers 128A), applications (application providers 128B), services (service providers 128C), etc. Providers 128 may also include servers 104' (similar to server 104), which may provide objects such as but not limited to content, applications, services, etc. For example, and without limitation, the application providers 128B may provide objects relating to (without limitation) operating system updates/changes, system upgrades, application updates/changes, etc.
Adapters 118 include an adapter interface module 116, a user interface 148, a database module 150, an adapter synchronization module 152, and a client communications module 110. Other embodiments of adapters 118 may include a subset of these modules, and/or may include additional modules.
Client communications module 10 is the same as similarly named modules in clients 108.
The adapter interface module 116 enables the adapter 118 to communicate with clients 108.
The adapter synchronization module 152 is involved with synchronization operations between server 104 and clients 108.
The UI 148 enables users to interact with modules and functions of adapter 118.
The database module 150 controls access to databases associated with adapter 118. The database module 150 manages information needed for clients 108 to remain in sync with server 104. In some embodiments, the adapter 118 does not include the database module 150 or the UI 148 (i.e., in embodiments where the adapter 118 operates essentially as a pipe, as in some embodiments on Unix).
These and additional functions performed by modules of the adapter 118 are described herein.
2.1. Example Implementation Embodiments
FIG. 1B1 illustrates a block diagram of a data processing unit 103A 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 103A, and the configuration actually used is implementation specific.
Data processing unit 103A 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.
Data processing unit 103A includes a communication medium 103B (such as a bus, for example) to which other modules are attached.
Data processing unit 103A includes one or more processor(s) 103C, and a main memory 103D. Main memory 103D may be RAM, ROM, or any other memory type, or combinations thereof.
Data processing unit 103A may include secondary storage devices 103E, such as but not limited to hard drives 103F or computer program product interfaces 103G. Computer program product interfaces 103G are devices that access objects (such as information and/or software) stored in computer program products 103. Examples of computer program product interfaces 103G include, but are not limited to, floppy drives, ZIP.TM. drives, JAZ.TM. drives, optical storage devices, etc. Examples of computer program products 103H include, but are not limited to, floppy disks, ZIP.TM. and JAZ.TM. disks, memory sticks, memory cards, or any other medium on which objects may be stored.
The computer program products 103H include computer useable mediums in which objects may be stored, such as but not limited to optical mediums, magnetic mediums, etc.
Control logic or software may be stored in main memory 103D, secondary storage device(s) 103E, and/or computer program products 103H.
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.
The data processing unit 103A may also include an interface 103J which may receive objects (such as data, applications, software, images, etc.) from external entities 103N via any communication mediums including wired and wireless communication mediums. In such cases, the objects 103L are transported between external entities 103N and interface 103J via signals 103K, 103M. In other words, such signals 103K, 103M 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 103K, 103M are also considered to be computer program products, and the invention is directed to such computer program products.
3. Operational Embodiments of the Present Invention
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
Referring to FIG. 1C, a flowchart 160 is shown that illustrates a process by which content is captured and stored on client 108 to thereby allow the user to view the content on device 106 offline, according to an embodiment of the invention. Flowchart 160 begins with a user expressing the desire to see content on device 106 (step 160A). Device 106 may be a handheld unit of the type as described herein.
It is noted that when client 108 is resident on device 106, the terms client and device are used interchangeably herein (unless noted otherwise either explicitly or implicitly by context).
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.
While device 106 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 106 in emulation on a desktop PC or workstation).
In manipulating device 106, the user interacts with server 104 via user interface 130 to identify channels (step 160B). 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.
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 106 via server 104 (step 160C). The synchronization process is discussed in detail in later sections of this application. During synchronization, server 104 gathers channel content and sends it to device 106 (step 160D).
3.1.2. Channel Aggregation and Selection By Clients
As discussed herein, the server 104 collects or aggregates channels for selection by clients 108.
FIG. 2 is a flow diagram describing in further detail the process 160D for gathering channels and sending the channels to device 106 according to an embodiment of the invention. The process begins with step 202.
In step 202, top level resources that server 104 needs to fulfill client 108's request are identified by server 104. For example, if client 108 is requesting a full synchronization, server 104 will identify any changed objects from providers 128
and send them to client 108. Client 108 can also request that a subset of providers 128 be updated Server 104 will identify any changed objects within the subset of providers 128 and send them to client 108.
In step 204, Web synchronization module 124 communicates with providers 128 to obtain the top-level resources. Other resources, such as images, links, JavaScript.TM., etc., needed to maintain the integrity of the information provided for each object are then determined in step 206. In step 207, objects are transformed so that they fit within the parameters of device 106. Such parameters may include, but are not limited to, memory size, the size of device 106, capabilities of device 106, etc. When all resources have been amassed to fulfill client 108's request, the process proceeds to step 208.
In step 208, the objects retrieved in the preceding steps are compared with the objects already cached on device 106. Server 104 determines the set of changes that have occurred between the retrieved objects and the objects already cached on device 106 in step 210. Only the set of changes determined in step 210 are transmitted to device 106.To improve the efficiency of the synchronization session between client 108 and server 104, as well as optimize the content displayed by client 108, 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.
FIG. 1W illustrates a block diagram of one embodiment of the optimized downstream protocol. FIG. 1W illustrates raw objects from provider 128, server 104, and device 106. Server 104 transforms the raw objects into an efficient representation for displaying the objects on device 106. For example, HTML objects are transformed into a tokenized compressed version of HTML. In another example, resources such as images, JavaScript.TM., 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 108 to process the objects). During the synchronization session, server 104 also determines the nature and the resources of device 106. Thus, server 104 can determine the amount of content to download to device 106 as well as the features of device 106. For example, device 106 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 108 as well as reducing the color to a black and white image.
Returning again to FIG. 1C, the revised channels are cached on device 106 so that the content can be later accessed (step 160E) by the user in an off-line manner.
In order to access the cached content, the user launches client 108 on device 106 (step 160F). The user selects channels via user interface 144 (step 160G). User interface 144 provides logic for displaying the means to access the resources of client 108. In one embodiment, user interface 144 displays a list of channels from which a user may select specific channels.
Once a channel is selected, layout and rendering module 134 displays the selected channel (step 160H). 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 160I) even when not connected to server 104 or provider(s) 128. 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
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 160I illustrates a user's interaction with a channel having a single form (FIG. 1D is an example embodiment of step 160I in FIG. 1C). Starting with step 162A, a page is displayed by user interface 144 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 144 (step 162B).
Forms module 136 caches the data/commands for later synchronization (step 162C). During the synchronization process, which is discussed below in detail, control module 142 provides an appropriate notification (step 162D). In one embodiment, the appropriate notification is a message displayed by control module 142 that the response to the form will be obtained during the next synchronization.
Forms module 136 maintains the status of the forms cached and manages the completion of the forms (step 162E). In one embodiment, a user can access forms module 136 directly and review the cached forms before and after synchronization.
Multiple page forms may also be implemented. Multiple page forms may result from a single form that is too large to display on client 108. In this instance, server 104 transforms the single page form into multiple page forms for display on client 108. Referring to FIG. 1E, flowchart 160I' illustrates user interaction with a multiple page form (FIG. 1E is an embodiment of step 160I in FIG. 1C). Starting with step 164A, the user accesses a channel containing a multiple page form. User interface 144 displays the first page of the form (step 164B). In much the same way as in step 162B of FIG. 1D, the user enters data/commands into the form elements on the page of the displayed form (step 164C).
Client extension interface 138 stores the data/commands from the displayed form page (step 164D). User interface 144 displays the next page of the form (step 164E). Steps 164C, 164D, and 164E are repeated until all the pages of the form are completed. In one embodiment, client extension interface 138 delivers the completed multiple page form as a single form to forms module 136 (step 164F). In another embodiment, client extension interface 138 delivers each completed page of the form to the forms module 136 (not shown). During the synchronization process, which is discussed below in detail, control module 142 provides an appropriate notification (step 164G). In one embodiment, the appropriate notification is a message displayed by control module 142 that the response to the form will be obtained during the next synchronization. Similarly to step 162E of FIG. 1D, forms module 136 maintains and manages the forms (step 164H).
3.1.4. Tracking Client Behavior
As described herein, the invention enables client 108 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.
FIG. 1F1 is a flow diagram describing a method for tracking page impressions offline, and for tracking other client 108 activity. In step 166A, the user selects a page to view. It is then determined whether provider 128 of the page/object has requested that client activity be tracked and recorded (step 166B). If provider 128 has not requested that client activity be recorded, the page is displayed and the client is not tracked (step 166C). If provider 128 has requested that client activity be tracked and recorded, the process proceeds to step 166D.
In step 166D, client extension interface 138 tracks client activity (as defined by the provider 128). The process proceeds to step 166E.
In step 166E, the tracked information is transmitted to server 104 upon synchronization. In step 166F, server 104 then sends the information to the appropriate provider 128. The provider 128 may pay some compensation for this service.
3.1.5. Display of Context Sensitive Objects
The invention enables the processing of context sensitive objects based on context sensitive triggers while the client 108 is browsing pages/objects in either an off-line mode (i.e., when not connected to server 104) or an on-line mode (i.e., when connected to server 104). 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. 1F2.
TABLE 4 Context Sensitive Objects Business card Advertisement e-mail to do list calendar event ticket notification channels
TABLE 5 Context Sensitive Triggers Global positioning satellite locator Zip code Time of day User preferences Last sync location In range of a transmitter (e.g., bluetooth) Credit card Temperature Altitude Agent, arbiter, avatar
In step 167A, the user selects a page to view on the client 108. The page is obtained from the cache of the client 108, or if not in the cache then from the server 104 (in on-line mode, or via the sync process when not on-line).
In step 167B, the client 108 determines if there are any context sensitive objects. Such objects may be related to the page of step 167A, or status information of client 108, or a combination thereof (or sensitive to other factors, as will be appreciated to persons skilled in the relevant art(s)).
If there are not context sensitive objects, then in step 167D the page is displayed on client 108.
If there are context sensitive objects, then in step 167C the objects are processed and the page is displayed on client 108. 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.
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 104 (or a party associated with server 104) for the ability to have such objects loaded and processed on clients 108.
3.2. Syncing to Mobile Devices
Referring to FIG. 1G, flowchart 168 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.
Client 108 initializes a synchronization session and sends a null data marker [Cn] to server 104 (step 168A). See 6304 in FIG. 63A. In one embodiment, a data marker is a synchronization token associated with the state of data on the client 108. More specifically, in one example, a synchronization token is a number that is sequentially increased by server 104 with each synchronization. Server 104 tells client 108 which client databases it wishes to track and sends data marker [C1] to client 108
(step 168B). See 6306 in FIG. 63A. At this point, the synchronization data marker for the client 108 is equal to C1 at both the client 108 and the server 104, as indicated by 6308 and 6310, respectively.
FIGS. 1H1 and 1H2 collectively illustrate a synchronization process that occurs subsequent to the initialization process of FIG. 1G.
As shown in flowcharts 170 in FIG. 1H1, and 170' in FIG. 1H2, 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 110 of client 108
initializes a synchronization session (step 170A). Client control module 110 of client 108 sends a current data marker C1 to web synchronization module 124 on server 104 (step 170B). This is indicated by 6320 in FIG. 63B.
Server 104 uses the data marker C1 received from client 108 (6320 in FIG. 63B) to determine whether the last synchronization with client 108 was successful (step 170C). In an embodiment, a successful synchronization is indicated if the value of the synchronization data marker that is maintained by the server 104 for the client 108 is equal to the data marker sent by the client 108 to the server 104 in the sync request. In the example of FIG. 63A, the data marker sent by the client 108 to the server 104 in the sync request is C1 (6320 in FIG. 63B), which matches the data marker maintained in the server 104 for the client 108 (6310 in FIG. 63B). Accordingly, in the example of FIG. 63B, the server 104 in step 170D determines that the last sync with the client 108 was successful. Accordingly, in step 170E, a normal sync process is performed, which is described below.
If the last sync was not successful as determined in step 170D, then control flows to step 170F (described below). FIG. 63B shows an example where the sync with client 108 is not successful. At 6324, the client 108 sends a sync request with data marker C2. At this point in time, the data marker maintained by the server 104 for the client 108 is equal to C2 (6312 in FIG. 63B). Accordingly, a match exists, and in 6326 the server 104 performs a normal sync and transmits new data marker C3 to client 108. However, due to some event 6328, this transmission is not received by client 108. Thus, client 108 never receives the new data marker C3. When the client 108 sends the next sync request, it transmits data marker C2 (6330 in FIG. 63B). At this point in time, the data marker maintained by the server 104 for the client 108 is equal to C3 (6316 in FIG. 63B), which does not match data marker C2 received from the client 108 in the sync request (6330 in FIG. 63B). Thus, the server 104 in step
170D determines that the last sync with client 108 was not successful. Accordingly, step 170F is performed.
In step 170F, the server 104 compares the latest data marker received from the client 108 (C2 in the example of 63B) with ones stored in the server 104 for the client 108. Essentially, the server 104 attempts in step 170F to "roll back" to a previous known state of client 108. In the example of FIG. 63B, the server 104 in step 170F determines that it can roll back to a known state of the client 108 corresponding to data marker C2 (6312 in FIG. 63B).
In steps 170G, 170H, and 1701, the server 104 determines what instructions are needed to cause the client 108 to roll back to the known state associated with data marker C2 identified in step 170F, and what instructions are needed to cause the client 108 to move forward from the previous state associated with data marker C2 to the current state associated with data marker C3.
In steps 170J, the instructions determined from steps 170G, 170H, and 170I are sent to client 108, along with the new data marker C3 (6332 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.
In steps 170K and 170L, the client interface module 112 executes these instructions to update the client 108, and saves the new data marker C3 (6318 in FIG. 63B).
Referring back to step 170F, if the server 104 cannot find a previous state of the client 108 corresponding to the data marker contained in the latest sync request from the client 108 (6330 in FIG. 63B), then step 170M is performed. In step
170M, the server 104 identifies the instructions needed to initialize the client 108. In one embodiment, the server 104 initializes the client 108 completely. Control then passes to step 170J, described above.
The full normal synchronization step discussed at step 170E in FIG. 1H1 is shown in FIG. 1I1. This process applies to a case where the client 108 communicates directly with the server 104.
Control module 142 identifies the deltas in the client databases identified by server 104 during initialization in step 168B (step 172A). 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 108.
Control module 142 sends the deltas to synchronization module(s) 155 via server extension module 156 (step 172B). In an embodiment, these deltas are sent in the synchronization request from client 108 to server 104. This is possible since the client 108 knows which databases the server is interested in. This enables the client 108 to only make one transmission to server 104 during the synchronization process, thereby improving performance.
In one embodiment, synchronization module(s) 155 include web synchronization module 124, fleet management module 154, and/or other synchronization modules. These modules are responsible for synchronizing to different types of providers 128. Server extension module 156 checks database module 126 to obtain a list of synchronization modules 155 resident on server 104. Depending on the implementation, only some synchronization modules are present on server 104. The server extension module 156
distributes the synchronization responsibilities among the synchronization modules 155. Synchronization modules 155 synchronize the deltas from client 108 with providers 128 (step 172C). Based on the information from provider(s) 128, synchronization modules 155 compile instructions to synchronize the client 108 with providers 128 (step 172D). Synchronization module 155 sends such instructions to client 108, plus updated data marker (step 172E).
Note this is the only transmission from the server 104 to the client 108 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 142 on the client 108 then executes the instructions (step 172F).
FIG. 1I2 illustrates a synchronization process of step 170E (FIG. 1H1) applied to a case where client 10813 communicates with server 104 via adapter 118.
Adapter 118 reads data from the client 108 (step 172M). Specifically, adapter interface module 116 reads data from client 108 that includes state information about the resources of the device 106, user specific information, etc.
Adapter 118 identifies deltas in client databases identified by server 104 in step 168B (step 172N). Adapter 118 sends these deltas to synchronization module(s) 155 via server extension module 156 (step 1720). Such deltas are transmitted in the initial synchronization request, thus effecting a "one-up" protocol.
As discussed above, synchronization module(s) 155 on server 104 synchronize deltas from adapter 118 with providers 128 (step 172P). Synchronization module(s) 155 compile instructions to synchronize client 108 with providers 128 (step 172Q). These instructions are transmitted to the adapter 118, along with the updated data marker (step 172R). This is the only transmission from the server 104 to the adapter 118 during the synchronization process, thus effecting a "one-down" protocol. Adapter 118 then writes the updated data to client 108 (step 172T).
FIG. 1X is another view of the synchronization process. As discussed herein, the device 106 or client 108 provides information about itself and the content it wishes to receive in a single "up" transmission, and the server 104, upon identifying the device 106 or client 108, returns the desired information along with new synchronization changes in a single "down" transmission. Synchronization tokens are passed between client 108 and server 104 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 155. In still further embodiments, the synchronization session can be implemented on the server 104 by server extension module 156. In such an embodiment, the implementation requirements of synchronization modules 155 would be irrelevant to the "down" transmission, because the server extension module 156 would cache all the information and instructions on behalf of the client and transmit them in all at once.
FIG. 1Y illustrates another view of the synchronization process.
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).
FIG. 1Z illustrates a granular variable synchronization protocol, according to an embodiment of the present invention. Here, adapter 118 is referred to generically as "PC" and performs the same interface functions as described herein.
FIG. 3A shows flowchart 300 that illustrates the variable granular protocol according to yet another embodiment of the present invention. In step 304, client 108 couples to adapter 118 using a connector or medium (for example, Bluetooth, infrared, etc.).
In step 306, client 108 sends updated information to adapter 118.
In step 308, server 104 receives updated information from adapter 118 (one-up transmission).
In step 310, server 104 examines the updated information and in step 312, server 104 obtains updated information from provider(s) 128.
In step 314, server 104 receives information regarding the sets of content available from provider(s) 128.
In step 316, server 104 constructs a set of content requests for provider(s) 128.
In step 318, server 104 sends requests to provider(s) 128.
In step 320, server 104 receives responses from provider(s) 128.
In step 322, server 104 interacts with client 108 to determine the state of its resources.
As already described herein, client 108 provides state information regarding the nature of its resources. In one embodiment, server 104 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