Временно отключите универсальный буфер обмена - PullRequest
4 голосов
/ 05 июля 2019

iOS и macOS имеют встроенную функцию Universal Clipboard, которая синхронизирует содержимое буфера обмена между устройствами с помощью iCloud.

NSPasteboard.general.clearContents()
NSPasteboard.general.writeObjects("Test 123") 

Я хотел бы записать что-то на общий монтажный стол в моем приложении Cocoa, чтобы поделиться им между приложениями без синхронизации с другими устройствами iCloud. Я не смог найти способ сделать это. На самом деле, я думаю, что это невозможно без отключения пользователем вручную в настройках.

Документы говорят:

Общий монтажный щит, доступный посредством метода общего класса, автоматически участвует с функцией универсального буфера обмена в macOS 10.12 и более поздних версиях и в iOS 10.0 и более поздних версиях. Для взаимодействия с этой функцией не существует macOS API. https://developer.apple.com/documentation/appkit/nspasteboard

Но, возможно, есть обходной путь, закрытый API (я не знаю App Store) или что-то еще, о чем кто-то может знать. :)

Приветствия

1 Ответ

3 голосов
/ 06 июля 2019

Да, общий монтажный щит доступен для всех приложений, но NSPasteboard можно использовать для создания частных монтажных панелей. Все, что вам нужно сделать, это:

let myPasteboard = NSPasteboard(name: NSPasteboard.Name("mypasteboard"))

Вы можете проверить документацию здесь . Таким образом, вы можете скопировать вставленный элемент в ваш личный монтажный картон, и только тогда, когда вы этого хотите, вы можете затем перенести данные в общий монтажный картон и сделать данные доступными для всех приложений.

Однако, если вы хотите предотвратить совместное использование универсального буфера обмена между устройствами, все, что вам нужно сделать, это:

let generalPasteboard = NSPasteboard.general

// current host only
generalPasteboard.prepareForNewContents(with: .currentHostOnly)
// write here to the pasteboard
...