App扩展中的安全范围书签

时间:2015-03-11 22:54:58

标签: macos cocoa xpc security-scoped-bookmarks

我正在创建一个TodayWidget应用程序扩展,它显示有关应用程序目录之外的用户所选文件夹的信息。

在我的主应用程序中,我可以通过NSOpenPanel使用powerbox来选择文件夹。然后,我可以将安全范围的书签保存到我的TodayWidget可访问的应用程序组容器的用户默认值。

TodayWidget可以读取书签数据,但是当它调用 URLByResolvingBookmarkData 时,它会出错:

The file couldn’t be opened because it isn’t in the correct format.

我的主应用程序和TodayWidget都具有以下权利:

  • com.apple.security.files.bookmarks.app-范围
  • com.apple.security.files.user-selected.read仅

从Apple的文档中,只有创建安全范围书签的应用程序才能使用它。我想这些意味着不允许嵌入式应用程序?

我已经研究过使用XPC,但这并没有真正帮助解决问题,因为XPC也不能使用安全范围的书签,只能使用普通的书签。重新启动计算机后,XPC进程将无法访问目录。

我真正需要的是XPC进程获取用户指定目录的读取权限的方法。有没有办法在每次重新启动计算机时不必重启我的主应用程序?

1 个答案:

答案 0 :(得分:0)

实际上,您不需要启动AccessingSecureFileURL,它将无法启动。只需将书签数据转换为url即可获得访问权限。