You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cordova.apache.org by NGumby <gi...@git.apache.org> on 2016/02/16 21:09:02 UTC

[GitHub] cordova-plugin-inappbrowser pull request: inAppBrowser custom appl...

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 infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

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