在 watchOS 上隐藏前台 UNNotificationAction

Posted

技术标签:

【中文标题】在 watchOS 上隐藏前台 UNNotificationAction【英文标题】:Hiding a foreground UNNotificationAction on watchOS 【发布时间】:2018-03-04 03:37:18 【问题描述】:

我的场景:

我有一个应用程序可以每天发送有关文章的推送通知。 ios 应用程序在通知上附加了三个 UNNotificationAction —— 一个用于阅读文章,一个用于分享文章,一个用于保存文章以备后用。阅读/分享文章动作是前台动作,而保存文章动作发生在后台。

我还有一个 watchOS 版本的应用程序,它显示了一些头条新闻,并可以选择保存以供以后在 iOS 应用程序中使用。

我的问题是:我只希望手表显示保存文章背景操作。其他两个 UNNotificationAction 不适用于 watchOS 应用程序(并且没有意义)。有没有办法在手表上隐藏这两个动作?我认为这很容易,但我没有看到任何简单的方法可以做到这一点,所以我觉得我一定错过了一些明显的东西......

例如,新闻应用在 iOS 上具有三个通知操作,两个前台操作。在 watchOS 上,只显示一个后台操作。

【问题讨论】:

【参考方案1】:

不知道你是否已经设法自己解决了这个问题,但由于watchOS 5.0 你可以访问WKUserNotificationInterfaceController

// notificationActions can only be changed once didReceiveNotification: has been called @available(watchOS 5.0, *) open var notificationActions: [UNNotificationAction]

正如评论所述,您可以在 func didReceive(_ notification: UNNotification 实现中删除您的 iOS 特定操作。

【讨论】:

【参考方案2】:

接下来我的解决方案:

- (void)didReceiveNotification:(UNNotification *)notification 
  [super didReceiveNotification:notification];
  self.notificationActions = nil;

【讨论】:

以上是关于在 watchOS 上隐藏前台 UNNotificationAction的主要内容,如果未能解决你的问题,请参考以下文章

在 SwiftUI 中隐藏 Picker 在 watchOS 上的焦点边界

WatchOS 3 (XCode 8b6) 上的后台通知

session.isReachable 在 watchos 的背景中总是假的

前台技术--div的隐藏与显示

如何在 WatchOS2 中显示系统加载屏幕?

为啥 EmptyView() 不能在带有 SwiftUI 的 WatchOS 上工作?