我知道如何使用来自objective-c的PhotoKit(例如PHAsset,PhotoLibrary,...)的API访问iPhone上的照片。
如何安全地确定是否使用我的代码运行的iPhone拍摄了照片?是否有可以可靠地使用的属性(例如PHAsset或EXIF)?我的应用只应使用当前手机相机拍摄的照片。
首先,您需要获取图像的元数据。如果使用PHAsset,您可以为获取元数据创建一些扩展。例如:
-(void)requestMetadataWithCompletionBlock:(PHAssetMetadataBlock)completionBlock{
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
PHContentEditingInputRequestOptions *editOptions = [[PHContentEditingInputRequestOptions alloc] init];
editOptions.networkAccessAllowed = YES;
[self requestContentEditingInputWithOptions:editOptions completionHandler:^(PHContentEditingInput *contentEditingInput, NSDictionary *info) {
CIImage *image = [CIImage imageWithContentsOfURL:contentEditingInput.fullSizeImageURL];
dispatch_async(dispatch_get_main_queue(), ^{
completionBlock(image.properties);
});
}];
});
}
在字典中可以找到相机制造商。例如:
...
Make = Apple;
Model = "iPod touch";
...
还值得一看ImageIO Framework,在这里你会发现一些用于元数据解析和其他有用信息的默认密钥。
但是没有公共API告诉您该照片是由当前的iOS设备拍摄的。