随着现在 Apple 生态圈的发展,越来越多的 App 会把自己的简化版从 iOS 迁移至 WatchOS(支付宝、微信、手Q、头条、QQ音乐、网易云音乐等等,都有Watch版App)。官方开发文档:Setting up a watchOS project | Apple Developer Documentation
一、Apple Watch简介
2015年3月10日,苹果在旧金山Moscone Center召开2015年春季新品发布会,正式发布了Apple WATCH,分为运动、标准、定制三版,将于2015年4月10号预售,4月24日上市。
Apple Watch支持电话,语音回短信,连接汽车,天气、航班信息,地图导航,播放音乐,测量心跳、计步等几十 种功能,是一款全方位的健康和运动追踪设备。
Apple Watch App分为两种
- Watch App for iOS App:
从iOS迁移过来的Watch App,可与iOS App通信。 - Watch App:
独立的Watch App,可独立安装在Apple Watch上。
大部分是第一种,Watch App for iOS App。
二、Watch App在项目中的结构
新建一个watchOS的target。
这时,会出现两个target:Watch App、Watch Extension。
三、 Apple Watch上的app特点和原理
我们从开发的角度说下Apple Watch上的app特点和原理。
Apple Watch运行模式
首先手表上app和iPhone上app是一种联动关系,即Apple Watch上的开发的app是离不开iPhone的。为什么呢,这个它的运行策略有关,手表的cpu、硬件、电量都是有限的,所以节约空间和电量是很重要的,所以手表界面设计要精简,操作比较少。
Watch app和iPhoneapp是无缝关联的,因为Watch上的app都是iPhone帮它运行的,手机和Watch离得近,靠无限传输,在一定程度上节省了Watch的很多工作量,Watch负责显示iPhone处理后的结果,这其实也是一种绑定销售策略。Watch上的app其实就是iPhone上app的一部分、一种扩展。
Apple Watch app界面类型
Watch app有三种和用户交互的方式,或者说Watch app有三种界面:
- 常规Watch app,这个是必须的,一些简单内容的显示和简单操作,可以看成手机上的精简版;
- glance类型的界面,是一种纯提示型的界面,是不能和用户互动的,这部分可有可无;
- notification类型的界面,这是消息通知时用到的,手机也可以接收推送通过这种界面显示,这种是可以和用户互动的。
Watch app和iPhone app的关系
Watch app和iPhone app是一种联动关系,其实也是一个绑定关系,是一个整体,Watch app并不是一个单独的project,而是在iOS project上扩展的一个Target,Watch app上并没有代码,只有界面资源,代码是在iPhone上运行的。
在WatchOS 2 之前, WatchKit App负责展示,安装在Watch上,WatchKit Extension负责业务和控制逻辑,安装在iPhone上。所有运算、逻辑以及控制都是在iPhone上完成。Watch app和iPhone app是通过Watchkit进行桥接的,所有的代码执行逻辑方面都是在iPhone上运行的,storyboard和图片资源在Watch端显示的,并且Watch app的安装运行都是由iPhone控制的。
此外,一个iPhone每次可关联一个Apple Watch,它们是一对一的关系。目前Apple Watch只能跟iPhone设备配对,不支持iPad。
在WatchOS 2之后,最大的改变就是将WatchKit Extension 直接从iPhone 移植到AppleWatch上。
Watch app启动过程
上图是Watch app加载的一个过程,可以看出Watch app的加载是依靠iPhone来进行的,启动app,加载Watch端的storyboard和图片等资源,然后会初始化UI,这个时候就走到iPhone端扩展里的初始化方法了,初始化完了之后就是显示UI,UI中的触发的动作都是去iPhone扩展里调用代码,将执行结果显示到Watch上。
刚才提到的init方法顾名思义了,awakeWithContext:方法就是通过iPhone传递过来的信息初始化UI的,类似我们之前的viewDidLoad,willActivate就相当于之前的viewWillAppear,这样就应该好理解了。
Watch App 生命周期
iPhone上app都有各自的生命周期,那么Watch app的生命周期呢,从上图我们就可以很直观的看到,从显示UI、用户交互到app结束,每一步都和iPhone对应app的扩展密切交流