“添加到阅读列表”共享菜单项在Mojave中不起作用

时间:2018-10-03 09:19:39

标签: macos cocoa appkit macos-mojave

以下代码在Mojave中不再起作用:

if let url = URL(string: "https://apple.com"),
    let listService = NSSharingService(named: NSSharingService.Name.addToSafariReadingList),
    listService.canPerform(withItems: [url])
{
    listService.perform(withItems: [url])
}

代码在应用程序内执行时没有任何错误,但没有任何内容添加到Safari阅读列表中。

许多提供“添加到阅读列表”共享菜单项的非Apple应用程序都遇到相同的问题:Safari阅读列表中没有新内容。

在控制台中,我看到了一些错误,表明它与Mojave中引入的AppleEvent沙箱有关。因此,我在Info.plist中添加了一个带有描述的NSAppleEventsUsageDescription项目,但没有成功。

有人知道如何解决此问题吗?

2 个答案:

答案 0 :(得分:1)

作为临时的解决方法,在Apple解决此“问题”之前,您可以使用以下代码:

if #available(macOS 10.14, *) { // Don't use the workaround on earlier macOS versions
    let pasteboard = NSPasteboard.init(name: .general)
    pasteboard.clearContents()
    pasteboard.setString(url.absoluteString, forType: .string)
    NSPerformService("Add to Reading List", pasteboard)
}

答案 1 :(得分:0)

此问题似乎已在macOS 10.14.4中修复