首页 > 解决方案 > UIPasteboard 没有提供价值

问题描述

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

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"

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

标签: iosswiftuipasteboard

解决方案


你运行 iOS >=10 吗?关于在应用程序之间传递价值的隐私发生了变化。尝试阅读 UIPasteBoard api 文档:(https://developer.apple.com/documentation/uikit/uipasteboard)。

Tl:dr 您需要将两个应用程序都放在同一个应用程序组中(使用应用程序组在应用程序之间通信和持久化数据

注意:iOS 应用程序是沙盒的。因此,iOS 10 中的更改只是强制执行了该功能。

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


推荐阅读