Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Phonegap / Cordova not working in ios8

Tags:

ios

ios8

cordova

I played around with the iOS 8 beta and noticed that Cordova/Phonegap is pretty much broken.

For me it is mainly the InAppBrowser that now doesn't show up.

what are your experiences? Do you have a fix or an idea for a solution?

Thanks.

like image 624
user3660133 Avatar asked Jun 03 '14 06:06

user3660133


2 Answers

You can fix this with a bit of Javascript in your index.html (or install iOS 8 beta 2, which seems to have fixed the issue): https://gist.github.com/EddyVerbruggen/cd02c73162180793513e#file-ios8-beta-phonegap-fix

// temp fix for iOS8 beta, add it after the reference to cordova.js
// You don't actually require it for ios 8 beta 5
if (navigator.userAgent === undefined) {
  navigator.__defineGetter__('userAgent', function() {
    return("Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit");
  });
}
like image 132
Eddy Verbruggen Avatar answered Sep 18 '22 13:09

Eddy Verbruggen


A plain cordova sample app (e.g. "cordova create test") will load fine.

If you add any cordova plugins you will encounter problems in "iOSExec()", see "platform_www/cordova.js":

bridgeMode = navigator.userAgent.indexOf(' 5_') == -1 ? jsToNativeModes.IFRAME_NAV: jsToNativeModes.XHR_NO_PAYLOAD;

Change that to:

bridgeMode = jsToNativeModes.IFRAME_NAV;

and you can use plugins again. This will break backwards compatibility with iOS 5, but i doubt you will find anybody running iOS 5 and cordova today...

If you are using fastclick.js or backbone.js you will have to make some small modifications, too. Just follow the error messages in Safari's webinspector.

like image 36
kapejod Avatar answered Sep 19 '22 13:09

kapejod