【发布时间】:2021-07-06 14:21:20
【问题描述】:
我正在为我的基于文档的应用程序使用临时(App Store 外部)分发。该应用是未沙盒化的,并且权利设置正确:
<key>com.apple.security.app-sandbox</key>
<false/>
运行经过公证的应用程序时,它会被 Gatekeeper 捕获。控制台中一遍又一遍地打印以下内核错误:Sandbox: App(33811) System Policy: deny(1) file-write-unlink /Users/user/Library/Autosave Information/xx.name.AppName.plist
该应用程序不使用 macOS 自动保存(原地保存)的东西,但如果我是正确的,这个 Autosave Information 文件夹用于恢复应用程序会话。我正在使用+(BOOL)autosavesDrafts 而+(BOOL)autosavesInPlace 返回NO。我还重写了 - (NSURL *)autosavedContentsFileURL 以指向 App Support 文件夹,并且正确提供了 URL。
如果允许这样做,应用会不断将文件写入Autosave Information 文件夹。
应用程序为何以及如何一直尝试访问此文件夹,以及为什么它违反沙盒政策,即使不在沙盒中?
编辑:
我终于设法从控制台中找出真正的错误。似乎该应用程序以某种方式返回了保存恢复数据的错误路径。我试图找到一种用于设置它的方法,但现在没有运气。
-[NSData(NSData) initWithContentsOfFile:options:maxLength:error:] + 111
+[NSArray(NSArray) newWithContentsOf:immutable:] + 112
-[NSDocumentController(NSInternal) _autoreopenRecordsBeingReopened] + 83
-[NSDocumentController(NSInternal) _autoreopenDocumentsIgnoringExpendable:withCompletionHandler:] + 705
-[NSApplication _reopenWindowsAsNecessaryIncludingRestorableState:completionHandler:] + 249
【问题讨论】:
-
它是基于文档的应用程序吗?
-
是的,很好,我会在问题中澄清这一点。
-
您是否使用其他权利,例如用户读/写?您使用哪个版本的 macOS?
-
我在 10.15.4。我拥有
files.user-selected.read-write、network.client和print的安全权利。 -
所以只是为了确保。您有一个文档子类并且没有被覆盖 +(BOOL)autosavesinplace 返回 YES?
标签: swift objective-c xcode macos cocoa