关于Apple Watch与手机App之间的通信,代码部分大致一致。
不同之处就在于手表端可以唤醒在后台运行的手机app,然后反过来却不能。
下面对比一下两端的代码:
对比可以看出代码内容差异不大,需要注意的点就是:
1.手机端代码执行需要前置条件,比如是否支持session传输,App Watch是否安装App,是否配对成功,是否处于 Reachable 状态等。
2.双端都基于#import<WatchConnectivity/WatchConnectivity.h>
3.双端都需遵守协议WCSessionDelegate并且基于代理方法做相应处理
4.不推荐使用nil这种写法传输数据,会导致数据传输失败 [self.session sendMessage:msg replyHandler:nil errorHandler:nil];
5.通过代理方法接收传输的数据是在子线程中,如果有更新UI等操作需放在主线程执行,否则会有相当长时间的延迟
顺带说一下Apple Watch App的上架流程:
1.和正常手机端app一样打包上传,手机app包里面包含有手表端应用.
2.三个target的版本号和应用名称需要保持一致
3.需要提供手表端应用的AppIcon,Xcode 9 还需要一张1024x1024的Icon
4.构建版本上传需要提供手表端应用的屏幕快照以及Icon