我有一个提交到应用程序商店的应用程序因以下原因被拒绝
2.30不符合Mac OS X文件系统文档的应用程序将被拒绝
他们声称我的应用正在修改不受支持的〜/ Library / Preferences / com.apple.spaces.plist文件。
我的应用程序实际上正在修改该文件,但只能通过以下方式使用NSUserDefaults :(为了简洁,我省略了一些代码......)
NSMutableDictionary *spacesDefaults =
[[NSUserDefaults standardUserDefaults] persistentDomainForName:@"com.apple.spaces"];
NSMutableDictionary *dict = [spacesDefaults objectForKey:@"app-bindings"];
NSString *bundleId = [[[NSBundle mainBundle] bundleIdentifier] lowercaseString];
[dict setObject:@"AllSpaces" forKey:bundleId];
[spacesDefaults setObject:dict forKey:@"app-bindings"];
[[NSUserDefaults standardUserDefaults] setPersistentDomain:spacesDefaults
forName:@"com.apple.spaces"];
在我看来,这属于“Mac App Store的文件系统使用要求”的第一个子弹http://developer.apple.com/library/mac/#releasenotes/General/SubmittingToMacAppStore/_index.html#//apple_ref/doc/uid/TP40010572
* You may use Apple frameworks such as User Defaults, Calendar Store, and Address Book that implicitly write to files in specific locations, including locations is not allowed to access directly.
有谁知道为什么会被拒绝?我只是没有看到它......
谢谢!
答案 0 :(得分:0)
这是真正的重要问题that I bemoaned on the Apple Dev Forums ...
我认为提交Radar Request 可能会产生影响,有一天......但显然这个LAME限制.. 限制了应用程序执行任何操作的能力 outide the sandbox ..即使这是你的用户可以做的事情...... 这是Mac上的第三方应用程序执行SIMPLE的能力的一个严重后退,隐含用户的命令。
这似乎是苹果公司的基本范式转变。以下是上述论坛列表的主旨..
NSUserDefaults can be used only for our own app,
and sandboxing will not allow to modify other apps defaults
此外,您不能以任何方式修改任何其他应用的.plist
,通过XML或其他方式。
而且,不,通过另一个域上的任务或终端执行defaults write
,除了您自己的应用程序之外也是非法的。呃,这很烦人。