[原]Apple WatchKit 基础篇

标签: | 发表时间:2015-03-19 00:35 | 作者:jinglijun
出处:http://blog.csdn.net/jinglijun

                               

       当平台的制约成为限制开发者的角色的时候,WatchKit 倾听了最为早期的 iOS 开发。相比 OS X & AppKit 之前参差不齐的十年,iPhoneOS& UIKit 像一阵清风。Apps 也是小巧的、简单的、短小的。

        在经历了7年时间和许多重大版本的发布,从 iPhones 和 iPads 的全部尺寸和形状到TV 和 CarPlay ,iOS 已经成长到包含无数设备型号和配置了。这仍然是一个令开发者惊异的体验(大部分是这样的),但是感觉魔力也失去了前进的方向。

         不管你从哪里来,WatchKit 的简单将会令人愉悦和庆幸。

ᴡᴀᴛᴄʜ 令每个人们兴奋。对于开发者来说更甚。

Ÿ1、入门学习最好的方法是什么?只有 Apple‘sWatchKit developer resources

Ÿ2、阅读 HumanInterface Guidelines —考虑到它是你设计你程序的先决条件。

Ÿ3、精读介绍此框架方方面面的 WatchKit Programming Guide WKInterfaceCatalog

Ÿ4、当你最后准备给你的 app增加对手表的拓展,查阅下 ListerSample App (使用 Objective-C & Swift !),看是如何在一起适配的。

Ÿ5、 WatchKit

Ÿ6、 WatchKit Tutorialwith Swift: Getting Started

Apple Watch规格:

Ÿ1、Apple Watch 共有不锈钢外壳的三种版本:原装版(Apple Watch)、铝金属外壳的运动版(Apple Watch Sport)、18K 金制的典藏版(Apple Watch Edtion),分别对应三种萤幕:Retina 萤幕、强化玻璃、蓝宝石玻璃,每种版本皆有1.5 吋与1.65 吋两种尺寸,消费者可依照自己的手腕粗细自由选择;

2、Apple Watch 推出的六款表带:磁嵌式表带、磁吸式表带、皮革表带、皮扣型表带、不锈钢表带、网状表带等多种材质和颜色搭配,对照以往单纯的产品选择方式,Apple Watch 可以说是苹果产品的一大变革。


Ÿ3、Apple Watch 有不同的屏幕分辨率。小尺寸38毫米 Apple Watch 的屏幕分辨率为272 x 340,而大尺寸的42毫米
ŸApple Watch 屏幕分辨率为 312 x 390。在 WatchKit 文档中,苹果提到 Apple Watch 屏幕是 Retina级别,并建议开发者使用 2x 图像元素。
Ÿ4、内置LED、红外线、心律感应器、 加速器



WatchKit apps

WatchKit提供了三种形式,扩展你的iPhoneapp:WatchKit App,Glances,Notifications。



Watchapp 安装原理

首先说明有关Apple Watch的三个重要组件:

组件名

功能

iPhone 主App

所有的运算、逻辑以及控制实际上都是在 iPhone 中完成的

Watch App

负责界面部分的 WatchKit App 将会在主程序安装后由 iPhone 检测有没有配对的 Apple Watch,并提示安装到 Apple Watch 中

WatchKit Extension

负责逻辑部分,负责iPhone 主App 和Watch App通信

重点:在安装应用时,负责逻辑部分的WatchKitExtension将随iOS主app的主被一同安装到iPhone中,而负责界面部分的WatchKitApp将会在主程序安装后由iPhone检测有没有配对的AppleWatch,并提示安装到AppleWatch中。

Watch App 刚工作原理

watch app 刷新界面


watch app 事件处理



启动周期


运行周期

数据共享

WatchApp 和iOSApp共享数据必须启用AppGroup的特性,这个部分在Extension和iOSApp之间的数据共享时已经引入了。



基础控件比较

WatchKit

UIKit

具体说明

WKInterfaceController

UIViewController

 初始化: -initWithContext:

将要呈现: -willActivate

呈现结束后: –didDeactivate

