Embodiments of the subject matter described herein relate generally to mobile devices, and more particularly, embodiments of the subject matter relate to using a machine-readable code to verify a mobile device's location.
In recent years, social networking services have been increasing in popularity. Some social networking services allow individuals to use their mobile devices to “check-in” at various locations of interest, such as businesses, restaurants, bars, clubs, concerts, theaters or other entertainment venues, sporting events, and other points of interest. Additionally, some social networking services may reward users for checking-in at various locations, for example, to promote usage of the check-in service or to advertise locations whose operators have partnered with the social networking service. Accordingly, it is desirable to verify that an individual is physically at the location he or she is attempting to check-in at to protect against individuals who may attempt to fraudulently check-in (e.g., a “drive-by” check-in, location spoofing, or the like) to obtain rewards or otherwise misuse the check-in service.
A more complete understanding of the subject matter may be derived by referring to the detailed description and claims when considered in conjunction with the following figures, wherein like reference numbers refer to similar elements throughout the figures.
The following detailed description is merely illustrative in nature and is not intended to limit the embodiments of the subject matter or the application and uses of such embodiments. As used herein, the word “exemplary” means “serving as an example, instance, or illustration,” and any implementation described herein as exemplary is not necessarily to be construed as preferred or advantageous over other implementations. Furthermore, there is no intention to be bound by any expressed or implied theory presented in the preceding technical field, background, or the following detailed description.
Embodiments of the subject matter described herein relate to verifying the location of a mobile device as being at a site that the user of the mobile device is attempting to “check-in” at. As used herein, “checking-in” and variants thereof should be understood as referring to the process of a user of a mobile device registering his or her physical location as being at a particular site using a social networking service. In this regard, a site is a physically distinct region associated with or otherwise corresponding to a business or another entity that a user is capable of “checking-in” at using a social networking service, such as, for example, a place of business or a point of interest.
As described in greater detail below, in accordance with one or more exemplary embodiments, the site is capable of presenting a machine-readable code, such as a quick response (QR) code or another barcode, having an encoded value that varies dynamically over time, such that the encoded value is effectively randomized. The mobile device captures a value represented by the machine-readable code at a particular instant in time and transmits, to a check-in service application executing on a server, the captured value along with a location of the mobile device determined using the global positioning system (GPS), triangulation, or another suitable positioning method. In response to receiving the device location and the captured value for the code, the check-in service application obtains a reference value for the code that was displayed at the instant in time the captured value was captured by the mobile device, and after determining whether the captured value matches the reference value, the device location is compared to a known location for the site. When the device location corresponds to the site location, the mobile device's location is verified as being at the site, thereby allowing the user to successfully check-in to the site. In this manner, the captured value for the code functions as a primary indication of the mobile device's location, while the device's location obtained using another positioning method is used secondarily to confirm or otherwise authenticate that the mobile device is at the site.
In an alternative embodiment, the mobile device presents the machine-readable code, wherein the site is configured to capture the value represented by the code on the mobile device at a particular instant in time. In response to receiving the captured value for the code, the check-in service application obtains, from the mobile device, the device's location and determines a reference value for the code that was displayed at the instant in time the captured value was captured by the site. After determining whether the captured value matches the reference value, the device location is compared to a known location for the site, and the mobile device's location is verified as being at the site when the device location corresponds to the site location, as set forth above and described in greater detail below.
In the illustrated embodiment, the input device 102 generally represents the hardware, software, firmware, or combinations thereof configured to provide a user interface with the mobile device 100. Depending on the embodiment, the input device 102 may be realized as a key pad, a keyboard, one or more buttons, a touch panel, a touchscreen, an audio input device (e.g., a microphone), or the like. The control module 114 is coupled to the input device 102 to receive input from the user of the mobile device 100 via the input device 102 and to facilitate operation of the mobile device 100 in accordance with the received user input. The barcode reader 104 is realized as a camera or other means for capturing and decoding machine-readable codes. The display device 106 is realized as an electronic display configured to graphically display information or content under control of the control module 114. Depending on the embodiment, the display device 106 may be realized as a liquid-crystal display, a light-emitting diode display, an organic light-emitting diode display, a plasma display, or another suitable electronic display. The control module 114 is coupled to the display device 106, and the control module 114 controls the display and rendering of content on the display device 106, as described in greater detail below. The communications arrangement 108 generally represents the hardware, software, firmware, or combinations thereof configured to transmit and receive incoming communications and signals directed to and from the mobile device 100 via one or more communications channels in a conventional manner. In this regard, in practice, the communications arrangement 108 may include one or more amplifiers, filters, modulators, or demodulators, digital-to-analog converters, analog-to-digital converters, mixers, antennas, and the like. The communications arrangement 108 is coupled to the control module 114, and the communications arrangement 108 and the control module 114 are cooperatively configured to support communications to and from the mobile device 100 in a conventional manner, as will be appreciated in the art.
In an exemplary embodiment, the positioning arrangement 110 represents the hardware, software, firmware, or combinations thereof configured to determine the current (or instantaneous) location of the mobile device 100. In this regard, the positioning arrangement 110 may include one or more receivers for obtaining the current location of the mobile device 100 using GPS. In other embodiments, the positioning arrangement 110 may include hardware, software, or processing logic configured to determine the current location of the mobile device 100 by performing triangulation using the location of wireless access points, cell phone towers, or the like, that the mobile device 100 is communicating with. Various methods for calculating or otherwise determining the current location of a mobile device 100 are well known, and accordingly, will not be described in detail herein.
Still referring to the exemplary embodiment of
In an exemplary embodiment, the site 204 generally represents a physically distinct region corresponding to a business or another entity that a user is capable of checking-in at using a host check-in service application provided by the server 208, such as, for example, a building (or a portion thereof), a venue, a place of business, or another facility or point of interest. In accordance with one embodiment, the site 204 has a fixed location that is stored or otherwise maintained by the server 208, as described in greater detail below. The electronic device 206 is located within the confines of the site 204 (i.e., at the site 204) and is configured to present or otherwise display a machine-readable code 212 that is representative of a site identifier and a variable code value, as described in greater detail below. For convenience, the electronic device 206 may alternatively be referred to herein as the site device. In an exemplary embodiment, the machine-readable code 212 is realized as a quick response (QR) code, however, in other embodiments, the machine-readable code 212 may be realized using another suitable barcode scheme. As described in greater detail below, the code value (or encoded value) represented by the code 212 varies dynamically, and accordingly, for convenience, the machine-readable code 212 presented by the site device 206 at the site 204 is alternatively referred to herein as a variable code. It should be appreciated that although the portions of the variable code 212 corresponding to the encoded value may vary over time, the portion of the variable code 212 corresponding to the site identifier may be fixed. In some embodiments, the site device 206 may be realized as a computer or another similar electronic device having an electronic display capable of displaying the variable code 212. In other embodiments, the site device 206 may be realized as a projector or another similar device configured to present the variable code 212 on an external display surface at the site 204, such as a projection screen, a wall, a sheet of paper, or the like.
In the illustrated embodiment, the site device 206 is communicatively coupled to the server 208 via the communications network 210, which generally represents the hardware, software, firmware, processing logic, or other infrastructure components configured to support communications between the server 208 and the electronic devices 202, 206. Depending on the embodiment, the communications network 210 may be realized as a cellular network or another suitable radio network, a computer network (e.g., a wide area network, a wireless local area network, or the like), or a combination thereof.
As described above in the context of
Still referring to
In accordance with one or more embodiments, the host check-in application being executed by the server 208 is configured to control the displayed code value for the variable code 212 at the site 204. In this regard, the host check-in application on the server 208 may periodically command, signal, or otherwise instruct the site device 206 to vary the code value represented by the variable code 212. For example, the server 208 may signal the site device 206 to change the encoded value represented by the variable code 212 every twenty seconds. In exemplary embodiments, the server 208 periodically provides random values to be encoded and represented by the variable code 212. In other embodiments, the server 208 may cause the variable code 212 to progress through a sequence of values, wherein the value encoded and represented by the variable code 212 is changed at irregular intervals.
Turning now to
Referring to
In an exemplary embodiment, the check-in process 300 continues with the host check-in service application receiving or otherwise obtaining from the mobile device 202 the location of the mobile device 202, the site identifier corresponding to the site the user is attempting to check-in at, and the captured code value for the variable code presented at the site the user is attempting to check-in at (tasks 302, 304). In this regard, the client check-in service application on the mobile device 202 obtains the most recently identified location of the mobile device 202 from the positioning arrangement 110 and transmits the mobile device's location to the host check-in service application on the server 208 along with the site identifier and captured code value. In an exemplary embodiment, the location of the mobile device 202 obtained from the positioning arrangement 110 is the current (or instantaneous) location of the mobile device 202 at substantially the same instant in time as when the variable code 212 is captured. It should be noted, however, that in some situations, the positioning arrangement 110 may be unable to determine the location of the mobile device 202 at the instant when the variable code 212 is captured (e.g., when the mobile device 202 is indoors), in which case, the positioning arrangement 110 may provide the most recently identified location of the mobile device 202 to the client check-in service application for transmission to the server 208. Further, in some implementations, the host check-in service application may reject the check-in when the obtained mobile device location was not identified or otherwise determined substantially contemporaneously to capturing the code value (e.g., when a difference between a time associated with the mobile device location and a time associated with the captured code value exceeds a threshold amount of time).
After obtaining the captured code value and the location of the mobile device 202, the check-in process 300 continues with the host check-in service application by determining a reference code value for the variable code that was presented at the site at the time when the mobile device 202 obtained the captured code value and determining whether the captured code value matches the reference code value for the site (tasks 306, 308). In this regard, the reference code value should be understood as referring to the encoded value that was displayed or otherwise represented by the variable code 212 at the site corresponding to the received site identifier at the instant in time when the mobile device obtained the captured code value. In other words, in the context of
In an exemplary embodiment, when the check-in process 300 determines that the captured code value does not match the reference code value for the site the user is attempting to check-in at, the check-in process 300 does not validate the mobile device 202 as being at the site the user is attempting to check-in at and exits (task 316). In this regard, the host check-in service application on the server 208 may reject the check-in and cause the mobile device 202 to provide graphical indication of the failed check-in to the user (e.g., by displaying a graphical indication of a failed check-in on the display device 106 within the client check-in service application).
Still referring to
After obtaining the location of the site 204, the host check-in service application determines whether the mobile device location corresponds to the site location and validates that the mobile device 202 is at the site 204 when the received device location provided by the mobile device 202 corresponds to the location of the site 204 (task 314). In an exemplary embodiment, the host check-in service application determines that the mobile device location corresponds to the site location when the mobile device location is equal to the site location or the difference between the mobile device location and the obtained site location is less than a threshold distance that indicates that the mobile device 202 is in sufficient proximity to the site 204. In this regard, the mobile device location need not identically match the site location because the captured code value matching the reference code value implicitly indicates that the mobile device 202 is at the site 204. As a result, the check-in is not rejected in situations where the positioning arrangement 110 is unable to determine the location of the mobile device 202 at the instant when the captured code value is obtained (e.g., due to the mobile device 202 being indoors). After validating that the mobile device 202 is at the site 204, the host check-in service application on the server 208 may accept the check-in from the user of the mobile device 202, cause the mobile device 202 to provide graphical indication of the successful check-in (e.g., by displaying a graphical indication of a successful check-in on the display device 106 within the client check-in service application), or take additional actions in response to the successful check-in as desired. In some embodiments, prior to accepting the check-in from the user of the mobile device 202, the host check-in service application may obtain an identifier associated with the mobile device 202 and compare the obtained mobile device identifier to a stored mobile device identifier associated with (or registered with) the user's account to ensure the mobile device 202 matches the mobile device previously associated with the user before accepting the check-in.
It should be noted that by virtue of the encoded value of the variable code 212 dynamically changing over time, and preferably randomly, the check-in process 300 is particularly useful in preventing fraudulent check-ins at the site 204 due to the difficulty in accurately determining the value of the variable code 212 at a particular instant in time without physically observing the variable code 212. Additionally, the check-in process 300 is particularly useful in urban environments where the mobile device location obtained using the positioning arrangement 110 is unreliable either due to a relatively high concentration of sites within a relatively small geographic area or an inability to determine the mobile device location with a desired level of accuracy (e.g., due to buildings and other structures interrupting signals to and from the mobile device 202 used for determining location). At the same time, the obtained mobile device location may be utilized as a safeguard to ensure that the mobile device 202 is physically located at or sufficiently near the site 204 before a check-in is accepted.
In the illustrated embodiment of
Referring now to
In an exemplary embodiment, after obtaining a captured code value for the code 412, the site device 406 transmits the captured code value, the captured device identifier, and the site identifier associated with the site 404 to the host check-in service application on the server 408. After receiving this information from the site device 406 (task 304), the host check-in service application utilizes the device identifier to contact the client check-in service application on the mobile device 402 and to obtain the location of the mobile device 402 (e.g., the location provided by positioning arrangement 110) (task 302). Additionally, the host check-in service application determines the reference code value for the code 412 at the time corresponding to the captured code value (task 306). In some embodiments, the host check-in service application determines the reference code value by contacting the client check-in service application and obtaining the random value for the code 412 that was presented by the mobile device 402 at the time corresponding to the captured code value. In this regard, the reference code value may be the encoded value currently being represented or otherwise displayed by code 412 on the mobile device 402. In other embodiments, the host check-in service application may determine the reference code value for the code 412 as the random value the host check-in service application instructed the client check-in service application to display on the mobile device 402.
After determining the reference code value for the code 412, the check-in process 300 continues with the host check-in service application determining whether the captured code value received from the site 404 matches the reference code value for the code 412 presented by the mobile device 402 (task 308). When the captured code value matches the reference code value, the host check-in service application continues by obtaining the location of the site 404, determining whether the location of the mobile device 402 corresponds to the site location, and validating the mobile device 402 as being at the site 404 when the device location corresponds to the site location, in a manner similar to that set forth above (tasks 310, 312, 314). Thus, the presence of the mobile device 402 at the site 404 may be verified or otherwise validated, and after validating that the mobile device 402 is at the site 404, the host check-in service application on the server 408 may accept the check-in from the user of the mobile device 402 and take additional actions as desired.
It should be noted that although the subject matter is described herein in the context of machine-readable codes, other technologies may be utilized to securely exchange the code values between the site and the mobile device. For example, near-field communication, radio-frequency identification, or the like may be utilized to establish a secure communications channel between the mobile device and the site that is utilized by either the mobile device or the site to obtain a current value for a variable code at an instant in time (i.e., a captured code value) that is subsequently compared to a reference value for the variable code at that instant in time to verify the mobile device's location as being at the site, as described above.
While at least one example embodiment has been presented in the foregoing detailed description, it should be appreciated that a vast number of variations exist. It should also be appreciated that the example embodiment or embodiments described herein are not intended to limit the scope, applicability, or configuration of the claimed subject matter in any way. Rather, the foregoing detailed description will provide those skilled in the art with a convenient road map for implementing the described embodiment or embodiments. It should be understood that various changes can be made in the function and arrangement of elements without departing from the scope defined by the claims, which includes known equivalents and foreseeable equivalents at the time of filing this patent application.