在 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 应用程序。 按照以下步骤创建监视应用:
如果没有现有项目,请先选择 “文件 > 新建解决方案 ”并创建 iOS 应用(例如, 单个视图应用):
创建 iOS 应用(或计划使用现有的 iOS 应用)后,右键单击解决方案并选择 “添加新 > 项目”。。在 “新建项目 ”窗口中,选择 watchOS > App > WatchKit 应用:
下一个屏幕允许你选择哪个 iOS 应用项目应包括监视应用:
最后,选择要保存项目的位置(并根据需要启用源代码管理):
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 生成用户界面:
如果使用 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 应用有两种模式:
Xcode 8 支持
安装 Xcode 8(或更高版本)后,Apple Watch 模拟器与 iOS 模拟器分开(与 Xcode 6 不同,它们显示为外部显示器)。 选择“监视应用”项目并将其设为启动项目时,模拟器列表将显示 要从中选择的 iOS 模拟器 (如下所示)。
开始调试时, 应启动两个 模拟器 - 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 (38mm 或 Apple Watch)的外部显示器 -42mm,其中显示手表应用程序。
注意
请记住,使用 Xcode 6 时,监视屏幕不会自动显示在 iOS 模拟器中。 使用“硬件>外部显示”菜单显示监视屏幕。
启动通知模式
请参阅“ 通知”页 ,了解如何在代码中处理通知。
Visual Studio for Mac 可以使用通知的通知 启动模式 启动监视应用:
右键单击监视应用项目,然后选择“ 使用 > 自定义配置运行...”:
这会打开“自定义参数”窗口,可在其中选择“通知”(并提供 JSON 有效负载),然后按“运行”在模拟器中启动监视应用:
调试
Visual Studio for Mac 和 Visual Studio 都支持调试。 请记住在通知模式下调试时提供通知 JSON 文件。 此屏幕截图显示监视应用中正在命中的调试断点:
按照启动说明操作后,你最终会在 iOS 模拟器(Watch)上运行的监视应用。
对于通知模式,可以选择“ 调试 > 打开系统日志 ”(CMD + /),并在 Console.WriteLine
代码中使用。
调试生命周期事件处理程序
watchOS 模板文件(例如InterfaceController
,ExtensionDelegate
和NotificationController
ComplicationController
)附带已实现所需的生命周期方法。 添加 Console.WriteLine
调用并读取 应用程序输出 ,以更好地了解事件生命周期。