【问题标题】:Can an app-scoped security scoped bookmark be copied from one Mac to another?应用程序范围的安全范围书签可以从一台 Mac 复制到另一台吗?
【发布时间】:2017-01-09 08:18:25
【问题描述】:

我有一个沙盒应用程序,它使用可以包含嵌入文件名的文档格式。例如。其中一些参考文件用于用户选择的图像文件,以便将图像文件与存储在文档中的数据相关联。虽然此类图像有时会位于用户图片文件夹中,但有时它们会位于其他位置。出于可移植性原因,文档格式本身无法更改(与现有 Windows 版本的应用程序共享)。

为了让应用程序能够访问其名称嵌入在文档中的文件,当用户选择一个文件名(使用 nsopenpanel)以像这样存储在文档中时,应用程序还会创建一个应用程序范围每个此类存储的文件名的安全范围书签。然后它通过将这些书签序列化到另一个文件来存储它们。当应用程序再次运行时,它会加载其先前序列化的书签,并在访问“嵌入”文件名时使用它们,并且工作正常。

但是,当我将此类文档(及其关联的序列化书签文件)从一台 Mac 复制到另一台 Mac 时,它不起作用,即使已知书签引用的所有文件都存在于两台 Mac 上。发生的情况是,虽然应用程序可以正常打开文档文件(在用户使用 nsopenpanel 选择它之后),并从其关联的序列化书签文件(用户再次使用 nsopenpanel 选择)中成功读取序列化书签,即使已知书签所指的完全相同的文件名存在于另一台 Mac 上(用户可以通过 finder 等访问),但沙盒应用程序仍然无法访问它们。解析书签似乎失败了。

问题是:应用范围内的书签是否仅限于在创建它们的 Mac 上工作?如果我无法将应用范围内的书签从一个系统移动到另一个系统,我还能如何实现我想要的效果而不强制用户必须使用 nsopenpanel 手动重新选择每个这样的“嵌入”文件名?

试图在 Apple 文档中找到这个问题的答案,但没有成功。

我认为毫无疑问,安全范围的书签只能由创建它们的应用程序使用。

【问题讨论】:

    标签: macos appstore-sandbox nsopenpanel security-scoped-bookmarks


    【解决方案1】:

    不,因为如果可能的话,开发人员可以将安全范围的书签保存到他们自己计算机上的敏感文件/目录中,然后部署他们的应用程序并访问其他人计算机上的相同敏感文件/目录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-27
      • 1970-01-01
      相关资源
      最近更新 更多