title: Error: The desired capabilities must include either an app or a bundleId for iOS
body: <p>I am using mac OS X 10.12, Appium server 1.5.3 , xcode version 8.3. If I run the doctor then it shows the appium is installed correctly.</p>
  
  <pre><code>info AppiumDoctor ### Diagnostic starting ###
  info AppiumDoctor  ✔ Xcode is installed at: /Applications/Xcode.app/Contents/Developer
  info AppiumDoctor  ✔ Xcode Command Line Tools are installed.
  info AppiumDoctor  ✔ DevToolsSecurity is enabled.
  info AppiumDoctor  ✔ The Authorization DB is set up properly.
  info AppiumDoctor  ✔ The Node.js binary was found at: /usr/local/bin/node
  info AppiumDoctor  ✔ HOME is set to: /Users/nishamendon
  info AppiumDoctor  ✔ ANDROID_HOME is set to: /Users/nishamendon/Library/Android/sdk
  info AppiumDoctor  ✔ JAVA_HOME is set to: /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home
  info AppiumDoctor  ✔ adb exists at: /Users/nishamendon/Library/Android/sdk/platform-tools/adb
  info AppiumDoctor  ✔ android exists at: /Users/nishamendon/Library/Android/sdk/tools/android
  info AppiumDoctor  ✔ emulator exists at: /Users/nishamendon/Library/Android/sdk/tools/emulator
  info AppiumDoctor ### Diagnostic completed, no fix needed. ###
  info AppiumDoctor 
  info AppiumDoctor Everything looks good, bye!
  info AppiumDoctor 
  </code></pre>
  
  <p>But, if I start the appium server, and I try to launch the inspector I am getting an error unable to start Inspector with the below log.</p>
  
  <pre><code>    [iOS] Error: The desired capabilities must include either an app or a bundleId for iOS
      at Object.wrappedLogger.errorAndThrow (lib/logger.js:60:13)
      at IosDriver.validateDesiredCaps (lib/driver.js:409:14)
      at IosDriver.callee$0$0$ (lib/basedriver/commands/session.js:14:8)
      at tryCatch (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:67:40)
      at GeneratorFunctionPrototype.invoke [as _invoke] (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:315:22)
      at GeneratorFunctionPrototype.prototype.(anonymous function) [as next] (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
      at invoke (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:136:37)
      at enqueueResult (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:185:17)
      at Promise.F (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/node_modules/core-js/library/modules/$.export.js:30:36)
      at AsyncIterator.enqueue (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:184:12)
      at AsyncIterator.prototype.(anonymous function) [as next] (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
      at Object.runtime.async (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:209:12)
      at IosDriver.callee$0$0 [as createSession] (lib/basedriver/commands/session.js:8:46)
      at IosDriver.createSession$ (lib/driver.js:40:16)
      at tryCatch (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:67:40)
      at GeneratorFunctionPrototype.invoke [as _invoke] (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:315:22)
      at GeneratorFunctionPrototype.prototype.(anonymous function) [as next] (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
      at invoke (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:136:37)
      at enqueueResult (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:185:17)
      at Promise.F (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/node_modules/core-js/library/modules/$.export.js:30:36)
      at AsyncIterator.enqueue (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:184:12)
      at AsyncIterator.prototype.(anonymous function) [as next] (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
      at Object.runtime.async (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:209:12)
      at IosDriver.createSession (lib/driver.js:110:19)
      at AppiumDriver.createSession$ (lib/appium.js:121:43)
      at tryCatch (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:67:40)
      at GeneratorFunctionPrototype.invoke [as _invoke] (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:315:22)
      at GeneratorFunctionPrototype.prototype.(anonymous function) [as next] (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
      at invoke (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:136:37)
      at enqueueR
  esult (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:185:17)
      at Promise.F (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/node_modules/core-js/library/modules/$.export.js:30:36)
      at AsyncIterator.enqueue (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:184:12)
      at AsyncIterator.prototype.(anonymous function) [as next] (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
      at Object.runtime.async (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:209:12)
  </code></pre>