Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

State of WKWebView on Cordova iOS 9?

iOS 8 introduced WKWebView, a modernised web view for iOS with more features, particularly notably JIT compilation for Javascript code which significantly improves performance.

However WKWebView on iOS 8 had some bugs which prevented Cordova using it by default. AFAIK there are plugins that can use it, but they all say "beta", "incomplete" etc. Also as far as I'm aware iOS 9 fixes the bugs that stopped Cordova defaulting to WKWebView in iOS 8.

So what is the state of WKWebView in Cordova on iOS 9? I can't seem to find any information about this. Does Cordova default to WKWebView on iOS 9? If not why not, and can it be officially enabled another way?

like image 985
AshleysBrain Avatar asked Sep 04 '15 20:09

AshleysBrain


People also ask

Does Cordova work for iOS?

Cordova for iOS projects can be opened in Xcode. This can be useful if you wish to use Xcode built in debugging/profiling tools or if you are developing iOS plugins. Please note that when opening your project in Xcode, it is recommended that you do NOT edit your code in the IDE.

What is Cordova Plugin whitelist?

Controls which URLs the app is allowed to ask the system to open. Without any <allow-intent> tags, no requests to external URLs are allowed.

Does ionic use WKWebView?

Ionic Web View for Cordova. A Web View plugin for Cordova, focused on providing the highest performance experience for Ionic apps (but can be used with any Cordova app). This plugin uses WKWebView on iOS and the latest evergreen webview on Android.

What is Cordova WebView?

Apache Cordova is an open source framework that enables web developers to use their HTML, CSS, and JavaScript content to create a native application for a variety of mobile platforms. Let's look further at how this works. Cordova takes your web application and renders it within a native WebView.


1 Answers

New edit: June 2019

Apple has not removed UIWebView in iOS 13 beta, so looks like it can be used at least for another year.

Ionic WebView plugin, starting in version 3.0.0 no longer uses a web server, but the WKURLSchemeHandler instead, that required to drop support for iOS 10 and older.

Still backport most fixes to 2.x branch that still have the web server for those that want to support iOS 10.

WKWebView was not integrated into cordova-ios 5.0.0, a plugin is still required to use it. Should be there for 6.0.0 version.

And now there is Ionic Capacitor available, an Apache Cordova alternative that was built with the WKWebView since the beginning. It has its own set of plugins, but it's also compatible with most Cordova plugins. https://capacitor.ionicframework.com/

Old edit: August 2018

Apple has deprecated UIWebView in iOS 12 and will probably remove it in iOS 13.

Apache Cordova has announced that it will integrate the cordova-plugin-wkwebview-engine into cordova-ios in next major release (5.x.x), but UIWebView will still work and be the default one. Also, you'll be able to switch between them in runtime to easily test your app. In a future release it will remove the whole UIWebView code and the WKWebView will be the only option.

But cordova-plugin-wkwebview-engine still have a lot of issues. I still recommend using cordova-plugin-ionic-webview as using GCDWebServer solves most of the WKWebView issues.

New edit: November 2017

Ionic team has launched a new WKWebView plugin that is no longer a fork of the Cordova one and uses GCDWebServer internally and overcomes most of the Cordova plugin known issues.

New edit: 24 August 2016

Updated just to add a fork of the apache's WKWebView plugin created by the ionic framework team that adds some enhancements to the plugin.

https://github.com/driftyco/cordova-plugin-wkwebview-engine

The enhancements will probably land on the core plugin soon, but you can take a look and test the ionic fork now.

New edit: 9 December 2015

cordova ios 4.0.0 has been released and the version 1.0.0 of cordova-plugin-wkwebview-engine

To try it:

cordova create wkwvtest my.project.id wkwvtest cd wkwvtest cordova platform add ios@4 cordova plugin add cordova-plugin-wkwebview-engine 

As I already told, cordova-plugin-wkwebview-engine only supports iOS 9, on iOS 8 it will use UIWebView and has some know issues

If you want to support iOS 8 too, you can use the wkwebview-engine-localhost (experimental) or cordova-plugin-wkwebview from Telerik, both of them use a local web server

https://github.com/apache/cordova-plugins/tree/master/wkwebview-engine-localhost

OLD MESSAGE:

You can use WKWebView with cordova using the WKWebView plugins available.

The problem you mention is that WKWebView can't load local files, so the plugins use a local web server to workaround the problem.

There are some of them like this one from telerik https://github.com/Telerik-Verified-Plugins/WKWebView (with the web server built in) or the official from cordova team https://github.com/apache/cordova-plugins/tree/master/wkwebview-engine-localhost (with the web server as dependency plugin)

As the bug you mention is fixed on iOS 9, the current cordova plugin (compatible with iOS 8 and iOS 9, using the web server) has been renamed to wkwebview-engine-localhost, and the current name cordova-plugin-wkwebview-engine will be used for a new plugin that will support iOS 9 only and won't use the web server

You can see the issues to track the progress here

https://issues.apache.org/jira/browse/CB-9566

https://issues.apache.org/jira/browse/CB-9567

EDIT: I bring news https://shazronatadobe.wordpress.com/2015/09/09/apache-cordova-ios-4-0-0-and-wkwebview-support/

WKWebView support

The cordova-plugin-wkwebview-engine plugin will be iOS 9 only and it will be a core plugin. The development of this updated plugin is still in progress. Apple has fixed the bug where we couldn’t load documents from file:// urls, and it is iOS 9 only. On non-iOS 9 devices, cordova-ios will fallback to using the UIWebView.

The old version of this plugin used a local webserver to load your main document. This older plugin can be used where you want to use WKWebView in both iOS 8 and iOS 9 deployments, but the plugin will remain as a cordova-labs experiment. This plugin has some re-factoring work to be done.

like image 102
jcesarmobile Avatar answered Oct 21 '22 08:10

jcesarmobile