WO2015033333A1 - Communication channel between plugin application and browser script - Google Patents

Communication channel between plugin application and browser script Download PDF

Info

Publication number
WO2015033333A1
WO2015033333A1 PCT/IL2014/050331 IL2014050331W WO2015033333A1 WO 2015033333 A1 WO2015033333 A1 WO 2015033333A1 IL 2014050331 W IL2014050331 W IL 2014050331W WO 2015033333 A1 WO2015033333 A1 WO 2015033333A1
Authority
WO
WIPO (PCT)
Prior art keywords
application
browser script
plugin
plugin application
browser
Prior art date
Application number
PCT/IL2014/050331
Other languages
French (fr)
Inventor
Nahum NIR
Original Assignee
N-Sip Ltd
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 N-Sip Ltd filed Critical N-Sip Ltd
Publication of WO2015033333A1 publication Critical patent/WO2015033333A1/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M7/00Arrangements for interconnection between switching centres
    • H04M7/006Networks other than PSTN/ISDN providing telephone service, e.g. Voice over Internet Protocol (VoIP), including next generation networks with a packet-switched transport layer
    • 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M3/00Automatic or semi-automatic exchanges
    • H04M3/42Systems providing special services or facilities to subscribers
    • H04M3/50Centralised arrangements for answering calls; Centralised arrangements for recording messages for absent or busy subscribers ; Centralised arrangements for recording messages
    • H04M3/51Centralised call answering arrangements requiring operator intervention, e.g. call or contact centers for telemarketing
    • H04M3/5183Call or contact centers with computer-telephony arrangements
    • H04M3/5191Call or contact centers with computer-telephony arrangements interacting with the Internet

