单击时显示 NSUserNotification additionalActions

show NSUserNotification additionalActions on click

在上图中,您可以在 OS X 上看到两个通知。第一个来自我的应用,第二个来自 Apple 的 Reminders.app。在图像中,您可以看到 otherButtonTitle 'Complete' 和 actionButtonTitle 'Later'。

第二个通知,即来自 Reminders.app 的通知的行为完全不同。它让这个小箭头在鼠标悬停时指向下方,表示单击时还有更多操作。事实上,您只需在 'Later' 上单击 一次 ,它会给您提供更多选项供您选择。

但是,我无法让相同的行为适用于我的通知。鼠标悬停时我没有看到小箭头,单击 'Later' 也没有显示更多选项(通知被取消)。只有在 'Later' 上按住鼠标按钮时才会显示更多选项,这并不明显。

我是不是遗漏了什么明显的东西?我怎样才能使我的通知与 Reminders.app 中的通知完全相同?

在尝试为同一问题寻找解决方案时,我发现了一个很好的 NSUserNotificationPrivate 解释 class,它解释了提醒应用程序是如何做到这一点的。

https://github.com/indragiek/NSUserNotificationPrivate

如果通知类型设置为 "Alert",alternateActionButtonTitles 属性 可让您设置一组附加菜单项标题,以显示在操作菜单中,可通过将鼠标悬停在操作按钮并单击箭头。

处理通知后,可以使用 _alternateActionIndex 检索操作的索引 属性。

所以他们使用的是私有 API。正如该网站的免责声明所说,使用其中任何一项都将导致您的应用程序被 MAS 拒绝,并且如果 APIs 发生变化,则可能会中断。