iOS项目添加WatchKit App模块实践

最近在公司原来一个项目里增加了Apple Watch模块,遇到了很多坑。首先说明,本人目前对Swift还不深入熟悉,所以还是打算在原项目里用OC来实现。其次,我用了Apple Watch3个月了,还是第一次入门,看了喵神的教程,一步步来的。想想WatchOS 都2了,再不用用都老了。

下面简单说一下这个过程:

0、前言

如果在这之前,你没有看过或了解WatchKit相关内容,那么建议你读喵神的两篇文章Apple WatchKit 初探WWDC15 Session笔记 - 30 分钟开发一个简单的 watchOS 2 app

一、增加watchOS

这个步骤就看图带过吧,对于还不知道的新手来说,看图最直接:

  • 1.新建Target


    New Target
  • 2.选择 watchOS


    Watchk it App
  • 3.这步骤注意,默认勾选了Notification Scene,要解释一下:

  • <1> Glance Scene :** 如果勾选,就会在Interface.storyboard里默认生成GlanceController的界面,如果原来选中了,后来想不要,就直接在Interface.storyboard里把GlanceController界面删除就可以了。**

  • <2> Complication : 这个就是在系统表盘显示时,滚动 Digital Crown 时,进行一些操作,现在OS2里增加的时间旅行,就是滚动 Digital Crown时,天气和日程表计划跟着变动,这个功能还是有点用的。

    配置

  • 4.点击激活吧


    Activate
  • 5.最后在原来项目里增加了这两个目录App和Extension。


    Watch目录

二、一些坑要填

1.默认新建的Target版本都是1.0,所以你要改成跟你现在项目的版本一样才行,不然就会报错。App和Extension的Target版本都要改。


Info.plist报错
更改为项目对应的版本号

2.默认App和Extension的Valid Architectures都是“armv7 armv7s i386 arm64”WatchOS运行的框架要改为armv7k。如果要在模拟器运行,增加i386。

No architectures to compile for armv7k

App和Extension都要改成armv7k

还有一些其实的小问题,不太记得了,相信大家如果遇到自行搜索就能解决。

三、一些代码

Watch显示的界面全部由Interface.storyboard里的界面生成,逻辑就是在Extension里写,具体也没什么好写的,由于我是用OC写的,连图片缓存的都不会,参考了喵神原OS1文章:

在 Extension 的 target 中获得图片 (比如从网络下载或者代码动态生成等),并且需要重复使用的话,最好用 WKInterfaceDevice 的 -addCachedImage:name: 方法将其缓存到手表中。这样,当我们之后再使用这张图片的时候就可以直接通过 -setImageNamed: 来快速地从手表上生成并使用了。每个 app 的 cache 的尺寸大约是 20M,超过的话 WatchKit 将会从最老的数据开始删除,以腾出空间存储新的数据。

现在OS2就出现几个问题:

  • 1.add方法增加的是图片的名字,如果我是从网络下载的,名字怎么取?
  • 2.如何判断有没有缓存?
  • 3.OS2默认已经不会自动删除旧的数据了?

WKInterfaceDevice类里的*cachedImages这个属性OS2下报错,不知道为什么?有懂的求留言。

@property (nonatomic, readonly, strong) NSDictionary<NSString*, NSNumber*> *cachedImages WK_AVAILABLE_IOS_ONLY(8.2); // name and size of cached images

在这篇文章Apple Watch应用优化的一些心得技巧总结找到一些图片优化的方法
WatchKit用的图片库:Github上的WKImageCache,或者直接用KFSwiftImageLoader,或者有新的库,暂时没有去研究,求补充。

  • 最后提供一个WatchKit下用的NSURLSession方法,网上都是Swift写,OC这样写:

    NSString *requestUrl= @"http://www.google.com";
    NSURLSession * session = [NSURLSession sharedSession];
    
    NSURLSessionDataTask * task = [session dataTaskWithURL:[NSURL URLWithString:requestUrl] completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        if(data!=nil){// 请求成功
            NSDictionary *resultDic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];
           
            
        }else{//请求失败

        }  
    }];
    
    [task resume];// 调用这个方法才会去请求网络

四、审核的一些坑

前面提到勾选 include Glance Sceneinclude Complication ,结果在实现时,没有搞好,直接在Glance Scene里显示一个下载链接的二维码,苹果审核员问我二维码是干什么用的?它会变吗?

  • Glance Scene最好要用一些有意义的数据显示


    二维码被拒绝
  • Complication这个,我是勾选了,第二次又被拒绝,我想说,苹果审核能一次审核全部功能吗????


    开启了Complication,但没有实现功能被拒绝
  • 取消Complication功能,就是把下图的Data Source Class删除,在把五个勾去掉就可以了:


    Complications Configuration

终于改了,希望审核明天通过吧!!

五、总结

关于Watch App审核,如果你选择了某个功能,但没有实现,那么一定会被拒绝的,大家注意一下这点,坑就来那里~

用了一个星期,了解了WatchKit的基础功能,实现了基本的需求。其实发现,刚开始很害怕实现不了,或者说,去做时知道一定会遇到很多问题,所以不敢去碰它。作为工程师,我们需要恒心和勇气,才能面对接下来的大数据时代,我们的知道时刻要充电,做好准备吧!

最后想吐槽一下苹果Watch,不知道是不是只有我遇到这个问题,表盘下面掉漆,这是苹果的技术吗???


苹果的logo首先掉色的,心都碎了

参考


注:本文首发于 iHTCboy's blog,如若转载,请注明来源。

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

推荐阅读更多精彩内容