Definitions

  • the present disclosure relates to plug-in applications in general, and to use of plug-in applications that are operatively coupled to browser scripts, in particular.
  • Web browsers also referred to as browsers, are software applications for retrieving, presenting and traversing information resources on the World Wide Web (WWW).
  • An information resource is identified by a Uniform Resource Identifier (URI/URL) and may be a web page, image, video or other piece of content.
  • URI/URL Uniform Resource Identifier
  • Hyperlinks present in resources enable users easily to navigate their browsers to related resources.
  • Browsers can execute scripts, such as scripts written in JavaScript. Such scripts may also be referred to as client-side scripts as they are executed on the browser and not on the server. Scripts may function in different platforms (e.g., different operating systems such as for example iOSTM, WindowsTM, AndroidTM or the like), however some functionalities cannot be implemented using scripts and require a native program.
  • the native program is often referred to as a plugin application.
  • the browser may invoke the plugin application, when required, and the user may use a user interface that is managed by the plugin application to interact with the plugin.
  • One exemplary embodiment of the disclosed subject matter is an apparatus having a processor, the processor being adapted to perform the steps of: executing a browser script, wherein the browser script is a cross platform and cross browser script, wherein the browser script invokes a plugin application, wherein the plugin application is a native application that is not cross platform; executing the plugin application; updating, by the plugin application, a data repository with a status indicator associated with the plugin application; polling, by the browser script, the data repository to obtain the status indicator of the plugin application, whereby providing a communication channel from the plugin application to the browser script.
  • Another exemplary embodiment of the disclosed subject matter is a method comprising: executing, by a processor, a browser script, wherein the browser script is a cross platform and cross browser script, wherein the browser script invokes a plugin application, wherein the plugin application is a native application that is not cross platform; executing, by the processor, the plugin application; updating, by the plugin application, a data repository with a status indicator associated with the plugin application; polling, by the browser script, the data repository to obtain the status indicator of the plugin application, whereby providing a communication channel from the plugin application to the browser script.
  • a mobile device comprising: a camera for providing imagery input to said mobile device; a processor configured to: in response to a user of said mobile device scanning a code using said camera, initiating a Voice over Internet Protocol (VoIP) application, wherein the VoIP application is configured to allow telecommunication over the Internet between the user and a second user.
  • VoIP Voice over Internet Protocol
  • Yet another exemplary embodiment of the disclosed subject matter is a computer-readable medium comprising a code readable by a mobile device, wherein the code encodes an instruction for the mobile device to initiate, using a Voice over Internet Protocol (VoIP) application, a VoIP session between a user of the mobile device and a second user, wherein the code encodes an address of the second user.
  • VoIP Voice over Internet Protocol
  • FIG. 1 shows a flowchart diagram of a method, in accordance with some embodiments of the disclosed subject matter
  • FIG. 2 shows a flowchart diagram of a method, in accordance with some embodiments of the disclosed subject matter
  • FIG. 3A shows a block diagram of an apparatus, in accordance with some exemplary embodiments of the disclosed subject matter.
  • FIG. 3B shows a block diagram of an apparatus, in accordance with some exemplary embodiments of the disclosed subject matter.
  • One technical problem dealt with by the disclosed subject matter is to provide a communication channel between a plugin application and a browser script.
  • browser scripts may be suitable to be executed on different platforms (e.g., different operating systems) and on different browsers.
  • platforms e.g., different operating systems
  • browser scripts a web page may be designed to be viewable by different users having different browsers, platforms or the like.
  • browser scripts may not be sufficient to provide all desired functionality.
  • Plugin applications which may be native applications that are specifically designed for a specific platform, may be used.
  • the browser script may invoke the plugin application to provide for the desired functionality.
  • the browser script may provide the plugin application through its invocation.
  • scripting languages such as for example JavaScript prohibiting creation of new threads and processes
  • the desired communication channel may be preferably platform and browser independent so as to allow the script to be a cross platform, cross browser script.
  • GUI Graphical User Interface
  • GUI GUI
  • a mobile device regardless if the mobile device is AppleTM iPhoneTM, SmasungTM Galaxy S4TM, or a different device, and another GUI for a standard computer, such as a MicrosoftTM WindowsTM based Personal Computer (PC) or an AppleTM MACTM
  • PC MicrosoftTM WindowsTM based Personal Computer
  • VoIP Voice over Internet Protocol
  • VoIP application may allow establishing a telecommunication session between two users over the Internet.
  • the VoIP application may allow delivery of voice communication and multimedia sessions over IP.
  • Yet another technical problem may be to allow simple and friendly user interface for a customer to contact a provider, such as using 1-800 using traditional telecommunication systems.
  • the provider would like to allow the customer to contact him using a VoIP session.
  • the provider may like to allow the customer to contact him without having the customer to manually set up the VoIP session.
  • the data repository may be implemented on a server, which may be a local server (e.g., deployed at localhost IP address, optionally as a process of the plugin application) or a remote server.
  • a local server may provide a benefit of not requiring the deployment of an external server.
  • a remote server may provide a benefit of not having the plugin application retain program code of the server, and therefore allowing for a smaller footprint of the plugin application.
  • the data repository may be accessible to both the browser script and the plugin application, and provide a communication channel from the plugin application to the browser script.
  • the browser script may poll information from the repository to receive the message.
  • the plugin application updates the data repository, such as by transmitting to the server an update request.
  • the communication channel may be indifferent to the browser and platform of the device.
  • the browser script may implement a GUI that implements at least part of its functionality using the plugin application.
  • the plugin application may not implement in itself any GUI and rely on the GUI of the browser script.
  • the script may be configured to be cross platform and cross browser and may provide substantially uniform GUI on all platforms and browsers.
  • the script may be configured to render the GUI and in response to interaction with the user, invoke the plugin application. Based on the status of the plugin application, the script may modify the presentation of the GUI, such as display an image, replace an image, remove an image, modify displayed text, or any modification to a visual presentation by the GUI.
  • the user may have a user experience of a web-based application.
  • a sandboxed Operating System may be an OS that limits the access of each executed application (e.g., app) to a sandbox uniquely associated with the executed application.
  • the sandbox may limit access to storage areas, to memory areas, or the like.
  • the sandbox may prevent the application from changing system settings. Additionally or alternatively, the sandbox may prevent the application from communicating with other executed applications, monitor their execution, or the like.
  • a browser app in a sandboxed OS may not be able to monitor the execution of a plugin application, access files that the plugin application may access, or the like.
  • browser script that is executed by the browser app may not be able to create new processes or threads, and therefore may not be able to listen on a socket without interrupting other functionality of the browser script.
  • the disclosed subject matter may provide for a non-waiting mechanism for listening for new messages that is implementable in a browser script that is cross -platform and cross- browser.
  • customers or potential customers may utilize their mobile devices, such as a smartphone, to initiate a call to a vendor.
  • the vendor may supply a code, such as a Quick Response (QR) code, a bar code, or the like, that may encode an instruction for the mobile device to initiate a session using a VoIP application between the user and the vendor (e.g., directed towards a call center).
  • the code may include a URL to a web page in which a browser script is installed.
  • the browser script may be configured to invoke a VoIP application to provide the session and potentially install the VoIP application if not previously installed.
  • the code may include an instruction to directly invoke the VoIP application.
  • the disclosed subject matter may provide for a simple manner in which the user can contact the vendor or other entities, based on their supplied code which is scannable using a camera of a mobile device.
  • the code may be printed on a physical matter such as a pamphlet, an advertisement, or the like, may be displayed on a screen, or presented in any other manner that is viewable to a mobile device.
  • the VoIP application may be instructed to establish the session and charge a predetermined account that belongs to the vendor for the session.
  • the code may include an identifier that indicates a target VoIP account with whom the session is to be established.
  • the identifier may indicate both the account and VoIP account so as to avoid potential misuse of the account to establish sessions with other accounts.
  • One technical effect of the disclosed subject matter is a relatively easier and less expensive development and maintenance costs of plugin apps, by maintaining the GUI using browser scripts.
  • the disclosed subject matter may allow for developing and maintaining a uniform GUI that is web-based and which is cross -platform and cross-browser, even if some of the features it provides require the usage of native programming or plugin applications.
  • Another technical effect is to allow for website owners to provide different GUIs when using a same underlying plugin application.
  • two website may provide a user with a "click to call" button, that when clicked implements a VoIP session using the same VoIP plugin application.
  • each website may provide a different GUI, which is based on images, links and other HyperText Markup Language (HTML) elements, to interact with the VoIP plugin application, such as, for example, displaying various characteristics regarding the session, allowing to hang up, to add another participant, or the like.
  • HTML HyperText Markup Language
  • GUI may be based on HTML and therefore may utilize standard features of HTML browsers such as image fetching and rendering, object resizing, in-document search, history mechanism, or the like.
  • FIG. 1 showing a flowchart diagram of a method, in accordance with some embodiments of the disclosed subject matter.
  • a web page is obtained from a web server.
  • the web page may be obtained by a web browser of a computerized device, such as but not limited to a computer, a laptop, a tablet, a mobile device, a smartphone, or the like.
  • the web page may be obtained from the web server over the Internet, over an intranet, or the like.
  • the web page may comprise a browser script to be executed by a browser.
  • the browser script may be a cross platform script that is not dependent on being executed on a specific platform, such as but not limited to an Operating System.
  • the browser script may be a cross browser script that can be executed by different browsers, such as based on limiting its functionality to that of standards of browsers (e.g., HTML5, JavaScript, or the like) and avoiding use of specific-browser functionality.
  • the browser may execute the browser script.
  • the web page may contain an instruction to execute the browser script.
  • the instruction may be executed when the web page is being processed by the browser.
  • the browser script may determine whether or not a plugin application is installed on the device. In case the plugin application is not installed, the browser script may download a plugin application that is suitable to the platform of the device. In some exemplary embodiments, there may be various versions of the plugin application have substantially the same functionality, and each suitable for a different platform.
  • the browser script may invoke the plugin application.
  • the browser script may pass one or more parameters to the plugin application.
  • the browser may pass, via a parameter, an identifier that is used in order for the plugin application to communicate with the browser script.
  • the identifier may be a unique identifier.
  • the plugin application may update a server with a status or other message.
  • the plugin may transmit a Hypertext Transfer Protocol (HTTP) request to update the server.
  • HTTP Hypertext Transfer Protocol
  • the server may be a local server, such as deployed on the device itself and accessible at localhost:SERVER_PORT. Additionally or alternatively, the server may be remote server deployed on a separate device such as accessible at SERVER_IP:SERVER_PORT.
  • Step 140 the browser script may perform a poll request to the server requesting to receive a status value (or other content) associated with the identifier.
  • the browser script has a socket which initiates a long polling request every X seconds to the server.
  • the browser script may be implemented using JavaScript.
  • the browser script may utilize socket.io package to transmit an xhr-polling request with a predetermined polling duration.
  • the server may be implemented using node.js package which can serve xhr- polling requests transmitted to it over HTTP. It will be noted that the browser script may not utilize a UDP/TCP socket to perform the request in order to adhere to the cross platform requirement.
  • browser script may respond to receiving a status in Step 140, such as by performing predetermined functionality.
  • the functionality may be to modify a display to the user implemented in HTML and displayed in the browser based on the status change.
  • the plugin application may transmit to the browser script any GUI modification request using statuses thereby allowing the browser script to function as a GUI of the browser script.
  • the browser script may re-invoke the plugin application with additional/different one or more parameters. In some exemplary embodiments, the invocation may still use the same identifier or may use a different identifier. By re- invoking the plugin application the browser script may provide the plugin application with messages using the parameters.
  • the browser script in response to an action of the user, such as clicking a button such as "END CALL” button, “ESTABLISH CALL” button, “START GAME” button, “END GAME” button, “PAUSE” button, or the like, clicking a link or interacting with the GUI implemented by the browser script in another manner, the browser script may notify the plugin application of the request by the user.
  • the browser script merely acts as a GUI the functionality is implemented by the plugin application and by invoking the plugin application with suitable parameter values, the plugin application may be notified of the decision of the user.
  • the disclosed subject matter is not limited to an embodiment in which the plugin application does not have a GUI component and utilizes the browser script to provide it with a GUI.
  • the disclosed subject matter may be used for a variety of additional and different scenarios in which plugin applications and browser scripts co-operate.
  • FIG. 2 showing a flowchart diagram of a method, in accordance with some embodiments of the disclosed subject matter.
  • a user may utilize a mobile device, such as a smartphone, a Personal Digital Assistant (PDA), a tablet computer, or a similar device.
  • the user may point the device towards a code, which may be visually notable, such as printed on paper, displayed on a screen, or the like.
  • the code may be computer-readable using visual sensoring, such as a barcode, a QR code, or the like.
  • the mobile device may scan the code.
  • the mobile device may scan the code using a camera embedded in the mobile device.
  • the mobile device may decode the code.
  • the code may be decoded to a URL or to another instruction for the mobile device.
  • a browser of the mobile device may access a web document based on the URL encoded within the code.
  • the browser may access a web server to download the web document.
  • the web document may or may not comprise a browser script.
  • the browser script may be executed by the browser.
  • the browser script may invoke a VoIP application to establish a VoIP session with a predetermined targeted.
  • the predetermined target may be, for example, a call center of a vendor which provided the code.
  • based the target is defined by the code.
  • the code uniquely identifies the target as well as an account to be charged for conducting the session.
  • the account information is not embedded in the code nor can the code be modified to use the same account information to call a different target.
  • the VoIP application may be a plugin application which utilizes the script browser as implementing a GUI.
  • the GUI in the browser may display status of the VoIP session based on status values which the VoIP application updated in the server.
  • a VoIP session may be initiated by a different application, such as a native app, by a web document which invokes a plugin application without utilizing a server to pass to the browser updated statuses of the plugin application, or the like.
  • An Apparatus 300 may be a computerized apparatus adapted to perform methods such as depicted in Fig. 1 and Fig. 2.
  • Apparatus 300 may be a computer, a mobile device, a tablet computer, a laptop computer, a PDA, or the like.
  • Apparatus 300 may comprise a Processor 302.
  • Processor 302 may be a Central Processing Unit (CPU), a microprocessor, an electronic circuit, an Integrated Circuit (IC) or the like.
  • Apparatus 300 can be implemented as firmware written for or ported to a specific processor such as Digital Signal Processor (DSP) or microcontrollers, or can be implemented as hardware or configurable hardware such as field programmable gate array (FPGA) or application specific integrated circuit (ASIC).
  • DSP Digital Signal Processor
  • FPGA field programmable gate array
  • ASIC application specific integrated circuit
  • Processor 302 may be utilized to perform computations required by Apparatus 300 or any of it subcomponents.
  • Apparatus 300 may comprise an Input/Output (I/O) Module 305 such as a terminal, a display, a keyboard, a touch screen, an input device or the like to interact with Apparatus 300, to invoke Apparatus 300 and to receive results. It will however be appreciated that Apparatus 300 can operate without human operation.
  • the I/O Module 305 may be utilized to provide an interface to a user to interact with Apparatus 300, such as to present a GUI to the user, allow the user to interact with the GUI, or the like.
  • Apparatus 300 may comprise a Memory Unit 307.
  • Memory Unit 307 may be persistent or volatile.
  • Memory Unit 307 can be a Flash disk, a Random Access Memory (RAM), a memory chip, an optical storage device such as a CD, a DVD, or a laser disk; a magnetic storage device such as a tape, a hard disk, storage area network (SAN), a network attached storage (NAS), or others; a semiconductor storage device such as Flash device, memory stick, or the like.
  • Memory Unit 307 may retain program code operative to cause Processor 302 to perform acts associated with any of the steps shown in Fig. 1 and Fig. 2.
  • the components detailed below may be implemented as one or more sets of interrelated computer instructions, executed for example by Processor 302 or by another processor.
  • the components may be arranged as one or more executable files, dynamic libraries, static libraries, methods, functions, services, or the like, programmed in any programming language and under any computing environment.
  • Browser 310 may be a web browser.
  • Browser 310 may be a computer program product configured to retrieve web documents from web servers.
  • Browser 310 may be capable of implementing HTTP and other communication protocols.
  • Browser 310 may be configured to render a display of web documents, such as by rendering HTML documents.
  • Browser 310 may be capable to execute scripts embedded within web documents.
  • Browser Script 315 may be a browser script that is executable by Browser 310.
  • Browser Script 315 may be obtained from a computer network, such as the Internet.
  • the browser script may be embedded or linked in a web document which is retrieved by Browser 310.
  • Browser Script 315 may be a priori retained in Memory Unit 307, such as being stored since being manually installed.
  • Plugin Application 335 may be a program product executable by Processor 302. In some exemplary embodiments, Plugin Application 335 may be a native program that is not cross platform.
  • Browser Script 315 when Browser Script 315 is executed, Browser Script 315 may determine that it requires to invoke Plugin Application 335. In case, Plugin Application is not retained in Memory Unit 307, such as because it was not yet installed or downloaded, Plugin Application Selector 320 may be invoked to search for, download and install Plugin Application 335. In some exemplary embodiments, Plugin Application Selector 320 may determine the platform of Apparatus 300 and may select from a variety of counterpart plugin applications that application which is suitable for the platform used by Apparatus 300 (e.g., OS). In some exemplary embodiments, the selection enables Browser Script 315 to be used on different platforms as for each platform a suitable counterpart application may exist.
  • Plugin Application Selector 320 may determine the platform of Apparatus 300 and may select from a variety of counterpart plugin applications that application which is suitable for the platform used by Apparatus 300 (e.g., OS). In some exemplary embodiments, the selection enables Browser Script 315 to be used on different platforms as for each platform
  • Plugin Application 335 may transmit HTTP requests to Local Server 340 which may be located at localhost IP address.
  • Local Server 340 may be a web server that is deployed on Apparatus 300.
  • Local Server 340 may update a data repository based on the results from Plugin Application 335 so as the data repository may reflect for each unique identifier a status or other message content.
  • Browser Script 315 may execute HTTP requests to Local Server 340, in order to obtain from Local Server 340 the status or other message content for a specific identifier. In some exemplary embodiments, Browser Script 315 may poll Local Server 340 for the information.
  • Browser Script 315 may invoke a link, such as based on a URL, to trigger Plugin Application 335.
  • the invocation may pass one or more parameters to Plugin Application 335, such as for providing a unique identifier, for passing a user decision or selection, or the like.
  • FIG. 3B showing a block diagram of an apparatus, in accordance with some exemplary embodiments of the disclosed subject matter.
  • An Apparatus 300 may be a computerized apparatus adapted to perform methods such as depicted in Fig. 1 and Fig. 2.
  • Apparatus 300 of Fig. 3B may be similar to that of Fig. 3A. Instead of deploying a local server, such as 340 of Fig. 3A, Apparatus 300 may communicate with a Remote Server 350. It will be noted that Remote Server 350 need not be physically remote from Apparatus 300 in terms of distance, but rather may be deployed on an external device there from. Remote Server 350 may be responsive to HTTP requests, such as those initiated by Browser Script 315 and Plugin Application 335. In some exemplary embodiments, Remote Server 350 may comprise processor (302), I/O Module (305), Memory Unit (307), or the like. In some exemplary embodiments, Remote Server 350 may retain within Memory Unit 307 a data repository indicating for each identifier a current status. The identifier may be an identifier of an executed instance of Plugin Application 335.
  • the present invention may be a system, a method, and/or a computer program product.
  • the computer program product may include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present invention.
  • the computer readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device.
  • the computer readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing.
  • a non- exhaustive list of more specific examples of the computer readable storage medium includes the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon, and any suitable combination of the foregoing.
  • RAM random access memory
  • ROM read-only memory
  • EPROM or Flash memory erasable programmable read-only memory
  • SRAM static random access memory
  • CD-ROM compact disc read-only memory
  • DVD digital versatile disk
  • memory stick a floppy disk
  • mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon
  • a computer readable storage medium is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable), or electrical signals transmitted through a wire.
  • Computer readable program instructions described herein can be downloaded to respective computing/processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and/or a wireless network.
  • the network may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers.
  • a network adapter card or network interface in each computing/processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective computing/processing device.
  • Computer readable program instructions for carrying out operations of the present invention may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C++ or the like, and conventional procedural programming languages, such as the "C" programming language or similar programming languages.
  • the computer readable program instructions may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server.
  • the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
  • electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present invention.
  • These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
  • These computer readable program instructions may also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and/or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions which implement aspects of the function/act specified in the flowchart and/or block diagram block or blocks.
  • the computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus or other device to produce a computer implemented process, such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions/acts specified in the flowchart and/or block diagram block or blocks.
  • each block in the flowchart or block diagrams may represent a module, segment, or portion of instructions, which comprises one or more executable instructions for implementing the specified logical function(s).
  • the functions noted in the block may occur out of the order noted in the figures.
  • two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved.

