Macos 单击时显示NSUserNotification附加操作

Macos 单击时显示NSUserNotification附加操作,macos,cocoa,nsusernotification,nsusernotificationcenter,Macos,Cocoa,Nsusernotification,Nsusernotificationcenter,在上图中,你可以在OS X上看到两个通知。第一个来自我的应用程序,第二个来自苹果的提醒程序。在图像中,您可以看到其他按钮“完成”和操作按钮“稍后” 第二个通知,即来自members.app的通知,其行为完全不同。它在鼠标上方得到一个向下的小箭头,表示单击时有更多的动作。事实上,你只需要点击一次“以后”,它会给你更多的选择 但是,我无法使相同的行为适用于我的通知。我没有鼠标上的小箭头,也没有通过单击“稍后”按钮显示更多选项(通知被取消)。更多选项仅在按住“稍后”上的鼠标按钮时显示,这并不明显 我是

在上图中,你可以在OS X上看到两个通知。第一个来自我的应用程序,第二个来自苹果的提醒程序。在图像中,您可以看到
其他按钮
“完成”和
操作按钮
“稍后”

第二个通知,即来自members.app的通知,其行为完全不同。它在鼠标上方得到一个向下的小箭头,表示单击时有更多的动作。事实上,你只需要点击一次“以后”,它会给你更多的选择

但是,我无法使相同的行为适用于我的通知。我没有鼠标上的小箭头,也没有通过单击“稍后”按钮显示更多选项(通知被取消)。更多选项仅在按住“稍后”上的鼠标按钮时显示,这并不明显


我是不是漏掉了什么明显的东西?如何使我的通知与提醒应用程序中的通知完全相同?

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

如果通知类型设置为“警报”,则alternateActionButtonTitles属性允许您设置要在操作菜单中显示的附加菜单项标题数组,可以通过将鼠标悬停在操作按钮上并单击箭头来访问该菜单

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


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

FWIW我通过[notification setValue:[NSNumber numberWithBool:YES]forKey:@“\u alwaysShowAlternateActionMenu]”快速测试了这一点;它就像一个符咒。模块“这是一个私有API”警告。