Today's release of WatchKit definitely had a few developers scratching their heads.
While on the one hand, many of us weren't expecting as many different integrations points as we got in this first release, the APIs that were announced certainly leave a bit to be desired. Specifically for those of us with aspirations to build full-fledged native apps for the Apple Watch.
Apple has of course said that "full" support for building "full" apps will come later this year, but some enterprising developers are already starting to poke around and discover what it might be like.
Many have speculated about what sort of operating system Apple Watch will run, with not much data to pull from. Now that WatchKit has been made (at least partially) public, we seem to have some much more solid evidence for that operating system being iOS.
Here's a stream of tweets from Steve Troughton-Smith (everyone's favorite neighborhood tinkerer), as well as Andrew Pouliot (iOS at Facebook), regarding WatchKit:
@stroughtonsmith Seems all of the WATCH stuff is built on top of UIKit, with some minor additions in PepperUICore. WK-SP-PUI. Cool.
— Andrew Pouliot (@andpoul) November 19, 2014
@flyosity @joeldev @stroughtonsmith If you want a preview of the APIs, look at PepperUICore. The actual code inherits from UIView et al.
— Andrew Pouliot (@andpoul) November 19, 2014
…if there were any doubt that Apple Watch runs iOS, its UI framework is bundled in the 8.2 SDK, links UIKit: http://t.co/iaOHkuxple
— Steve T-S (@stroughtonsmith) November 19, 2014
…all the Apple Watch UI elements are subclasses of UIKit classes. It's all there.
— Steve T-S (@stroughtonsmith) November 19, 2014
If you want a head start on native Apple Watch apps, the private PepperUICore framework lets you build them right now pic.twitter.com/uBoaVSyfrR
— Steve T-S (@stroughtonsmith) November 19, 2014
…not much you can do with them. But they're just iOS apps like any other. Pop @"PUICApplication" in UIApplicationMain & you get Watch UI
— Steve T-S (@stroughtonsmith) November 19, 2014
AppleWatch is UIDeviceFamily 4 (where 1 was iPhone, 2 was iPad, and 3 was AppleTV)
— Steve T-S (@stroughtonsmith) November 19, 2014
It seems that the framework powering the more elaborate Apple Watch apps is called PepperUICore
(at least internally). The framework is still private and will likely remain that way until WWDC where I imagine it may gain a much more public-friendly name.
PepperUICore contains some fun classes like PUICCrownView
and PUICNavigationController
. You can rummage through the full private headers here if you'd like.
Also of note are all the other private Apple Watch-related frameworks present in the iOS 8.2 beta. There's a new Nano
prefix with frameworks that have intriguing names like NanoLeash
(seems to enable some kind of "find my device" functionality), and NanoTimeKitCompanion
, which contains references to "monograms" (my guess here is this is the internal name for Watchfaces, and Apple is likely planning some sort of special App Store section for these, there's a huge market there. Watchfaces will be the new Ringtones).
For fun I decided to read through some of the PUICTableView
classes and see what sorts of goodies I could find.
It seems that PUICTableView
(you can view the full file here) is primarly used as a way to tie together the familiar scrolling workhorse that is UITableView
with the new Digital Crown hardware found on the Apple Watch:
- (void)crownInputSequencer:(id)arg1 previousDetent:(id *)arg2 nextDetent:(id *)arg3 forOffset:(double)arg4;
- (void)_crownInputSequencerIdleDidChangeNotification:(id)arg1;
- (void)_crownInputSequencerOffsetDidChangeNotification:(id)arg1;
It seems that the Watch reports itself to be in what's called UIDeviceFamily
"4". iPhone reports "1", iPad reports "2", and Apple TV reports itself as "3".
That's about as conclusive as it gets and I must say is actually quite reassuring that the Apple Watch is built on the solid foundation of iOS.
The limitations of many of the APIs in today's WatchKit release definitely felt like a temporary measure, and I'm happy to see that there's tons of good stuff in the pipeline, it's just not ready for public consumption just yet.
It's not hard to be reminded of the conversations (before it's announcement) of the possibility of the iPhone running OS X. (A seemingly unlikely feat at the time).
But as Apple has done for many years now, they managed to leverage their earlier hard work and solid foundations to leapfrog themselves forward with their next product. OS X's Foundation, CFNetwork, and countless other battle-tested APIs gave both Apple's first and third party developers firm starting points to build upon.
Well that was almost 7 years ago. It seems that iOS (then iPhone OS) is now all grown up, and ready to help it's new little brother, the Watch, find success.