Abstract

A method, apparatus and product for providing communication between plugin application and browser script. The method comprising: executing a browser script, wherein the browser script is a cross platform and cross browser script, wherein the browser script invokes a plugin application, wherein the plugin application is a native application that is not cross platform; executing the plugin application; updating, by the plugin application, a data repository with a status indicator associated with the plugin application; polling, by the browser script, the data repository to obtain the status indicator of the plugin application, whereby providing a communication channel from the plugin application to the browser script.

Description

COMMUNICATION CHANNEL BETWEEN PLUGIN APPLICATION AND
BROWSER SCRIPT
CROSS-REFERENCE TO RELATED APPLICATION
[0001] This application claims the benefit of U.S. Provisional Application No. 61/875,523 filed September 09, 2013, entitled "AN APPARATUS TO DEPLOY AND MAINTAIN A CROSS -PLATFORM AND CROSS-BROWSER SCRIPT ABLE PLUGIN", which is hereby incorporated by reference in its entirety.
TECHNICAL FIELD
[0002] The present disclosure relates to plug-in applications in general, and to use of plug-in applications that are operatively coupled to browser scripts, in particular.
BACKGROUND
[0003] Web browsers, also referred to as browsers, are software applications for retrieving, presenting and traversing information resources on the World Wide Web (WWW). An information resource is identified by a Uniform Resource Identifier (URI/URL) and may be a web page, image, video or other piece of content. Hyperlinks present in resources enable users easily to navigate their browsers to related resources.
[0004] Browsers can execute scripts, such as scripts written in JavaScript. Such scripts may also be referred to as client-side scripts as they are executed on the browser and not on the server. Scripts may function in different platforms (e.g., different operating systems such as for example iOS™, Windows™, Android™ or the like), however some functionalities cannot be implemented using scripts and require a native program. The native program is often referred to as a plugin application.
In some cases, the browser may invoke the plugin application, when required, and the user may use a user interface that is managed by the plugin application to interact with the plugin. BRIEF SUMMARY
[0005] One exemplary embodiment of the disclosed subject matter is an apparatus having a processor, the processor being adapted to perform the steps of: executing a browser script, wherein the browser script is a cross platform and cross browser script, wherein the browser script invokes a plugin application, wherein the plugin application is a native application that is not cross platform; executing the plugin application; updating, by the plugin application, a data repository with a status indicator associated with the plugin application; polling, by the browser script, the data repository to obtain the status indicator of the plugin application, whereby providing a communication channel from the plugin application to the browser script.
[0006] Another exemplary embodiment of the disclosed subject matter is a method comprising: executing, by a processor, a browser script, wherein the browser script is a cross platform and cross browser script, wherein the browser script invokes a plugin application, wherein the plugin application is a native application that is not cross platform; executing, by the processor, the plugin application; updating, by the plugin application, a data repository with a status indicator associated with the plugin application; polling, by the browser script, the data repository to obtain the status indicator of the plugin application, whereby providing a communication channel from the plugin application to the browser script.
[0007] Yet another exemplary embodiment of the disclosed subject matter is a mobile device comprising: a camera for providing imagery input to said mobile device; a processor configured to: in response to a user of said mobile device scanning a code using said camera, initiating a Voice over Internet Protocol (VoIP) application, wherein the VoIP application is configured to allow telecommunication over the Internet between the user and a second user.
[0008] Yet another exemplary embodiment of the disclosed subject matter is a computer-readable medium comprising a code readable by a mobile device, wherein the code encodes an instruction for the mobile device to initiate, using a Voice over Internet Protocol (VoIP) application, a VoIP session between a user of the mobile device and a second user, wherein the code encodes an address of the second user. THE BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS
[0009] The present disclosed subject matter will be understood and appreciated more fully from the following detailed description taken in conjunction with the drawings in which corresponding or like numerals or characters indicate corresponding or like components. Unless indicated otherwise, the drawings provide exemplary embodiments or aspects of the disclosure and do not limit the scope of the disclosure. In the drawings:
[0010] Fig. 1 shows a flowchart diagram of a method, in accordance with some embodiments of the disclosed subject matter;
[0011] Fig. 2 shows a flowchart diagram of a method, in accordance with some embodiments of the disclosed subject matter;
[0012] Fig. 3A shows a block diagram of an apparatus, in accordance with some exemplary embodiments of the disclosed subject matter; and
[0013] Fig. 3B shows a block diagram of an apparatus, in accordance with some exemplary embodiments of the disclosed subject matter.
DETAILED DESCRIPTION
[0014] One technical problem dealt with by the disclosed subject matter is to provide a communication channel between a plugin application and a browser script.
[0015] In some exemplary embodiments, browser scripts may be suitable to be executed on different platforms (e.g., different operating systems) and on different browsers. Using browser scripts, a web page may be designed to be viewable by different users having different browsers, platforms or the like. However, in some cases, browser scripts may not be sufficient to provide all desired functionality. Plugin applications, which may be native applications that are specifically designed for a specific platform, may be used.
[0016] The browser script may invoke the plugin application to provide for the desired functionality. The browser script may provide the plugin application through its invocation. However, due to limitations imposed by scripting languages, such as for example JavaScript prohibiting creation of new threads and processes, there may be a technical difficulty to provide a communication channel from the plugin application to the browser script. Furthermore, the desired communication channel may be preferably platform and browser independent so as to allow the script to be a cross platform, cross browser script.
[0017] Another technical problem dealt with by the disclosed subject matter is to provide a system that has uniform Graphical User Interface (GUI) that would be substantially uniform over different platforms and browsers, although some or all of the functionality that is employed by the system require native applications. A web-based platform may, for example, provide for a relatively uniform GUI thanks to the uniformity of HTML rendering, however in order to be cross -platform, not all functionalities can be implemented by the browser script.
[0018] It will be noted that in some cases it may be desired to provide a different GUI for different types of devices, while maintain that the GUI is uniform for different platforms and browsers. As an example, there may be a different GUI for a mobile device, regardless if the mobile device is Apple™ iPhone™, Smasung™ Galaxy S4™, or a different device, and another GUI for a standard computer, such as a Microsoft™ Windows™ based Personal Computer (PC) or an Apple™ MAC™
[0019] One example of a functionality that may require usage of native programming may be a Voice over Internet Protocol (VoIP) application. VoIP application may allow establishing a telecommunication session between two users over the Internet. The VoIP application may allow delivery of voice communication and multimedia sessions over IP.
[0020] Yet another technical problem may be to allow simple and friendly user interface for a customer to contact a provider, such as using 1-800 using traditional telecommunication systems. In some cases, the provider would like to allow the customer to contact him using a VoIP session. However, the provider may like to allow the customer to contact him without having the customer to manually set up the VoIP session.
[0021] One technical solution provided by the disclosed subject matter is to utilize a data repository which the plugin application may update with status indicators and have the browser script repeatedly attempt polling from the data repository to determine the status indicator. The status indicator may be used as a content of a message conveyed from the plugin application to the script. In some exemplary embodiments, the data repository may be implemented on a server, which may be a local server (e.g., deployed at localhost IP address, optionally as a process of the plugin application) or a remote server. A local server may provide a benefit of not requiring the deployment of an external server. A remote server may provide a benefit of not having the plugin application retain program code of the server, and therefore allowing for a smaller footprint of the plugin application.
[0022] The data repository may be accessible to both the browser script and the plugin application, and provide a communication channel from the plugin application to the browser script. The browser script may poll information from the repository to receive the message. The plugin application updates the data repository, such as by transmitting to the server an update request. In some exemplary embodiments, the communication channel may be indifferent to the browser and platform of the device. [0023] In some exemplary embodiments, the browser script may implement a GUI that implements at least part of its functionality using the plugin application. The plugin application may not implement in itself any GUI and rely on the GUI of the browser script. The script may be configured to be cross platform and cross browser and may provide substantially uniform GUI on all platforms and browsers. The script may be configured to render the GUI and in response to interaction with the user, invoke the plugin application. Based on the status of the plugin application, the script may modify the presentation of the GUI, such as display an image, replace an image, remove an image, modify displayed text, or any modification to a visual presentation by the GUI. In some exemplary embodiments, the user may have a user experience of a web-based application.
[0024] In some exemplary embodiments, the disclosed subject matter may be utilized on sandboxed operating systems, such as operating systems that are used for smartphones. A sandboxed Operating System (OS) may be an OS that limits the access of each executed application (e.g., app) to a sandbox uniquely associated with the executed application. As an example, the sandbox may limit access to storage areas, to memory areas, or the like. The sandbox may prevent the application from changing system settings. Additionally or alternatively, the sandbox may prevent the application from communicating with other executed applications, monitor their execution, or the like. As an example, a browser app in a sandboxed OS may not be able to monitor the execution of a plugin application, access files that the plugin application may access, or the like.
[0025] Furthermore, as browser script that is executed by the browser app may not be able to create new processes or threads, and therefore may not be able to listen on a socket without interrupting other functionality of the browser script. The disclosed subject matter may provide for a non-waiting mechanism for listening for new messages that is implementable in a browser script that is cross -platform and cross- browser.
[0026] In some exemplary embodiments, customers or potential customers may utilize their mobile devices, such as a smartphone, to initiate a call to a vendor. The vendor may supply a code, such as a Quick Response (QR) code, a bar code, or the like, that may encode an instruction for the mobile device to initiate a session using a VoIP application between the user and the vendor (e.g., directed towards a call center). In some exemplary embodiments, the code may include a URL to a web page in which a browser script is installed. The browser script may be configured to invoke a VoIP application to provide the session and potentially install the VoIP application if not previously installed. Additionally or alternatively, the code may include an instruction to directly invoke the VoIP application. The disclosed subject matter may provide for a simple manner in which the user can contact the vendor or other entities, based on their supplied code which is scannable using a camera of a mobile device. The code may be printed on a physical matter such as a pamphlet, an advertisement, or the like, may be displayed on a screen, or presented in any other manner that is viewable to a mobile device.
[0027] In some exemplary embodiments, the VoIP application may be instructed to establish the session and charge a predetermined account that belongs to the vendor for the session. In some exemplary embodiments, the code may include an identifier that indicates a target VoIP account with whom the session is to be established. In some exemplary embodiments, the identifier may indicate both the account and VoIP account so as to avoid potential misuse of the account to establish sessions with other accounts.
[0028] One technical effect of the disclosed subject matter is a relatively easier and less expensive development and maintenance costs of plugin apps, by maintaining the GUI using browser scripts. In some exemplary embodiments, the disclosed subject matter may allow for developing and maintaining a uniform GUI that is web-based and which is cross -platform and cross-browser, even if some of the features it provides require the usage of native programming or plugin applications.
[0029] Another technical effect is to allow for website owners to provide different GUIs when using a same underlying plugin application. As an example, two website may provide a user with a "click to call" button, that when clicked implements a VoIP session using the same VoIP plugin application. However, each website may provide a different GUI, which is based on images, links and other HyperText Markup Language (HTML) elements, to interact with the VoIP plugin application, such as, for example, displaying various characteristics regarding the session, allowing to hang up, to add another participant, or the like.
[0030] Yet another technical effect is providing a user with an experience of a web- based application while the backend of the service is provided by a plugin application. The GUI may be based on HTML and therefore may utilize standard features of HTML browsers such as image fetching and rendering, object resizing, in-document search, history mechanism, or the like.
[0031] Referring now to Fig. 1 showing a flowchart diagram of a method, in accordance with some embodiments of the disclosed subject matter.
[0032] In Step 100, a web page is obtained from a web server. The web page may be obtained by a web browser of a computerized device, such as but not limited to a computer, a laptop, a tablet, a mobile device, a smartphone, or the like. The web page may be obtained from the web server over the Internet, over an intranet, or the like. The web page may comprise a browser script to be executed by a browser. The browser script may be a cross platform script that is not dependent on being executed on a specific platform, such as but not limited to an Operating System. The browser script may be a cross browser script that can be executed by different browsers, such as based on limiting its functionality to that of standards of browsers (e.g., HTML5, JavaScript, or the like) and avoiding use of specific-browser functionality.
[0033] In Step 110, the browser, being execute on the computerized device, may execute the browser script. In some exemplary embodiments, the web page may contain an instruction to execute the browser script. In some exemplary embodiments, the instruction may be executed when the web page is being processed by the browser.
[0034] In Step 120, the browser script may determine whether or not a plugin application is installed on the device. In case the plugin application is not installed, the browser script may download a plugin application that is suitable to the platform of the device. In some exemplary embodiments, there may be various versions of the plugin application have substantially the same functionality, and each suitable for a different platform. [0035] In Step 130, the browser script may invoke the plugin application. The browser script may pass one or more parameters to the plugin application. The browser may pass, via a parameter, an identifier that is used in order for the plugin application to communicate with the browser script. The identifier may be a unique identifier.
[0036] In Step 170, the plugin application, during its execution and operation, may update a server with a status or other message. The plugin may transmit a Hypertext Transfer Protocol (HTTP) request to update the server. The server may be a local server, such as deployed on the device itself and accessible at localhost:SERVER_PORT. Additionally or alternatively, the server may be remote server deployed on a separate device such as accessible at SERVER_IP:SERVER_PORT.
[0037] In Steps 140-160, the operation of the browser script is illustrated in general terms. In Step 140, the browser script may perform a poll request to the server requesting to receive a status value (or other content) associated with the identifier. In some exemplary embodiments, the browser script has a socket which initiates a long polling request every X seconds to the server. In some exemplary embodiments, the browser script may be implemented using JavaScript. The browser script may utilize socket.io package to transmit an xhr-polling request with a predetermined polling duration. The server may be implemented using node.js package which can serve xhr- polling requests transmitted to it over HTTP. It will be noted that the browser script may not utilize a UDP/TCP socket to perform the request in order to adhere to the cross platform requirement.
[0038] In Step 150, browser script may respond to receiving a status in Step 140, such as by performing predetermined functionality. In some exemplary embodiments, the functionality may be to modify a display to the user implemented in HTML and displayed in the browser based on the status change. In some exemplary embodiments, the plugin application may transmit to the browser script any GUI modification request using statuses thereby allowing the browser script to function as a GUI of the browser script. [0039] In Step 160, the browser script may re-invoke the plugin application with additional/different one or more parameters. In some exemplary embodiments, the invocation may still use the same identifier or may use a different identifier. By re- invoking the plugin application the browser script may provide the plugin application with messages using the parameters. In some exemplary embodiments, in response to an action of the user, such as clicking a button such as "END CALL" button, "ESTABLISH CALL" button, "START GAME" button, "END GAME" button, "PAUSE" button, or the like, clicking a link or interacting with the GUI implemented by the browser script in another manner, the browser script may notify the plugin application of the request by the user. In case the browser script merely acts as a GUI the functionality is implemented by the plugin application and by invoking the plugin application with suitable parameter values, the plugin application may be notified of the decision of the user.
[0040] It will be noted that the disclosed subject matter is not limited to an embodiment in which the plugin application does not have a GUI component and utilizes the browser script to provide it with a GUI. The disclosed subject matter may be used for a variety of additional and different scenarios in which plugin applications and browser scripts co-operate.
[0041] Referring now to Fig. 2 showing a flowchart diagram of a method, in accordance with some embodiments of the disclosed subject matter.
[0042] In Step 200, a user may utilize a mobile device, such as a smartphone, a Personal Digital Assistant (PDA), a tablet computer, or a similar device. The user may point the device towards a code, which may be visually notable, such as printed on paper, displayed on a screen, or the like. The code may be computer-readable using visual sensoring, such as a barcode, a QR code, or the like.
[0043] In Step 210, the mobile device may scan the code. The mobile device may scan the code using a camera embedded in the mobile device. The mobile device may decode the code. The code may be decoded to a URL or to another instruction for the mobile device. [0044] In Step 220, a browser of the mobile device may access a web document based on the URL encoded within the code. The browser may access a web server to download the web document. The web document may or may not comprise a browser script.
[0045] In Step 230, the browser script may be executed by the browser.
[0046] In Step 240, the browser script may invoke a VoIP application to establish a VoIP session with a predetermined targeted. The predetermined target may be, for example, a call center of a vendor which provided the code. In some exemplary embodiments, based the target is defined by the code. Additionally or alternatively, the code uniquely identifies the target as well as an account to be charged for conducting the session. In some exemplary embodiments, the account information is not embedded in the code nor can the code be modified to use the same account information to call a different target. In some exemplary embodiments, the VoIP application may be a plugin application which utilizes the script browser as implementing a GUI.
[0047] In Step 250, the GUI in the browser may display status of the VoIP session based on status values which the VoIP application updated in the server.
[0048] Additionally or alternatively, in response to scanning the code, a VoIP session may be initiated by a different application, such as a native app, by a web document which invokes a plugin application without utilizing a server to pass to the browser updated statuses of the plugin application, or the like.
[0049] Referring now to Fig. 3A showing a block diagram of an apparatus, in accordance with some exemplary embodiments of the disclosed subject matter. An Apparatus 300 may be a computerized apparatus adapted to perform methods such as depicted in Fig. 1 and Fig. 2. In some exemplary embodiments, Apparatus 300 may be a computer, a mobile device, a tablet computer, a laptop computer, a PDA, or the like.
[0050] In some exemplary embodiments, Apparatus 300 may comprise a Processor 302. Processor 302 may be a Central Processing Unit (CPU), a microprocessor, an electronic circuit, an Integrated Circuit (IC) or the like. Alternatively, Apparatus 300 can be implemented as firmware written for or ported to a specific processor such as Digital Signal Processor (DSP) or microcontrollers, or can be implemented as hardware or configurable hardware such as field programmable gate array (FPGA) or application specific integrated circuit (ASIC). Processor 302 may be utilized to perform computations required by Apparatus 300 or any of it subcomponents.
[0051] In some exemplary embodiments of the disclosed subject matter, Apparatus 300 may comprise an Input/Output (I/O) Module 305 such as a terminal, a display, a keyboard, a touch screen, an input device or the like to interact with Apparatus 300, to invoke Apparatus 300 and to receive results. It will however be appreciated that Apparatus 300 can operate without human operation. In some exemplary embodiments, the I/O Module 305 may be utilized to provide an interface to a user to interact with Apparatus 300, such as to present a GUI to the user, allow the user to interact with the GUI, or the like.
[0052] In some exemplary embodiments, Apparatus 300 may comprise a Memory Unit 307. Memory Unit 307 may be persistent or volatile. For example, Memory Unit 307 can be a Flash disk, a Random Access Memory (RAM), a memory chip, an optical storage device such as a CD, a DVD, or a laser disk; a magnetic storage device such as a tape, a hard disk, storage area network (SAN), a network attached storage (NAS), or others; a semiconductor storage device such as Flash device, memory stick, or the like. In some exemplary embodiments, Memory Unit 307 may retain program code operative to cause Processor 302 to perform acts associated with any of the steps shown in Fig. 1 and Fig. 2.
[0053] The components detailed below may be implemented as one or more sets of interrelated computer instructions, executed for example by Processor 302 or by another processor. The components may be arranged as one or more executable files, dynamic libraries, static libraries, methods, functions, services, or the like, programmed in any programming language and under any computing environment.
[0054] Browser 310 may be a web browser. In some exemplary embodiments, Browser 310 may be a computer program product configured to retrieve web documents from web servers. In some exemplary embodiments, Browser 310 may be capable of implementing HTTP and other communication protocols. In some exemplary embodiments, Browser 310 may be configured to render a display of web documents, such as by rendering HTML documents. In some exemplary embodiments, Browser 310 may be capable to execute scripts embedded within web documents.
[0055] In some exemplary embodiments, Browser Script 315 may be a browser script that is executable by Browser 310. In some exemplary embodiments, Browser Script 315 may be obtained from a computer network, such as the Internet. As an example, the browser script may be embedded or linked in a web document which is retrieved by Browser 310. Additionally or alternatively, Browser Script 315 may be a priori retained in Memory Unit 307, such as being stored since being manually installed.
[0056] Plugin Application 335 may be a program product executable by Processor 302. In some exemplary embodiments, Plugin Application 335 may be a native program that is not cross platform.
[0057] In some exemplary embodiments, when Browser Script 315 is executed, Browser Script 315 may determine that it requires to invoke Plugin Application 335. In case, Plugin Application is not retained in Memory Unit 307, such as because it was not yet installed or downloaded, Plugin Application Selector 320 may be invoked to search for, download and install Plugin Application 335. In some exemplary embodiments, Plugin Application Selector 320 may determine the platform of Apparatus 300 and may select from a variety of counterpart plugin applications that application which is suitable for the platform used by Apparatus 300 (e.g., OS). In some exemplary embodiments, the selection enables Browser Script 315 to be used on different platforms as for each platform a suitable counterpart application may exist.
[0058] During execution of Plugin Application 335, Plugin Application 335 may transmit HTTP requests to Local Server 340 which may be located at localhost IP address. Local Server 340 may be a web server that is deployed on Apparatus 300.
[0059] Local Server 340 may update a data repository based on the results from Plugin Application 335 so as the data repository may reflect for each unique identifier a status or other message content.
[0060] Browser Script 315 may execute HTTP requests to Local Server 340, in order to obtain from Local Server 340 the status or other message content for a specific identifier. In some exemplary embodiments, Browser Script 315 may poll Local Server 340 for the information.
[0061] In some exemplary embodiments, Browser Script 315 may invoke a link, such as based on a URL, to trigger Plugin Application 335. The invocation may pass one or more parameters to Plugin Application 335, such as for providing a unique identifier, for passing a user decision or selection, or the like.
[0062] Referring now to Fig. 3B showing a block diagram of an apparatus, in accordance with some exemplary embodiments of the disclosed subject matter. An Apparatus 300 may be a computerized apparatus adapted to perform methods such as depicted in Fig. 1 and Fig. 2.
[0063] Apparatus 300 of Fig. 3B may be similar to that of Fig. 3A. Instead of deploying a local server, such as 340 of Fig. 3A, Apparatus 300 may communicate with a Remote Server 350. It will be noted that Remote Server 350 need not be physically remote from Apparatus 300 in terms of distance, but rather may be deployed on an external device there from. Remote Server 350 may be responsive to HTTP requests, such as those initiated by Browser Script 315 and Plugin Application 335. In some exemplary embodiments, Remote Server 350 may comprise processor (302), I/O Module (305), Memory Unit (307), or the like. In some exemplary embodiments, Remote Server 350 may retain within Memory Unit 307 a data repository indicating for each identifier a current status. The identifier may be an identifier of an executed instance of Plugin Application 335.
[0064] The present invention may be a system, a method, and/or a computer program product. The computer program product may include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present invention.
[0065] The computer readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device. The computer readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non- exhaustive list of more specific examples of the computer readable storage medium includes the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon, and any suitable combination of the foregoing. A computer readable storage medium, as used herein, is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable), or electrical signals transmitted through a wire.
[0066] Computer readable program instructions described herein can be downloaded to respective computing/processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and/or a wireless network. The network may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers. A network adapter card or network interface in each computing/processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective computing/processing device.
[0067] Computer readable program instructions for carrying out operations of the present invention may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C++ or the like, and conventional procedural programming languages, such as the "C" programming language or similar programming languages. The computer readable program instructions may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present invention.
[0068] Aspects of the present invention are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer readable program instructions.
[0069] These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. These computer readable program instructions may also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and/or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions which implement aspects of the function/act specified in the flowchart and/or block diagram block or blocks. [0070] The computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus or other device to produce a computer implemented process, such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions/acts specified in the flowchart and/or block diagram block or blocks.
[0071] The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of instructions, which comprises one or more executable instructions for implementing the specified logical function(s). In some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts or carry out combinations of special purpose hardware and computer instructions.

