代码之家  ›  专栏  ›  技术社区  ›  Ely

“添加到阅读列表”共享菜单项在莫哈韦不起作用

  •  2
  • Ely  · 技术社区  · 6 年前

    以下代码在莫哈韦不再有效:

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

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

    许多非苹果应用程序提供“添加到阅读列表”共享菜单项,遭受同样的问题:在Safari阅读列表中没有新出现。

    在控制台中,我看到了一些错误,说明它与在Mojave引入的Apple事件沙拳有关。所以我添加了一个 NSAppleEventsUsageDescription 项目描述的信息,但没有任何成功。

    有人知道怎么解决这个问题吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Ely    6 年前

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

    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)
    }
    
        2
  •  0
  •   Ely    6 年前

    这个问题在MacOS 10.14.4中似乎已经解决了