假设你已经用uni-app开发好了一个iOS端的app,现在想要开发一个配套的apple watch app。改怎么去开发呢?是不是一头雾水,这篇文章就会介绍一些apple watch app开发的知识以及如何在uni-app开发的iOS app基础上去开发配套的watch app。
一、apple watch 开发知识
apple watch app类型
首先,我们来了解下apple watch app有哪些类型。
我们在新建一个WatchOS app的项目时可以看到,watch app有2种类型。一个是独立的watch app(Watch-only app),一个是依赖iOS app的watch app(with Companion iOS App),那么他们有什么区别呢?我将从几个不同的角度去介绍:
- 安装
watch-only的只能通过apple watch上的appStore去下载安装
with iOS App的,可以通过手机上Watch应用去安装可使用的watch app,当然也可以通过appStore下载
- 开发
watch-only新建项目时只有watchKit app和watchKit extension。
with iOS App的则会有一个iOS app的target
UI框架说明
watchKit app虽然可以通过UIKit,使用swift或者OC来开发,但是官方建议的是使用SwiftUI这个新的UI框架开发。因为 SwiftUI 具有声明式编程、更简洁的语法、更好的跨平台性以及对数据绑定和响应式编程的良好支持等优点,特别适合手表、VR眼镜这种屏幕较小、交互相对简单的设备。
swiftUI的语言和swift还是有较大的区别的,UI控件的使用、生命周期的管理等都大不一样,还是需要各位同学去系统的学习一下。
数据请求类型
有一部分watch app是工具类的App(比如闹钟),不需要获取网络数据。
有一部分watch app是只需要获取健康数据(步数、心率、睡眠等),通过原生的HealthKit即可获取。
有一部分watch app需要联网获取在线数据,就需要通过Alamofire等网络库或者原生的URLSession来实现数据请求。
还有一种特殊的数据获取方式,就是通过Watch Connectivity实现watch app和手机app数据交换,数据可以通过手机app请求拿到(在线或者其他方式),然后传输给watch app。watch app也可以传输数据给手机app。下面会详细讲下这个Watch Connectivity。
Watch Connectivity
这里我们是有2个设备,一个watch,一个iphone。对应项目里是有一个app的target,一个watchKit的target。
-
WCSessionManager单例封装
首先我们来封装一个Manager来管理数据的发送、接收以