US11025750B2 - Determining whether to perform requests at a server or at a client device based on resources provided by the client device - Google Patents

Determining whether to perform requests at a server or at a client device based on resources provided by the client device Download PDF

Info

Publication number
US11025750B2
US11025750B2 US16/443,072 US201916443072A US11025750B2 US 11025750 B2 US11025750 B2 US 11025750B2 US 201916443072 A US201916443072 A US 201916443072A US 11025750 B2 US11025750 B2 US 11025750B2
Authority
US
United States
Prior art keywords
request
client
client device
action
server
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
US16/443,072
Other versions
US20190306278A1 (en
Inventor
Mark A. Johnson
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Oracle International Corp
Original Assignee
Oracle International Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Oracle International Corp filed Critical Oracle International Corp
Priority to US16/443,072 priority Critical patent/US11025750B2/en
Assigned to ORACLE INTERNATIONAL CORPORATION reassignment ORACLE INTERNATIONAL CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: JOHNSON, MARK A.
Publication of US20190306278A1 publication Critical patent/US20190306278A1/en
Application granted granted Critical
Publication of US11025750B2 publication Critical patent/US11025750B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • H04L67/42
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • H04L67/2819
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/564Enhancement of application control based on intercepted application data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/542Intercept

Definitions

  • the present application relates to software and more specifically to systems and methods for facilitating using features and capabilities of a client device in applications employing both client-side and server-side functionality.
  • An example embodiment described herein is implemented via software running on a client device, and enables a web application to initiate behavior in a native container application in which the web application runs.
  • the example method includes intercepting web communications initiated by a web browser control associated with the web application; analyzing a protocol scheme associated with the web communications to determine whether a request represented by an intercepted web communications is for a native action that can be performed by accompanying client device, and then selectively triggering performance of the requested action.
  • certain embodiments discussed herein provide a mechanism or method that enables a web application to initiate native device behavior while running in its host native application. This enables smooth process flow and user experience for the native device integrations with the web application.
  • FIG. 1 is a diagram of an example system for facilitating initiating behavior in a native client application from a web client application component via a custom Uniform Resource Locator (URL) scheme.
  • URL Uniform Resource Locator
  • FIG. 2 is Ping Pong diagram illustrating example communications between a web client component (e.g., web browser control), native client-side software components (e.g., browser request message interceptor).
  • a web client component e.g., web browser control
  • native client-side software components e.g., browser request message interceptor
  • FIG. 3 is a flow diagram of a first example method adapted for use with the system of FIG. 1 .
  • FIG. 4 is a diagram illustrating an example user interface display screen showing both web-client generated UI elements and native client-side elements 22 implemented via an underlying hybrid application that employs both client-side and server-side functionality.
  • FIG. 5 is a flow diagram of a second example method adapted for use with the embodiments of FIGS. 1-3 .
  • One of the challenges with conventional approaches for approaches to developing hybrid applications that employ both native functionality and web-based functionality is enabling effective communication between the hosted web application and the native container application.
  • Certain embodiments discussed herein provide a mechanism or method that enables a web application to initiate native device behavior while running in its host native application.
  • FIG. 1 For clarity, certain well-known components, such as hard drives, processors, operating systems, power supplies, routers, Internet Service Providers (ISPs), and so on, have been omitted from FIG. 1 . However, those skilled in the art with access to the present teachings will know which components to implement and how to implement them to meet the needs of a given implementation.
  • ISPs Internet Service Providers
  • FIG. 1 is a diagram of an example system 10 for facilitating initiating behavior in a native client application component 26 (also called a native application component, native component, or native client application herein) from a web client application component 32 of hybrid application 24 via a custom Uniform Resource Locator (URL) scheme for request messages output from the web client application component 32 (also simply called the web client component).
  • the hybrid application 24 is also called a native container application that contains or hosts the web application component 32 .
  • web client component also called web client application or web browser component
  • web client application may be any software component, such as a component of a hybrid application, that is adapted to communicate with a server and retrieve content therefrom.
  • a hybrid application may be any application that is adapted to communicate with a server and further includes functionality for accessing and/or using client-side resources, such as a camera, Global Positioning System (GPS) receiver, platform-specific operating system functionality, and so on.
  • client-side resources such as a camera, Global Positioning System (GPS) receiver, platform-specific operating system functionality, and so on.
  • GPS Global Positioning System
  • client-side resources also called native resources
  • functionality for accessing and/or using client-side resources is implemented via a so-called native client-side component or application (also called a native client device application), such as the native application component 26 .
  • native client-side component or application also called a native client device application
  • functionality may refer to hardware and/or software functionality, which may be any function, capability, or feature, that is provided via a computing resource, such as device hardware and/or computer code, i.e., software.
  • a computing resource such as device hardware and/or computer code, i.e., software.
  • functionality may be accessible via use of a user interface and accompanying user interface controls and features.
  • Functionality may include actions and associated capabilities, such as retrieving data pertaining to a computing object (e.g., business object); performing an enterprise-related task, such as promoting, hiring, and firing enterprise personnel, placing orders, calculating analytics, launching certain dialog boxes, performing searches, and so on.
  • An action may be any process or collection of processes or operations implemented via a computing resource, e.g., hardware and/or software. Additional examples of processes include updating or editing data in a database, retrieving GPS coordinate information from a GPS receiver, initiating a photograph via a client-side camera, triggering a refresh of a user interface display screen, calling a web service to perform another action, and so on.
  • Native content or functionality may be any client-device functionality, e.g., capabilities, data, and/or accompanying resources, that may be implemented or used via a client device, such as the client device 12 .
  • the example system 10 includes the client device 12 in communication with a server 14 , which hosts server-side software 38 .
  • the client device 12 which may be implemented as a smartphone, tablet, desktop computer, and so on, includes a client display (e.g., a touch screen, monitor, etc.) in communication with a client application 24 .
  • the client application 24 represents a hybrid application that includes the native application component 26 and the web application component 32 .
  • a client request interceptor 34 is adapted to monitor output request messages from the web application component 32 .
  • the web application component 32 which may represent a web client or browser control component, is adapted to facilitate rendering and displaying web-derived UI elements 18 , such as UI elements of a webpage (e.g., HTML content), such as URLs 20 on client display 16 .
  • the native application component 24 includes computer code for facilitating rendering and displaying native UI elements 22 via the client display 16 .
  • the native UI elements 22 and the web-derived UI elements 18 may be simultaneously displayed as part of a UI of the hybrid application 24 .
  • a UI element such as a hyperlink, button, menu item, or other user interface control
  • a user interface control may be any displayed element or component of a user interface display screen, which is adapted to enable a user to provide input, view data, and/or otherwise interact with a user interface. Additional examples of user interface controls include buttons, drop down menus, menu items, tap-and-hold functionality, and so on.
  • a user interface control signal may be any signal that is provided as input for software, wherein the input affects a user interface display screen and/or accompanying software application associated with the software.
  • a native element of a user interface display screen may be UI element, such as a UI control, whose appearance or functionality is based on one or more characteristics of the platform upon which the element is displayed.
  • a characteristic of a platform may be any software or hardware feature, set of features, or characteristics of a client device.
  • a native UI element may be generated or rendered via client-side software components.
  • the native application component 26 further includes a native behavior dispatcher 30 module in communication with one or more native container components 28 .
  • the client request interceptor 34 communicates with the web application component 32 and may receive custom URLs adapted to trigger one or more native client behaviors, i.e., actions by the client device 12 using one or more client resources, client-specific features and accompanying functionality (e.g., GPS receiver, camera, etc.).
  • a native behavior dispatcher such as the native behavior dispatcher 30
  • An action implemented via a client device and accompanying software and/or hardware resources is said to represent a native behavior.
  • client-side platform-specific actions may be called native behaviors herein.
  • the application or component that receives output from a native dispatcher 28 may be a native container application or component.
  • a native container application or component may be any software that is adapted to execute a set of commands to run another application, control hardware device, or use other client-side resources.
  • the client request interceptor 34 acts as a request message switch, forwarding URL request messages relevant to client-side functionality to the native application component 26 and passing URLs that do not request native client behaviors to the server-side software 38 . Note that depending upon the implementation, return messages from the server 14 and accompanying server-side software 38 may bypass the client request interceptor 34 . However, in certain implementations, the client request interceptor 34 may also be adapted to dispatch server-generated messages to the native application components 26 .
  • the web application component 32 responds to user selection of one of the web-derived UI elements 18 by selectively invoking client-side functionality when the selected UI element represents a request for native client-side functionality, e.g., activation of a camera or other client-specific hardware and/or software features 36 .
  • a custom URL scheme is employed by the web application component 32 to enable marking of request messages that may be suitable for invocation of client-side behaviors and actions, as discussed more fully below.
  • Web application component requests from the web application component 32 are selectively delivered to the client-side application component 26 based on the details of the request.
  • the web application component 32 is hosted within the client-side application 24 and is said to be hosted within the native hybrid client-side application 24 .
  • the UI portion 18 of the web application component 32 is rendered.
  • native UI elements 22 are rendered.
  • a button or link 20 in web application component portion 18 of the UI may be selected by a user.
  • the selected UI element will be associated with a conventional request for server-side functionality.
  • all buttons, links and other UI elements of the web application component 32 are sandboxed, such that they are limited to invoking or accessing server-side content and/or functionality.
  • the client application 24 may call one or more applicable native container components used to invoke or otherwise use native client-side functionality.
  • This use of the client request interceptor 34 and accompanying URL scheme used to modify a URL with a detectable flag or client-side indicator or marker enables use of a web application component to trigger native client-side behaviors of the client device 12 .
  • the native behavior dispatcher 30 includes computer coding for parsing received custom URLs output from the client request interceptor 34 and determining which native capability (e.g., camera, GPS receiver, data refresh, etc.) and associated action pertains to the received URL. Such information may be encoded in a portion of the URL output from the client request interceptor 34 .
  • the native container components 28 while shown included in the client application 24 , need not be included therein in all implementations.
  • the native container components 28 may represent any hardware and/or software components used to invoke, access, or otherwise control client-side functionality and associated resources for implementing an action indicated via the URL request message output from the web application component 32 and intercepted by the client request interceptor 34 .
  • FIG. 2 is a Ping Pong diagram illustrating example communications 40 between a web client component (e.g., web browser control) 32 , native client-side software components (e.g., browser request message interceptor) 34 , 30 .
  • a web client component e.g., web browser control
  • native client-side software components e.g., browser request message interceptor
  • FIG. 2 browser request messages output from the web browser control 32 are intercepted by the interceptor 34 , which evaluates the request to determine if the request matches a native behavior request format.
  • the request message matches a native behavior request format, the request is delivered to the dispatcher 30 , which determines the client-device capability requested by the request message and then dispatches the message to a handler (e.g., one of the native container components 28 of FIG. 1 ).
  • a handler e.g., one of the native container components 28 of FIG. 1 .
  • the request is transferred to the web server 14 for normal processing.
  • FIG. 3 is a flow diagram of a first example method 60 adapted for use with the system of FIG. 1 .
  • the method 60 (e.g., as implemented via software running on a client device) illustrates an example embodiment for selectively intercepting communications from a browser or web client to facilitate enabling a web application to initiate native device behavior while running within its host native application (e.g., a web browser control).
  • host native application e.g., a web browser control
  • the example method 60 includes an initial request-interception step 62 , which includes employing an interceptor to intercept web communications initiated by a web browser control hosting a web application within a native container application.
  • a subsequent message-examining step 64 includes employing the interceptor of the native container application to examine each request message of intercepted web communications to determine if a request conforms to a specific URL scheme indicating that the request is for a native behavior rather than a request to a server.
  • a subsequent protocol-checking step 66 passes control to a canceling step 68 if the protocol or other characteristic of the request message indicates that the request message is for a native client behavior or otherwise passing control to a break-checking step 76 .
  • the break-checking step 76 includes determining if a break is detected (e.g., application exit signal), and if so, the method 60 completes; otherwise control is passed back to the request-interception step 62 .
  • the canceling step 68 includes canceling or redirecting the browser request and forwarding the full request to a native application dispatcher component.
  • the native dispatcher further evaluates the request message to determine if the specific native device capability requested and the specific action related to the capability to be performed by the native container can be performed.
  • a subsequent action-checking step 72 passes control to an action step 74 if the action can be performed. Otherwise control is passed to the break-checking step 76 .
  • the action step 74 includes employing a native container to trigger performance of the action.
  • software constructed in accordance with the present embodiment enables communication between a web application hosted in a native container application (i.e., a web application container) and the native container by intercepting all web communications initiated by the web browser control hosting the web application, i.e., web client, (which are both in turn hosted by the native container application).
  • the native container examines each request to see if it conforms to a specific Uniform Resource Locator (URL) scheme indicating that the request is for a native behavior rather than a request to a server.
  • URL Uniform Resource Locator
  • the browser request is cancelled and the full request URL is forwarded to a native action dispatcher component.
  • the native dispatcher component further evaluates the request to determine the specific native device capability (i.e., camera, GPS, etc . . . ) requested and the specific action related to the capability to be performed by the native container can be performed.
  • the native container then performs the requested action.
  • Contextual information relevant to the action to be performed can be passed as part of the request via traditional URL parameters
  • a web application container may be a native application that is adapted to process function calls and/or other communications from a web application such as a web client, i.e., browser component.
  • action specifies what should be done by/to the capability (i.e. enable, open camera, etc. . . . ), and
  • An example custom URL is as follows:
  • this embodiment enables a web application to initiate behavior in a native container application hosting the web application, which facilitates efficient process flow and user experience for the native device integrations with web applications.
  • FIG. 4 is a diagram illustrating an example user interface display screen 80 presented on a client display 16 (e.g., a touch screen display showing both web-client generated UI elements 20 in a web client UI section 82 and native client-side elements 22 implemented via an underlying hybrid application that employs both client-side and server-side functionality).
  • a client display 16 e.g., a touch screen display showing both web-client generated UI elements 20 in a web client UI section 82 and native client-side elements 22 implemented via an underlying hybrid application that employs both client-side and server-side functionality.
  • the example URLs 20 include a hyperlink that is adapted to activate a client-side camera. User selection of the “activate camera” link may trigger generation of a custom URL that is intercepted, and the associated request encoded in the URL is handled locally on the client 12 .
  • FIG. 5 is a flow diagram of a second more generalized example method 110 adapted for use with the embodiments of FIGS. 1-3 .
  • the method 110 is adapted to facilitate native client device application interaction with a web application.
  • the method 110 includes a first step 112 , which involves monitoring request messages output from the web application.
  • a second step 114 includes determining if one or more of the request messages include an indication that the one or more request messages represent a request to implement an action that can be performed via one or more resources of a client device, and providing a signal in response thereto.
  • a third step 116 includes implementing the action in response to the signal.
  • the second step 114 may further include employing a client request interceptor in communication with the web application, where the client request interceptor is adapted to forward requests determined thereby to be requests for native content or functionality.
  • the method 110 may further include employing a marker in a Uniform Resource Locator (URL) of the one or more request messages to determine if a request is for native content or functionality.
  • URL Uniform Resource Locator
  • the third step 116 may further include sending a request for native content or functionality to a native behavior dispatcher, and then employing the native behavior dispatcher to deliver instructions to a native container application or component thereof to implement an action associated with the native component or functionality.
  • the action may include, for example, using a Global Positioning System (GPS) receiver of the client device.
  • GPS Global Positioning System
  • Another similar method includes employing a web application to initiate behavior in a native container application in which the web application runs by intercepting web communications initiated by a web browser control associated with the web application; analyzing a protocol scheme associated with the web communications to determine whether a request represented by an intercepted web communication is for a native action that can be performed by accompanying client device; and selectively triggering performance of the requested action in response to the step of analyzing.
  • ⁇ scheme> contains instructions for a container application that hosts the web application to interpret an intercepted request as a native operation
  • ⁇ capability> specifies which type of native behavior a function call associated with the request is requesting
  • ⁇ action> specifies what is to be performed by a capability specified by ⁇ capability>
  • ⁇ context-params> specifies any contextual information pertaining to the action.
  • routines of particular embodiments including C, C++, Java, assembly language, etc.
  • Different programming techniques can be employed such as procedural or object oriented.
  • the routines can execute on a single processing device or multiple processors. Although the steps, operations, or computations may be presented in a specific order, this order may be changed in different particular embodiments. In some particular embodiments, multiple steps shown as sequential in this specification can be performed at the same time.
  • Particular embodiments may be implemented in a computer-readable storage medium for use by or in connection with the instruction execution system, apparatus, system, or device.
  • Particular embodiments can be implemented in the form of control logic in software or hardware or a combination of both.
  • the control logic when executed by one or more processors, may be operable to perform that which is described in particular embodiments.
  • Particular embodiments may be implemented by using a programmed general purpose digital computer, by using application specific integrated circuits, programmable logic devices, field programmable gate arrays, optical, chemical, biological, quantum or nanoengineered systems, components and mechanisms may be used.
  • the functions of particular embodiments can be achieved by any means as is known in the art.
  • Distributed, networked systems, components, and/or circuits can be used.
  • Communication, or transfer, of data may be wired, wireless, or by any other means.

Abstract

An accessed indicator is encoded in a uniform resource locator (URL) of a first request message, for a first action, to determine if a first request is for a native behavior that provides client-side platform specific actions implemented by the client device that has client-side resources instead of a server in communication with the client device. The first request message represents the first request to access the native behavior. The first action is implemented using a client-side resource of the client device without transmitting the first request from the client device to the server that the first request was originally destined for. A second request message with a second request specifying a second action is intercepted. It is determined that the second action cannot be performed by any of the client-side resources of the client device. The second request specifying the second action is transmitted from the client device to the server. A response is received from the server for the performed second action.

Description

CROSS REFERENCES TO RELATED APPLICATIONS
This application is a continuation of the following application, U.S. patent application Ser. No. 15/610,302 entitled MECHANISM FOR DETERMINING WHETHER TO REDIRECT A REQUEST ORIGINALLY DESTINED FOR A SERVER BASED ON A UNIFORM RESOURCE LOCATOR filed May 31, 2017 which is a continuation of U.S. Pat. No. 9,699,272 issued on Jul. 4, 2017, application Ser. No. 13/842,778, entitled A MECHANISM FOR INITIATING BEHAVIOR IN A NATIVE CLIENT APPLICATION FROM A WEB CLIENT APPLICATION VIA A CUSTOM URL SCHEME, which claims priority from U.S. Provisional Patent Application Ser. No. 61/707,930, entitled A MECHANISM FOR INITIATING BEHAVIOR IN A NATIVE CLIENT APPLICATION FROM A WEB CLIENT APPLICATION VIA A CUSTOM URL SCHEME, filed on Sep. 29, 2012, which are all hereby incorporated by reference as if set forth in full in this application for all purposes.
BACKGROUND
The present application relates to software and more specifically to systems and methods for facilitating using features and capabilities of a client device in applications employing both client-side and server-side functionality.
Software applications that employ both server-side and client-side functionality are employed in various demanding applications, including mobile enterprise applications that selectively access sever-side or cloud based functionality.
The rise in popularity of mobile devices and the higher expectations regarding user experience on such devices has led to resurgence in popularity of native client applications to interact with web-based, i.e., server-side, applications. This has increased the demand for applications that can use native device features, such as a camera, Global Positioning System (GPS) receiver, and so on, in combination with cloud-based services. However, such applications may be inhibited by an inherent lack of effective messaging schemes and mechanisms for enabling efficient interaction between web applications and accompanying native container applications used to access native device features.
SUMMARY
An example embodiment described herein is implemented via software running on a client device, and enables a web application to initiate behavior in a native container application in which the web application runs. The example method includes intercepting web communications initiated by a web browser control associated with the web application; analyzing a protocol scheme associated with the web communications to determine whether a request represented by an intercepted web communications is for a native action that can be performed by accompanying client device, and then selectively triggering performance of the requested action.
Hence, certain embodiments discussed herein provide a mechanism or method that enables a web application to initiate native device behavior while running in its host native application. This enables smooth process flow and user experience for the native device integrations with the web application.
A further understanding of the nature and the advantages of particular embodiments disclosed herein may be realized by reference of the remaining portions of the specification and the attached drawings.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a diagram of an example system for facilitating initiating behavior in a native client application from a web client application component via a custom Uniform Resource Locator (URL) scheme.
FIG. 2 is Ping Pong diagram illustrating example communications between a web client component (e.g., web browser control), native client-side software components (e.g., browser request message interceptor).
FIG. 3 is a flow diagram of a first example method adapted for use with the system of FIG. 1.
FIG. 4 is a diagram illustrating an example user interface display screen showing both web-client generated UI elements and native client-side elements 22 implemented via an underlying hybrid application that employs both client-side and server-side functionality.
FIG. 5 is a flow diagram of a second example method adapted for use with the embodiments of FIGS. 1-3.
DETAILED DESCRIPTION OF EMBODIMENTS
One of the challenges with conventional approaches for approaches to developing hybrid applications that employ both native functionality and web-based functionality (e.g., as provided by one or more web services, websites, etc.) is enabling effective communication between the hosted web application and the native container application. Certain embodiments discussed herein provide a mechanism or method that enables a web application to initiate native device behavior while running in its host native application.
For clarity, certain well-known components, such as hard drives, processors, operating systems, power supplies, routers, Internet Service Providers (ISPs), and so on, have been omitted from FIG. 1. However, those skilled in the art with access to the present teachings will know which components to implement and how to implement them to meet the needs of a given implementation.
FIG. 1 is a diagram of an example system 10 for facilitating initiating behavior in a native client application component 26 (also called a native application component, native component, or native client application herein) from a web client application component 32 of hybrid application 24 via a custom Uniform Resource Locator (URL) scheme for request messages output from the web client application component 32 (also simply called the web client component). The hybrid application 24 is also called a native container application that contains or hosts the web application component 32.
For the purposes of the present discussion, web client component (also called web client application or web browser component) may be any software component, such as a component of a hybrid application, that is adapted to communicate with a server and retrieve content therefrom.
A hybrid application may be any application that is adapted to communicate with a server and further includes functionality for accessing and/or using client-side resources, such as a camera, Global Positioning System (GPS) receiver, platform-specific operating system functionality, and so on.
Functionality for accessing and/or using client-side resources, also called native resources, is implemented via a so-called native client-side component or application (also called a native client device application), such as the native application component 26.
The term functionality, as used herein, may refer to hardware and/or software functionality, which may be any function, capability, or feature, that is provided via a computing resource, such as device hardware and/or computer code, i.e., software. Generally, functionality may be accessible via use of a user interface and accompanying user interface controls and features. Functionality may include actions and associated capabilities, such as retrieving data pertaining to a computing object (e.g., business object); performing an enterprise-related task, such as promoting, hiring, and firing enterprise personnel, placing orders, calculating analytics, launching certain dialog boxes, performing searches, and so on.
An action may be any process or collection of processes or operations implemented via a computing resource, e.g., hardware and/or software. Additional examples of processes include updating or editing data in a database, retrieving GPS coordinate information from a GPS receiver, initiating a photograph via a client-side camera, triggering a refresh of a user interface display screen, calling a web service to perform another action, and so on.
Native content or functionality may be any client-device functionality, e.g., capabilities, data, and/or accompanying resources, that may be implemented or used via a client device, such as the client device 12.
The example system 10 includes the client device 12 in communication with a server 14, which hosts server-side software 38. The client device 12, which may be implemented as a smartphone, tablet, desktop computer, and so on, includes a client display (e.g., a touch screen, monitor, etc.) in communication with a client application 24.
The client application 24 represents a hybrid application that includes the native application component 26 and the web application component 32. A client request interceptor 34 is adapted to monitor output request messages from the web application component 32. The web application component 32, which may represent a web client or browser control component, is adapted to facilitate rendering and displaying web-derived UI elements 18, such as UI elements of a webpage (e.g., HTML content), such as URLs 20 on client display 16.
The native application component 24 includes computer code for facilitating rendering and displaying native UI elements 22 via the client display 16. The native UI elements 22 and the web-derived UI elements 18 may be simultaneously displayed as part of a UI of the hybrid application 24.
For the purposes of the present discussion, a UI element, such as a hyperlink, button, menu item, or other user interface control, may be any graphical depiction of a user interface section, portion, or feature, such as a user interface control. A user interface control may be any displayed element or component of a user interface display screen, which is adapted to enable a user to provide input, view data, and/or otherwise interact with a user interface. Additional examples of user interface controls include buttons, drop down menus, menu items, tap-and-hold functionality, and so on. Similarly, a user interface control signal may be any signal that is provided as input for software, wherein the input affects a user interface display screen and/or accompanying software application associated with the software.
A native element of a user interface display screen (also called a native UI element) may be UI element, such as a UI control, whose appearance or functionality is based on one or more characteristics of the platform upon which the element is displayed. A characteristic of a platform may be any software or hardware feature, set of features, or characteristics of a client device. Generally, a native UI element may be generated or rendered via client-side software components.
The native application component 26 further includes a native behavior dispatcher 30 module in communication with one or more native container components 28. The client request interceptor 34 communicates with the web application component 32 and may receive custom URLs adapted to trigger one or more native client behaviors, i.e., actions by the client device 12 using one or more client resources, client-specific features and accompanying functionality (e.g., GPS receiver, camera, etc.).
For the purposes of the present discussion, a native behavior dispatcher, such as the native behavior dispatcher 30, may be any software and/or hardware that is adapted to facilitate delivering a message to an application or component thereof (e.g., the native container component(s) 28) for implementing an action specified by the message via one or more resources of a client device. An action implemented via a client device and accompanying software and/or hardware resources is said to represent a native behavior. Hence, client-side platform-specific actions may be called native behaviors herein.
The application or component that receives output from a native dispatcher 28 may be a native container application or component. A native container application or component may be any software that is adapted to execute a set of commands to run another application, control hardware device, or use other client-side resources.
The client request interceptor 34 acts as a request message switch, forwarding URL request messages relevant to client-side functionality to the native application component 26 and passing URLs that do not request native client behaviors to the server-side software 38. Note that depending upon the implementation, return messages from the server 14 and accompanying server-side software 38 may bypass the client request interceptor 34. However, in certain implementations, the client request interceptor 34 may also be adapted to dispatch server-generated messages to the native application components 26.
In an example operative scenario, the web application component 32 responds to user selection of one of the web-derived UI elements 18 by selectively invoking client-side functionality when the selected UI element represents a request for native client-side functionality, e.g., activation of a camera or other client-specific hardware and/or software features 36.
A custom URL scheme is employed by the web application component 32 to enable marking of request messages that may be suitable for invocation of client-side behaviors and actions, as discussed more fully below.
Web application component requests from the web application component 32 are selectively delivered to the client-side application component 26 based on the details of the request.
Note that the web application component 32 is hosted within the client-side application 24 and is said to be hosted within the native hybrid client-side application 24.
Through part of the UI of the client display 16, the UI portion 18 of the web application component 32 is rendered. In another part of the UI of the client application 24 displayed on the client display 16, native UI elements 22 are rendered.
A button or link 20 in web application component portion 18 of the UI may be selected by a user. In certain instances, the selected UI element will be associated with a conventional request for server-side functionality. Conventionally, all buttons, links and other UI elements of the web application component 32 are sandboxed, such that they are limited to invoking or accessing server-side content and/or functionality.
However, in the present example embodiment, set forth above, in cases where the selected UI element represents a request that can be handled by client-side functionality, the client application 24 may call one or more applicable native container components used to invoke or otherwise use native client-side functionality.
This use of the client request interceptor 34 and accompanying URL scheme used to modify a URL with a detectable flag or client-side indicator or marker enables use of a web application component to trigger native client-side behaviors of the client device 12.
The native behavior dispatcher 30 includes computer coding for parsing received custom URLs output from the client request interceptor 34 and determining which native capability (e.g., camera, GPS receiver, data refresh, etc.) and associated action pertains to the received URL. Such information may be encoded in a portion of the URL output from the client request interceptor 34.
Those skilled in the art with access to the present teachings may readily modify URLs and associated messages to create flags or markers to implement embodiments discussed herein, without undue experimentation.
The native container components 28, while shown included in the client application 24, need not be included therein in all implementations. In general, the native container components 28 may represent any hardware and/or software components used to invoke, access, or otherwise control client-side functionality and associated resources for implementing an action indicated via the URL request message output from the web application component 32 and intercepted by the client request interceptor 34.
FIG. 2 is a Ping Pong diagram illustrating example communications 40 between a web client component (e.g., web browser control) 32, native client-side software components (e.g., browser request message interceptor) 34, 30. With reference to FIG. 2, browser request messages output from the web browser control 32 are intercepted by the interceptor 34, which evaluates the request to determine if the request matches a native behavior request format.
If the request message matches a native behavior request format, the request is delivered to the dispatcher 30, which determines the client-device capability requested by the request message and then dispatches the message to a handler (e.g., one of the native container components 28 of FIG. 1).
If the intercepted request message does not match the native behavior request format, the request is transferred to the web server 14 for normal processing.
FIG. 3 is a flow diagram of a first example method 60 adapted for use with the system of FIG. 1. The method 60 (e.g., as implemented via software running on a client device) illustrates an example embodiment for selectively intercepting communications from a browser or web client to facilitate enabling a web application to initiate native device behavior while running within its host native application (e.g., a web browser control).
The example method 60 includes an initial request-interception step 62, which includes employing an interceptor to intercept web communications initiated by a web browser control hosting a web application within a native container application.
A subsequent message-examining step 64 includes employing the interceptor of the native container application to examine each request message of intercepted web communications to determine if a request conforms to a specific URL scheme indicating that the request is for a native behavior rather than a request to a server.
A subsequent protocol-checking step 66 passes control to a canceling step 68 if the protocol or other characteristic of the request message indicates that the request message is for a native client behavior or otherwise passing control to a break-checking step 76. The break-checking step 76 includes determining if a break is detected (e.g., application exit signal), and if so, the method 60 completes; otherwise control is passed back to the request-interception step 62.
The canceling step 68 includes canceling or redirecting the browser request and forwarding the full request to a native application dispatcher component.
In a subsequent evaluation step 70, the native dispatcher further evaluates the request message to determine if the specific native device capability requested and the specific action related to the capability to be performed by the native container can be performed.
A subsequent action-checking step 72 passes control to an action step 74 if the action can be performed. Otherwise control is passed to the break-checking step 76. The action step 74 includes employing a native container to trigger performance of the action.
In summary, software constructed in accordance with the present embodiment enables communication between a web application hosted in a native container application (i.e., a web application container) and the native container by intercepting all web communications initiated by the web browser control hosting the web application, i.e., web client, (which are both in turn hosted by the native container application). Within an interceptor, the native container examines each request to see if it conforms to a specific Uniform Resource Locator (URL) scheme indicating that the request is for a native behavior rather than a request to a server.
If the protocol scheme of the request indicates that the request is for native behavior, the browser request is cancelled and the full request URL is forwarded to a native action dispatcher component. The native dispatcher component further evaluates the request to determine the specific native device capability (i.e., camera, GPS, etc . . . ) requested and the specific action related to the capability to be performed by the native container can be performed. The native container then performs the requested action. Contextual information relevant to the action to be performed can be passed as part of the request via traditional URL parameters
For the purposes of the present discussion, a web application container may be a native application that is adapted to process function calls and/or other communications from a web application such as a web client, i.e., browser component.
An example custom URL Scheme specification is as follows:
<scheme>://<capability>/<action>?<context-params>
wherein:
scheme—instructs the container to interpret the request as a native operation;
capability—specifies which type of native behavior the call is requesting (i.e. camera, accelerometer, etc. . . . );
action—specifies what should be done by/to the capability (i.e. enable, open camera, etc. . . . ), and
context-params—specifies any contextual information relevant to the action (key=value pairs separated by ‘&’),
An example custom URL is as follows:
native://camera/enable?param1=true&m2=false&m3=‘test’&m4=1234
Hence, this embodiment enables a web application to initiate behavior in a native container application hosting the web application, which facilitates efficient process flow and user experience for the native device integrations with web applications.
FIG. 4 is a diagram illustrating an example user interface display screen 80 presented on a client display 16 (e.g., a touch screen display showing both web-client generated UI elements 20 in a web client UI section 82 and native client-side elements 22 implemented via an underlying hybrid application that employs both client-side and server-side functionality).
The example URLs 20 include a hyperlink that is adapted to activate a client-side camera. User selection of the “activate camera” link may trigger generation of a custom URL that is intercepted, and the associated request encoded in the URL is handled locally on the client 12.
FIG. 5 is a flow diagram of a second more generalized example method 110 adapted for use with the embodiments of FIGS. 1-3. The method 110 is adapted to facilitate native client device application interaction with a web application. The method 110 includes a first step 112, which involves monitoring request messages output from the web application.
A second step 114 includes determining if one or more of the request messages include an indication that the one or more request messages represent a request to implement an action that can be performed via one or more resources of a client device, and providing a signal in response thereto.
A third step 116 includes implementing the action in response to the signal.
Note that the method 110 may be augmented or otherwise adjusted without departing from the scope of the present teachings. For example, the second step 114 may further include employing a client request interceptor in communication with the web application, where the client request interceptor is adapted to forward requests determined thereby to be requests for native content or functionality.
The method 110 may further include employing a marker in a Uniform Resource Locator (URL) of the one or more request messages to determine if a request is for native content or functionality.
The third step 116 may further include sending a request for native content or functionality to a native behavior dispatcher, and then employing the native behavior dispatcher to deliver instructions to a native container application or component thereof to implement an action associated with the native component or functionality. The action may include, for example, using a Global Positioning System (GPS) receiver of the client device.
Another similar method includes employing a web application to initiate behavior in a native container application in which the web application runs by intercepting web communications initiated by a web browser control associated with the web application; analyzing a protocol scheme associated with the web communications to determine whether a request represented by an intercepted web communication is for a native action that can be performed by accompanying client device; and selectively triggering performance of the requested action in response to the step of analyzing.
As set forth above, the scheme may be characterized by the following specification:
<scheme>://<capability>/<action>?<context-params>
where <scheme> contains instructions for a container application that hosts the web application to interpret an intercepted request as a native operation; <capability> specifies which type of native behavior a function call associated with the request is requesting; <action> specifies what is to be performed by a capability specified by <capability>; and <context-params> specifies any contextual information pertaining to the action.
Although the description has been described with respect to particular embodiments thereof, these particular embodiments are merely illustrative, and not restrictive. For example, while certain embodiments discussed herein generally employ a web application hosted in a native container application and is adapted to facilitate intercommunications therebetween, embodiments are not limited thereto. For example, applications that employ a hybrid of client-side resources, e.g., hardware and/or software functionality that do not host web browsers in a native container application may still use embodiments discussed herein to direct relevant messages output from a web client to client-side software components to facilitate platform-specific processing and actions, without departing from the scope of the present teachings.
Any suitable programming language can be used to implement the routines of particular embodiments including C, C++, Java, assembly language, etc. Different programming techniques can be employed such as procedural or object oriented. The routines can execute on a single processing device or multiple processors. Although the steps, operations, or computations may be presented in a specific order, this order may be changed in different particular embodiments. In some particular embodiments, multiple steps shown as sequential in this specification can be performed at the same time.
Particular embodiments may be implemented in a computer-readable storage medium for use by or in connection with the instruction execution system, apparatus, system, or device. Particular embodiments can be implemented in the form of control logic in software or hardware or a combination of both. The control logic, when executed by one or more processors, may be operable to perform that which is described in particular embodiments.
Particular embodiments may be implemented by using a programmed general purpose digital computer, by using application specific integrated circuits, programmable logic devices, field programmable gate arrays, optical, chemical, biological, quantum or nanoengineered systems, components and mechanisms may be used. In general, the functions of particular embodiments can be achieved by any means as is known in the art. Distributed, networked systems, components, and/or circuits can be used. Communication, or transfer, of data may be wired, wireless, or by any other means.
It will also be appreciated that one or more of the elements depicted in the drawings/figures can also be implemented in a more separated or integrated manner, or even removed or rendered as inoperable in certain cases, as is useful in accordance with a particular application. It is also within the spirit and scope to implement a program or code that can be stored in a machine-readable medium to permit a computer to perform any of the methods described above.
As used in the description herein and throughout the claims that follow, “a”, “an”, and “the” includes plural references unless the context clearly dictates otherwise. Also, as used in the description herein and throughout the claims that follow, the meaning of “in” includes “in” and “on” unless the context clearly dictates otherwise.
Thus, while particular embodiments have been described herein, latitudes of modification, various changes, and substitutions are intended in the foregoing disclosures, and it will be appreciated that in some instances some features of particular embodiments will be employed without a corresponding use of other features without departing from the scope and spirit as set forth. Therefore, many modifications may be made to adapt a particular situation or material to the essential scope and spirit.

Claims (20)

I claim:
1. A method comprising:
monitoring, performed by one or more processors of a client device, one or more request messages from a first web application component, wherein the one or more request messages are destined for a server in communication with the client device;
accessing, performed by the one or more processors, an indicator in a first request message of the one or more request messages, wherein the indicator is encoded in a uniform resource locator (URL) of the first request message to determine if a first request is for a native behavior that provides client-side platform specific actions implemented by the client device that has client-side resources;
determining, performed by the one or more processors, from the indicator in the first request message, that the first request message is for a first action that can be performed by a client-side resource of the client device, wherein the determining further comprises determining that the first request message represents the first request to access the native behavior;
in response to the determining, implementing, performed by the one or more processors, the first action by using the client-side resource of the client device without transmitting the first request from the client device to the server that the first request was originally destined for;
intercepting, performed by the one or more processors, a second request message with a second request specifying a second action;
determining, performed by the one or more processors, that the second action cannot be performed by any of the client-side resources of the client device;
transmitting the second request specifying the second action from the client device to the server; and
receiving, performed by the one or more processors, a response from the server for the performed second action.
2. The method as recited by claim 1, wherein the method further comprises generating one or more request message output from the first web application component in response to user selection of a user interface (UI), wherein the UI includes a UI element derived from a component retrieved from the server by the first web application component.
3. The method as recited by claim 1, wherein the method further comprises:
canceling transmission of the first request to the server; and
redirecting the first request to a native application dispatcher component of the client device.
4. The method as recited by claim 1, wherein the method further comprises:
intercepting the first request message;
determining that the first action specified by the first request message can be performed by the client-side resource of the client device; and
encoding the URL with the indicator indicating that the first action can be performed by the client-side resource of the client device instead of being performed by a resource associated with the server.
5. The method of claim 4, wherein the determining from the indicator in the first request message, that the first request message is for the first action that can be performed by the client-side resource of the client device further includes:
determining that the first request for the first action matches a native behavior request format of the client device rather than a format for the server.
6. The method as recited by claim 1, wherein the determining that the second request cannot be performed by any client-side resources of the client device further includes:
determining that the second request does not match a native behavior request format of the client device.
7. The method as recited by claim 1, wherein the method further comprises:
transmitting the second request from a client request interceptor to the server;
receiving, at the client request interceptor, the second response to the second request from the server; and
forwarding the response from the client request interceptor to a native application component of the client device.
8. The method as recited by claim 1, wherein the method further comprises:
transmitting the second request from a client request interceptor to the server; and
receiving, at a native application component of the client, the response to the second request from the server, wherein the client request interceptor is bypassed.
9. The method as recited by claim 1, wherein the first action is a process of the client-side resource.
10. The method as recited by claim 9, wherein the client-side resource includes one or more of hardware and software.
11. The method as recited by claim 9, wherein the process includes updating or editing data in a database, retrieving global positioning system (GPS) coordinate information from a GPS receiver, initiating a photograph via a client-side camera of the client device, triggering a refresh of a user interface display screen, and calling a web service to perform another action.
12. The method as recited by claim 1, further comprising:
employing, performed by the one or more processors, a second web application component to initiate behavior in a native container application that the second web application component runs in.
13. The method as recited by claim 12, wherein the first request message is a web communication and the method further comprising:
intercepting the web communication initiated by a web browser control associated with the second web application component;
analyzing a protocol scheme associated with the web communication to determine whether the first action associated with the first request can be performed by the client device; and
determining, based on the protocol scheme, whether any client-side resources of the client device can perform the first action.
14. The method as recited by claim 13, wherein the protocol schema is characterized by:
<scheme>://<capability>/<action>?<context-params>
where <scheme> contains instructions for a container application that hosts the second web application component to interpret an intercepted request as a native operation; <capability> specifies which type of native behavior a function call associated with the request is requesting; <action> specifies what is to be performed by a capability specified by <capability>; and <context-params> specifies any contextual information pertaining to the action.
15. The method as recited by claim 13, wherein the method further comprises:
providing the protocol scheme that includes a scheme parameter, a capability parameter, an action parameter, and a context parameter, wherein the scheme parameter contains instructions for a container application that hosts the second web application component to interpret an intercepted request as a native operation, the capability parameter specifies which type of native behavior a function call associated with the intercepted request is requesting, an action parameter specifies what action is to be performed by a capability specified by the capability parameter, and a context parameter specifies any contextual information pertaining to the first action specified by the action parameter.
16. The method as recited by claim 1, wherein the method further comprises:
receiving a signal indicating a user selected a user interface (UI) element associated with a server request for server-side functionality of the server; and
determining that the server request can be performed by the client device instead of the server.
17. The method as recited by claim 16, wherein the method further comprises:
modifying a URL of the server request with a client-side indicator that is detectable; and
triggering client-side behavior of the client device based on the modified URL.
18. The method as recited by claim 17, wherein the method further comprises:
parsing the modified URL of the server request; and
determining which native capability of the client device can satisfy the server request.
19. An apparatus comprising:
a digital processor coupled to a display and to a non-transitory processor-readable storage device, wherein the non-transitory processor-readable storage device includes one or more instructions executable by the digital processor to perform operations comprising:
monitoring, performed by one or more processors of a client device, one or more request messages from a first web application component, wherein the one or more request messages are destined for a server in communication with the client device;
accessing, performed by the one or more processors, an indicator in a first request message of the one or more request messages, wherein the indicator is encoded in a uniform resource locator (URL) of the first request message to determine if a first request is for a native behavior that provides client-side platform specific actions implemented by the client device that has client-side resources;
determining, performed by the one or more processors, from the indicator in the first request message, that the first request message is for a first action that can be performed by a client-side resource of the client device, wherein the determining further comprises determining that the first request message represents the first request to access the native behavior;
in response to the determining, implementing, performed by the one or more processors, the first action by using the client-side resource of the client device without transmitting the first request from the client device to the server that the first request was originally destined for;
intercepting, performed by the one or more processors, a second request message with a second request specifying a second action;
determining, performed by the one or more processors, that the second action cannot be performed by any of the client-side resources of the client device;
transmitting the second request specifying the second action from the client device to the server; and
receiving, performed by the one or more processors, a response from the server for the performed second action.
20. A non-transitory processor-readable storage device including a memory, and instructions executable by one or more digital processors a client device, the processor-readable storage device including one or more instructions for a method comprising:
monitoring, performed by one or more processors of a client device, one or more request messages from a first web application component, wherein the one or more request messages are destined for a server in communication with the client device;
accessing, performed by the one or more processors, an indicator in a first request message of the one or more request messages, wherein the indicator is encoded in a uniform resource locator (URL) of the first request message to determine if a first request is for a native behavior that provides client-side platform specific actions implemented by the client device that has client-side resources;
determining, performed by the one or more processors, from the indicator in the first request message, that the first request message is for a first action that can be performed by a client-side resource of the client device, wherein the determining further comprises determining that the first request message represents the first request to access the native behavior;
in response to the determining, implementing, performed by the one or more processors, the first action by using the client-side resource of the client device without transmitting the first request from the client device to the server that the first request was originally destined for;
intercepting, performed by the one or more processors, a second request message with a second request specifying a second action;
determining, performed by the one or more processors, that the second action cannot be performed by any of the client-side resources of the client device;
transmitting the second request specifying the second action from the client device to the server; and
receiving, performed by the one or more processors, a response from the server for the performed second action.
US16/443,072 2012-09-29 2019-06-17 Determining whether to perform requests at a server or at a client device based on resources provided by the client device Active US11025750B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US16/443,072 US11025750B2 (en) 2012-09-29 2019-06-17 Determining whether to perform requests at a server or at a client device based on resources provided by the client device

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201261707930P 2012-09-29 2012-09-29
US13/842,778 US9699272B2 (en) 2012-09-29 2013-03-15 Mechanism for initiating behavior in a native client application from a web client application via a custom URL scheme
US15/610,302 US10367920B2 (en) 2012-09-29 2017-05-31 Mechanism for determining whether to redirect a request originally destined for a server based on a uniform resource locator
US16/443,072 US11025750B2 (en) 2012-09-29 2019-06-17 Determining whether to perform requests at a server or at a client device based on resources provided by the client device

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US15/610,302 Continuation US10367920B2 (en) 2012-09-29 2017-05-31 Mechanism for determining whether to redirect a request originally destined for a server based on a uniform resource locator

Publications (2)

Publication Number Publication Date
US20190306278A1 US20190306278A1 (en) 2019-10-03
US11025750B2 true US11025750B2 (en) 2021-06-01

Family

ID=50386245

Family Applications (3)

Application Number Title Priority Date Filing Date
US13/842,778 Active 2034-11-22 US9699272B2 (en) 2012-09-29 2013-03-15 Mechanism for initiating behavior in a native client application from a web client application via a custom URL scheme
US15/610,302 Active US10367920B2 (en) 2012-09-29 2017-05-31 Mechanism for determining whether to redirect a request originally destined for a server based on a uniform resource locator
US16/443,072 Active US11025750B2 (en) 2012-09-29 2019-06-17 Determining whether to perform requests at a server or at a client device based on resources provided by the client device

Family Applications Before (2)

Application Number Title Priority Date Filing Date
US13/842,778 Active 2034-11-22 US9699272B2 (en) 2012-09-29 2013-03-15 Mechanism for initiating behavior in a native client application from a web client application via a custom URL scheme
US15/610,302 Active US10367920B2 (en) 2012-09-29 2017-05-31 Mechanism for determining whether to redirect a request originally destined for a server based on a uniform resource locator

Country Status (1)

Country Link
US (3) US9699272B2 (en)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120209749A1 (en) 2011-02-16 2012-08-16 Ayman Hammad Snap mobile payment apparatuses, methods and systems
US10586227B2 (en) 2011-02-16 2020-03-10 Visa International Service Association Snap mobile payment apparatuses, methods and systems
WO2012116125A1 (en) 2011-02-22 2012-08-30 Visa International Service Association Universal electronic payment apparatuses, methods and systems
US9355393B2 (en) 2011-08-18 2016-05-31 Visa International Service Association Multi-directional wallet connector apparatuses, methods and systems
US10121129B2 (en) 2011-07-05 2018-11-06 Visa International Service Association Electronic wallet checkout platform apparatuses, methods and systems
US9582598B2 (en) 2011-07-05 2017-02-28 Visa International Service Association Hybrid applications utilizing distributed models and views apparatuses, methods and systems
US10242358B2 (en) 2011-08-18 2019-03-26 Visa International Service Association Remote decoupled application persistent state apparatuses, methods and systems
US10825001B2 (en) 2011-08-18 2020-11-03 Visa International Service Association Multi-directional wallet connector apparatuses, methods and systems
US9710807B2 (en) 2011-08-18 2017-07-18 Visa International Service Association Third-party value added wallet features and interfaces apparatuses, methods and systems
US10223730B2 (en) 2011-09-23 2019-03-05 Visa International Service Association E-wallet store injection search apparatuses, methods and systems
AU2013214801B2 (en) 2012-02-02 2018-06-21 Visa International Service Association Multi-source, multi-dimensional, cross-entity, multimedia database platform apparatuses, methods and systems
US9092540B2 (en) 2012-02-14 2015-07-28 International Business Machines Corporation Increased interoperability between web-based applications and hardware functions
US9699272B2 (en) * 2012-09-29 2017-07-04 Oracle International Corporation Mechanism for initiating behavior in a native client application from a web client application via a custom URL scheme
US9451005B2 (en) * 2013-07-15 2016-09-20 Microsoft Technology Licensing, Llc Delegation of rendering between a web application and a native application
KR102271265B1 (en) 2014-01-21 2021-07-01 오라클 인터내셔날 코포레이션 System and method for supporting multi-tenancy in an application server, cloud, or other environment
US10084843B2 (en) * 2014-07-14 2018-09-25 Oracle Internatonal Corporation System and method for web container partitions in a multitenant application server environment
US9648124B2 (en) * 2014-12-08 2017-05-09 International Business Machines Corporation Processing hybrid data using a single web client
US20160191645A1 (en) * 2014-12-30 2016-06-30 Citrix Systems, Inc. Containerizing Web Applications for Managed Execution
US9720748B1 (en) * 2015-02-26 2017-08-01 Google Inc. Predefined intents for native applications
US9961126B2 (en) * 2015-04-29 2018-05-01 International Business Machines Corporation Managing data access on a computing device
US9684501B2 (en) * 2015-06-05 2017-06-20 Apple Inc. Associating a URL or link between two applications
US9804834B1 (en) 2016-04-19 2017-10-31 Dropbox, Inc. Automatically updating a hybrid application
US10607002B2 (en) 2016-08-30 2020-03-31 Microsoft Technology Licensing, Llc Isolating an application running inside a native container application
US20180084392A1 (en) * 2016-09-19 2018-03-22 Ebay Inc. Text messaging hub system providing access to local and remote service applications
US10984460B2 (en) 2016-10-14 2021-04-20 Under Armour, Inc. Medium, method and apparatus for native page generation
CN107944009A (en) * 2017-12-08 2018-04-20 郑州云海信息技术有限公司 A kind of system and method for record web application operating daily records
CN109379394A (en) * 2018-08-21 2019-02-22 北京奇虎科技有限公司 A kind of method, apparatus and terminal monitoring network request
US11012664B2 (en) * 2019-06-27 2021-05-18 Viewabo, Inc. Remote controlled video messaging session
CN111641606B (en) * 2020-05-16 2022-11-22 中信银行股份有限公司 Data processing method, device, equipment and storage medium based on pseudo protocol
JP2022012403A (en) * 2020-07-01 2022-01-17 キヤノン株式会社 Program, information processing device, and control method

Citations (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5720036A (en) * 1996-01-05 1998-02-17 Network Imaging Corporation Enterprise multimedia data processing system and method using scalable object-based architecture
US6023698A (en) * 1996-12-05 2000-02-08 International Business Machines Corporation System and method for transparently registering and updating information over the internet
US6775687B1 (en) * 1999-10-12 2004-08-10 International Business Machines Corporation Exchanging supplemental information fields between a client and a server
US20040226459A1 (en) * 2003-05-15 2004-11-18 Hill Michael Sean Web application router
US20070218867A1 (en) * 2006-03-17 2007-09-20 Nokia Corporation System and method for requesting remote care using mobile devices
US20090030876A1 (en) * 2004-01-19 2009-01-29 Nigel Hamilton Method and system for recording search trails across one or more search engines in a communications network
US20100017494A1 (en) * 2001-11-09 2010-01-21 Bigfix, Inc. Formalizing, diffusing and enforcing policy advisories and monitoring policy compliance in the management of networks
US20100169438A1 (en) * 2008-12-31 2010-07-01 Gary Denner System and method for circumventing instant messaging do-not-disturb
US7831731B2 (en) * 2001-06-12 2010-11-09 Hewlett-Packard Development Company, L.P. Method and system for a modular transmission control protocol (TCP) rare-handoff design in a streams based transmission control protocol/internet protocol (TCP/IP) implementation
US20100313276A1 (en) * 2009-06-05 2010-12-09 Microsoft Corporation Web-Based Client for Creating and Accessing Protected Content
EP2336995A2 (en) 2009-12-18 2011-06-22 Samsung Electronics Co., Ltd. RUI server, RUI client and control method thereof
US20110246606A1 (en) * 2008-10-07 2011-10-06 University Of South Florida Architecture and two-layered protocol for real-time location-aware applications
US8078727B2 (en) * 1998-10-09 2011-12-13 Netmotion Wireless, Inc. Method and apparatus for providing mobile and other intermittent connectivity in a computing environment
US20120150955A1 (en) 2010-12-10 2012-06-14 Erick Tseng Contact Resolution Using Social Graph Information
US8239445B1 (en) 2000-04-25 2012-08-07 International Business Machines Corporation URL-based sticky routing tokens using a server-side cookie jar
US20120278395A1 (en) 2011-04-29 2012-11-01 David Harry Garcia Dynamic Tagging Recommendation
US20130103757A1 (en) 2011-10-19 2013-04-25 Justin Mitchell Generation of Activity Stream from Server-Side and Client-Side Data
US20140072235A1 (en) 2012-09-11 2014-03-13 Leandro L. Costantino Interactive visual advertisement service
US20140173692A1 (en) 2012-12-15 2014-06-19 Sudharshan Srinivasan Bring your own device system using a mobile accessory device
US8839266B1 (en) 2013-07-31 2014-09-16 Vmware, Inc. Inter-application communication on mobile platforms
US9699272B2 (en) * 2012-09-29 2017-07-04 Oracle International Corporation Mechanism for initiating behavior in a native client application from a web client application via a custom URL scheme

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7716240B2 (en) * 2005-12-29 2010-05-11 Nextlabs, Inc. Techniques and system to deploy policies intelligently
US9483570B2 (en) * 2010-12-30 2016-11-01 International Business Machines Corporation Driving a user experience of a web application using rules that establish or change requests based on user behavior
US8448233B2 (en) * 2011-08-25 2013-05-21 Imperva, Inc. Dealing with web attacks using cryptographically signed HTTP cookies

Patent Citations (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5720036A (en) * 1996-01-05 1998-02-17 Network Imaging Corporation Enterprise multimedia data processing system and method using scalable object-based architecture
US6023698A (en) * 1996-12-05 2000-02-08 International Business Machines Corporation System and method for transparently registering and updating information over the internet
US8078727B2 (en) * 1998-10-09 2011-12-13 Netmotion Wireless, Inc. Method and apparatus for providing mobile and other intermittent connectivity in a computing environment
US6775687B1 (en) * 1999-10-12 2004-08-10 International Business Machines Corporation Exchanging supplemental information fields between a client and a server
US8239445B1 (en) 2000-04-25 2012-08-07 International Business Machines Corporation URL-based sticky routing tokens using a server-side cookie jar
US7831731B2 (en) * 2001-06-12 2010-11-09 Hewlett-Packard Development Company, L.P. Method and system for a modular transmission control protocol (TCP) rare-handoff design in a streams based transmission control protocol/internet protocol (TCP/IP) implementation
US20100017494A1 (en) * 2001-11-09 2010-01-21 Bigfix, Inc. Formalizing, diffusing and enforcing policy advisories and monitoring policy compliance in the management of networks
US20040226459A1 (en) * 2003-05-15 2004-11-18 Hill Michael Sean Web application router
US20090030876A1 (en) * 2004-01-19 2009-01-29 Nigel Hamilton Method and system for recording search trails across one or more search engines in a communications network
US20070218867A1 (en) * 2006-03-17 2007-09-20 Nokia Corporation System and method for requesting remote care using mobile devices
US20110246606A1 (en) * 2008-10-07 2011-10-06 University Of South Florida Architecture and two-layered protocol for real-time location-aware applications
US20100169438A1 (en) * 2008-12-31 2010-07-01 Gary Denner System and method for circumventing instant messaging do-not-disturb
US20100313276A1 (en) * 2009-06-05 2010-12-09 Microsoft Corporation Web-Based Client for Creating and Accessing Protected Content
EP2336995A2 (en) 2009-12-18 2011-06-22 Samsung Electronics Co., Ltd. RUI server, RUI client and control method thereof
US20120150955A1 (en) 2010-12-10 2012-06-14 Erick Tseng Contact Resolution Using Social Graph Information
US20120278395A1 (en) 2011-04-29 2012-11-01 David Harry Garcia Dynamic Tagging Recommendation
US20130103757A1 (en) 2011-10-19 2013-04-25 Justin Mitchell Generation of Activity Stream from Server-Side and Client-Side Data
US20140072235A1 (en) 2012-09-11 2014-03-13 Leandro L. Costantino Interactive visual advertisement service
US9699272B2 (en) * 2012-09-29 2017-07-04 Oracle International Corporation Mechanism for initiating behavior in a native client application from a web client application via a custom URL scheme
US10367920B2 (en) * 2012-09-29 2019-07-30 Oracle International Corporation Mechanism for determining whether to redirect a request originally destined for a server based on a uniform resource locator
US20140173692A1 (en) 2012-12-15 2014-06-19 Sudharshan Srinivasan Bring your own device system using a mobile accessory device
US8839266B1 (en) 2013-07-31 2014-09-16 Vmware, Inc. Inter-application communication on mobile platforms

Also Published As

Publication number Publication date
US9699272B2 (en) 2017-07-04
US20170272551A1 (en) 2017-09-21
US20190306278A1 (en) 2019-10-03
US10367920B2 (en) 2019-07-30
US20140095589A1 (en) 2014-04-03

Similar Documents

Publication Publication Date Title
US11025750B2 (en) Determining whether to perform requests at a server or at a client device based on resources provided by the client device
US20210037110A1 (en) Platform-Independent Application Publishing to a Front-End Interface by Encapsulating Published Content in a Web Container
US10241846B2 (en) Enabling a web application to call at least one native function of a mobile device
US9158534B2 (en) Smart endpoint architecture
US20170103047A1 (en) Mechanisms to Compose, Execute, Save, and Retrieve Hyperlink Pipelines in Web Browsers
US11010215B2 (en) Recommending applications based on call requests between applications
US9807224B2 (en) Method and apparatus for accessing services of a device
US9124549B1 (en) Automated web frontend sharding
US20140096014A1 (en) Method for enabling dynamic client user interfaces on multiple platforms from a common server application via metadata
KR101720071B1 (en) Webpages with onboard hardware functions
US20220060558A1 (en) Systems and Methods for Platform-Independent Application Publishing to a Front-End Interface
US9973563B2 (en) Implementing a java method
US20150281035A1 (en) Monitoring of Node.JS Applications
US10372512B2 (en) Method and apparatus for automatic processing of service requests on an electronic device
US10506400B2 (en) Data download method and apparatus
JP2014505299A (en) Method and apparatus for processing microweb log messages
US20090156162A1 (en) Communication system, communication terminal, server, communication method to be used therein and program therefor
US20140068021A1 (en) Configuring client services
US20140237296A1 (en) Architecture for remote access to content state
CN112015383A (en) Login method and device
CN112764746B (en) Data processing method, device, electronic equipment and storage medium
US11169861B2 (en) Application server programming language cloud functions
KR20110104885A (en) Method and apparatus for accessing one or more services of a device
US10659560B2 (en) Mobile device display preference
EP3935493A1 (en) Dynamically configurable client application activity

Legal Events

Date Code Title Description
AS Assignment

Owner name: ORACLE INTERNATIONAL CORPORATION, CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:JOHNSON, MARK A.;REEL/FRAME:049487/0418

Effective date: 20190604

FEPP Fee payment procedure

Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

STPP Information on status: patent application and granting procedure in general

Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION

STPP Information on status: patent application and granting procedure in general

Free format text: NOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONS

STPP Information on status: patent application and granting procedure in general

Free format text: PUBLICATIONS -- ISSUE FEE PAYMENT RECEIVED

STPP Information on status: patent application and granting procedure in general

Free format text: PUBLICATIONS -- ISSUE FEE PAYMENT VERIFIED

STCF Information on status: patent grant

Free format text: PATENTED CASE