Objective c 在沙盒中读取osx屏幕截图图像
我想获得由不同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
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。很抱歉安全性和用户体验通常是对应的。