暂时禁用通用剪贴板

Dan*_*iel 5 macos clipboard nspasteboard ios

iOS和macOS具有称为“通用剪贴板”的内置功能,该功能可使用iCloud在设备之间同步剪贴板的内容。

NSPasteboard.general.clearContents()
NSPasteboard.general.writeObjects("Test 123") 
Run Code Online (Sandbox Code Playgroud)

我想在Cocoa应用程序的通用粘贴板上写一些东西,以便在不与其他iCloud设备同步的情况下在应用程序之间共享它。我找不到解决方法。实际上,我认为如果没有用户在设置中手动禁用它,这是不可能的。

文档说:

通用粘贴板(通过通用类方法提供)可自动参与macOS 10.12和更高版本以及iOS 10.0和更高版本中的通用剪贴板功能。没有用于与此功能交互的macOS API。 https://developer.apple.com/documentation/appkit/nspasteboard

但是,也许有一种解决方法,私有API(我知道没有App Store)或其他人可能知道的东西。:)

干杯

jva*_*ela 5

是的,通用粘贴板可用于所有应用程序,但 NSPasteboard 可用于创建私人粘贴板。您需要做的就是:

let myPasteboard = NSPasteboard(name: NSPasteboard.Name("mypasteboard"))
Run Code Online (Sandbox Code Playgroud)

您可以在此处查看文档。因此,您可以将粘贴的项目复制到您的私人粘贴板,并且只有在您需要时,您才可以将数据传输到通用粘贴板并使数据可供所有应用程序使用。

但是,如果您想阻止跨设备共享通用剪贴板,您所要做的就是:

let generalPasteboard = NSPasteboard.general

// current host only
generalPasteboard.prepareForNewContents(with: .currentHostOnly)
// write here to the pasteboard
Run Code Online (Sandbox Code Playgroud)