Inserting breakpoints or logging statements (such as NSLog) is relatively straightforward with an iPhone-only iOS app. But how do you log from the WatchKit Extension (aka Watch app)?
The good news is that logging isn’t filled with many complicated steps. The bad news is that the logging works intermittently.
- Add your NSLog statements in your WatchKit Extension. This is probably your InterfaceController.m
- Run the watch app on iOS Device + watchOS Device (in the WatchKit App scheme)
- Select Debug > Attach to Process > (click on your watch app name)
- Profit! You should see your NSLogs when they are triggered in the app lifecycle in Xcode
If logging isn’t working, try typical Xcode debug steps such as:
- deleting the app on your phone & re-running it in Xcode
- restarting the phone and/or watch devices
- clean Xcode (cmd + shift + k) and re-run the app
- quit & restart Xcode
While working in Xcode and running my watch app on my actual hardware watch for the first time, I ran into this error on my watch the first time: “Failed to install [app], error: Application Verification Failed.” This stack overflow answer provides the solution, but I wanted help illustrate the steps I took to fix the error. Disclaimer: this worked for me, but there are probably more optimal ways of fixing the error.
- In Xcode, get the UDID of your Apple Watch (WIndow > Devices). The UDID is labeled “Identifier” and you can double click on the Identifier device hash to select & copy it.
- Visit the Apple Developer Portal at https://developer.apple.com/devcenter/ios/index.action and click on “Certificates, Identifiers & Profiles” in the right sidebar.
- Click on Devices > All in the left sidebar.
- Click on the Plus Sign (+) in the top right.
- In Register Device, provide a Name (whatever you want) and your watch UDID (from step 1 above).
- Submit the form to register your watch device.
- In “Certificates, Identifiers & Profiles”, locate your .watchkitextension Provisioning Profile for your app. Select & download this profile.
- Locate your downloaded profile file on your computer & double click the Provisioning Profile.
- Restart Xcode.
- Build your project and you will encounter a iOS Development Certificate alert.
- Warning, this step may be dangerous (proceed at your own risk). This worked for me. Click on “Revoke and Request”. This will revoke your current certificate and request a new one. You will probably get an email notifying you that “Your Certificate Has Been Revoked”.
- Run your Xcode project. Your watch app should now load the development build on your actual watch hardware.
About the author: Rex Feng enjoys iOS development and has released Pomodoro Pro for the iPhone & Apple Watch. You can follow him @rexfeng.