cordova-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Shazron <shaz...@gmail.com>
Subject Re: Create hybrid app using iOS cordova with WKWebView
Date Sat, 19 Nov 2016 01:01:48 GMT
Hi,
This is unnecessarily complex for cordova users since it is not the web
paradigm, and is not portable across platforms.

If you want to experiment using your proposed method:
You can fork the cordova-plugin-wkwebview-engine [1], and modify the source
to suit your purpose. Make sure to rename the plugin. Either that, create
your own plugin to depend on the cordova-plugin-wkwebview-engine, and
inherit from the wkwebview-engine class to override certain methods.

Ionic has some ideas on how to bridge the xhr limitation, but unfortunately
that pull request has been withdrawn for now [2]. You can take a look at
their implementation.

[1] https://github.com/apache/cordova-plugin-wkwebview-engine
[2] https://github.com/apache/cordova-plugin-wkwebview-engine/pull/15



On Thu, Nov 17, 2016 at 9:21 AM, Li, Jonathan <jonathan.li@sap.com> wrote:

> Hi,
> Recently we start to investigate the possibility to adopt WKWebView for
> building ios cordova hybrid apps. Currently those apps are built with
> UIWebView on ios cordova library.
>
> In our application, the main html content is loaded from remote web server
> at runtime, and local cordova js resource are then injected into html page
> to leverage the device native functions, such as camera, calendar, etc. As
> the html page is loaded from remote server using https connection, the
> wkwebview will not allow the local web resource (for example, cordova.js)
> to be injected into the html page by local file url (file:// url). We also
> tried to use the cordova localhost webserver plugin to inject the local web
> resource into the html page, but that does not work either as localhost web
> server plugin only supports http connection, and wkwebview does not allow
> to inject http content into the https html page. In addition, as
> https://localhost: is a different domain from the remote web page, so xhr
> request from https://localhost: will not be able to receive wkwebview’s
> didReceiveAuthenticationChallenge callback method to handle the
> challenge. Those limitations also apply even if injecting cordova web
> resource to a new iframe on the https html page.
>
> So, in order to solve the issue, I wonder whether it is possible to have
> an option in cordova to allow loading the js resource as javascript context
> so instead of loading the js file as url as shown below
> <script type=”text/javascript” src=”pluginscript.js”></script>
> the javascript content will be loaded directly into the script element
> <script type=”text/javascript” script>
> …raw plugin script content
> </script>
>
> In this way, all the cordova script and remote https content can live in a
> single domain to avoid the cross domain limiation.
>
> The initial loading of codova.js and other preload plugin js files can be
> injected using wkwebview userContentController at
> WKUserScriptInjectionTimeAtDocumentEnd. For the on-demand loading of
> plugin js files, the cordova.js can let the require method to send a
> cordova bridge call and then use wkwebview’s evaluateJavaScript method to
> load those javascitp content in <script> element.
>
> Do you think the approach works? Or is there other better option?
>
> Thanks
> Jonathan
>
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message