我一直在使用之前知道NSMetaDataQuery
用户何时截取屏幕截图并且它工作正常。但是在我开始时我只会收到通知,而在更新时我没有收到任何通知。我什至用过and 。无法弄清楚 Apple 发生了什么变化以及如何使其发挥作用。sandbox
macOS
10.13
10.13
NSMetaDataQuery
NSURL
startAccessingSecurityScopedResource
stopAccessingSecurityScopedResource
- (void)setScreenshotMonitoring {
// Retrieve Scoped Bookmark url from defaults
NSURL *url = [CoreUtils getScreenshotBookmarkUrl];
[url startAccessingSecurityScopedResource];
_query = [[NSMetadataQuery alloc] init];
[_query setSearchScopes:@[url]];
[_query setDelegate:self];
[_query setPredicate:[NSPredicate predicateWithFormat:@"kMDItemIsScreenCapture = 1"]];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(screenshotQueryUpdated:) name:NSMetadataQueryDidStartGatheringNotification object:_query];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(screenshotQueryUpdated:) name:NSMetadataQueryDidUpdateNotification object:_query];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(queryDidFinish:) name:NSMetadataQueryDidFinishGatheringNotification object:_query];
// Make sure Query starts on main thread
runOnMainQueueWithoutDeadlocking(^{
[_query startQuery];
});
[url stopAccessingSecurityScopedResource];
}
但是screenshotQueryUpdated
,仅在拍摄新屏幕截图queryDidFinish
时才调用。startQuery