一个对象,可帮助用户在应用程序中从一个地方共享数据到另一个地方,以及从您的应用程序共享到其他应用程序。

这是在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"


注意:我已经在此应用程序中进行了本地测试,正在设置数据

最佳答案

您是否在运行iOS> = 10?关于应用之间传递价值的隐私更改。尝试阅读UIPasteBoard api doc:(https://developer.apple.com/documentation/uikit/uipasteboard)。

Tl:dr您需要将两个应用程序都放在同一个应用程序组中(Communicating and persisting data between apps with App Groups

注意:iOS应用已沙箱化。因此,iOS 10中的更改仅强制实施了该功能。

编辑:由于您不能使用应用程序组(不同的开发人员和/或产品),因此必须通过其他渠道发送数据。尝试搜索urlSchemes或通过公用服务器进行存储/获取(乏味的tho)

10-07 19:54