上面的方法代替了下面的方法:

 -viewDidLoad:

 -viewWillAppear:

 -viewDidDisappear:。

WKInterfaceObject

UIView

 注意:WatchKit 的实际的 View 的一个在 Watch Extension 端的代理,而非 View 本身

 包含下面控件:WKInterfaceButton,WKInterfaceLabel 或 WKInterfaceImage等

Apple Watch view 想要将用户交互事件传递给 iPhone 也需要通过 WKInterfaceObject 代理进行。每个可交互的 WKInterfaceObject 子类都对应了一个 action,比如 button 对应点击事件。


   

WKUserNotificationInterfaceController 

UIApplicationDelegate + UIAlertController

WKInterfaceGroup

UIScrollView

 

WKInterfaceImage

UIImageView

尽量使用它的 -setImageNamed: 方法。

WKInterfaceDevice

UIDevice

 

WKInterfaceMap

MKMapView

 

WKInterfaceSeparator

UITableView.separatorColor / .separatorStyle

WKInterfaceMenu

(WKInterfaceMenuItem

)

-addMenuItemWithItemIcon:title:action:

-addMenuItemWithImageNamed:title:action:

-addMenuItemWithImage:title:action:

-clearAllMenuItems

WKInterfaceButton

UIButton

它的可以包含是单一的文本标签或者是一组标签。为了更小, 关闭了控制器的状态集合, 这种方法更加的吸引人—比起输入 UIControlEventTouchUpInside 更加优秀。

WKInterfaceTable 

UITableView

WatchKit 列表没有 sections、headers、footers、editing、或 data sources, 或 delegates。 WKInterfaceController可以对列表的交互进行反馈,通过 table:didSelectrowAtIndex: 的代理方法,或者是用之前提供的对象-动作的方法。


   

WKInterfaceLabel 

UILabel

WKInterface 可能是从iOS中变化最小的。支持 NSAttributedString ,自定义字体以及字体的尺寸,

WKInterfaceDate 

UILabel + NSDateFormatter

(新)WKInterfaceDate 是一个特殊的标签,它用来展示目前的日期或是时间。

WKInterfaceTimer 

UILabel + NSDateFormatter + NSTimer

(新)WKInterfaceTimer 相似,除了它可以到指定日期并且倒计时。

WKInterfaceSlider 

UIStepper + UISlider

没有了触摸手势,交互回归到基础。Tap,Tap,On / Off,Tap,Tap,+ / -,易自定义性。

WKInterfaceSwitch

UISwitch

没有了触摸手势,交互回归到基础。Tap,Tap,On / Off,Tap,Tap,+ / -,易自定义性。

ViewController 导航处理对比

WKInterfaceController

UIViewController

具体说明

-pushControllerWithName:context:

- pushViewController:viewController animated:

使用目标 controller 的 Identifier 字符串 (没有你只能在 StoryBoard 里进行设置) 进行创建。。

-popController

 -(UIViewController *)popViewControllerAnimated:(BOOL)animated;

 

-popToRootController

- (NSArray *)popToRootViewControllerAnimated:(BOOL)animated;

-presentControllerWithName:context:

- presentViewController: viewControllerToPresent animated:  completion:(void (^)(void))completion 

-dismissController。

-dismissModalViewControllerAnimated:

动画

因为无法拿到实际的视图元素,只有 WKInterfaceObject 这样的代理对象,以及布局系统的限制,所以复杂的动画,尤其是 UIView 系列或者是 CALayer 系列的动画是无法实现的。

现在看来唯一可行的是帧动画,通过为 WKInterfaceImage 设置包含多个 image 的图像,或者是通过计时器定时替换图像的话,可以实现帧动画。虽然 Apple 自己的例子也通过这种方法实现了动画,但是对于设备的存储空间和能耗都可能会是挑战,还需要实际拿到设备以后进行实验和观察。

Glance 和 Notification

