Return-Path: X-Original-To: apmail-cordova-dev-archive@www.apache.org Delivered-To: apmail-cordova-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 42C2518DEB for ; Tue, 16 Feb 2016 20:25:21 +0000 (UTC) Received: (qmail 53332 invoked by uid 500); 16 Feb 2016 20:10:21 -0000 Delivered-To: apmail-cordova-dev-archive@cordova.apache.org Received: (qmail 53280 invoked by uid 500); 16 Feb 2016 20:10:21 -0000 Mailing-List: contact dev-help@cordova.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cordova.apache.org Delivered-To: mailing list dev@cordova.apache.org Received: (qmail 51622 invoked by uid 99); 16 Feb 2016 20:09:03 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 16 Feb 2016 20:09:03 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 2B54FE0534; Tue, 16 Feb 2016 20:09:02 +0000 (UTC) From: NGumby To: dev@cordova.apache.org Reply-To: dev@cordova.apache.org References: In-Reply-To: Subject: [GitHub] cordova-plugin-inappbrowser pull request: inAppBrowser custom appl... Content-Type: text/plain Message-Id: <20160216200902.2B54FE0534@git1-us-west.apache.org> Date: Tue, 16 Feb 2016 20:09:02 +0000 (UTC) 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 `Custom Action in the app` 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