Claims

CLAIMS What is claimed is:
1. An apparatus having a processor, the processor being adapted to perform the steps of:
executing a browser script, wherein the browser script is a cross platform and cross browser script, wherein the browser script invokes a plugin application, wherein the plugin application is a native application that is not cross platform;
executing the plugin application;
updating, by the plugin application, a data repository with a status indicator associated with the plugin application;
polling, by the browser script, the data repository to obtain the status indicator of the plugin application,
whereby providing a communication channel from the plugin application to the browser script.
2. The apparatus of Claim 1, wherein the data repository is maintained by a server application that is executed by the processor.
3. The apparatus of Claim 1, wherein the data repository is maintained by a remote server.
4. The apparatus of Claim 1, wherein said processor is further being adapted to perform the steps of:
determining, by the browser script, which platform is being used to execute the browser script;
selecting the plugin application based on the platform from a plurality of plugin applications, each of which is associated with a different platform; and invoking the plugin application by the browser.
5. The apparatus of Claim 1,
wherein the browser script is configured to provide a Graphical User Interface (GUI) for a user of the apparatus;
wherein the browser script is configured to modify an appearance of the GUI based on the status indicator, whereby the browser script implements a graphical user interface for the plugin application that is potentially uniform over different platforms and browsers.
6. The apparatus of Claim 1, wherein the browser script is configured to invoke a link to trigger the plugin application, whereby two-way communication channels between the browser script and the plugin application is provided, wherein only one of the two-way communication channels uses the data repository.
7. The apparatus of Claim 1, wherein the apparatus is a mobile device having a sandboxed operating system, wherein the plugin application is an app of the mobile device.
8. The apparatus of Claim 1, wherein the plugin application is a Voice over Internet Protocol (VoIP) application configured to allow telecommunication over the Internet between a user of said apparatus and a second user.
9. The apparatus of Claim 1, wherein said polling is performed over Hypertext Transfer Protocol (HTTP) to a predetermined server address at which a server maintaining the data repository is deployed.
10. A mobile device comprising:
a camera for providing imagery input to said mobile device;
a processor configured to:
in response to a user of said mobile device scanning a code using said camera, initiating a Voice over Internet Protocol (VoIP) application, wherein the VoIP application is configured to allow telecommunication over the Internet between the user and a second user.
11. The mobile device of Claim 10, wherein the code encodes an address of the second user, wherein the processor is further configured to: initiate by the VoIP application a telecommunication session that is directed towards the address.
12. The mobile device of Claim 10, wherein the code is a Quick Response (QR) code.
13. A computer-readable medium comprising a code readable by a mobile device, wherein the code encodes an instruction for the mobile device to initiate, using a Voice over Internet Protocol (VoIP) application, a VoIP session between a user of the mobile device and a second user, wherein the code encodes an address of the second user.
14. A method comprising:
executing, by a processor, a browser script, wherein the browser script is a cross platform and cross browser script, wherein the browser script invokes a plugin application, wherein the plugin application is a native application that is not cross platform;
executing, by the processor, the plugin application;
updating, by the plugin application, a data repository with a status indicator associated with the plugin application;
polling, by the browser script, the data repository to obtain the status indicator of the plugin application,
whereby providing a communication channel from the plugin application to the browser script.
15. The method of Claim 14, wherein the data repository is maintained by a server application that is executed by the processor.
16. The method of Claim 14, wherein the data repository is maintained by a remote server.
17. The method of Claim 14 further comprising:
determining, by the browser script, which platform is being used to execute the browser script;
selecting the plugin application based on the platform from a plurality of plugin applications, each of which is associated with a different platform; and invoking the plugin application by the browser.
18. The method of Claim 14,
wherein the browser script is configured to provide a Graphical User Interface (GUI) for a user of the apparatus;
wherein the browser script is configured to modify an appearance of the GUI based on the status indicator, whereby the browser script implements a graphical user interface for the plugin application that is potentially uniform over different platforms and browsers.
19. The method of Claim 14, wherein the browser script is configured to invoke a link to trigger the plugin application, whereby two-way communication channels between the browser script and the plugin application is provided, wherein only one of the two-way communication channels uses the data repository.
20. The method of Claim 14, wherein the apparatus is a mobile device having a sandboxed operating system, wherein the plugin application is an app of the mobile device.
21. The method of Claim 14, wherein the plugin application is a Voice over Internet Protocol (VoIP) application configured to allow telecommunication over the Internet between a user of said apparatus and a second user.
22. The method of Claim 14, wherein said polling is performed over Hypertext Transfer Protocol (HTTP) to a predetermined server address at which a server maintaining the data repository is deployed.
23. A computer program product comprising a computer readable storage medium retaining program instructions, which program instructions when read by a processor, cause the processor to perform the method of Claim 14.
PCT/IL2014/050331 2013-09-09 2014-04-06 Communication channel between plugin application and browser script WO2015033333A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201361875523P 2013-09-09 2013-09-09
US61/875,523 2013-09-09