Ÿ除了 Watch App 本体以外,Glance 和手表的Notification 也是重要的使用情景。Notification 虽然概念上比较简单,但是相对于 iOS 的通知来说是天差地别。WatchKit 的通知允许开发者自行构建界面,我们可以通过 payload 设置比较复杂和带有更多信息的通知,包括图像,大段文字甚至可以交互的按钮,而不是像 iOS 上那样被限制在文字和一个对话框内。首先无论是通过 Local 还是 Remote 进行的通知发送会先到达 iPhone,然后再由 iPhone 根据内容判断是否转发到手表。WatchKit App 接收到通知后先会显示一个简短的通知,告诉用户这个 app 有一个通知。如果用户对通知的内容感兴趣的话,可以点击或者抬手观看,这样由开发者自定义的长版本的通知就会显现。

 

ŸGlance 是 WatchKit 的新概念,它允许 Watch App 展示一个布局固定的 WKInterfaceController 页面。它和 Watch App 本体相对地位相当于 iOS上的 Today Widget 和 iOS app 本身的地位,是作为手表上的 app 的最重要的信息展示出现的。Glance 正如其名,是短时存在的提醒,不能存在可交互的元素。不过如果用户点击 Glance 页面的话,是可以启动到 Watch App 的。现在关于 Glance 本身如何启动和呈现还不是很明确,猜测是某种类似 Today Widget 的呈现方式?(比如按下两次表侧面的旋钮)

 

 

缺点:

1、没有提供任何获取设备传感信息的 API。不论是心跳、计步或者是用户是否正在佩戴 Watch 的信息我们都是拿不到的,这限制了很多数据收集和监视的健康类 app 的制作。如果希望请求数据,还是不得不转向使用 HealthKit。但是随着 iPhone 6 和 6s 的大屏化,在运动时携带 iPhone 的人可以说是变少了。如果 Watch 不能在没有 iPhone 配对的情况下收集记录,并在之后和 iPhone 连接后将数据回传的话,那 Apple 的健康牌就失败了一大半。相信 Apple 不会放过这种把用户捆绑的机会...不过如果第三方应用能实时获取用户的佩戴状况的话,相信会有很多有意思的应用出现。

2、另外作为在发布会上鼓吹的交互革命的旋钮和触感屏幕,现在看来并没有开放任何 API 供开发者使用,所以我们无法得知用户旋转了手表旋钮这个重要的交互事件。现在看来我们能获取的操作仅只是用户点击屏幕上的按钮或者拖动滑条这个层级,从这个角度来说,现在的 WatchKit 还远没达到可以颠覆移动应用的地步。

建议警告:


Apple 建议最好不要使用那些需要prompt 用户许可的特性,比如 CoreLocation 定位等。因为实际的代码是在手机上运行的,这类许可也会在手机上弹出,但是用户并不一定正是不建议的。

对于要获取这些数据和权限,Apple 建议还是在 iOS app 中完成,并通过 App Groups 进行数据共享,从而在 Watch Extension 中拿到这些数据好在看手机,所以很可能造成体验下降。另外大部分后台运行权限也。

 

作者:jinglijun 发表于2015/3/18 23:30:13 原文链接
阅读:5 评论:0 查看评论

相关 [apple watchkit 基础] 推荐:

[原]Apple WatchKit 基础篇

- - justinjing的专栏
       当平台的制约成为限制开发者的角色的时候,WatchKit 倾听了最为早期的 iOS 开发. 相比 OS X & AppKit 之前参差不齐的十年,iPhoneOS& UIKit 像一阵清风. Apps 也是小巧的、简单的、短小的.         在经历了7年时间和许多重大版本的发布,从 iPhones 和 iPads 的全部尺寸和形状到TV 和 CarPlay ,iOS 已经成长到包含无数设备型号和配置了.

Apple文案初品

- 中雨 - 互联网的那点事
几天前因为iPhone4的好文案在微博上分享了一下,说如果没人研究apple文案的话,我研究. 最近就一直吊着这个事儿,翻看了apple和同类消费电子产品的网页,再次真切体会到了apple文案的强大. 但发现,落笔之时,自己却极为底气不足,充其量只是“初品”或者“管窥”. 我认为研究apple的文案,要从他们英文网站看起,大抵因为中国站绝大部分是从英文上直接翻译过来,当然有少数本土化的发挥,我们后面会提到.

