Github user NGumby commented on the pull request:

    
https://github.com/apache/cordova-plugin-inappbrowser/pull/99#issuecomment-184857676
  
    I think a better approach to communicate between an external website and 
the app, is to raise an event in shouldOverrideLoadUrl like this :
    
    ```
    public boolean shouldOverrideUrlLoading(WebView webView, String url) {
                LOG.d(LOG_TAG, "shouldOverrideUrlLoading:" + url);
    
                if (url.startsWith(WebView.SCHEME_TEL)) {
                    ...
                }
                else if (url.startsWith("myscheme:")) {
                                try {
                                        JSONObject obj = new JSONObject();
                                        obj.put("type", "customevent");
                                        obj.put("url", url);
                                        sendUpdate(obj, true);
                        return true;
                                } catch (JSONException ex) {
                                        LOG.e(LOG_TAG, "URI passed in has 
caused a JSON error.");
                                }
                }
                return false;
            }
    ```
    
    add this to InAppBrowser.js 
    
    ```
        function InAppBrowser() {
            this.channels = {
                'loadstart': channel.create('loadstart'),
                'loadstop': channel.create('loadstop'),
                'loaderror': channel.create('loaderror'),
                'customevent': channel.create('customevent'),
                'exit': channel.create('exit')
            };
        }
    
    ```
    in your app, you can then do
                  `  appBrowser.addEventListener("customevent", 
function(event){console.log("My custom event raised:" + event.url)});
    `
    
    from the external website, you can then have a link like
    
    `<a href="myscheme://mycustomaction?someparam=value">Custom Action in the 
app</a>`
    
    It works pretty well, and you can parse the url to do the custom actions!


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@cordova.apache.org
For additional commands, e-mail: dev-h...@cordova.apache.org

Reply via email to