How to conditionally load plugins in PhoneGap / Cordova - ios

I have an app built on Cordova 3.3 running this phonegap-estimote plugin.
All works great on iOS 7 devices, but will crash on startup for any version previous.
I've tried using window.device.version on DeviceReady to bypass calls related to the plugin, but I think the app crashes on plugin initialization.
So my question: is there a way to conditionally load a plugin or prevent it from initializing?

This is Wojtek Borowicz, I'm a community evangelist in Estimote.
Please note that Estimote SDK, for which the referenced PhoneGap plugin was built, is only compatible with iOS 7. You can however set some code within your libraries and the CoreLocation from 'required' to 'optional'

Related

Phonegap; Does the developer app support 3rd party plugins?

I'm trying to add the 3rd party plugin; BarcodeScanner to my project and have done successfully. When building the final app it works fine.
However is there any way to add this plugin to allow the iOS 'PhoneGap' app without having to build the project?
I've tried CLI to add the plugin and also have added the plugin to my config.xml; I've also looked on google and cannot find an answer. Some people say you can and others say you can't.
Thanks
bump
PhoneGap App is essentially a cordova app with a fixed set of plugins installed. The app is capable of downloading and executing the css/html/javascript parts of a Cordova application. However, It is not possible to install a plugin that includes native parts over-the-air.

cordova-plugin-screen-orientation doesn't work with mobileFirst CLI

I have been trying to use cordova-plugin-screen-orientation 1.4.0 "Screen Orientation" in my mfp cli cordova project, but it never works
I have used the exact same code outside of the mfp platform and it works just fine
any known issues with this?
Looks like there may be a defect with the mfp cordova integration that prevents the plug-in from working as advertised. You will need to open a PMR (support ticket) in order for the development team to further investigate it. If you choose to open it, please mention the PMR number.

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?
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.

compilation error when integrating Fabric Twitter Kit in android

I am an android developer. I have a problem by using Fabric SDK for android.
I tried to integrate Twitter-Kit for my own implemented application.
My application android build version is Android 2.3.3 (Api level 10).
After adding kit-libs to my project i am getting compilation error because of some theme and resources are missed.
I figured out the root cause for the issues.
That is because of kit-libs android jars required android build version Android 5.0 (Api level 21).
So some of the resources are missed when i integrated the kit-libs to my own project which is supporting from android api level 10.
Please suggest me how can i use this Twitter-Kit( kit-libs) for my application which is build on android api level 10.
I am suspecting the issue with supporting libraries are mismatched in my application and integrated fabric twitter kit library apps.
Please let me know how can i check the problem with supporting lib's are not.
Please find the attached screen for my problem.
Finally i got answer for my question.
Root cause:
It is the problem when i integrate Fabric Twitter Kit into my application.
Some mismatch happen for my application targetSdkVersion and twitter library projects targetSdkVersion.
While integrating twitter the following property manifestmerger.enabled=true was added in my project.properties file. Because of this property my application is mismatching targetSdkVersion.
Solution:
Just commented manifestmerger.enabled=true in project.properties file.
Make sure is there any dependencies with that property before you are going to make comment out(or remove). For me it was added after integrating twitter kit for my android application.

BarcodeScanner on PhoneGap 1.5 for iOS

I'm trying to use the BarcodeScanner PhoneGap plugin on the new PhoneGap 1.5 but can't compile it.
I'm following the instructions here: https://github.com/phonegap/phonegap-plugins/tree/master/iPhone/BarcodeScanner
But it seems to be for the previous releases.
I'm using the Xcode 4.2, PhoneGap 1.5 and building for iOS 4.0+
Has anyone got this plugin working in PhoneGap 1.5?
Hi new updation available that supports upto 2.0 https://github.com/phonegap/phonegap-plugins/tree/master/iOS/BarcodeScanner
Phonegap 1.5 has come up with a major change which broke many things. I see it's backward compatible but not completely sure.
I just wrote a YouTubeUploader plugin with Phonegap 1.5 and realized instead of Phonegap it's Cordova stuff there. So if the plugin doesn't work, try modifying source code to use Cordova naming instad of Phonegap.
I will write about my plugin soon.

Resources