沙盒问题:加载文档时自动加载电影

Sandbox Issue: Loading a Movie automatically when a document is loaded

我的情况有点特殊,虽然我明白问题出在哪里,但我不太确定最好的解决方法是什么,所以我想我会咨询蜂群思维。 :)

场景:

我正在开发一个基于文档并使用 Quicktime 的应用程序 (OS X)。创建新文档时,用户选择要在文档中查看的电影 window。然后用户可以保存该文档。当用户稍后尝试打开该文档时,没有任何反应。就是打不开。

目前我所知道的:

问题在于 Sandbox 的操作方式,以及我使用它的有限经验(我的第一次尝试。)我启用了 Sandbox 并将应用程序权限设置为允许任何用户启动的文件操作,并且还添加了权限访问电影文件夹的应用程序。

当用户加载文档并且电影位于电影文件夹中时,它会打开并正常工作。但是,如果电影位于用户驱动器上的其他任何位置,则它无法正常工作并按上述方式执行。

我意识到这是因为当用户可以打开文档(用户启动)时,沙箱会阻止应用程序尝试自动打开链接的电影(不是用户启动),除非电影位于电影中文件夹。

由于该应用程序是为处理大文件而设计的,因此强制用户将文件复制到他们的电影文件夹并将它们留在那里似乎是一个很大的限制。

(我还没有尝试使用位于外部驱动器上的电影,但怀疑它可以工作,因为它不是系统驱动器。)

问题:

有没有办法解决这个问题,因为最初是用户启动了打开电影的任务?

如果不是,是否有办法让应用程序要求用户确认是否应该加载电影...也许就像显示一个打开对话框,其中已经选择了电影,以便他们只需单击“确定”?这可能是最好的解决方案。

另一种选择可能是在用户最初选择电影时自动将其复制到电影文件夹中,但这同样不适合我的情况...

如有任何想法,我们将不胜感激!

正如您所描述的,您的应用程序有权访问其自己的容器和电影文件夹中的文件。要访问任意电影文件,您必须:

  • 让用户启动对文件的访问,即当创建新文档时,用户必须使用文件选择器来访问电影文件。然后扩展您的沙箱的权限以允许访问所选文件。

  • 这些访问权限是临时的。要在应用程序重新启动后保留它们,您必须通过安全范围的书签保存和恢复访问权限。

请参阅 PowerBoxSecurity Scoped Bookmarks

上的 Apples documentation

WWDC 2013 的 Session 710 也可能有帮助。