WatchKit开发的一些总结

Apple Watch已经上市,接受预定,市场上各种声音不断,有说它好的,有说它不好,各有各的理由,争议不断。剩下的就交给市场吧,市场会告诉你一个产品到底是好是坏。
前段时间,公司要开发watch版本的应用,本人便开始学习WatchKit。学之前还心想,这东西就这么大,能玩出什么花来?后来的经历证明,我还是天真了,虽然玩不出什么花,会有很多坑。。。

开发前,总是要看些资料的

手表是怎么工作的

前段时间,有幸得到苹果公司邀请来到苹果实验室,得以一窥watch真容,总得感觉不错,这玩意有玩头。

  • watch是通过蓝牙与手机通讯的,有证据表明,watch配备了wifi模块,能在离开手机并且处于已知wifi网络情况下,自行完成一些有限、但是重要的网络功能,比如向Siri发起询问、收发信息、向其他Apple Watch用户收发涂鸦和心跳消息等
  • watch是和手机一一匹配的,解绑和绑定都很慢,大概半个小时到左右。在与iPhone连接的期间,Apple Watch会在前者的本地存储空间当中建立一个备份,以供日后的数据恢复之用
  • watch版本开发类似App Extension(应用扩展) ,比如Today Extension(今天扩展),仅支持Xcode 6.2以上版本,最好用Xcode 6.3,相比6.2,6.3多了很多规范检查,比如检查版本号是否一直,icon是否全等。

watch开发需要注意的点

1、图片资源与界面布局

watch的所有界面是放在Interface.storyboard里面,图片自愿文件主要是放在Images.xcassets,这两个都是在WatchKit app目录下,而代码文件是在WatchKit Extension下面。
界面布局已经不是传统的布局了,没有明确的frame,无法使用autolayout,复杂的布局只能通过嵌套多层WKInterfaceGroup实现,为了调节间距,时常有种要抓狂的感觉。。

2、图片view上面加上文字label

由于watch上面图片WKInterfaceImage是不能直接添加文字WKInterfaceLabel的。对于一个WKInterfaceGroup只能是挨着排,不能重叠。当设计师sir提出这个想法的时候,我第一反应是只能通过在手机端重新绘制图片(给图片绘制上文字)来实现,设计师sir安慰到你试试看,换个别的方法。于是乎,亮光一闪找到一个方法,图片作为WKInterfaceGroup的背景图片(在线下载),文字添加在WKInterfaceGroup上!

3、实现左右可以滑动的多页布局(底部有类似UIPagecontrol的多个点)

刚开始,翻遍WatchKit也找不到类似UIScrollView的类,近乎绝望的时候,看到Interface.storyboard里面的next page属性,具体使用看这里。通过指定WKInterfaceControllernext page界面(Interface.storyboard里面)可以创建左右滑动的多页效果。
代码里面实现动态控制有多少页:
<pre><code>+ (void)reloadRootControllersWithNames:(NSArray *)names contexts:(NSArray *)contexts;

  • (void)becomeCurrentPage;</pre></code>

4、两个WKInterfaceController之间传值

A界面push到B界面:
<pre><code>A : - (void)pushControllerWithName:(NSString *)name context:(id)context; //context为自定义的属性值
B : - (void)awakeWithContext:(id)context //context为上个界面传入的值</pre></code>

5、应用生命周期与WKInterfaceController生命周期

watch app 在点击手表滑轮退出app后,watch app会处于休眠状态,并没有完全退出。下次进入watch app还会处于上次打开的界面。
WKInterfaceController的主要回调方法
<pre><code>- (void)awakeWithContext:(id)context //只会调用一次,适合在这里添加menu菜单

  • (void)willActivate //类似viewWillAppear,可能会多次调用,比如在界面首次加载完成后会调用,在menu菜单消失后就会调用
  • (void)didDeactivate //类似viewWillDisappear,可能会多次调用,比如在用户按下滑轮退出watch app后,在menu菜单出现前就会调用</pre></code>

5、Glance 界面开发

对于Glance 界面,苹果有提供多套标准模板,在Interface.storyboard点击glance界面能看到。这个界面不能添加button控件,下面是自定义点击事件示例:
<pre><code>GlanceController里面:

  • (void)updateUserActivity:(NSString *)type userInfo:(NSDictionary *)userInfo webpageURL:(NSURL *)webpageURL;//通过此方法提前注册好点击事件,建议是放在网络连接成功后.
    在设置为ls Initial ControllerWKInterfaceController里面:
  • (void)handleUserActivity:(NSDictionary *)userInfo //添加此方法,判断userInfo处理 glance界面 回调</pre></code>

6、Notifications 相关

发到手机上面的通知,会自动在与之配对的手表上面显示出来,如果你需要添加Custom Long Look Interface,还有自定义动作按钮,那需要在原有通知字段基础上,加上category字段,并且与alert同级,通过不同的category值可以添加不同的自定义事件按钮。示例如下:
UIMutableUserNotificationAction *actionOne = [UIMutableUserNotificationAction new];
actionOne.title = @"查看详情";
actionOne.identifier = @"look detail";//用来区别每个action
actionOne.activationMode = UIUserNotificationActivationModeForeground; //设置为Foreground才能打开客户端,不然为后台运行
UIMutableUserNotificationCategory *inviteCategory = [UIMutableUserNotificationCategory new];
[inviteCategory setActions:@[actionOne] forContext:UIUserNotificationActionContextDefault];
inviteCategory.identifier = @"demo"; //此处对应于category字段
NSMutableSet *categories = [NSMutableSet new];
[categories addObject:inviteCategory];
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:categories];
[[UIApplication sharedApplication] registerUserNotificationSettings:settings];

7、Handoff 功能

Handoff功能是iOS8以后才推出的,Handoff是watch和iphone沟通的绝佳方式之一,在实验室里,苹果方面的人也推荐使用Handoff。
具体的使用方法查看这里demo

8、提交审核时需要注意的点

  • 确保你的app icon不包含alpha channel,不然将会在审核期间被拒
  • 确保iPhone app、WatchKit extension以及Watch app有着相同的编译号和版本号
  • WatchKit extension需要自己的app ID和Provisioning profile
  • 要确保app target和watch app target展示的名称应该一致,搜索Product Name要和Bundle Display Name一致。
  • 在新版本应用升级提示描述里面要体现是为Apple Watch升级的。
  • 更多看这里

个人体会:watch开发平台,是一个全新的平台,不同于iPhone开发,不能用iPhone开发的角度是思考watch怎么实现某个功能。全新的平台会有全新的交互方式,多看官方文档才能更好的了解这个平台。

在本人博客上面的地址:http://www.wangyangdev.com/2015/04/18/WatchKit开发的一些总结/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,117评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,963评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,897评论 0 240
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,805评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,208评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,535评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,797评论 2 311
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,493评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,215评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,477评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,988评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,325评论 2 252
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,971评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,807评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,544评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,455评论 2 266

推荐阅读更多精彩内容