【问题标题】:Sandbox Issue: Loading a Movie automatically when a document is loaded沙盒问题:加载文档时自动加载电影
【发布时间】:2018-01-31 03:12:26
【问题描述】:

我的情况有些特殊,虽然我了解问题所在,但我不太确定最好的解决方法是什么,所以我想我会咨询蜂巢思维。 :)

场景:

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

到目前为止我所知道的:

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

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

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

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

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

问题:

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

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

另一种选择可能是在用户最初选择电影时自动将电影复制到 Movies 文件夹中,但对于我的情况来说,这并不是真正的想法......

任何想法将不胜感激!

【问题讨论】:

    标签: macos quicktime appstore-sandbox nsopenpanel


    【解决方案1】:

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

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

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

    请参阅 PowerBox 和 Security Scoped Bookmarks

    上的 Apples documentation

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

    【讨论】:

    • 谢谢。不久前,我刚刚发现并阅读了 Security Scoped Bookmarks。这正是我一直在寻找的。现在我只需要弄清楚如何使用它们! :)
    猜你喜欢
    • 2013-03-22
    • 2012-01-31
    • 2014-11-16
    • 1970-01-01
    • 1970-01-01
    • 2011-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多