我想知道Mac应用商店有什么限制。有人能指出我正确的方向吗?例如,假设我想编写一个应用程序来对Mac文件系统上的文件进行增量自动备份,这可以通过Mac应用程序商店中的应用程序实现,还是我唯一的选择是独立的mac应用程序?
在iPhone上,应用程序是自包含在他们自己的“沙箱”中?这个相同的主体是否适用于mac app store应用程序?
答案 0 :(得分:8)
研究员,OP真正指的是这里所描述的:
一切都是关于
一旦应用程序被“沙箱化”,它对〜“home”目录的视图就是Container的视图(恰好在$ HOME / Library / Containers / appBundleID / Data中首次启动时创建)。在那里它找到了配置,缓存和数据文件的“私有副本”。当然,除非......
,否则它无法读取任何其他内容...您以代码签名属性文件的形式向应用程序提供适当的权利(实际上,代码签名是沙盒概念的组成部分)。
其中一个权利是“ com.apple.security.files.user-selected.read-write ”,其中允许应用程序读取和写入用户的那些文件已分别通过标准保存和打开对话框明确选择。
然后,PowerBox(pboxd)守护程序在其自己的进程空间中呈现相应的文件对话框,并将选定的文件路径添加到允许的文件列表中。这对应用程序是透明的,即只要应用程序使用标准的NSOpenPanel或NSSavePanel对话框,就不需要更改代码。
“为了方便应用程序沙盒,Mac OS X v10.7提供了一个受信任的系统守护程序,其任务是代表在应用程序沙箱中运行的应用程序显示打开和保存面板。该守护程序称为Powerbox(其进程名称为pboxd)这些Powerbox提供的远程面板在用户体验方面与进程内面板完全无法区分。
任何时候在沙盒中运行的应用程序都会调用NSOpenPanel或NSSavePanel对话框,而不是直接显示面板,AppKit会自动要求Powerbox显示对话框。从开发人员的角度来看,在如何使用这些面板方面不需要更改代码;这个过程是完全透明的。“[Apple文档的最终引用]
考虑到所有这些, OP需要什么(对于备份解决方案)是“无中介读/写”:
“如果应用程序选择以绕过Cocoa API的方式派生用户的主目录(例如,通过直接调用getpwent),则应用程序沙箱禁止它写入它接收的路径(除非应用程序具有未介入的路径)写权利,出于明显的安全原因,强烈建议不要这样做。“[Apple文档的最后引用]
然而,最接近授予“免费访问文件系统”的权利我可以很好:
“
绝对文件只读 - 能够读取指定绝对路径的文件或目录。 (的 com.apple.security.temporary-exception.files.absolute-path.read仅强>)
绝对文件读/写 - 能够在指定的绝对路径上读取或写入文件或目录。 (的 com.apple.security.temporary-exception.files.absolute-path.read写强>)
“[Apple文档的最终引用]
我不确定应用程序是否可以简单地提供根目录“/”
无论如何,请仔细注意,这些权利标记为“临时”:Apple可能会根据需要删除/弃用这些权利!
答案 1 :(得分:3)
我相信从11月开始,Mac App Store的提交必须采用App Sandbox。当您的应用提交到应用商店时,您可以申请特定的权利,并说明您需要这些权利的原因。更多信息可以在开发人员网站上的WWDC Session 204视频中找到。
答案 2 :(得分:1)
狮子会发布时正在改变或已经改变。 Mac Store应用程序曾经能够在登录的用户权限允许的文件系统中执行任何操作,但我认为您现在需要使用权利系统,因此沙盒您的应用程序。
阅读本文以获取更多想法
答案 3 :(得分:1)
从技术上讲,OS X上有沙盒。但是,用户手动启动的申请人会绕过这些沙盒限制(有时需要升级/管理验证屏幕)。
看看: http://techjournal.318.com/security/a-brief-introduction-to-mac-os-x-sandbox-technology/
答案 4 :(得分:1)
答案 5 :(得分:0)
您目前可以在Mac App Store上找到Hype或Pixelmator。
这证明你可以保存到磁盘并从磁盘读取,这似乎是任何严肃应用程序的基本功能。此外,Apple正在推动开发人员开始使用文件的增量自动备份,因此,如果他们在App Store禁止这样做,那将是非常令人惊讶的,不是吗?