For a more complete understanding of various embodiments of the present invention, reference is now made to the following descriptions taken in connection with the accompanying drawings in which:
Preferred embodiments of the invention provide new functionality to allow a web server to retrieve a user's current location at runtime. This differs from previous models where the client transmitted the user's location into existing HTML forms or URLs. The previous model requires the client to be aware of the server's interface, and requires the client to be tailored to handle each server on a case-by-case basis. Moreover, any change to the server's interface would require a change to every client using that server. By contrast, the new functionality of preferred embodiments of the invention allow servers to automatically retrieve the user's location from the client through a generic interface that can be used by all servers. Through various methods, the client determines its location, for example by utilizing a Global Positioning System (GPS) device or the techniques disclosed in the applications incorporated below, and makes the location information available to the server, which can then adapt its behavior based on the user's location.
An example of such an application is store-finder page on a retailer's web site. Today a store-finder page typically requires the user to manually enter and submit his location The user is subsequently presented with a list of the closest store locations. With the new functionality introduced by preferred embodiments of the present invention, the store-finder page could automatically determine the user's location by interrogating the web browser and can directly present the user the closest store locations.
The embodiments of the invention described herein may be used with the WLAN based location systems (i.e., the WPS) and methods described in U.S. patent application Ser. No. 11/261,988, entitled Location-Based Services that Choose Location Algorithms Based on Number of Detected Access Points Within Range of User Device, filed on Oct. 28, 2005, U.S. patent application Ser. No. 11/678,301, entitled Methods and Systems For Estimating a User Position In a WLAN Position System Based On User Assigned Access Point Locations, filed on Feb. 23, 2007, U.S. patent application Ser. No. 11/430,224, entitled Calculation of Quality of WLAN Access Point Characterization for Use In a WLAN Positioning System, filed on May 8, 2006, and U.S. patent application Ser. No. 11/430,222, entitled Estimation of Position Using WLAN Access Point Radio Propagation Characteristics In a WLAN Positioning System, filed on May 8, 2006, which are herein incorporated by reference and with the methods disclosed herein. Those applications taught specific ways to gather high quality location data for Wi-Fi access points so that such data may be used to estimate the geographic position, speed, and bearing of a Wi-Fi-enabled device utilizing such services and techniques of increasing the accuracy of the various estimations. The present techniques, however, are not limited to systems and methods disclosed in the incorporated patent applications. Thus, while reference to such systems and applications may be helpful, it is not believed necessary to understand the present embodiments or inventions.
When the client detects the presence of the marker, it checks for the user's permission [207], as described in greater detail below, before determining its location by interrogating [208 and 209] a positioning system [204]. Assuming the user allows his location to be sent to the server, the client embeds its location in subsequent messages to the server [210]. Once the server receives the client's location, it may tailor its responses [211] based on that location. For example, a web page for a retail outlet can modify product offerings based on the products available at the stores nearest the user. Note that this customized response is triggered by the web server and not by the client.
One method for the web server to indicate it that it requires the device's location is to use HTTP “cookies”. Using this technique, the server adds a “Set-Cookie” header in its response to the client's request with a predefined cookie name. This follows the traditional method for setting cookies. A web browser enabled to detect such cookies would substitute the actual user's location as the value of the cookie. This use of cookies is unique. The server normally sets both the cookie's name and also it's value. Cookies are typically a mechanism for the server to store, on the client, some information for some period of time. In this case, the server only uses the cookie as a conduit for information known by the client. The server sets the cookie's name and a template describing the type of location requested, for example, latitude/longitude, street address, the location's name, the location's label (e.g., home, work, etc.). The template may also include other location attributes, such as the estimated error of the calculated location, speed, bearing, and/or altitude. The client substitutes the template set by the server with the actual cookie's value, namely, the location information requested by the server.
Once set, the cookie would be included in every subsequent HTTP requests as an HTTP header, just like a traditional cookie. The client may or may not recalculate the device's location for each HTTP request; a mobile web browser in a cell phone, for example, may recalculate the device's location for each HTTP request, whereas a browser in a laptop may not. The server can then retrieve the user's location by reading the cookie. If the web browser isn't location-aware it would leave the cookie unchanged, effectively communicating to the server it isn't location-aware. If the web browser is location-aware but cannot determine its location, or if the user is preventing it from reporting his location, the web browser would substitute the template with no value, effectively communicating to the server it is unable to determine its location.
Another method for a web server to indicate it requires the user device location is to use a specific HTTP header. A web browser enabled to handle such a header would substitute the actual user's location as the value of the header and include that header in subsequent HTTP messages with the server. This method is a more generic version of the cookie method described above, as cookies are transmitted via an HTTP header. In a similar way, the client can include an HTTP header to indicate it is location-aware.
An example of a system employing an intelligent agent is a dynamic web site utilizing JavaScript as the intelligent agent. The client, a web browser with a JavaScript engine, downloads the JavaScript code from the server. The JavaScript code determines the browser's location and alters the web page presented to the user based on the location information using various techniques offered to client-side scripts, like DHTML. One method to interrogate a positioning system to determine the user's location from JavaScript is to extend the JavaScript engine. Two major web browsers today, Microsoft Internet Explorer and Mozilla Firefox, allow for extensions to be installed, via ActiveX for Internet Explorer and via XPCom for Firefox. Once installed, those extensions may be called as integral part of the JavaScript engine from scripts downloaded from any web site.
For example, the following JavaScript code is a very simplified example that displays an alert message once the JavaScript code has determined the user's location. It does so by calling an extension capable of determining the user's location via a WPS installed on the client exposing itself as “Loki” in JavaScript:
Using similar techniques, the location information retrieved from the WPS, or other positioning system, can be passed back to the server, using, for example, the cookie or HTTP header methods discussed above.
Another example of such a system is a Java Web Start application or a Java applet. The client, a java-enabled computer platform, downloads the Java Web Start application or the Java applet and executes it. Unlike the JavaScript environment described above, Java already provides a mechanism for extending the core engine so that a positioning system can be interrogated without requiring a pre-installed extension. Yet another example of such a system is the Adobe FLEX development framework or Microsoft's SilverLight system.
As a result of this initial exchange, the intelligent agent may update [912] the client with information from the server [903]. At a later time, and asynchronously from a client's request, the server [903] can send a request [913] to the intelligent agent [905] for the user's location. Upon receipt of the server's request [913], the intelligent agent [905] determines the user's location by interrogating [915 and 916] a positioning system [904] (e.g., the WLAN Positioning System) after having checked permissions with the user [914] (described in greater detail below). The intelligent agent responds [917] to the servers' request for the user's location. This enables the server [903] to tailor its further interactions [918 and 919] with the client through the intelligent agent.
To preserve the user's privacy, the client can optionally inform the user that the server is requesting his location and give him the opportunity to allow or deny a request to such request. In addition, the client can allow the user to modify the location information sent to the server, for example, by only providing the zip code of the user's location instead of his complete street address. Further, the client can enable the user to blur his location within a certain range of his actual location or enable the user to employing “fuzzing” methods.
In addition to the prompts depicted in
It will be appreciated that the scope of the present invention is not limited to the above-described embodiments, but rather is defined by the appended claims, and these claims will encompass modifications of and improvements to what has been described. For example, embodiments have been described as using a WLAN Positioning System or GPS system for position estimation. However, embodiments of the invention can be implemented using cell-tower triangulation, TV-tower triangulation or other position determination methods.
This application claims the benefit under 35 U.S.C. §119(e) to the following U.S. Provisional Patent Application, the contents of which is incorporated by reference herein: U.S. Provisional Patent Application No. 60/821,479, entitled WLAN Positioning System User Location Pulling Mode for Use in Client-Server Systems, filed on Aug. 4, 2006. This application is related to the following U.S. patent applications, the contents of which are incorporated by reference herein: U.S. patent application Ser. No. 11/562,514, entitled Location Toolbar For Internet Search and Communication, filed on Nov. 22, 2006.
Number | Date | Country | |
---|---|---|---|
60821479 | Aug 2006 | US |