Publications (1)

Publication Number Publication Date
WO2015033333A1 true WO2015033333A1 (en) 2015-03-12

Family

ID=52627872

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/IL2014/050331 WO2015033333A1 (en) 2013-09-09 2014-04-06 Communication channel between plugin application and browser script

Country Status (1)

Country Link
WO (1) WO2015033333A1 (en)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016200435A1 (en) * 2015-06-07 2016-12-15 Apple Inc. Intelligent disabling of browser plugins
US10659405B1 (en) 2019-05-06 2020-05-19 Apple Inc. Avatar integration with multiple applications
CN111338623A (en) * 2020-02-10 2020-06-26 北京字节跳动网络技术有限公司 Method, device, medium and electronic equipment for developing user interface
CN111638909A (en) * 2020-05-20 2020-09-08 中国软件与技术服务股份有限公司 Method and electronic device for cross-browser and cross-platform calling of scanning equipment
US11103161B2 (en) 2018-05-07 2021-08-31 Apple Inc. Displaying user interfaces associated with physical activities
CN113923080A (en) * 2021-10-11 2022-01-11 中认车联网技术服务(深圳)有限公司 Video signal monitoring platform based on vehicle-mounted Ethernet and data analysis method
US11321731B2 (en) 2015-06-05 2022-05-03 Apple Inc. User interface for loyalty accounts and private label accounts
US11580608B2 (en) 2016-06-12 2023-02-14 Apple Inc. Managing contact information for communication applications
WO2024034946A1 (en) * 2022-08-09 2024-02-15 (주)인스웨이브시스템즈 System and method for building and distributing multi-platform support application

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030126311A1 (en) * 2001-12-12 2003-07-03 Kushnirskiy Igor Davidovich Application programming interface for connecting a platform independent plug-in to a web browser
US20100321378A1 (en) * 2009-06-18 2010-12-23 International Business Machines Corporation Computer Method and Apparatus Providing Interactive Control and Remote Identity Through In-World Proxy
US20120280783A1 (en) * 2011-05-02 2012-11-08 Apigy Inc. Systems and methods for controlling a locking mechanism using a portable electronic device
US20130103686A1 (en) * 2011-10-21 2013-04-25 Startup Productions, Llc Method and apparatus for interest matching, discovery, communication and collaboration

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030126311A1 (en) * 2001-12-12 2003-07-03 Kushnirskiy Igor Davidovich Application programming interface for connecting a platform independent plug-in to a web browser
US20100321378A1 (en) * 2009-06-18 2010-12-23 International Business Machines Corporation Computer Method and Apparatus Providing Interactive Control and Remote Identity Through In-World Proxy
US20120280783A1 (en) * 2011-05-02 2012-11-08 Apigy Inc. Systems and methods for controlling a locking mechanism using a portable electronic device
US20130103686A1 (en) * 2011-10-21 2013-04-25 Startup Productions, Llc Method and apparatus for interest matching, discovery, communication and collaboration

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11734708B2 (en) 2015-06-05 2023-08-22 Apple Inc. User interface for loyalty accounts and private label accounts
US11321731B2 (en) 2015-06-05 2022-05-03 Apple Inc. User interface for loyalty accounts and private label accounts
US10037216B2 (en) 2015-06-07 2018-07-31 Apple Inc. Intelligent disabling of browser plugins
WO2016200435A1 (en) * 2015-06-07 2016-12-15 Apple Inc. Intelligent disabling of browser plugins
US11580608B2 (en) 2016-06-12 2023-02-14 Apple Inc. Managing contact information for communication applications
US11922518B2 (en) 2016-06-12 2024-03-05 Apple Inc. Managing contact information for communication applications
US11103161B2 (en) 2018-05-07 2021-08-31 Apple Inc. Displaying user interfaces associated with physical activities
US10659405B1 (en) 2019-05-06 2020-05-19 Apple Inc. Avatar integration with multiple applications
CN111338623B (en) * 2020-02-10 2023-06-30 北京字节跳动网络技术有限公司 Method, device, medium and electronic equipment for developing user interface
CN111338623A (en) * 2020-02-10 2020-06-26 北京字节跳动网络技术有限公司 Method, device, medium and electronic equipment for developing user interface
CN111638909A (en) * 2020-05-20 2020-09-08 中国软件与技术服务股份有限公司 Method and electronic device for cross-browser and cross-platform calling of scanning equipment
CN113923080A (en) * 2021-10-11 2022-01-11 中认车联网技术服务(深圳)有限公司 Video signal monitoring platform based on vehicle-mounted Ethernet and data analysis method
CN113923080B (en) * 2021-10-11 2023-12-19 中认车联网技术服务(深圳)有限公司 Video signal monitoring platform based on vehicle-mounted Ethernet and data analysis method
WO2024034946A1 (en) * 2022-08-09 2024-02-15 (주)인스웨이브시스템즈 System and method for building and distributing multi-platform support application

