Apple Watch开发总结
今日,特酷吧开发完成了’多识阅读-可以听的个性化订阅工具’Apple Watch的适配,目前正在审核中,下面是开发中的总结
一,identifier标示
执行[self pushControllerWithName:@”Interface Controller1” context:nil];
弹不出页面,查明是由于需要在WatchKit App的storyboard中设置scene的identifier.
pushControllerWithName需要和这个identifier保持一致。其他一些地方也需要identifier标示
二,Glance interfaces不支持button
Glances 不支持button,添加了Button会报错
Illegal Configuration: Buttons are not supported in Glance interfaces.
三,Watch App的版本号包括build版本号必须和Host App保持一致
否则会出错:error: The value of CFBundleShortVersionString in your WatchKit app’s Info.plist (1.0) does not match the value in your companion app’s Info.plist (1.0.5). These values are required to match.
四,Apple Watch的UI布局没有iOS应用复杂
只能通过Group以及WKInterfaceButton等UI部件的组合,且可以设置布局的参数也比较少:
1,Horizontal方向的Left,Center,Right;
2,Vertical方向的Top,Center,Bottom;
3,UI组件宽高的Size To Fit Content,Relative to Container,Fixed。
五,Apple Watch的ICON尺寸大小
参考: http://www.cocoachina.com/design/20141124/10306.html
六,Watch App和Extension App通信和数据共享
1,使用MMWormhole
内部使用CFNotificationCenterRef。“多识阅读”在开发中就使用了MMWormhole
2,App Groups
1.通过NSUserDefaults共享数据 为了防止出现数据同步问题,不要忘记调用[shared synchronize]; 2,通过NSFileManager共享数据 NSFileManager在iOS7提供了containerURLForSecurityApplicationGroupIdentifier方法,可以用来实现extension和
七,在应用和扩展间共享代码 - Framework
和数据共享类似,extension和containing app很自然地会有一些业务逻辑上可以共用的代码,这时可以通过iOS8中开放使用的framework实现。
具体参考: http://www.onevcat.com/2014/08/notification-today-widget/
八,Watch App 调试方法
首先在模拟器运行Apple Watch App,在iphone 模拟器中启动Host App,依次打开Xcode - Debug - Attach to Process 里找到host app 线程,Attach上即可。
九,提交审核须知
提交到iTunes Connect上时,要求iOS App,Extension App以及Apple Watch App都应该有一个Bundle ID,同时配置各自的distribution profile.也就是说发布一个支持Apple Watch的App,至少需要三个Bundle ID。
否则会提示:
error: Embedded binary is not signed with the same certificate as the parent app. Verify the embedded binary target’s code sign settings match the parent app’s.
另外,文案中提到Apple Watch的地方一定不能拼写错误,正确的方式是”Apple Watch”。
</div> </div>