Objective c 在沙盒中读取osx屏幕截图图像

Objective c 在沙盒中读取osx屏幕截图图像,objective-c,macos,screenshot,sandbox,appstore-sandbox,Objective C,Macos,Screenshot,Sandbox,Appstore Sandbox,我想获得由不同osx快捷方式触发的屏幕截图。因此,我添加了一个具有kMDItemIsScreenCapture的观察者。下面的代码用于添加观察者 _query = [[NSMetadataQuery alloc] init]; [_query setDelegate:self]; [_query setPredicate:[NSPredicate predicateWithFormat:@"kMDItemIsScreenCapture = 1"]]; [[NSNotificationCenter

我想获得由不同osx快捷方式触发的屏幕截图。因此,我添加了一个具有
kMDItemIsScreenCapture
的观察者。下面的代码用于添加观察者

_query = [[NSMetadataQuery alloc] init];
[_query setDelegate:self];
[_query setPredicate:[NSPredicate predicateWithFormat:@"kMDItemIsScreenCapture = 1"]];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(screenshotQueryUpdated:) name:NSMetadataQueryDidUpdateNotification object:_query];
[_query startQuery];
更新的
屏幕快照的实现如下所示:

NSMetadataItem *item = [[notification.userInfo objectForKey:(NSString *)kMDQueryUpdateAddedItems] lastObject];
if (item) {
    NSString *screenShotPath = [item valueForAttribute:NSMetadataItemPathKey];
    NSData* temp = [NSData dataWithContentsOfFile:screenShotPath];
    // More code....
}

问题是我无法在
沙盒模式下读取屏幕快照路径下的文件。那么,使用沙盒在应用程序中获取屏幕截图文件的正确方法是什么呢。

使用
NSOpenPanel
请求用户访问此文件或包含屏幕截图的文件夹。然后,您将能够创建一个应用程序,以便在后续启动应用程序时访问同一资源

因此,这是唯一的方法,没有
安全范围的书签
,我无法做到这一点,因为在这方面获得用户的许可将打破UXyes。很抱歉安全性和用户体验通常是对应的。