一路上有你 Apple

- Shearer - 译言-电脑/网络/数码科技
For the last thirty five years, time after time, Apple has revolutionized the way we look at technology and dragged the rest of the industry kicking and screaming into the future.

iPhone 4S — Apple 的「My Pace」

- hailin - Mr. Jamie 看網路與創投
大家期待已久的 iPhone “5″ 終於出現了,只不過它不叫 iPhone 5,它叫 iPhone 4S. 它跟 iPhone 4 基本上沒什麼不同,除了 CPU 從 A4 升級成 A5,加入 GSM/CDMA 雙模支援,和主相機的光學元件稍許更新之外. 這個網誌的讀者,大多是科技的「早期採用者」,看到這麼「沒力」的更新,大概會失望 — 尤其如果你又是昨天晚上熬夜看影片的話.

Apple Lossless Audio Codec 开源

- leafduo - LinuxTOY
Apple 宣布旗下的无损音频压缩格式 ALAC 开源. Apple Lossless Audio Codec (ALAC) 是一款由 Apple 开发的无损音乐压缩格式,被广泛的应用在 iOS 系列设备及 OS X 系统上. 本次将该格式及对应的编解码器按照 GPL 兼容的 APL2.0 的协议开源.

Apple 发布 iOS 8.0.2 更新

- - 果迷网
在昨天 Apple 闹出 iOS 8.0.1 的”乌龙”事件之后,今天 Apple 上线了 iOS 8.0.2 的更新,修正了 iOS 8.0.1 导致的 Touch ID 和 蜂窝数据网络不能在 iPhone 6 机型上工作的问题,同时还修复了其他一系列 Bug. 修正了 iOS 8.0.1 在 iPhone 6 和 iPhone 6 Plus 上蜂窝数据和 Touch ID 不工作的问题;.

Apple:年度最佳 iOS 应用榜单

- jicknan - 爱范儿 · Beats of Bits
过去的一年堪称苹果的丰收年,革命性的 iPad 和大卖特卖的 iPhone 4 的各种故事贯穿了整个 2010,然而,除去优秀的硬件设计,iOS 的真正竞争力,在于它那恐怖的 30 万应用. 今天,苹果公布了 2010 的最佳 iOS 应用榜单(应该是北美的统计). 1:美国人对于职棒的爱超过了一切,在总榜单上,MLB.com 的免费应用甚至超过了愤怒小鸟.

Apple 专利存档:两支「聪明笔」

- HUan - Engadget 中国版
又两项苹果的专利被美国专利及商标部(USPTO)公诸于世了,这次是有关触控笔的. 第一项的名字颇普通的,名为「为触控屏而设的笔」(stylus for touch sensing devices). 它里面有一枚电池,而整支笔可以放入一个内置于装置内的 dock 充电. 这支笔可以透过加热来加强笔头与电容式屏幕的互动效果,甚至只要将头笔放近屏幕便可感应了,应该在冬天时会很好用呢.

強!以組織圖嘲諷 Apple、Microsoft、Oracle

- Bowen - T客邦
有個外國網路漫畫家叫manu,漫畫內容以專門調侃科技產業時事為主,而且作者本身似乎是在業界經驗豐富,不但觀察角度與眾不同,內容一針見血,幽默之餘還讓會讓某些人笑中帶淚. 最近最新發表的各大科技公司的組織圖漫畫,正在受到廣大的網友狂推中. 在他官方網站上有提供一份履歷,他是個法國人,會說法語、英語,一點點的德語,還在上海學過中文.

Apple TV:不只是个兴趣?

- 豬小草 - 爱范儿 · Beats of Bits
在库克(Tim Cook)甫一上任时,就有人预测他会拿 Apple TV 这个乔布斯时代的兴趣来当自己的试金石. 《华尔街日报》甚至有模有样地报道:“据业内人士称,苹果正致力于发展将视频传输到电视机上的技术,并在考虑是否要开展电视内容征订的服务. ”当然,我相信,假使苹果内部确实有这样的计划,也绝对不会是乔布斯离任后才启动的.