Apple Watch 嵌入式linux应用开发发有哪些注意事项

Apple Watch 苹果开发教程分享
Apple Watch 苹果开发教程分享
介绍:苹果为Watch提供全新的开发框架WatchKit。本教程是国内第一本Apple&Watch开发教程,全面讲解WatchKit的各个方面,帮助读者更为快速的掌握Watch开发方式和流程。
试读下载地址:
--- 共有 1 条评论 ---
有活动了,这个要免费送的!你可以去看看
有活动了!!!送书了!!
很强大的样子Apple Watch开发的几个小问题
招聘信息:
Q1 如何在调试AppleWatch的时候对watch程序打断点在Xcode的Target选择AppleWatch程序Watch应用启动之后再打开iPhone模拟器中的程序,然后回到Xcode,选择菜单里的Debug->Attach to Process by PID or name ,填写apple watch extension 的bundle identifier断点就可以生效了Q2 WatchKit 架构变化在 watchOS 1 做过开发的人,都应该熟悉如下这张图:如上图所示,在 watchOS 1 上面做开发,Apple Watch 应用程序由两部分构成:Watch App 和 WatchKit 扩展。Watch App 是一个运行在 Apple Watch 中的可执行文件。它包括 storyboard 和渲染屏幕时所需的资源文件。WatchKit 扩展则是运行在 iPhone 上的可执行文件。包括管理应用程序界面的逻辑代码,以及处理用户的交互操作。那么,在 watchOS 2 中,WatchKit 的架构发生了比较重大的变化,我们先来看看下面这张图:从上面的图中,可以很明显地看出,苹果把原来运行在 iPhone 手机上的 WatchKit Extension 移到 Apple Watch 中了。这将直接带来如下改变:原来只存放一些资源和 Storyboard 的 Watch App,现在程序的业务逻辑部分(也就是代码执行部分)也被放到 Watch App 中。这样的话,程序给用户的体验会更好,Watch App 的运行可以完全独立于 iPhone 了。Q3 watch os 1 & watch os 2 获取网络资源的方法watch os 1主要是通过WKInterfaceController的+&(BOOL)openParentApplication:(NSDictionary&*)userInfo&reply:(nullable&void(^)(NSDictionary&*&replyInfo,&NSError&*&__nullable&error))&reply&WK_AVAILABLE_IOS_ONLY(8.2);&&&&//&launches&containing&iOS&application&on&the&phone.&userInfo&must&be&non-nil方法交给iPhone去处理,当iPhone收到消息后在AppDelegate中收到回调-&(void)application:(UIApplication&*)application&handleWatchKitExtensionRequest:(NSDictionary&*)userInfo&reply:(void&(^)(NSDictionary&*))reply
{}到这里后交给NSURLSession或者NSURLConnection处理。watch os 2基于watch架构变化后,可以直接由watch发起网络请求,值得注意的是,Apple Watch 2 中还支持 WiFi,所以 Apple Watch 可以通过 WiFi,直接获取一些网络数据等。并且 Apple Watch 无法处理的一些业务,可以通过 WatchConnectivity 框架的WCSession,请求 iPhone 进行处理,并将结果返回给 Apple Watch。Q4 Apple Watch强退App的方法虽然apple watch的应用没有真正意义上的后台,表冠退出应用以后就不在运行(部分自带应用的检测功能不会退出)了,但下一次启动应用会很快。可是作为一名强迫症十分想关闭后台应用,于是发现一种关闭后台应用的方法:如要完全退出健身应用,第一步:进入健身应用界面第二步:按住(长按)侧边按钮,出现关机/省电模式界面后松开按钮。第三部:不要管界面内容,再次按住(长按)侧边按钮,大约3秒后应用被完全退出。如果再一次打开这个应用可能会需要一点加载时间。Q5 wkinterfacecontroller的生命周期watch app是Page-Based,可以左右滑动,假设有三个interfacecontroller,刚启动的时候,它们大概是下面这样运行&18:58:48.793&MonkeyForWatch&WatchKit&Extension[]&-[InterfaceController&init]
&18:58:48.793&MonkeyForWatch&WatchKit&Extension[]&-[InterfaceController&awakeWithContext:]
&18:58:48.793&MonkeyForWatch&WatchKit&Extension[]&-[RepositoryInterfaceController&init]
&18:58:48.794&MonkeyForWatch&WatchKit&Extension[]&-[RepositoryInterfaceController&awakeWithContext:]
&18:58:48.794&MonkeyForWatch&WatchKit&Extension[]&-[SettingInterfaceController&init]
&18:58:48.794&MonkeyForWatch&WatchKit&Extension[]&-[SettingInterfaceController&awakeWithContext:]
&18:58:48.794&MonkeyForWatch&WatchKit&Extension[]&-[InterfaceController&willActivate]
&18:58:48.794&MonkeyForWatch&WatchKit&Extension[]&-[InterfaceController&didAppear]
&18:58:49.297&MonkeyForWatch&WatchKit&Extension[]&-[RepositoryInterfaceController&willActivate]
&18:58:49.298&MonkeyForWatch&WatchKit&Extension[]&-[RepositoryInterfaceController&didDeactivate]由InterfaceController滑动到RepositoryInterfaceController之后&19:01:31.941&MonkeyForWatch&WatchKit&Extension[]&-[InterfaceController&willDisappear]
&19:01:31.941&MonkeyForWatch&WatchKit&Extension[]&-[RepositoryInterfaceController&willActivate]
&19:01:31.942&MonkeyForWatch&WatchKit&Extension[]&-[InterfaceController&didDeactivate]
&19:01:31.942&MonkeyForWatch&WatchKit&Extension[]&-[RepositoryInterfaceController&didAppear]
&19:01:32.445&MonkeyForWatch&WatchKit&Extension[]&-[SettingInterfaceController&willActivate]
&19:01:37.710&MonkeyForWatch&WatchKit&Extension[]&-[SettingInterfaceController&didDeactivate]Q6 WKInterfaceTable如何使用首先需要storyboard中建立表以及自定义的row,下面是初始化表视图,SettingRow是一个NSObject对象。-&(void)initTable
&&&&[self.settingTable&setNumberOfRows:2&withRowType:NSStringFromClass([SettingRow&class])];
&&&&for&(NSInteger&i=0;&i<2;&i++)&{
&&&&&&&&SettingRow&*elementRow&=&(SettingRow&*)[self.settingTable&rowControllerAtIndex:i];
&&&&&&&&[elementRow.titleLabel&setText:[NSString&stringWithFormat:@"%@&设置开发语言",@(i)]];
}table的点击事件则需要复写WKInterfaceController的方法-&(void)table:(WKInterfaceTable&*)table&didSelectRowAtIndex:(NSInteger)rowI&&//&row&selection&if&controller&has&WKInterfaceTable&property
&&&&if&(rowIndex==0)&{
&&&&&&&&[self&presentControllerWithName:NSStringFromClass([LanguageListInterfaceController&class])&context:nil];
}Q7 三种交互方式Apple Watch将会有三种交互方式:主屏幕下,佩戴者可以看到所有的Watch app,用户点击后就可以直接启动相应app;第二种交互方式被称做“Glance”,该界面下不含按钮,也不可滑动,用户只能够进行快速阅读,内容将只有一屏空间。开发者可以定制该界面,用户点击后即会启动相应app。第三种交互方式是通知提醒的定制操作。当iPhone上的通知推送至Apple Watch上显示后,当用户点击后就可以进入更详细的信息显示页面,开发者可以对该界面进行定制。Q8 兼容iOS6的问题在iOS6的机器上运行,我发现了一下问题,dyld:&Library&not&loaded:&/System/Library/Frameworks/WatchKit.framework/WatchKit
Referenced&from:&/var/mobile/Applications/xxxx/xxx.app/xxx
Reason:&image&not&found
(lldb)因为watchkit.framework 在iOS 6上是不存在的,所以才会有上面的错误,这时需要在build phases里把watchkit.framework从Required(添加framework默认为此)改为optional。/read-htm-tid-9101476.html/library/ios/samplecode/Lister/Introduction/Intro.html文章转自
微信扫一扫
订阅每日移动开发及APP推广热点资讯公众号:CocoaChina
您还没有登录!请或
点击量3144点击量3113点击量3101点击量3092点击量2937点击量2909点击量2510点击量2386点击量2302
&2016 Chukong Technologies,Inc.
京公网安备89想开发Apple Watch应用?用户界面上注意这8点
[摘要]相比大多数的移动设备,Apple Watch的1.6英寸显示屏显然非常小。在缩小了触屏尺寸之后,用户就必须格外注意自己点击屏幕的位置了。
腾讯数码讯(Eskimo)随着 Watch的发布在即,开发者们此刻肯定都在想办法让自己现有的或即将发布的新应用来适配这款设备更小的屏幕。科技网站VentureBeat最近就针对这个问题提出了自己的8条建议。1.更小的触屏=更多的滑动+手势和更少的点击相比大多数的移动设备,Apple Watch的1.6英寸显示屏显然非常小。在缩小了触屏尺寸之后,用户就必须格外注意自己点击屏幕的位置了。乔布斯生前曾说过,想要使用7英寸平板,你就得“把指头磨尖”,而这款1.6英寸的Apple Watch则同样适用于这种说法。对于用户来说,想要精准地触摸Apple Watch显示屏的不同位置可能会是心理和生理上的双重挑战。但滑动或其他触控手势并不需要很大的区域或精准的定位,因此,智能手表应用应该更多地使用滑动和手势来进行UI控制,而不是需要触碰特定位置的按键。2.位置并不重要由于如今的智能手机屏幕尺寸普遍较大,用户在单手操作时手指可能无法覆盖整个屏幕区域。因此,移动操作系统一般都习惯于将重要的UI元素放在比较容易触及的屏幕底部,而极少选择顶部位置。但对于智能手表来说,这并不是个问题。在界面元素摆放上面,开发者需要考虑的主要问题是对于屏幕的遮挡。想要避免这一点,他们最有可能会选择将UI元素和按键放在屏幕的外缘。3.智能信息过滤的需要信息消化可以说是Apple Watch最主要的功能,让用户可以快速查看到信息、邮件和其他通知。由于我们并不会时时刻刻查看手机,大多数通知就因此被忽略了。可如果有了智能手表,我们就可以轻松地转动手腕来查看刚刚收到的通知。不过这样一来,智能手表也需要通过智能过滤功能来忽略掉那些无意义的内容,仅向用户提供他们真正需要的通知。如果将这个理念拓展到信息和提醒上面,那信息过滤功能就显得至关重要了。4.动作手势和语音想要操作智能手表,没有两只手应该是办不到的(一手将设备转向你,另一只手控制屏幕)。但如果单手动作手势(比如转动手腕点亮屏幕)和语音控制变得足够准确,那我们使用智能手表的方式将会出现彻底的改变。5.新型应用根据我们目前的了解,Apple Watch在获取通知和使用表情聊天这两方面具备着非常出色的能力。但这款设备的杀手级应用会是什么呢?作为第二显示屏,智能手表可以变得非常实用。比方说,Apple Watch可以作为摄像头的取景器,让你观察到无法直接看到的身体部分,或是让iPhone成为安防摄像头。但这种应用只是个开始,Apple Watch在数据收集方面也具备着很大的潜力,它可以作为总是开启的医疗记录器,或是追踪佩戴者的健康习惯,以帮助日后的医学诊断。6.从桌面到移动设备再到智能手表在iPhone刚刚发布的早年间,许多开发者都急于将自己的桌面应用移植到手机上,但最终结果并不总是非常理想。在过去的7年时间里,我们看到了大量基于桌面程序所开发、用户界面复杂的应用,而Apple Watch可能也会面临相同的问题。在桌面平台,应用程序可以拥有一大堆微小的按键,因为可供使用的屏幕尺寸足够大。但在屏幕空间有限的移动设备上,我们的手指限制和按键的尺寸,开发者因此会选择使用更大的按键,并将不常使用的功能放进第二菜单当中。至于Apple Watch,它极为有限的屏幕空间就需要另辟蹊径进行思考了。比方说,数字表冠将会更多地被使用在界面操控当中,因为它控制起来更加简单,也不会遮挡显示屏。此外,由于界面中按键数量的进一步压缩,应用会拥有更多的页面或模式,但总体上会显得非常轻量。7.节省时间?相信我们都看到过这种说法:Apple Watch让用户不必再掏出手机,解锁屏幕,滑动以阅读通知,这也就节省了时间。但事实真的如此吗?一般来讲,普通手机用户在16个小时内可能会每隔5分钟查看一次手机,这也就是192次。具体到消耗的时间,加起来可能也不过是16分钟(拿出手机2秒,解锁1秒,放回手机2秒)。如果你查看手机的频率降低(每10-15分钟),动作也更快,那一整天在这上面消耗的时间也不过才5分钟而已。每天节省这5分钟能给我们的生活带来很大不同吗?答案显然是否定的。在执行某些操作上面,Apple Watch所花费的时间要比手机更快,这才是真正的节省时间。比如说,如果我们只会看到那些真正重要的通知和邮件,而不必亲自花时间逐条阅读并进行过滤,那这的确会节省出相当多的时间。信息过滤是Apple Watch的关键功能,大多数内容众多的应用也需要考虑到信息优先级,或是让用户手动控制优先级设定。但由于Apple Watch总是会停留在我们的手腕上,和应用交互必须效率且快速。如果说与桌面应用的交互可以长达数小时,移动应用可以是数分钟,那Apple Watch应用的理想交互时间应该被控制在数秒以内。8.文字输入除非你能进行信息输入,否则Apple Watch就是毫无用处的。在初期阶段,表情符号、自由绘画和语音控制都是非常有用的功能。但如果有一种方式可以让用户快速输入文字来回复信息和邮件,那就会让Apple Watch变得更加实用。考虑到设备的屏幕尺寸,标准QWERTY键盘显然是不可能的,但开发者的确提供了一些非常好用的替代品(比如Fleksy和Minuum)。当在Apple Watch上进行文字输入变得可行,应用程序的种类和数量也会随之变得丰富起来。来源:
[责任编辑:oliverli]
还能输入140字
Copyright & 1998 - 2017 Tencent. All Rights Reserved谈谈 watchOS 2:架构变化和开发注意事项
招聘信息:
花絮话说今年我只写了一篇文章,还是年初 1 月份的时候了(),其实我一直都想写一些文章出来,但是一直没有码字发文,主要是由于我太懒。坑倒是挖了不少,包括 watchOS 2、持续集成等相关的文章(Java Web、iOS 和 Android 方面的)等。可能后面我会先填一些坑。有些东西放下的时间久了,就会慢慢的忘却,这是多么令人沮丧的事情。今天就先来谈谈关于 watchOS 2 的一些东西吧。watchOS 2苹果早在 2015 年 6 月 9 日,就向开发者发布了 watchOS 2,但是到今天(2015 年 10 月 17 日)还没有向消费者公开,目前只能拥有苹果开发者账号的人才能够安装。不过已经是 pre-release 版了,相信用不了多久就会向普通消费者公开。苹果在推出 Apple Watch 之初,实际上是饱受争议的,即使现在,各种争议也不少。有的不看好 Apple Watch,说它的续航能力是最大的软肋,而有的人又认为它的屏幕限制了 Apple Watch 的应用场景,吧啦吧啦,反正是各种吐槽。而另外一群人则非常看好 Apple Watch 的前景,并相信 Apple Watch 如同苹果在 2007 年发布的 iPhone 一样,会再次改变世界。就我个人而言,我还是比较看好 Apple Watch 的,通过如下 2 个场景,你就会发现 Apple Watch 非常实用:支付场景:你去超市购物,到收银台结算的时候,传统的方式为付现或者刷卡,有部分人群可能会用手机支付软件,进行扫码支付。不过,这还不是最优付费方式,即使用手机支付,也需要将手机从兜里面掏出来。如果使用 Apple Watch 的话,那么只需要抬起手腕,打开支付 App 就可以进行支付,这不是神话,使用 Apple Watch 确实可以做到,并且已经做到了。运动场景:经常跑步的人们在跑步过程中,经常需要做计时、速度、距离等运动数据的统计,并实时反馈,一般人们用手机上的运动软件比较多,每次看速度、时间等都是从兜里面掏出手机,然后解锁屏幕,再看相关运动数据。虽说现在的许多手机软件有语音之类的提醒,但用户体验并不是很好。如果用户使用了 Apple Watch,那么想要看运动数据的时候,只需要抬起手腕,就可以查看相关数据,非常方便。当然,还有很多应用场景在 Apple Watch 上都能带来绝佳的体验,例如提醒类应用(天气预报、来电提醒、用药提醒)、健康类应用(实时反馈个人身体健康数据)等,在这里就不一一罗列了。WatchKit 架构变化在 watchOS 1 做过开发的人,都应该熟悉如下这张图:如上图所示,在 watchOS 1 上面做开发,Apple Watch 应用程序由两部分构成:Watch App 和 WatchKit 扩展。Watch App 是一个运行在 Apple Watch 中的可执行文件。它包括 storyboard 和渲染屏幕时所需的资源文件。WatchKit 扩展则是运行在 iPhone 上的可执行文件。包括管理应用程序界面的逻辑代码,以及处理用户的交互操作。想要了解 watchOS 1 中更详细的内容,可以看我博客上的这篇文章:。那么,在 watchOS 2 中,WatchKit 的架构发生了比较重大的变化,我们先来看看下面这张图:从上面的图中,可以很明显地看出,苹果把原来运行在 iPhone 手机上的 WatchKit Extension 移到 Apple Watch 中了。这将直接带来如下改变:原来只存放一些资源和 Storyboard 的 Watch App,现在程序的业务逻辑部分(也就是代码执行部分)也被放到 Watch App 中。这样的话,程序给用户的体验会更好,Watch App 的运行可以完全独立于 iPhone 了。值得注意的是,Apple Watch 2 中还支持 WiFi,所以 Apple Watch 可以通过 WiFi,直接获取一些网络数据等。并且 Apple Watch 无法处理的一些业务,可以通过 Connectivity 框架,请求 iPhone 进行处理,并将结果返回给 Apple Watch。另外,在 watchOS 2 中,有更多的权限可以对硬件资源进行访问,例如麦克风,加速器表冠等。这也给我们开发人员在开发的时候带来了无限想象,无限可能。其实 watchOS 2 中带来了许多改进,这里就不进行详细的介绍,大家如果感兴趣的话可以查阅本文最后提供的一些参考资料。开发者需要注意的一些事情其实用过 watchOS 2 中的 WatchKit,会发现,对于开发者来说,就 Xcode 的工程结构而言,开发编码上没有太大的变化。苹果虽然对框架做了重大的调整,但是也考虑了开发者的跟进成本,开发者跟 watchOS 1 中的开发基本一样,WatchKit App 中依旧是存放资源和 Storyboard,而 WatchKit Extension 中还是做相关业务逻辑的编码。所以开发者在跟进 watchOS 上对于框架上来说只需要理解各个模块是运作原理,然后编码还是原来的味道,熟悉的味道。当然,开发者在进行 watchOS 2 开发或迁移时,还有一些需要注意的地方:关于 迁移到 watchOS 2 上的开发,可以看看苹果官网提供的内容: 。另外来自 springxiao 的这篇文章也提及了一些开发注意事项,值得一读: 。关于译书在今年夏季有幸与电子工业出版社的编辑合作,翻译了一本关于 Apple Watch 开发的书,书原名为 Learning WatchKit Programming- A Hands-On Guide to Creating Apple Watch Applications,中文名称为《从iOS到Apple Watch:用WatchKit创建新型可穿戴应用》,在京东,当当,亚马逊有售。此书是基于 watchOS 1 编写的,因为是引进的书我没有修改权,内容并未更新至 watchOS 2,大家在购买时自行考虑。不过我个人对于 watchOS 2 还是有一些研究的,如果大家购买之后有什么疑问,可以微博(BeyondVincent)上私信我,我会尽力解答。若实在对书质量不满,支持退货。一些参考资料 : watchOS 2 迁移指南 : WatchKit 编程指南 : Apple Watch 人机交互指南小结经过几年的发展,智能机目前的出货率很难复制前几年了,大家也可以看出,各大手机厂家不仅仅是在做手机了,都在抓紧发展自己的生态圈。虽然到处都是风口,但是真正能抓住消费者的产品不是一簇而就的。当下可穿戴设备被无限放大,或许等退潮之后,才知道是谁在裸泳。
微信扫一扫
订阅每日移动开发及APP推广热点资讯公众号:CocoaChina
您还没有登录!请或
点击量3144点击量3113点击量3101点击量3092点击量2937点击量2909点击量2510点击量2386点击量2302
&2016 Chukong Technologies,Inc.
京公网安备89  英文原文:
  自一月中旬以来,我就全身心投入到
