以下代码在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项目,但没有成功。

有谁知道如何解决这个问题?

最佳答案

作为暂时的解决方法,在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)
}

关于macos - “添加到阅读列表”共享菜单项在Mojave中不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52623720/

10-09 16:17