macgap - make iOS apps






statusbar plugin

  • Try out the different statusbar possibilities and read explanation:
<preference name="StatusBarOverlaysWebView" value="false"/>
<preference name="StatusBarBackgroundColor" value="#000000"/>
<preference name="StatusBarStyle" value="lightcontent" />

Bonjour (ios)


ZeroConf (android)

  • only for Android???
  • [[ Bonjour Browser]]
  • add plugin and run this code: ZeroConf.list("_3dprinter._tcp.local.", 6000, function(success) { console.log("list succes"); console.log(arguments); console.log(success); }, function(error) { console.log(error); } );“_3dprinter._tcp.local.”, function(result) { console.log(‘»»»»»»»»> _3dprinter._tcp.local.’); console.log(JSON.stringify(result, null, 4)); //console.log(util.inspect(service, false, null)); });

# android run
  phonegap run android --device

# angular directive with templateUrl
be careful with templateUrl's in angular directives. iPhone (and probably Android) is case-sensitive. So not exactly matching templateUrl's don't show up on iPhone but do show up on OSX!

make sure to delete files in www/ and platforms/.../www/ folder since overwriting file WebLink.html with Weblink.html will keep the same file!

# Overscroll / webview bounce background color
or disable:

in native Objective C code in MainViewController.m

#define UIColorFromRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) » 16))/255.0 green:((float)((rgbValue & 0xFF00) » 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]

  • (void)webViewDidFinishLoad:(UIWebView*)theWebView { // Black base color for background matches the native apps theWebView.backgroundColor = UIColorFromRGB(0xF1EFF0); ```

get rid of ‘Started backup to iCloud! Please be careful…’

in config.xml:

libobjc.A.dylib`objc_msgSend + 6, name = ‘WebThread’, stop reason = EXC_BAD_ACCESS

  • I tried to turn on ‘zombies’ with Cmd+Alt+R -> diagnostics…… Then use Cmd+I to run the app in Instruments. Choose ‘Zombies’ as template and press the REC button. It gives the error ‘'’An Objective-C message was sent to a deallocated ‘UIViewAnimationState’ object (zombie) at address: 0x167a5c60. ‘’’ It seems to be a problem with phonegap: read more:!topic/phonegap/YyIvESnRVGs
  • see this issue for a workaround (update: problem came back):

splashscreen notation in config.xml

Don’t use ‘'’gap:’’’ in front of ‘'’splash’’’ because that doesn’t work!

<splash gap:platform="ios" src="assets/screen/ios/Default-568h@2x~iphone.png" width="640" height="1136" />
<splash gap:platform="ios" src="assets/screen/ios/Default-Landscape@2x~ipad.png" width="2048" height="1536" />
<splash gap:platform="ios" src="assets/screen/ios/Default-Landscape~ipad.png" width="1024" height="768" />
<splash gap:platform="ios" src="assets/screen/ios/Default-Portrait@2x~ipad.png" width="1536" height="2048" />
<splash gap:platform="ios" src="assets/screen/ios/Default-Portrait~ipad.png" width="768" height="1024" />
<splash gap:platform="ios" src="assets/screen/ios/Default@2x~iphone.png" width="640" height="960" />
<splash gap:platform="ios" src="assets/screen/ios/Default~iphone.png" width="320" height="480" />

log verbose

phonegap -d build ios > build.log

toolchain info

sw_vers -productVersion
ios-deploy -V
xcodebuild -version
xcode-select --print-path
gcc --version
lldb --version

Unable to mount developer disk image

no solution yet. see my issue:

couldn’t understand kern.osversion `14.0.0’

To solve this I removed ios-deploy. But then I wasn’t able to re-install it with npm because the make command failed.

sudo npm install -g ios-deploy gcc -ObjC -g -o ios-deploy -framework Foundation -framework CoreFoundation -framework MobileDevice -F/System/Library/PrivateFrameworks ios-deploy.c couldn’t understand kern.osversion `14.0.0’ The solution was to disable the llvm-gcc42 compiler installed by macports (‘'’type gcc’’’ gave ‘’‘/opt/local/bin/gcc’’’). And use the Xcode gcc compiler instead.

sudo port deactivate llvm-gcc42 type gcc # result: gcc is hashed (/usr/bin/gcc) gcc -v # result: Configured with: –prefix=/Applications/ …… sudo npm install -g ios-deploy

now it works

create a true empty phonegap project


icons and splashscreens


Writing plugins

  • [[ javascript part]]
  • [[ iOS part]]



Error: CDVPlugin class CDVLogger (pluginName: Console) does not exist.

first remove platform/ios folder then: cordova platforms add ios cordova plugin rm org.apache.cordova.console cordova plugin add org.apache.cordova.console cordova build hmm.. en als dat niet werkt dan: plugins map en platforms map verwijderen en dan: phonegap local plugin add org.apache.cordova.inappbrowser phonegap local plugin add org.apache.cordova.console phonegap local plugin add org.apache.cordova.statusbar phonegap build ios

cordova.js aan het eind van je index.html



forward console.log to xcode

phonegap local plugin add phonegap build ios

stop lldb

killall lldb

hangs on (lldb) connect

update ios-deploy….? npm update -g ios-deploy


phonegap create MyApp -i -n MyApp
cd MyApp
phonegap build ios
export ANDROID_HOME=/Users/rick/Documents/android-sdk-macosx/
export PATH=$PATH:$ANDROID_HOME/tools/
export PATH=$PATH:$ANDROID_HOME/platform-tools
phonegap build android

don’t backup to iCloud

list plugins

phonegap plugin list

add/remove plugin



nice slideshow


error Abort trap: 6 ios-deploy

error ………platforms/ios/cordova/run: line 138: 58950 Abort trap: 6 ios-deploy -d -b “$DEVICE_APP_PATH” fix: npm install -g ios-deploy


phonegap run ios phonegap build ios phonegap remote build ios

in app browser

phonegap local plugin add

  • [[ InAppBrowser]]
  • [[ Child Browser]]


function openInternalBrowser(id) { var ref ='', '_blank', 'location=yes,transitionstyle=fliphorizontal'); ref.addEventListener('loadstart', function(event) { if (event.url.indexOf(".stl") > 0) { alert(event.url); ref.close(); } }); }

function openExternalBrowser(id) { var ref =‘’, ‘_system’, ‘location=yes’); } ```

phonegap remote build ios - PhoneGap 3.5.0 not supported….

Solution from [[|here]]. In your ‘‘www/config.xml’’ file add the following:

certificate help

combine gulp & phonegap


Phonegap App phonegap serve