大多数浏览器和
Developer App 均支持流媒体播放。
-
watchOS 8 中的新功能
watchOS 8 带来全新的机会,使人们可以在表盘面上获得最新信息。通过用于 Always-On Retina 显示器的新 API、从蓝牙设备更新复杂功能,以及 HealthKit 数据的后台交付,进行 app 更新从未如此轻松。了解基于区域的用户通知,以利用 app 中的位置功能。探索 SwiftUI 和 watchOS 的所有新增强功能,它们会使您构建下一款 Watch app 的过程激动人心。
资源
- Designing your app for the Always On state
- UNLocationNotificationTrigger
- Updating watchOS apps with timelines
相关视频
WWDC21
-
下载
哈啰 欢迎观看 “WatchOS 8最新功能” 我是杰克贝伦斯 也是Apple Watch的布道师 WatchOS 7开启了许多新契机 通过家人共享设置 让家庭成员 不用iPhone也能保持联系 多重复杂功能 让你可以为表盘创造更丰富的体验 另外还有表盘共享功能 从而你能打造 完全属于你自己的表盘 添加所有 你喜爱的复杂功能 然后分享给他人或张贴在网络上 到了watchOS 8 我们倾听 你最首要的需求 帮助你创造 更不可思议的Watch app体验 要谈的有好多 所以现在就开始吧 首先是始终显示功能 Apple Watch Series 5和watchOS 6 把始终显示功能带到表盘 现在watchOS 8也将 始终显示功能带到了你的app 我也会谈到你可以如何利用 HealthKit数据 和蓝牙扫描的后台传递 让健康相关的复杂功能随时保持更新 Apple Watch变得越来越独立了 通过watchOS 8 我们要把以区域为依据的 用户通知带到你的手腕上 我会谈谈这些要怎么 把切身的信息在对的时间和地点 传递给某个人 最后 我会讲到watchOS 8 新系统和API的改良与提升 如何让研发及使用Watch app 变得更棒 我们先从始终显示功能开始 始终显示功能让你不用抬起手腕 就能看见表上的内容 当你抬起手腕 屏幕会再次亮起 Apple Watch Series 5、6 都支持始终显示功能 WatchOS 7的始终显示功能 会将app界面模糊化 只清晰显示时间 如果使用watchOS 8 SDK App界面则会变成调暗的状态 只要轻点界面 立刻就能恢复互动 始终显示功能开启时 系统会自动 降低屏幕的整体亮度 但又不至于暗到看不清楚 为了帮助app界面适应 调降的亮度 我们将引进一个SwiftUI的环境属性 称作isLuminanceReduced 要因应这个状态 你可以凸显 特别重要的信息 隐藏应该保持隐密的信息 为了帮助你快速上手 我们在Xcode预览和模拟器 都纳入这个环境属性的技术支持 在模拟器的窗口上点击一个钮 就可以模拟手腕放下的状况 这真的很好用 可以让你看看 app界面在始终显示状态下如何呈现 现在 我们来聊聊app界面在开启 始终显示功能时应该遵循的指导原则 从运作状态切换成始终显示状态 应该要让人感觉不出来 不要大幅更改界面或是重组信息 否则从始终显示状态转换到 运作状态会卡卡的 保留运作状态的界面是关键所在 在这个例子里 FitBod使不同状态的 界面保持稳定一致 只是进一步调暗 部分较亮的元素和次要的文字内容 再来 你应该把不必要的信息和元素调暗 如果有次要的文字、图像或色块等 你可以进一步把它们调暗 让你想强调、保持可见的信息 变得更加凸显 可以让你创建并共享采买清单 整理食谱的AnyList 便把列表项目的底色移除 同时进一步调暗次要信息 像是酸奶口味或牛奶的量等等 这样你推着购物车 或提着购物篮时 可以更容易瞄到 主要的列表项目名称 假如界面上有填满色彩或图像的 大型元素 可以把那些元素加以缩减 用线条或调暗的色彩表示 同样保持界面的稳定一致 但又看得见希望强调的信息 在这个例子里 Pandora调暗底部的 次要按钮 移除专辑封面 并改用相近但较暗的色彩 这样便成功让人一眼 就看得见歌名和歌手 亮度降低时 你可能也会想 隐匿或移除敏感的信息 这个例子里显示的账号、余额等信息 还有一些个人健康数据 都是进行隐匿的好选择 以防手腕放下时信息遭人窥看 想了解如何使用SwiftUI进行隐匿 请到Developer app观看 《好用小工具的原则》 因为小工具的隐匿模型都差不多 最后 假如界面有动画 你应该停在第一格画面 或设定成静止状态 最好不要让动画就这样播到一半 现在你知道怎么 让界面在始终显示状态下 呈现最佳模样 我们来谈谈 技术性的层面 也就是如何在手腕 放下的状态更新app界面 若是像健身或语音这种 会持续保持启动的app 运作时间都不间断的话 你最多可以每秒更新界面一次 这就可以允许你实时更新 计时器、测量和其他数据 不过你会需要移除 亚秒级增量 如十分之一秒 如果app不用持续保持运作 最多可以每分钟更新一次 虽然系统回归表盘的默认 超时时间为两分钟 你应该让app维持更长的可见时间 因为消费者可能会更改设定 那么 你要怎么让我们知道 你那没有在运作的app 需要更新界面? 我们在SwiftUI创建了TimelineView TimelineView通过排定 建立一个依赖date的视图 若要排定更新 我们提供了几个TimelineSchedule 帮助你做出适合你的app的排定 像是每分钟排定 即每分钟更新 这跟系统时钟相呼应 表示每次更新 会在新的一分钟到来时出现在装置上 周期排定则是让你设定一个间隔时间 例如每两分钟 或其他适合你app的间隔 假如你把周期排定的间隔设为一分钟 并不会跟系统时钟呼应 如果你要知道更新距离某个特定事件 多久了 例如健身开始之后 这就会相当有用 明确排定适用于更改 发生在特定时间点的状况 例如1.5分钟时需要更新一次 之后在2.5分钟后又要更新一次等等 还有自定义排定 这很适合当你 每分钟都更新一次 可是你希望 最后一分钟可以每秒更新一次的情况 如果你的app没有在运作 但你希望 有一小段时间更新速度快一点 像是这个例子里的最后一分钟那样 系统会尝试这样做 但是那些更新不会保障出现 最后 还有一个动画排定 想深入了解TimelineView、排定 动画等 请到Developer app观看 《SwiftUI最新功能》 及《在SwiftUI app添加丰富图像》 我们很喜欢Apple Watch的 健康健美app所带来的影响 在watchOS 8 我们把HealthKit数据的 后台传递引入Watch app 这为app带来了被动健康监测 也会对在家人共享设置里所使用的 独立Watch app造成重大的影响 设定HealthKit数据的后台传递 跟iOS的运作方式类似 在watchOS中 述词 因为新的健康数据搜集来了 后台观察者查询处理好了 而产生配对 app就会醒来接收结果 Watch app最多一个小时会进行一次 如果有人把你app的复杂功能 加到运作中的表盘 你一个小时最多可以接收到四次结果 这些机会全都会消耗app的 后台应用刷新次数 所以每小时最多只接收四个结果 并会因为其他原因 影响后台应用刷新的唤醒 我们来谈谈更新频率 传递结果到你的app时 各种重大数据类型会立即进行传递 像是跌倒事件 低血氧饱和度、心率事件等 请到Apple Developer网站的 Developer documentation 查看这些数据类型的完整列表 其他数据类型则每小时 或更长的间隔才会传递一次 我们也在HealthKit的授权表单 增加了新信息 让消费者知道你的app 在Apple Watch上有提高 对他们健康数据的意识 我们认为 HealthKit数据的后台传递 将为表盘上跟健康健美 有关的复杂功能带来全新可能 WatchOS 4让蓝牙装置可以直接连上 Apple Watch并运用Core Bluetooth 这个部分已经有看到一些很棒的应用 WatchOS 8将要更进一步 在app的复杂功能 于表盘运作时所得到的后台应用刷新 机会出现期间 允许装置的连接 例如 这是Qardio 可以让人 使用医学级ECG监测自己的心脏状况 这个是Sonra Watch 让足球教练 可以运用GPS追踪器 在训练期间监测球员 高达28个实时测量的表现数据 在后台应用刷新期间连接蓝牙 意味着app的复杂功能可以 通过蓝牙装置保持更新 整天都能显示更新信息 后台应用刷新让app的复杂功能 在表盘运作时每小时 有四次连接更新的机会 别忘了 这些机会 会消耗app的整体后台应用刷新次数 请务必在app前台设定 初始的装置连接 这无法在后台完成 一旦装置连接成功 后台应用刷新就让app有机会 连接、取得新数据 在非常短的时间内连接 并且处理数据也很重要 为了协助你 我们新增了 新的过期处理器 在WKRefreshBackgroundTask 这样当时间快没了 必须结束正在做的事情时 你就会被通知 这样一来 若有需要 app就可以 从容不迫地收尾退化 想了解更多信息 请到Developer app观看 《将蓝牙装置连接到Apple Watch》 Apple Watch是随时戴在身上的装置 独立的Watch app变得越来越普遍 消费者越来越常只戴着手表跑去 买咖啡或到商店购物 因此位置 就成了跟上重要潮流的关键之一 在watchOS 8 我们把以区域为依据的 用户通知带到Apple Watch了 这就表示你可以根据地理围栏 获得重要通知 例如 使用Slopes的时候 你可以在缆车地点 获得开始滑雪健身的提醒 或者 使用App in the Air 到达机场时你就能收到班机信息 WatchOS以区域为依据的用户通知 跟iOS的运作方式类似 为维护消费者的隐私 消费者会先收到静态通知 轻点一个按钮后才能 看见完整的动态通知 这让你可以在有人进入或离开 你根据位置所设定的 要触发通知的区域时 传送预先创建的本地通知 别忘了 要充分运用这点 需要先获得“使用期间”的允许 你也应该限制区域数量 只纳入 某个人附近重要的兴趣点 或他有明确表现出兴趣的位置 像是设定最喜爱的商店位置 位于方圆几百米 以内的区域最有效 除了以区域为依据的 用户通知 watchOS 8 在Core Location也支持新的位置钮 这个钮会给予一次的位置授权 不必每次点击都得进行授权的动作 在幕后 这就像传统的“允许一次”授权 位置钮是获取人们信任的 简单方法 因为你让他们更能控制 何时分享自己的位置 想了解更多watchOS 8及iOS 15的 Core Location更新信息 请到Developer app 观看《认识位置按钮》讲座 我们也将在Core Motion引入新的 始终打开高度计API 这让你可获得实时的高度更新 不会对全天电池寿命造成什么影响 也不用某个人分享自己的位置给app WatchOS 8除了有这些新功能和API 还做了许多改良 让开发及使用 Watch app变得前所未有地容易 有了watchOS 8 Apple Watch 现在可以在你睡觉时测量呼吸率 这让Sleep Details等app可以 在你早上醒来后显示你的呼吸率数据 并将变化用图形呈现 我们很高兴能把AssistiveTouch 引入Apple Watch 帮助具有四肢差异的人 这真的很令人兴奋 因为我们可以辨识一个人的手势 帮助他们执行动作、操作界面 我们也会把大型的无障碍文字大小 带入watchOS 8 想了解更多无障碍Watch app的信息 请到Developer app观看 《为watchOS创造无障碍体验》 Xcode 12.5引入了 Watch app的单元测试和界面测试 但要把app变得无障碍才能 加以测试 有了watchOS 全新的无障碍功能 现在正是 设计无障碍app的最佳时机 WatchOS 8还在滚动视图最上方 加了大标题 就像iOS所看到的那样 使不同的装置带来更一致的感受 WatchOS 8改写了文字输入 会记住某人使用某个app是偏好 涂文字还是听写 并在输入文字时 让人可以快速切换输入类型 这让人可以轻松输入更多文字 还可以通过SwiftUI 文字字段免费得到这个功能 全新的可搜寻API让你能轻松在app里 添加搜寻字段 还附带自定义的建议 消费者会在搜寻字段里看到一个钮 表示有建议可查阅 他们只要轻点一下 就会看见你自定义的建议 你也可以提供自定义好的搜寻结果界面 想了解更多信息 请到Developer app 观看《在SwiftUI设计搜寻体验》 列表现在支持滑动指令 除了可移除项目 现在还能执行加入最爱等自定义指令 按钮角色让系统知道怎么呈现和处理 特定的按钮类型 如破坏性按钮 但也有加入Control Prominence修饰 让这些按钮被轻点时 有额外的触觉属性 WatchOS 8也有SwiftUI Canvas API 这表示你可以使用Apple Watch 强大的GPU来进行丰富的程序绘图 WatchOS 8的Apple Watch 有太多令人兴奋的地方了 TimelineView会在 用户手腕放下时更新界面 让他们快速瞥一眼就能获得信息 所有的app都该采用这个功能 所以请先研究这部分 通过HealthKit数据的后台传递 及蓝牙连接 app的复杂功能有了 接收更新信息的新方式 这更进一步地证实 复杂功能 是部分人使用Watch app的主要方式 如果你可以让人一瞥就得到更多信息 你绝对要这么做 以区域为依据的用户通知 提升了位置对Watch app的意义 在适当的地方采用这些通知 可以带来 又惊又喜的感受 让消费者持续使用你的app 最后 应用AssistiveTouch 及SwiftUI Canvas API 等更高阶的功能 可以让你的Watch app 比从前更好用、更令人投入 我会引颈期盼你创造出来的东西 谢谢 [音乐]
-
-
2:49 - isLuminanceReduced Environment Property
@Environment(\.isLuminanceReduced) var isLuminanceReduced
-
3:01 - isLuminanceReduced ContentView Preview
ContentView().environment(\.isLuminanceReduced, true)
-
-
正在查找特定内容?在上方输入一个主题,就能直接跳转到相应的精彩内容。
提交你查询的内容时出现错误。请检查互联网连接,然后再试一次。