UIPasteboard не дает значения - PullRequest
0 голосов
/ 24 мая 2019

Объект, который помогает пользователю обмениваться данными из одного места в другое в вашем приложении и из вашего приложения в другие приложения.

Это утверждение написано в самом начале UIPasteboard документов. Но когда я пытаюсь использовать его в двух разных приложениях, получающих доступ к данным, установленным другим приложением, я получаю nil каждый раз

 DispatchQueue.global(qos: .background).async {
    var i = 1
    while(i > 0) {
         let v = UIPasteboard.general.string
         sleep(1)
         print("Task : \(i)")
         print("Value: \(v)")
         i = i + 1
    }
  }

Я получаю данные в приведенном выше коде и устанавливаю данные, как в приведенном ниже коде.

UIPasteboard.general.string = "Hello"

NB: Я проверил локально в этом приложении это настройки данных

1 Ответ

0 голосов
/ 24 мая 2019

Вы используете iOS> = 10? Произошло изменение конфиденциальности в отношении передачи значения между приложениями. Попробуйте прочитать api doc UIPasteBoard: (https://developer.apple.com/documentation/uikit/uipasteboard).

Tl: dr. Оба приложения должны находиться в одной группе приложений ( Обмен и сохранение данных между приложениями с группами приложений )

Примечание: приложения для iOS находятся в «песочнице». Таким образом, изменение в iOS 10 только усиливает эту функцию.

РЕДАКТИРОВАНИЕ: Поскольку вы не можете использовать группы приложений (разные разработчики и / или продукты), вы должны отправлять данные по другому каналу. Попробуйте поискать в urlSchemes или сохранить / извлечь через общий сервер (утомительно)

...