©2018 Citifyd, Inc. A portion of the disclosure of this patent document contains material that is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever. 37 CFR § 1.71(d).
This disclosure relates to collecting and exchanging data between external hardware and a host application and, in particular, to a system for and a method of communicating information between a host application and external smart objects as authorized and controlled by a web application.
Host applications offer to users access to other applications available on a computer network. For example, a sports team organization might maintain its host application that allows attendees at a sporting event to access concessions services through a separate specialized concessions application in the form of an external (e.g., third-party maintained) native application. One objective in such an arrangement is to provide user access to an external native application, but this presents a challenge of organizing the efforts of separate application developers in a way that maintains a consistent user experience associated with the host application. The following is an example of a conventional solution formulated to attempt to meet this objective in an implementation of a vehicle parking fee payment and collection management system.
A parking fee management provider server 24 is linked by a network connection 26 and a smart object 28. (The parking fee management provider is sometimes referred to as “Citifyd” in the description and drawings.) Smart objects are physical devices, vehicles, buildings, and other items embedded with electronics, software, sensors, actuators, and network connectivity that enable the objects to collect and exchange data. Smart object 28 is a sensor in the form of a beacon that is linked by a short-range wireless connection 30 to native application 16 operating on smartphone 18. In this example, parking fee management provider server 24 and beacon 28 are components of the vehicle parking fee payment and collection management system.
A method performed by a smartphone having a processor, memory device, and multiple wireless communication signal interfaces, communicates parking access information between a host application associated with an operator of a parking area and a web application associated with a parking fee management provider. The method facilitates access, by a user carrying the smartphone, to the parking area secured by an external smart object. The smart object is controllable through operation of the web application and actuatable through wireless personal area network (WPAN) communications exchanged between the smartphone and the external smart object in response to the operation of the web application. The method includes downloading to the memory device of the smartphone a hybrid mobile application, which includes native and web application machine-readable instructions. The native application machine-readable instructions, when executed by the processor, causes it to employ the multiple wireless communication signal interfaces of the smartphone and provide native functionality of the host application. The web application machine-readable instructions, when executed by the processor, causes it to present the web application in a webview browser and simulate the native functionality of the host application. The smartphone, in response to the processor executing the native application machine-readable instructions, obtains through the multiple wireless communication signal interfaces of the smartphone the parking access information including a location of the smartphone and presence information of the external smart object. The smartphone, in response to the processor executing the web application machine-readable instructions, provides by wireless communications between the smartphone and a server hosting the web application the parking access information to the web application. And the smartphone, in response to the provision of parking access information, generates the WPAN communications to actuate the external smart object based on controls made available through the operation of the web application.
A system communicates parking access information between a host application associated with an operator of a parking area and a web application associated with a parking fee management provider. An external smart object secures the parking area. The external smart object is controllable through operation of the web application and actuatable through wireless personal area network (WPAN) communications. A mobile device has a hybrid mobile application that includes the host application and the web application functionally interacting with each other by operation of a webview browser. The hybrid mobile application includes computer code operating in the webview browser to provide a native bridge for exchanging the WPAN communications with the external smart object and obtaining parking access information from the mobile device. A server hosts the web application and facilitates access, by a user carrying the mobile device, to the parking area based on the parking access information provided through the web application.
An advantage of this architecture is that program maintenance entailing software feature changes and updates may be made to the web application exclusively, thereby necessitating no modification to the host application.
Additional aspects and advantages will be apparent from the following detailed description of embodiments, which proceeds with reference to the accompanying drawings.
With reference to
This disclosure, therefore, describes techniques to hybridize a downloadable host application to include within it a common set of non-native machine readable instructions (e.g., web application functionality) thereby allowing the host and web applications to seamlessly control parking service utilities that facilitate access to a secured parking area, all while simulating the native features and appearance of the host application. For example, the left and right sides of
Specifically,
Hybrid mobile application 106 includes a host application and a web application. In common parlance and the examples that follow, however, the terms hybrid (mobile) application and host application are used interchangeably because host application 106 is supplemented to include within it hybrid capabilities that in effect make it a hybrid application. The result is a hybrid application because, like a native application, it is packaged as a mobile application for download distribution through app stores and has access to native device application program interfaces (APIs). And unlike a pure native application, host application 106 also includes, for example, non-native layout rendering achieved via webviews instead of the platform's native UI framework. But with native functionality, host application 106 is also not a purely web-based application, as in the case of pure web applications accessible through a dedicated Internet browser. In this sense, host application 106 provides a wrapper for running web applications that access native functions through the native API capabilities.
Parking web application 102 is accessed through a webview browser (or simply, webview) 108 of hybridized host application 106 and hosted on a web server 110, which can be a standalone server or parking fee management provider server 24. In other words, webview 108 enables host application 106 and web application 102 to functionally interact with each other once web server 110 delivers the web content so as to control the vehicle parking fee payment and collection management functions accessed through hybridized host application 106 operating on smartphone 18. For example, software comprising web application 102 initiates communications between it and beacon 28. Beacon 28, together with smartphone 18, senses the presence of vehicles, as described later with reference to
Host application 106, which user 112 has downloaded to and launches from smartphone 18, represents an application of an organization such as a professional sports team that operates vehicle parking surface lot and garage facilities at the team sports venue. For example, host application 106 presents on the display screen of smartphone 18 user-operable actuators 1241, 1242, 1243, 1244, 1245, and 1246 in the form of icon images from which user 112 can select to access different computer programs. User selection of actuator 1246 accesses parking web application 102. Thus, in the example shown on the right side of
In other embodiments, such as the one shown on the left side of
Citifyd SDK framework 1301 is the web application layer for calling native functionality realized by open-source SDK framework 1302. For example, Citifyd SDK framework 1301 facilitates an authentication process (e.g., passing an authentication code of a deep link) and device-side web application processing, e.g., executing standardized web technologies—i.e., Hypertext Markup Language (HTML) version 5, Cascading Style Sheets (CSS) version 3, and JavaScript code—inside webview 108 as shown in a “WEB APP” column of
The specially developed functions include encryption, privacy keys, Bluetooth® Low-Energy (BLE) communication through a wireless communication link 134 (
Open-source SDK framework 1302 provides first wireless communication interface 138 by control of a short-range wireless radio suitable for generating wireless personal area network (WPAN) communications—e.g., BLE wireless communication technology—for establishing wireless communication link 134 (
Likewise, open-source SDK framework 1302 provides second wireless communication signal interface 140 with a navigation system (not shown), such as the global positioning system (GPS) space-based satellite network, to provide to parking fee management provider server 24 (via web application 102 of server 110) information about the location and movement of user 112 carrying smartphone 18. In this case, web application 102 includes a GPS plugin 140w (i.e., a GPS API) that calls upon GPS functions of smartphone 18 such that open-source SDK framework 1302 provides a hardware data gateway to GPS services.
Open-source SDK framework 1302 also includes proprietary provider interface 142 for reporting a proprietary code of beacon 28 and providing an authentication communications channel. A counterpart proprietary provider plugin 142w is included in web application 102.
By enabling operation of parking web application 102 on web server 110 and not on a dedicated native application for smartphone 18, the architecture implemented with host application 106 necessitates, except for basic configuration data such as an identifier for host application 106 sent by it to SDK framework 1301, no permanently (i.e., statically) installed user-facing web application 102 software in host application 106 since this software can be dynamically obtained from server 110. This flexible architecture effects a streamlined software version control because parking web application 102 is the only application needing management service when feature changes or updates are to be made.
As indicated in
The following
Third party server 156 is a host server that is responsive to host application 106 to perform vehicle access and entry management. SKIDATA Inc., Hillsborough, N.J., is one example of a third party provider of vehicle access control and revenue management solutions that operates third party server 156.
Because server 156 is controlled by an organization unaffiliated with the parking management service provider that is responsible for the operation of parking web application 102, server 24 undertakes to access authorization for user 112 through an Internet protocol communication link 158 to third party server 156. Identification and account information of user 112 and source identification information of server 24 are stored on server 156, which, upon confirmation of the information provided, returns an authentication token 160 that contains security credentials for the login session and identifying user 112 and contains other information associated with the user account. Authentication token 160 is delivered to a native user interface element (a combination of design elements, fingerprints, tokens, and buffering) of host application 106 through communication link 136 to complete the login session and enable user 112 to begin a vehicle parking transaction by interaction with webview 108.
At decision block 170, host application 106 determines whether user 112 has authentication token 160 stored in cache memory of smartphone 18. If authentication token 160 for user 112 is stored in cache memory, host application 106, at decision blocks 172, 174, and 176, determines whether user 112 has in consecutive order, respectively, verified a user telephone number, registered a vehicle, and enabled a smartphone platform (e.g., Apple® or Android®) contact or mobile wallet payment feature. If the answer is NO to any of the inquiries set out in decision blocks 172, 174, and 176, host application 106 prompts user 112 to, respectively: verify, at process block 178, a telephone number; register, at process block 180, an additional vehicle; and add, at process block 182, a payment method. After fulfillment of the payment method criterion of decision block 176, user 112 is directed to access parking web application 102, as illustrated by an event list image 184 presented by webview 108. Preparatory to presenting event list image 184, web application 102 has dynamically downloaded, based on user 112 account information, corresponding machine-readable instructions (CSS, JavaScript, and HTML) that simulates a UI of host application 106, as explained later.
If authentication token 160 for user 112 is not stored in cache memory, host application 106, at decision block 190, determines whether user 112 has established an account with the organization operating host application 106. If user 112 has no such account, host application 106, at process block 192, causes user 112 to create a host application account.
Upon either confirmation of the existence or creation of a host application account, host application 106 requests from server 24 (via server 110, if separate) authentication token 160 for access by user 112. Server 24 in turn requests over IP protocol communication link 158 authentication token 160 from server 156, which in response returns it. At process block 196, authentication token 160 is provided over Internet protocol communication link 136 to host application 106 for storage in cache memory. The login session process flow resumes at decision block 170, proceeding with the YES decision, as described above.
An alternative implementation of authentication process 150 can be carried out in system 100 in which third party server 156 is not used and parking web application 102 operates on parking fee management provider server 24, functioning as web server 110 and an authentication server. To get access authorization, user 112 launches host application 106 on smartphone 18, navigates to the screen on which the icon image of user-operable actuator 1246 appears, and selects actuator 1246 to open a login session. If no authentication token 160 is stored, host application 106 directs user 112 to log in on webview 108. Upon completion of user login, authentication token 160 received from parking fee management provider server 24 is provided to parking web application 102 and stored in cache memory of host application 106. Storage of authentication token 160 in cache memory effects a single sign-on experience for user 112, who can thereafter forgo a sign-up process for subsequent login sessions.
As indicated in
Notably,
By parsing URL content deep link 202, web application 102 is provided with information by which to automatically authenticate with server 24 (i.e., bypassing manual login) and dynamically download corresponding machine-readable instructions (CSS, JavaScript, and HTML) that simulate a UI of host application 106. For example,
For gate events,
System 100 includes a source beacon 28 and a user beacon, the latter of which is implemented in smartphone 18. In one embodiment, source beacon 28 uses BLE Generic Attribute (BLE GATT) Profile advertisement data to announce its presence to user 112. Smartphone 18 equipped with BLE capability then discovers source beacon 28 by monitoring for a specific Universally Unique Identifier (UUID) in the BLE advertisement data. Each beacon 28 transmits its identifier (e.g., a name in the form CTFxx[ID], received signal strength indication (RSSI), and other presence information. SDK framework 130 scans and obtains this information, passing it to web application 102 for processing. Web application 102 then executes JavaScript functions to determine which beacons are in range and remove ones that are no longer in range from a list of nearby detected beacons. A proximity score is calculated for beacons, and a highest proximity beacon that meets a threshold is selected and reported to server 110, which updates web application 102 to begin a gate opening process 216 (
Host application 106 operating on smartphone 18 causes it to initiate the start and the end of a parking transaction session to help reduce false positives. False positives could be caused by customers entering and exiting a parking facility without their vehicles. This is accomplished through explicit action taken on a push notification asking user 112 for further permission to act or within host application 106 itself. System 100 enables a customer to bypass infrastructures of commercial parking lots or facilities when using them.
Processors 314 (e.g., a central processing unit (CPU), a reduced instruction set computing (RISC) processor, a complex instruction set computing (CISC) processor, a graphics processing unit (GPU), a digital signal processor (DSP) such as a baseband processor, an application specific integrated circuit (ASIC), a radio-frequency integrated circuit (RFIC), another processor, or any suitable combination thereof) may include, for example, a processor 316 and a processor 318.
The memory/storage devices 320 may include main memory, disk storage, or any suitable combination thereof. The memory/storage devices 320 may include, but are not limited to, any type of volatile or non-volatile memory such as dynamic random access memory (DRAM), static random-access memory (SRAM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), Flash memory, solid-state storage, etc.
Communication resources 330 may include interconnection or network interface components or other suitable devices to communicate with one or more peripheral devices 334 or one or more databases 306 via a network 308. For example, communication resources 330 may include wired communication components (e.g., for coupling via a Universal Serial Bus (USB)), cellular communication components, NFC components, Bluetooth components (e.g., BLE), Wi-Fi components, and other communication components.
Instructions 350 may comprise software, a program, an application, an applet, an app, or other executable code for causing at least any of processors 314 to perform any one or more of the methods discussed herein. The instructions 350 may reside, completely or partially, within at least one of processors 314 (e.g., within the processor's cache memory), memory/storage devices 320, or any suitable combination thereof. Furthermore, any portion of instructions 350 may be transferred to smartphone 18 from any combination of peripheral devices 334 or databases 306. Accordingly, memory of processors 314, memory/storage devices 320, peripheral devices 334, and databases 306 are examples of computer-readable and machine-readable media.
Skilled persons will appreciate that many changes may be made to the details of the above-described embodiments without departing from the underlying principles of the invention. For example, skilled persons will appreciate that JavaScript functions shown in
This application is a continuation-in-part of International PCT Application No. PCT/US2017/057437, filed Oct. 19, 2017, which claims priority benefit of U.S. Provisional Patent Application No. 62/410,189, filed Oct. 19, 2016, which is hereby incorporated by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
62410189 | Oct 2016 | US |
Number | Date | Country | |
---|---|---|---|
Parent | PCT/US2017/057437 | Oct 2017 | US |
Child | 15956666 | US |