I found two ways to check PHAsset for modifications, and I published it as a Gist .
- (void)tb_checkForModificationsWithEditingInputMethodCompletion:(void (^)(BOOL))completion { PHContentEditingInputRequestOptions *options = [PHContentEditingInputRequestOptions new]; options.canHandleAdjustmentData = ^BOOL(PHAdjustmentData *adjustmentData) { return YES; }; [self requestContentEditingInputWithOptions:options completionHandler:^(PHContentEditingInput *contentEditingInput, NSDictionary *info) { if (completion) completion(contentEditingInput.adjustmentData != nil); }]; } - (void)tb_checkForModificationsWithAssetPathMethodCompletion:(void (^)(BOOL))completion { PHVideoRequestOptions *options = [PHVideoRequestOptions new]; options.deliveryMode = PHVideoRequestOptionsDeliveryModeFastFormat; [[PHImageManager defaultManager] requestAVAssetForVideo:self options:options resultHandler:^(AVAsset *asset, AVAudioMix *audioMix, NSDictionary *info) { if (completion) completion([[asset description] containsString:@"/Mutations/"]); }]; }
EDIT: I was at the point where I needed the same functionality for PHAsset with the image. I used this:
- (void)tb_checkForModificationsWithAssetPathMethodCompletion:(void (^)(BOOL))completion { [self requestContentEditingInputWithOptions:nil completionHandler:^(PHContentEditingInput *contentEditingInput, NSDictionary *info) { NSString *path = (contentEditingInput.avAsset) ? [contentEditingInput.avAsset description] : contentEditingInput.fullSizeImageURL.path; completion([path containsString:@"/Mutations/"]); }]; }
source share