885594970105e9398cfda87a39af40b4
创建独立的Watch应用

本文内容基于 WWDC19 - 208 Creating Independent Watch Apps。主要介绍了新的独立Watch应用的概念,对于如何在独立Watch应用上实现常用的登录、注册、推送、网络数据获取功能进行了介绍。

独立的Watch应用

今年,Apple为Watch引入了一个新的概念,新的概念叫做独立的Watch应用。

现在有一些应用已经在一定程度上是独立应用了,比如:Podcast应用。这些应用能提供完整的用户体验,但Watch应用能够独立上架,不需要依赖iPhone应用,还是第一次。为了帮助开发者开发更棒的独立Watch应用,watchOS 6提供一大波新功能。

安装

  • iOS应用不再包含Watch应用。
  • 每个设备下载自己的应用。
  • 资源和变体variant最小化。(编者注:切片App Slicing是创建和提供不同的目标设备的应用程序包的变体variant的过程。)
  • 下载文件更小。

watchOS 6终于有App Store了,而且你能够在Apple Watch上体验到完整的App Store使用流程。

依赖应用 vs 独立应用

依赖应用 独立应用
iOS应用安装到iPhone时Watch应用会被下载 Watch应用能独立被安装
Watch应用启动需要等iOS应用安装完毕 卸载iOS应用时也能保留Watch应用
iOS应用搭配的watchOS应用向后兼容
Watch应用需要watchOS 6以上

创建你的独立应用

现在你可以有2种方式来组织你的watchOS项目:

  1. watch特有应用(watch-only app):仅仅提供给Apple Watch的应用,没有相关的iOS应用。
  2. iOS应用搭配的watchOS应用(watchOS app with an iOS app):为你的iOS应用提供类似及相关体验的应用。

对于watch特有应用只能是独立应用类型,但iOS应用搭配的watchOS应用,可以是依赖应用或者独立应用。

Xcode对Watch应用的支持

对于现有包含Watch应用项目,直接勾选Watch Extension的Target中的Supports Running Without iOS App Installation复选框

如果想创建Watch特有应用,可以直接选择watchOS App

调试

  • 模拟器调试速度提升10倍
  • 设备调试速度提供2倍
  • 通过iPhone代理 (如果iPhone和Watch设备使用WiFI会有更快的调试体验)

登入和注册

认证的主要方式是通过登入和注册来完成,现在你可以直接在watchOS上创建注册流程,使用WKAlertAction的接口来支持条款和条件,使用新的Apple全平台Sign In with Apple功能和创建自己的密码登入。

Sign In with Apple

优势如此之多:

AuthenticationServices.framework现在支持watchOS了。

关于Sign In with Apple的信息可以查看相关资源中的链接。

文本输入框

现在watchOS 6上添加了新的WKInterfaceTextField类,帮助方便的输入内容。通过placeholder来提示用户应该输入什么内容;设置合适的textContentType,watchOS提供以下几个类型,每种类型还有细分的子类别:

  • 名字
  • 职业
  • 地址
  • 联系人信息
  • 其它
  • 登陆凭证

键盘接力 Continuity Keyboard

在watchOS 6上除了语音和涂写外,新增了一种叫Continuity Keyboard的功能,帮助你通过在其它的iOS和iPadOS设备上完成文本输入。

当你点击图标后,Apple Watch会给使用相同的iCloud账号的iOS和iPadOS设备发送一个通知。

点击通知后,出现一个TextField输入框。

之前设置的textContentType会通知autofill suggestions。

有些应用会使用验证码登录,只要设置textContentType为WKTextContentTypeOneTimeCode,watchOS也能支持。

隐私信息

不同的框架会向用户申请不同的信息访问,watchOS 6完全支持对信息的授权申请。

推送通知

Watch现在能够成为推送目标,支持用户可见通知和后台通知。

新增推送请求头部字段:apns-push-type,这个字段支持所有的Apple设备平台。类型的值可以是alert或者background。如果你需要发送让用户看到的通知可以设置成alert,如果你想告诉应用需要在后台进行内容更新可以设置成background。

对了,Notification Service Extension也是支持的,你可以在这里下载推送中的文件或者解密之类的额外操作。

使用UserNotification来完成推送服务的注册。

```
import WatchKit
import UserNotifications

top Created with Sketch.