所以我一直在用这个扯掉我的头发......
我有一个主应用程序和一个辅助应用程序。两者都是沙盒并使用应用程序组共享数据。我通过 NSXPCConnection 与助手应用程序交谈。我使用SMLoginItemSetEnabled将帮助应用程序设置为登录项。当用户激活助手应用程序时,它会作为守护程序运行。
这一切都很好。问题在于安全范围的书签。
帮助应用程序需要访问系统文件。当我需要授予对新位置的访问权限时,这是由主应用程序完成的,通过 NSXPCConnection 打开帮助程序并使用此类打开 NSOpenPanel:(https://github.com/leighmcculloch/AppSandboxFileAccess)这一切似乎工作也......
该类告诉我已授予文件访问权限,但是我还在控制台中收到了沙盒违规。
Sandbox: com.my.app.helper deny file-read-data
我在帮助应用程序中有正确的权利:
com.apple.security.files.user-selected.read-write
com.apple.security.files.bookmarks.app-scope
我还读到有人在访问后台线程上的书签时遇到问题,所以我尝试将所有与书签相关的调用包装在:
dispatch_sync(dispatch_get_main_queue(), ^{ });
仍然没有喜悦。任何帮助深表感谢。
**沙盒是真正的噩梦......我的应用程序所做的只是在没有用户干预的情况下删除一些系统文件。沙盒之前这么简单的任务....现在我需要处理loginItems,XPC....很多令人头疼的问题。:(