The last few weeks I’ve been working with Apple Watch, the as yet unreleased (but announced) Apple thing for people to obsess over. Since November, I’ve taught myself Swift (with Treehouse), worked on iOS apps, and lately I’ve been looking into this new fangled Watch thing. It’s recently been a bit of a headache for me, and here are the things I can’t wrap my head around.
The Gist of Apple Watch
Apple Watch is not much more than an additional screen to your iPhone. Programmatically, the Watch is another target to add to your existing iPhone app, and is not a separate application (except it kind of is … see below).
Where’s the logic?
None of your business logic runs on the watch, instead residing in an “Extension.” What’s not totally clear from the architecture docs is that this extension doesn’t know about your iPhone app, so no shared code! What you can do is use app extensions to have access to those common libraries or data. However, that’s only available in 8.0 and up. I’m new to the iOS world, so I’m not totally bought into how quickly people drop support for older systems, but that doesn’t sound too great. Great once upgrades happen, not great for the people who can’t/won’t upgrade.
Deciding interface scope at design time
This is what has been biting me recently – at design time (that is, when you first add your target), you decide if you also want to include Glance and Notification views for the app. So far, this meant me spending a bunch of time deleting them when I added them thinking “might as well have them” and then having to un-delete them (git! woo!) when I decided that we actually did want a glance. There’s no way right now to add them later, meaning I spent lots of time in conflict heck getting them back. I kind of get what they were thinking here, but geez that was kind of awful.
This post is brought to you by the “I really should get back to writing about what I’m working on lately” camp, and so while the frustrations were what came to mind, it’s really fascinating to work on something that’s unreleased where I literally don’t even have the thing that I’m targeting yet, just simulators. Lots of stuff may change come release, but some won’t, it is what it is.
If you’re interested in trying out programming for Watch, you need an existing iOS app, and then configure your app to add the Watch target. N.B., you need Xcode-Beta to do this. You also have to have a developer ($$) account to run the example project, but I still don’t have one (again, $$), so I am reading the code anyway without running it, and learning a lot from that.