在 Xamarin 中安装和使用 watchOS

watchOS 4 需要使用 Xcode 9 的 macOS Sierra (10.12)。

watchOS 1 最初需要使用 Xcode 7 的 OS X Yosemite (10.10)。

警告

watchOS 1 更新将在 2018 年 4 月 1 日之后接受。 将来的更新必须使用 watchOS 2 SDK 或更高版本;建议使用 watchOS 4 SDK 进行生成。

项目结构

监视应用由三个项目组成:

  • Xamarin.iOS i电话 应用项目 - 这是正常的 i电话 项目,可以是任何 Xamarin.iOS 模板。 监视应用及其扩展将捆绑在此主项目中。

  • 监视扩展项目 - 它包含监视应用的代码(如控制器类)。

  • 监视应用项目 - 它包含用户界面情节提要文件,其中包含监视应用的所有 UI 资源。

监视 工具包目录示例 解决方案在 Xamarin.Studio 中如下所示:

下载并运行 WatchKitCatalog 示例以开始使用。 示例中的屏幕可以在“控件”页上找到

新建项目

无法创建新的“监视解决方案”...而是可以将 Watch 应用添加到现有的 iOS 应用程序。 按照以下步骤创建监视应用:

  1. 如果没有现有项目,请先选择 “文件 > 新建解决方案 ”并创建 iOS 应用(例如, 单个视图应用):

    Choose File > New Solution and create an iOS app

  2. 创建 iOS 应用(或计划使用现有的 iOS 应用)后,右键单击解决方案并选择 “添加新 > 项目”。。“新建项目 ”窗口中,选择 watchOS > App > WatchKit 应用

    Select watchOS > App > WatchKit App

  3. 下一个屏幕允许你选择哪个 iOS 应用项目应包括监视应用:

    Choose which iOS app project should include the watch app

  4. 最后,选择要保存项目的位置(并根据需要启用源代码管理):

    Choose the location to save the project

  5. Visual Studio for Mac 会自动为你配置 项目引用和 Info.plist 设置

创建监视用户界面

使用 Xamarin iOS 设计器

双击监视应用的 Interface.storyboard 以使用 iOS 设计器进行编辑。 可以将接口控制器和 UI 控件从 工具箱 拖到情节提要上,并使用 Properties pad 对其进行配置:

应为每个新接口控制器指定一个,方法是选择它,然后在 Properties pad 中输入名称(这将自动创建所需的 C# 代码隐藏文件):

通过 Ctrl + 从按钮、表或接口控制器拖动 到另一个接口控制器来创建 segue。

在 Mac 上使用 Xcode

可以通过右键单击 Interface.storyboard 文件并选择“使用 > Xcode 接口生成器打开”,继续使用 Xcode 生成用户界面:

Open the Interface.storyboard in Xcode Interface Builder

如果使用 Xcode,则应按照与普通 iOS 应用情节提要 相同的监视应用步骤(例如按 Ctrl+拖动.h 头文件中创建出口和操作)。

在 Xcode Interface Builder 中保存情节提要时,会自动将创建的输出口和操作添加到监视扩展项目中的 C# .designer.cs 文件。

在 Xcode 中添加其他屏幕

使用 Xcode Interface Builder 将其他屏幕(超出模板中包含的内容)添加到情节提要时,必须为每个新的接口控制器手动添加 C# 代码文件

请参阅 有关如何向情节提要添加新接口控制器的高级说明。

Xamarin iOS 设计器会自动执行此操作,无需手动步骤。

生成

包含监视应用生成的项目,如其他 iOS 项目。 生成过程将导致 i电话 应用程序(.app)包含监视扩展(.appex),后者又包含无代码监视应用程序(.app)。

发射

可以使用 Visual Studio for Mac 或 Visual Studio 在模拟器中启动监视应用(在 Mac 生成主机上启动)。

启动 WatchKit 应用有两种模式:

  • 普通应用模式(默认值)和
  • 通知(需要 JSON 格式的测试通知有效负载)。

Xcode 8 支持

安装 Xcode 8(或更高版本)后,Apple Watch 模拟器与 iOS 模拟器分开(与 Xcode 6 不同,它们显示为外部显示器)。 选择“监视应用”项目并将其设为启动项目时,模拟器列表将显示 要从中选择的 iOS 模拟器 (如下所示)。

Selecting the Simulator type

开始调试时, 应启动两个 模拟器 - iOS 模拟器 Apple Watch 模拟器。 使用 Command+Shift+H 导航到监视菜单和时钟面;并使用 “硬件 ”菜单设置 “强制触摸压力”。 在触控板或鼠标上滚动将模拟使用数字皇冠。

疑难解答

如果尝试启动到没有配对监视的模拟器,应用程序输出将显示以下错误:

error MT0000: Unexpected error - Please file a bug report at https://github.com/xamarin/xamarin-macios/issues/new
error HE0020: Could not find a paired Watch device for the iOS device 'iPhone 6'.

有关配置模拟器的说明(如果默认值不起作用),请参阅 Apple 论坛

Xcode 6 和 watchOS 1

在运行或调试应用之前,必须将监视扩展项目设为启动项目。 你不能“启动”监视应用本身,如果你选择 iOS 应用,它将在 iOS 模拟器中正常启动。

默认情况下,监视应用从 Visual Studio for Mac 的“运行”或“调试”命令以正常应用模式(而不是“概览”或“通知”模式)启动。

使用 Xcode 6 时,只有 i电话 5、i电话 5S、i电话 6 和 i电话 6 Plus 可以激活 Apple Watch (38mmApple Watch)的外部显示器 -42mm,其中显示手表应用程序。

注意

请记住,使用 Xcode 6 时,监视屏幕不会自动显示在 iOS 模拟器中。 使用“硬件>外部显示”菜单显示监视屏幕。

启动通知模式

请参阅“ 通知”页 ,了解如何在代码中处理通知。

Visual Studio for Mac 可以使用通知的通知 启动模式 启动监视应用:

右键单击监视应用项目,然后选择“ 使用 > 自定义配置运行...”

Running a Custom Configuration

这会打开“自定义参数”窗口,可在其中选择“通知(并提供 JSON 有效负载),然后按“运行”在模拟器中启动监视应用:

Setting the Notification and Payload

调试

Visual Studio for Mac 和 Visual Studio 都支持调试。 请记住在通知模式下调试时提供通知 JSON 文件。 此屏幕截图显示监视应用中正在命中的调试断点:

This screenshot shows a debug breakpoint being hit in a watch app

按照启动说明操作后,你最终会在 iOS 模拟器(Watch)上运行的监视应用。 对于通知模式,可以选择“ 调试 > 打开系统日志 ”(CMD + /),并在 Console.WriteLine 代码中使用。

调试生命周期事件处理程序

watchOS 模板文件(例如InterfaceControllerExtensionDelegateNotificationControllerComplicationController)附带已实现所需的生命周期方法。 添加 Console.WriteLine 调用并读取 应用程序输出 ,以更好地了解事件生命周期。