是否可以通过内置应用程序将文件保存在沙箱之外?

Posted

技术标签:

【中文标题】是否可以通过内置应用程序将文件保存在沙箱之外?【英文标题】:Is it possible to save files outside of the sandbox via the built-in apps? 【发布时间】:2012-05-15 17:29:54 【问题描述】:

如果我有一个包含文件链接的UIWebView,那么是否可以将这些文件保存到应用程序沙箱之外的磁盘上?

是的,我知道一个应用程序无法访问其沙箱之外的文件系统,但保存过程可以由任何可以处理文件类型的应用程序完成吗? - 例如,如果它是一个音频文件,我的应用程序是否可以启动 QuickTime,将文件(或文件 url)传递给它,然后用户可以通过 QuickTime 应用程序保存文件,并将其保存在音频文件的适当位置?

【问题讨论】:

QuickTime 不是 ios 上的应用程序。你到底想做什么?您可能想查看资产库框架。 这只是一个例子,我在 UIWebView 中加载页面,其中可能包含指向音频、视频、照片等文件的链接,甚至可能是 pdf、日历等。并且需要将它们保存到磁盘。 【参考方案1】:

应用仅限于在自己的沙盒中保存数据。你似乎已经承认了。

您可以让一个应用程序启动另一个应用程序,理论上这可以允许第二个应用程序保存数据,但在它自己的沙箱中。你也提到了这一点。

实际上,您已经回答了自己的问题。

【讨论】:

【参考方案2】:

可以将图片写入到沙盒外的相册中。

UIImage* image = [UIImage imageNamed:@"picture_of_my_cat.png"];
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);

为了从 UIWebView(javascript 到目标 C)中获取数据,您可以继承 NSURLProtocol 并使用 jQuery.ajax

【讨论】:

以上是关于是否可以通过内置应用程序将文件保存在沙箱之外?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 中使用 Swift/SwiftUI 将我从应用数据导出的文本文件移动到应用沙箱之外的位置?

将任何类型的文件上传和下载到应用程序沙箱的独特方式

保护应用沙箱

重复使用 Apple Sandbox 安全范围的书签

在 C# 沙箱中运行非托管 EXE

如何为 Xcode UI 测试禁用沙箱