my way on Mac (some code copy-paste. some capabilities not working in 1.6.X... just left in case - e.g. 'waitForAppScript'):
protected static AppiumDriver driver;
private static DesiredCapabilities capabilities = null;
if (deviceName.contains("iPhone")) capabilities = DesiredCapabilities.iphone();
else if (deviceName.contains("iPad")) capabilities = DesiredCapabilities.ipad();
else System.err.println(" DEVICE NAME for iOS platform is WRONG: " + deviceName);
capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, "Appium");
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, deviceName);
capabilities.setCapability(MobileCapabilityType.BROWSER_NAME, "");
capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, osVersion);
capabilities.setCapability(MobileCapabilityType.NEW_COMMAND_TIMEOUT, "120");
capabilities.setCapability("waitForAppScript","$.delay(3000); $.acceptAlert(); true;");
if (devicePlatform.contains("fullReset")) { // reinstall client
System.out.println(" Driver DO FULL-RESET");
capabilities.setCapability(MobileCapabilityType.FULL_RESET, true);
capabilities.setCapability(MobileCapabilityType.NO_RESET, false);
} else if (devicePlatform.contains("fastReset")) { // clears cache without reinstall
System.out.println(" Driver DO FAST-RESET");
capabilities.setCapability(MobileCapabilityType.FULL_RESET, false);
capabilities.setCapability(MobileCapabilityType.NO_RESET, false);
} else {
System.out.println(" Driver DO NORMAL start");
capabilities.setCapability(MobileCapabilityType.FULL_RESET, false);
capabilities.setCapability(MobileCapabilityType.NO_RESET, true);
}
File appDir = new File(userDir, fileName);
capabilities.setCapability(MobileCapabilityType.APP, appDir.getAbsolutePath());
String baseURL = "http://0.0.0.0:";
String minorURL = "/wd/hub";
String port = appiumServer_Port;
driver = new IOSDriver(new URL(baseURL+port+minorURL), capabilities);