如何使用 WatchKit 触发通知

Posted

技术标签:

【中文标题】如何使用 WatchKit 触发通知【英文标题】:How to trigger notifications using WatchKit 【发布时间】:2014-11-24 03:48:02 【问题描述】:

在WatchKit developer guide,how to render custom notifications上有说明,还写着:

应用不需要做任何事情来支持通知。系统提供默认通知界面,显示通知中的警报消息。但是,应用可以自定义通知界面并包含自定义图形、内容和品牌。

我可以获得本地通知以在手机上触发横幅警报,但它们不会在 WatchKit 应用上发生。我已经尝试使用所有目标进行调试:

    ios 应用 观看应用 观看一览 观看自定义通知

即使手机应用程序处于后台,在收到本地通知时似乎也没有触发。我也通过模拟在后台接收到的远程通知来尝试这个。

我希望我不必直接调用 watchKit 的控制器本地/远程通知处理程序。

【问题讨论】:

【参考方案1】:

我希望我不必直接调用 watchKit 的控制器本地/远程通知处理程序。

不,你没有。

答案是 XCode 目前不支持同时调试 Apple Watch 和 iPhone。这就是为什么你不能将通知从 iPhone 模拟器推送到 Watch 模拟器,目前仅支持 *.apns 文件的有效负载测试。

【讨论】:

实际上你可以,但不是你所期望的。使用 xCode 中的播放按钮运行 WatchKit 应用程序。接下来在 iPhone 模拟器上,启动相应的 iOS 应用程序。返回 xCode 并选择 Debug -> Attach to Process。在列表顶部附近,您应该会看到 iOS 应用程序的目标。您可以通过选择控制台窗口上方的名称在调试控制台之间切换 它可以工作,但使用 Watch Connectivity Framework 没有消息到达。【参考方案2】:

它在Notification Essentials中解释过

iOS 决定是在 iPhone 上还是在 Apple Watch 上显示该通知。

所以我不认为(截至目前)可以从应用程序中执行任何操作来专门在手表中触发通知。

编辑:看起来 8.2 测试版中存在错误。

WatchKit 已知问题

在 iOS 模拟器中查看通知时,点击通知图标或正文不会启动相应的 Watch 应用

Release notes

【讨论】:

【参考方案3】:

为了测试手表通知,您必须首先创建一个新的构建方案。

复制您的手表应用方案,并在“运行”部分中,选择您的自定义通知作为可执行文件。

现在您可以运行通知方案了。

在项目的扩展组中,支持文件下是一个名为 PushNotificationPayload.json 的文件。

您可以编辑负载文件以尝试不同的通知和类别。

Source

【讨论】:

【参考方案4】:

我在创建项目时只有两个目标:

[应用名称] [应用名称] 观看应用

编辑 Watch App 方案允许我选择另一个可执行文件——特别是那里有 Glance 和 Notification 选项,它们对我有用。只需选择它,关闭并运行。我没有尝试复制目标/方案,所以我不必编辑它们,但我认为这不是问题。

编辑:实际上,SDK tells you to edit the scheme 也是。

【讨论】:

对,它在 Edit Scheme -> Watch Interface :) 谢谢!

以上是关于如何使用 WatchKit 触发通知的主要内容,如果未能解决你的问题,请参考以下文章

如何在收到推送通知后刷新 watchkit 界面控制器

WatchKit 上的延迟警报?

创建后如何将通知场景添加到 WatchKit 目标?

WatchKit 中的本地通知

如何从通知中启动 watchOS 应用程序?

如何在 iPhone 应用程序和 WatchKit 应用程序之间发送消息?