gpt4 book ai didi

macos - 在沙盒环境中对FinderSync扩展的读写访问权限

转载 作者:行者123 更新时间:2023-12-04 12:30:50 25 4
gpt4 key购买 nike

场景
用户在Finder中右键单击目录,然后找到自定义MenuItem。单击该项目将告诉我的应用打开一个窗口,用户可以在其中执行其工作。完成后,需要通过右键单击将文件写入他选择的文件夹。
问题
我现在所有的东西都可以工作,但是最后一部分。该扩展名无法写入所选的文件夹。
选择要与之交互的文件夹的用户似乎不是Powerbox的一部分(据我所知,Powerbox仅通过openPanelsavePanel激活)。如何获得与用户通过菜单项选择的文件夹进行交互的权限?我在开发人员库中找不到对该问题的任何可能解决方案的引用。不在沙盒指南中,不在扩展指南中。
如果无法使用选定的文件和文件夹,那么添加自定义菜单项的可能性将非常无用,因此,我确定必须有一种访问它们的方法。
也许我尝试写的方式是错误的。我的主应用程序将一个临时文件写入共享组文件夹。之后,它会发送一条通知,通知该扩展程序监听:

func copyFile(notification:NSNotification)
{
NSLog("write file")

if let target = tmpTarget
{
let secureContainer = NSFileManager.defaultManager().containerURLForSecurityApplicationGroupIdentifier("group.de.enie.Nu")
let contents = NSFileManager.defaultManager().contentsOfDirectoryAtURL(secureContainer!, includingPropertiesForKeys: nil, options: NSDirectoryEnumerationOptions.SkipsHiddenFiles | NSDirectoryEnumerationOptions.SkipsPackageDescendants | NSDirectoryEnumerationOptions.SkipsSubdirectoryDescendants , error: nil)

for content in contents as! [NSURL]
{
NSLog("tmp data: \(content.path!)")
if content.lastPathComponent!.stringByDeletingPathExtension == "SharedData"
{
NSLog("found shared file")

NSFileManager.defaultManager().copyItemAtURL(content, toURL: target.URLByAppendingPathComponent(content.lastPathComponent!), error: nil)

NSFileManager.defaultManager().removeItemAtURL(content, error: nil)
}
}
tmpTarget = nil
}
}
尝试写入文件会导致以下控制台通知:

在/Users//Desktop/SharedData.png上打开
  • :不允许进行操作
  • 拒绝文件写入创建/Users//Desktop/SharedData.png

  • 任何想法有关如何访问用户选择的文件夹表示赞赏。
    更新
    我只是向我保证我没有以任何方式犯错误。虽然我被允许通过 NSOpenPanel访问文件夹(这意味着权利应该是正确的),但我无法在/甚至无法将默认 FIFinderSyncController的目标URL标记为书签。

    最佳答案

    即使Finder Sync App Extension被授予“用户选择的文件”沙箱文件访问权限,用户通过Finder Sync App Extension右键单击访问的selectedItemURLs()文件似乎也不算是“用户选择的”。因此,沙箱会拒绝您的Finder Sync应用访问这些文件。

    正如其他答案所指出的那样,解决此问题的唯一方法是使用临时授权来进行更广泛的文件访问。或使用Powerbox NSOpenPanel让用户选择一个包含文件夹,然后使用该安全作用域书签来访问沙盒文件。

    请复制我的Apple错误报告,要求允许此行为:

    Finder Sync App Extension selectedItemURLs() should receive "User Selected File" Sandbox file access.

    rdar://42874694
    https://openradar.appspot.com/radar?id=5063363058991104

    关于macos - 在沙盒环境中对FinderSync扩展的读写访问权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30276155/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com