应用的 Apple Watch 版本的开发上了,并幸运地受邀参加了库比蒂诺苹果总部的 Apple Watch 实验室测试。在过去的三个半月里,我整理了诸多 WatchKit 的开发建议和技巧,并将重点内容列在这里,希望对 Apple Watch 应用开发者有所启发。
  1. &WatchKit 的 NSExtensionContext 通知
  可能对诸多开发者来说,UIApplication 上的函数方法并不陌生,比如 applicationWillEnterForeground:和 applicationDidEnterBackground:,两者都是先被调用,再分别发出 UIApplicationWillEnterForegroundNotification 和 UIApplicationDidEnterBackgroundNotification 的通知。而 WatchKit 的& 通知则包括:
NSExtensionHostWillEnterForegroundNotification
NSExtensionHostDidEnterBackgroundNotification
NSExtensionHostWillResignActiveNotification
NSExtensionHostDidBecomeActiveNotification
  2. 充电测试更有效
  在 Apple Watch 充电时进行测试,测试过程更容易,结果也更可靠,这一点不仅仅是我,其他 Apple 开发者论坛上的同行也深有体会。
  3. &WatchKit 只能在当前活动/可见的视图控制器上更新
  在 iOS 上几乎可以随时更新界面元素,但 WatchKit 只能在当前活动/可见的视图控制器上更新。只要 didDeactivate 还没有调用,就能顺利完成更新(注意:界面元素不能用 didDeactivate 更新)。这也就意味着:开发者想&要更新一个当前隐藏起来的视图控制器(比如查看一个模态控制器&on top&),就必须用当前控制器的 willActive 方法来更新,而 willActive 只有在取消(dismiss)模态控制器时才能被调用。
  4. &addCachedImage:name 缺省使用 PNG 编码
  除了 WatchKit 应用捆绑包里的资源,每个应用还享有 5MB 容量的图片缓存空间,用 WKInterfaceDevice 上的方法来放置扩展,并用扩展进行管理。从扩展向 Watch 发送图片会消耗时间和电量,所以如果要再次使用某张图片(即使只用过一次),最好将它缓存起来;如果用 addCachedImage:name:来发送图片,它会自动以 PNG 格式缓存起来(也许 PNG 格式并不是最合适的,但至少是最保险的)。如果图片能以 JPG 格式再次呈现的话,那么建议改用 addCachedImageWithData:name: 来发送。以 JPG 格式储存图片后再试试画面设置,图片转换不仅更快,还省下了不少缓存空间,方便储存更多图片。
  5. &支持后台线程缓存图像
  依然跟上一条建议相关:开发者可以在后台线程上缓存图片(开发者论坛的一名苹果员工如是说)。我在开发 Watch 应用时尝试了一下,图片在读取之前就缓存好了。
  6. 开发者需自行封装图片管理器
  要使用上述的图片缓存的话,并无内置的方法来检测最早的图片。若应用同时管理很多图片,可能需要在缓存里设立一个单独的管理器。
  7. 测试通知功能时记得关闭手腕感应
  在 Apple Watch 上测试通知功能时,需要在其 Companion(伙伴)应用的通用设置里关掉 Wrist Detection(手腕感应)。
  8. 若要强制退出应用,长按侧键打开 Friends 应用
  要强制退出应用,就单击侧键打开 Friends 应用,然后再按一次(注意,强制退出应用不代表强制退出扩展)。
  9. 尽可能地精简 willActivate 操作,缩短加载时间。
  10. 先 Watch 后 iPhone App
  如果用户在你的 iPhone 应用之前抢先发布 Watch App 就不妙了,所以留点心,别让苹果的应用审核快你一步发现问题。
  11. 切忌处理大图片
  Watch 应用是以扩展的形式运行的,其本身内存相比 iPhone 应用更受限制,所以像是稍大点的图片,还是留给 iPhone 应用处理就好(用 openParentApplication:reply:)。还要注意,模拟器不受内存限制,所以最好还是在真机环境中进行测试。
  12. 通过共享 NSUserDefaults 设置布尔值检测匹配
  要测试应用是否跟 Watch 匹配,可以在共享应用组中通过共享 NSUserDefaults 设置一个布尔值来进行检测。
  13. 实现 iPhone 与 Apple Watch 的数据同步
  要想实现 iPhone 和 Watch 的数据同步,要么用 openParentApplication:reply:来让 iPhone 应用执行所有数据更新,要么使用 Darwin notifications 在扩展和 iPhone 应用之间发送事件。Darwin notifications 不支持数据负载,如果想用通知来传送数据的话,可以看一看& 通讯框架,你会有所启发。
  14. 定时器刷新界面元素
  可以用定时器(或在 willActive 里)更新和刷新界面元素。当然,在数据源支持的情况下也可以用 KVO。我在开发 Watch 应用时运用了 KVO,用这个方法,元素只有在产生变化时才更新,这样能节省传输负载和电量。
  15. &awakeWithContext 传 self 指针很有用
  若要追踪视图控制器,可以考虑用 awakeWithContext 来传递 self 指针。
  16. &when-in-use
  WatchKit 扩展是前台扩展(foreground extension),所以在用到 Core Location 许可时,只需发送一个 when-in-use(使用时)认证请求就好。
  17. 少用&实时更新&&
  除非万不得已,否则不要使用&实时更新(live update)&,使 iPhone 和 Watch 即刻同步。用户一般不会同时使用两个设备,所以在 iPhone 或 Watch 启动时更新数据,足以避免诸多混乱的同步逻辑。可惜,一看到并列的模拟器屏幕就想设立复杂的同步逻辑,我就干过这样的事儿。
  18. 用 hide/unhide 代码构建动态视图界面
  虽然无法用程序建立和管理界面控制器,但 hide/unhide 元素还是尽在掌控的。举个例子,WatchKit 最常见的操作之一就是构建一个可以显示所有信息的页面。或者在编程中,如果要在两个布局中选其一,那么可将其安放在 top-level group 里,仅在必要时显示或隐藏。
  19. 每次屏幕点击和界面更新都需要 Watch 与 iPhone 的往返通信,在编程时要考虑到这一点。
  20. 记录值决定再次写入更新
  由于 WatchKit 界面元素的&只写&特性(只能设定函数),开发者不需要二次设定追踪记录的值,而 WatchKit 还能对值进行合并,只在运行循环交接时发送最终值,但亦可自行追踪。
  21. 无内置的进度指示器
  Watch 并没有内置的进度指示器控件,但系列动画图像的显示和持续的图片转换下载依然能同时进行。操作结束时,直接隐藏进度指示器图片即可。在此,大家可以尝试一下我刚刚在 GitHub 上更新的 ,它能让创建活动指示器图片序列变得更简单,预先渲染的类苹果序列也包含在内。
  22. 一定要充分利用 Apple Watch Design Resources
  开发 Apple Watch 应用,一定要下载& 并认真阅读,里面除了颜色和尺寸建议外,优质的边框图片还可以截下来给应用打广告。说到这里注意一下:提交的应用截图是不能带边框的。
  23. 解决真机图片显示异常问题
  图片在模拟器里显示正常,但在真正的 Watch 上却出了问题,让开发者们叫苦不迭,实际上这也是诸多应用被拒的根本原因。问题就出在文件命名和&零散&的图片文件上,而最保险的办法就是在 Watch 应用(非扩展)的 target 里建个 assets 来存储所有图像。
  24. 使用 Handoff 让 iPhone 应用前台启动
  目前,还没有明确的办法可以直接通过 Watch 前台启动 iPhone 应用(虽然可以在模拟器上实现),所以,还是考虑使用苹果的 Handoff 来代替吧。
  25. 控制器间使用 NSNotifications 通信
  在视图控制器之间的通信最好别用 awakeWithContext:,发送 NSNotifications 好一些,在扩展里运行更流畅。也可以看看我开源的 WKInterfaceController 子类&,使用委托模式。
  26. 本地通知需要设置 soundName 属性来触发 Tapic 反馈和提示音。
  27. 真机测试很重要!
  从模拟器入手是挺好,但是在真机环境中测试自己的 Watch 应用才是最关键的一步(甚至比测试 iPhone 或 iPad 应用更重要)。}

我要回帖

更多关于 高性能ios应用开发 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信