The present disclosure relates generally to the design of computer based hybrid applications and specifically to the design and operation of a virtual hybrid application.
Computer applications can be designed to run on various types of computational devices that are designed to connect to a communications network either wirelessly or via a wired medium. Such applications can be designed to run on mobile communication devices such smart phones and tablets computers (typically termed mobile applications) or they can be designed to run on devices that are not easily transported from place to place, such as lap top or personal computers (typically terms applications), or they can be designed to run on both types of devices. Applications that are developed to be disseminated to a wide geographic area are typically stored on a server that is connected to a network, such as the Internet, where they are available to those who wish to load the application onto their communications device. Many computer applications are designed to allow users to easily access and/or interact with third party content. This third party content can include, but is not limited to, multimedia information such as images, video and music, it can include network addresses, geographic location information or other information made available by the 3rd party to the application user. Information of interest can include airline scheduling, flight availability and ticket reservation, hotel room information and reservations, etc.
One consideration when designing a computer application is identifying the type of functionality the application will be interacting with. Depending upon the type of device capability/feature a computer application is designed to interact with, the application can be referred to as either a native application, a Web-based application or a hybrid application. A native application is designed to interact with capability that is native to a device on which the application is running, such as a camera function, GPS, accelerometer, graphics, address book and other user interface functionality that is integral to the device and driven by the device operating system. Web-based applications are designed to interact with run browser functionality or to run HTML5 applications that are opened in a browser. Hybrid applications are typically Web-based applications that are wrapped inside a thin native container, and these applications are able to interact with both native and Web-based functionality, albeit in a less than optimal manner.
Another consideration when designing computer applications is determining what operating system the application will be compatible with. Typically each manufacturer designs their device to run under the control of a particular software operating system. Among other things, an operating system generally controls functionality that is native to the communications device in which it is running. Applications designed to be compatible with one operating system will not operate properly on a device designed to run under the control of a second, different operating system. So, for example, an application designed to be compatible with Apple Computer's iOS operating system will not run correctly on a device running under the control of Google's Android operating system.
Due to the difference in programming interfaces to each operating system and depending upon its operational complexity, developing an application can be a difficult and time consuming task. In order to expedite their development, software tools are commercially available to assist with the development of computer applications. These tools are referred to as software development kits or SDKs, and SDKs are available for developing computer applications so that they are compatible with most of the operating systems running on commercially available communication devices.
The present invention can be best understood by reading the specification with reference to the following figures, in which:
While currently available software tools (SDKs) can greatly simplify the application development and deployment process, manufacturers of computational devices typically require that applications designed to run on their devices meet certain interoperation standards with respect to their operating environments (device operating systems). As such, these manufacturers typically require that before an application is made available to users, or before the manufacturer will certify whether the application is compatible with their operating environment, it is necessary for the application to be tested in the target operating environment by either the manufacturers test house or an independent testing organization certified by the manufacturer. This application certification process can take time and needlessly delay the deployment of newly developed applications. Further, in the event that a previously certified application is updated or modified in some respect, it is very often necessary to re-certify the updated version of the application before it can be distributed to users.
In light of the short comings exhibited by SDKs used to develop and deploy computer applications for operation on first party communication devices connected to a network, we have designed a virtual hybrid application platform (VHA Platform or Platform) that can be deployed on a plurality of geographically distributed communication devices that operates to support multiple instances of a third party virtual hybrid application (VHA). The Platform is certified to operate in at least one system operating environment, and modifications to the platform are made by and under the control of a single, second party organization. The VHA platform is designed to interact with a capability or feature that is native to the first party communication device and to interact with Web-based, or non-native feature, and in this regard can operate as a hybrid application/platform.
Each one of the multiple instances of a third party virtual hybrid application (VHA) can be developed and deployed using a shared, virtual hybrid application development and deployment console (Console). The Console can be located in any appropriate computational device (server for instance) which is configured to connect to a communication network and which is accessible over the network by a plurality of third party VHA developers. Each instance of a VHA is comprised of third party content, and different types of third party content implement different VHA functionality as experienced by a user of a communication device running the VHAs. This VHA functionality can be native or non-native to the device on which the VHA is running. The Console allows a third party VHA developer to create new applications and to update existing applications by merely creating and deploying their content to a user device. The Console allows third parties who have no experience with computer program languages to easily develop and to deploy their application content in a computer file that is immediately executable by the user's communication device without the need to compile the computer file.
Continuing to refer to
Each of the plurality of content provider devices 150a-150n are connected to the network 100 over respective links 151a-151n and are configured in a manner that permits a content provider to interact with the console on the server 140. Specifically, a content provider is able to connect over the network 100 with the server 140 in order to access the functionality provided by the console in order to create and edit content associated with their business, and then to publish the content over the network 100 to user devices which may either subscribe to the content or which may be interested in the content. Content in this context can include, but is not limited to, forms or applications germane to the content providers business, a listing of products or services offered by the business, an interactive voice response (IVR) or visual interactive voice response (VIVR) menu, phone number or URL content, video or audio content, or any other type of information corresponding to the content providers business. The manner in which a content provider can interact with the console to create, edit and publish content is described below with reference to
As previously described, the content creation/editing function 210 allows a 3rd party content provider to author content in any standard format that, among other things, allows embedded scripting functions, and a WYSIWYG application 211 comprising the function 210 can be employed by each 3rd party content provider to create content. Depending upon whether or not a user is expected to interact with 3rd part content and depending upon the type of interaction, 3rd party content can be created to be displayed in many different formats. Different content development tools 212 for each type of 3rd party content can be stored on the server 40 in association with the console 200, and one or more of these tools 212 can be selected by a 3rd party content provider to assist them with the creation and editing of their content. The tools 212 are created by the 2nd party using content creation and editing functionality that is appropriate to the content type, which for instance can be any well known markup language editor, such as an html editor. The tools available for use by a content provider in the content editor allow a 3rd party content provider with little or no experience in programming languages to easily create content. Alternatively, more sophisticated users can employ the same tools to create and edit more complex instances of content. In operation, when accessed by a 3rd party content provider, the WYSIWYG application 211 can prompt the 3rd party to select the type of content that they want to create, and once the content type is selected, the application 221 can operate to cause the 3rd party's computational device, 150a for instance, to display a tool, that is appropriate to the selected content type, in a browser running on the 3rd party's device. The 3rd party can then interact with the tool to add or to edit content as prompted by the tool. A tool can be in the form of a questionnaire/wizard that prompts the content provider to enter content by asking a single question or a series of questions, it can be in the form of an question tree, or any other format that allows a content provider to enter their content.
Scripting languages such as JavaScript have been developed that enable functionality to be embedded in an html file (such as 3rd party content) that a user can interact with while viewing the file in a web browser. The console editing function 210 includes pre-programmed modules that a 3rd party content provider can select from in order to embed functionality in their content. Once the content is opened in a browser, an end user is able to add information to the content (such as completing a form or questionnaire) or they can invoke native or non-native capability on their communication device by selecting a scripted field (i.e., an icon or some other image that represents scripted functionality) in the content that represents native or non-native capability. Once selected, the user is able to control their device to initiate an action. An appropriate scripting editor can be any commercially available interpreted computer programming language tool, such as a JavaScript development tool.
Once content is created by a 3rd party, this content can be stored on the server 140 and is associated with and only accessible by (according to the permission function 230) the 3rd party content provider that created it. Separate stores of the content created by each 3rd party provider are represented in
Upon publication of an instance of 3rd party content, the content information is transmitted by the console 200 over the network 100 (as dictated by publication instructions generated by the 3rd party content provider) to one or more of the end user communication devices, collectively referred to in
The virtual hybrid application platform (VHA platform) 310 is designed to support the operation of multiple instances of a virtual hybrid application (VHA) 311. In one embodiment, one or more instances of a VHA stored in module 311 can be displayed to a device 120 user as an icon, within the VHA platform 310, that distinctively identifies either the source of the content (content provider) or the type of content. In another embodiment, one or more instances of a VHA can be displayed outside the VHA platform 310, such as on a desktop or dash board, for instance. In the event that a VHA instance is displayed on a dash board, it can have information that is a pointer to a location in memory 302 where the associated content is stored. The platform 310 is designed to interact with the native capabilities 320 and the non-native capabilities 330 configured to run on the device 120, and the platform 310 is designed to interact with each instance of a virtual hybrid application (VHA) to allow the device 120 user to view and interact with 3rd party content comprising each VHA. The structure of each instance of a VHA is described later with reference to
The VHA Platform 310 has a number of component parts, each of which are implemented in computer readable code stored in memory associated with a user's communication device, such as the communication device 120 in
Each instance of a VHA 431a-431n that is stored in association with the VHA module 311 and can be comprised of a nested hierarchy of content corresponding to one particular 3rd party content provider. As previously described, this content is deployed/published to selected user communication devices by 3rd party content providers in a content message. Each selected user communication device receives the content message, and this message with the associated content (content file) is passed to a VHA management module 419 associated with the operating logic 415 running on the Platform 310. The VHA management module detects which particular 3rd party has published the content message and stores the content associated with the message in a particular VHA instance corresponding to the publishing 3rd party. The VHA management module can be implemented in any appropriate database management system, and can operate to store new 3rd party content and to update earlier versions of 3rd content that are stored in association with each VHA instance.
Returning to the operating logic 415, this logic can examine each VHA instance 431a-431n (referred to here collectively as VHA 431) in order to detect the type or types of 3rd party content comprising the VHA, and depending upon the type of content detected, the logic 415 can control capability (either native or non-native) on a user's communication device to perform an appropriate action in relation to the content. Among other things, this action can be to simply display the content, allow a user to edit the content, the action can be to initiate a phone call or internet session, or the action can be to play the content. Each VHA instance stored in the VHA module 311 can be presented in the form of an icon on the display of a user's communication device, and when a user selects/opens the icon, at least some content stored in association with the VHA instance can be viewed by the user on their device display. Depending upon the type of content that is displayed, the logic 415 can either wait for a user to interact with the content before taking any action, or after detecting that the user has selected a content type, it can generate an instruction that causes the user's device to control the operation of either a native or a non-native capability to display another layer of content, or to initiate a communication session with a remote communication device such as a legacy or IP phone or with a network server under the control of the 3rd party content provider. Depending upon the type of content selected by a user, the logic 415 can operate to cause the user's communication device to use either native or non-native capability to display another layer of content, initiate a communication session, allow the user to edit the content, play the content, or take any other action dictated by the type of content selected by the user at that time.
The operating logic 415 is comprised of several logical operating modules. It has a native/non-native capability interface module 416, a content type detection module 417, a VHA state detection/comparison module 418, and a VHA management module 419. As described earlier, the logic 415 can operate to open the content in a browser, if this is appropriate, and the user can interact with the content displayed by the browser in a manner that causes the platform to invoke a native capability (camera, calendar, contact list, etc.). For example, the user can select a function programmed into the content that causes the platform to attach a video or picture to the content, or to play music, or the user can select a phone number in the content which causes the platform to control the user's device phone capability to make a call. Or content can be selected that causes the user's device to initiate an internet session to connect with some URL to display remote content.
In operation, a user can select an icon on their communication device screen that is associated with a VHA instance 431, and the content detector 417 associated with the logic 415 determines what user device capability should be invoked to act upon the selected content. In the event that the end user selects a VHA instance in which the first level of content is text, then the detector logic 417 causes a web browser to simply display the text on the user's device display screen. Once the first level of content is displayed, the user may have the option to select some portion of the displayed content (select a field in the content) that is detected by the logic 417 and causes some other user device capability to be invoked, such as initiating a communication session, or copying an image into the first level of content. If the user selects a VHA instance in which the first level of content is something other than plain text, then some other user device capability is invoke to act upon this content (play audio, display an image, etc.).
Continuing to refer to
The general structure of each the plurality of instances of a VHA 431 are substantially the same. Each VHA instance has at least one separate instance of 3rd party content (content file) 500 that can be implemented in a standard html programming language format by, in this case, a 2nd party. As described earlier with reference to the console 200, the second party (console administrator) is in sole control over the general structure of each VHA instance and provides the programming tools necessary for a 3rd party content provider, that may not have any programming experience, to very easily create their content. Each of a plurality of the content instances, labeled type.1-type.n (with n being an integer value), comprise 3rd party content and, depending upon whether an end user can interact with the content or not, the files may or may not have functional script embedded in them. A type.1 instance of content can represent textual information that can only be viewed by the user and not interacted with. A type.2 instance of content can represent content that a user can both view and interact with, and so forth. Further, each content instance type can include instructions that cause the content to be displayed differently to the end user on their communication device. For example, content in a type 1 file can be displayed as simple, in-line text without any special structure, and type 2 content can be displayed in a tree structure, such as in a visual IVR.
Each VHA instance represents content only and does not comprise a stand-alone computer application that it able to interact with a communication device operating environment. Each VHA instance, while being directly executable by a user's communication device, only exhibits functionality that is apparent to a user when the VHA platform 310 interacts with it in some manner. A third party is able to use the console 200 to develop an instance of a VHA or to modify an existing instance of a VHA, and each instance of a VHA can have one or more different types of content, and the VHA platform 310 operates to detect the different types of content comprising each VHA instance and determine what user communication device capability is appropriate to perform some action with respect to the content.
This application claims the benefit under 35 U.S.C. §119(e) of U.S. Provisional Patent Application Ser. No. 61/891,965 entitled “VIRTUAL HYBRID APPLICATION”, filed Oct. 17, 2013, the entire contents of which is incorporated by reference.
Number | Date | Country | |
---|---|---|---|
61891965 | Oct 2013 | US |