【问题标题】:Named UIPasteboard between apps?在应用程序之间命名为 UIPasteboard?
【发布时间】:2018-08-30 20:40:43
【问题描述】:

是否可以使用命名的 UIPasteboard(即,不是全局的)在两个应用程序之间传输数据?

  • 应用完全相互独立,因此具有来自不同供应商的不同捆绑 ID
  • 我想使用一个命名的粘贴板,这样全局粘贴板中用户自己的内容就不会被覆盖

Apple 的文档说:

粘贴板可以是公共的也可以是私有的。公共粘贴板称为系统粘贴板;私有粘贴板由应用程序创建,因此称为应用程序粘贴板。

这意味着粘贴板可以是“全局和公共的”或“命名和私有的”。

我创建了两个具有不同捆绑 ID 的应用程序,并且似乎能够使用私有命名粘贴板将内容从一个应用程序传递到另一个应用程序。但这只是 iOS 模拟器的一个功能,还是真正支持但没有很好记录的功能?

感谢您的任何见解!

【问题讨论】:

    标签: ios uipasteboard


    【解决方案1】:

    您可以为粘贴板值设置自定义字符串并在您的应用中使用它,这样您的应用就必须使用您的唯一字符串访问该值:

    UIPasteboard *pasteboard = [UIPasteboard pasteboardWithName:@"youruniquestring" create:YES];
    
    [pasteboard setPersistent:YES];
    
    //save the unique identifier string that we created earlier
    [pasteboard setString:@"your message"];
    

    【讨论】:

    • 感谢您的回答。你具体说的是“你的应用”,但我更关心的是“任意两个应用”,不一定是来自同一供应商的两个应用。
    • 无论应用程序是你的还是来自任何人的,只要他们知道密钥,你就可以了。这与 OpenUDID 使用的方法相同,这是一种在使用此方法的任何应用程序之间共享唯一密钥的方法。
    • 这在 ios7 中有所改变。 developer.apple.com/library/ios/releasenotes/General/… "pasteboardWithName 现在唯一的给定名称以仅允许同一应用程序组中的那些应用程序访问粘贴板。如果开发人员尝试使用已存在的名称创建粘贴板并且它们不属于同一应用程序套件,他们将获得自己独特的私人粘贴板”
    • @russau 我假设这意味着应用需要使用相同的捆绑种子 ID 进行签名,而不是它们需要在同一个应用组中(iOS 8 功能)。
    【解决方案2】:

    支持。但请记住,如果设置它的两个应用程序都被删除,命名的粘贴板将会消失,因此不要使用它来存储您没有备份的任何内容。

    【讨论】:

    • 嗯,我不明白为什么会与命名粘贴板和两个应用程序有任何关联。除非 iOS 跟踪哪些应用程序访问特定命名的粘贴板。 (这听起来有点疯狂)#brainhurts
    • @Noah:我正在寻找这个,但我找不到它,但我观察到它......它是否记录在某个地方?我也可以问一下即使在备份/清理/恢复之后粘贴板是否仍然存在?
    • 我不相信它在任何地方都有记录——只是通过实验发现的。很确定备份/恢复也会擦除粘贴板。
    • 我刚刚尝试创建一个粘贴板。使用两个不同的应用程序访问它。删除了这两个应用程序。再次安装了其中一个应用程序。粘贴板还在。
    【解决方案3】:

    如果您使用命名粘贴板,则可以将数据从您的应用传输到具有相同团队 ID 的其他应用。我还没有测试过,但我不认为你可以对不同供应商的应用做同样的事情!

    苹果文档说:

    您可以使用类方法创建命名粘贴板 init(name:create:) 和 withUniqueName() 用于在您的内部共享数据 应用程序以及从您的应用程序到具有相同团队 ID 的其他应用程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-06
      • 1970-01-01
      • 2020-06-03
      • 1970-01-01
      • 2017-03-13
      • 1970-01-01
      • 2012-09-05
      相关资源
      最近更新 更多