Similar Documents

Publication Publication Date Title
WO2015033333A1 (en) Communication channel between plugin application and browser script
US11269498B2 (en) Dynamic user interface customization
US10050822B2 (en) Method and system for sharing application, and application service platform
EP3732582B1 (en) Platform-independent application publishing to a personalized front-end interface by encapsulating published content into a container
JP6253110B2 (en) Using the application cache to update installed application resources
US11785072B2 (en) Method, apparatus, and system for pushing application program, and device
US11016716B2 (en) Picture interface display method and apparatus according to jump protocol
US20130124606A1 (en) Automatic personalization of downloadable mobile apps
US9009741B2 (en) Mechanism to initiate calls between browsers without predefined call signaling protocol
US9807224B2 (en) Method and apparatus for accessing services of a device
CN103269396A (en) Method and system capable of conducting management on mobile terminal
WO2013090512A2 (en) Dynamically generating a mobile application
CN110708346A (en) Information processing system and method
CN108416021B (en) Browser webpage content processing method and device, electronic equipment and readable medium
WO2013082501A1 (en) Systems and methods for facilitating push notification
US20160105482A1 (en) Reproducing state of source environment when image was screen captured on a different computing device using resource location, resource navigation and positional metadata embedded in image
KR20160008552A (en) Web platform with select-to-call functionality
CN112312222A (en) Video sending method and device and electronic equipment
CN108549586B (en) Information processing method and device
CN112015383A (en) Login method and device
US9754327B2 (en) Method and apparatus for configuring social networking site sharing functions
CN114816637B (en) Application display method, device and system embedded in applet
GB2478767A (en) Accessing services of a device
CN111162960B (en) Method and server for starting debugging panel
WO2017084315A1 (en) Video call connection method, system and device, and video service end

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 14842259

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 14842259

Country of ref document: EP

Kind code of ref document: A1