2015-01-13 4 views
2

내 앱에서 생성하지 않은 사진 앱에서 카메라 롤의 이미지 및 비디오를 삭제할 수 있습니까? 앱에서 생성하지 않은 것을 자산 라이브러리에서 삭제할 수 없다는 것을 알고 있습니다. 하지만이 앱은 앱 스토어에 없습니다. 키오스크 유형 환경에 있습니다. 그래서 private API를 사용할 수 있습니다.카메라 롤에서 코드 iOS에서 이미지 삭제

애플이 앱 스토어에서 승인하지 않지만 내 상황에서는 작동 할 수있는 비공개 API를 사용하여이를 수행 할 수있는 방법이 있습니다.

감사합니다.

답변

10

네, 포토 프레임 워크를 사용하여 iOS 8에서이 작업을 수행 할 수 있습니다. 예를 들어

당신은 카메라 롤에서 제거 할 것인지를 묻는 것입니다 NSArray를 저장 자산 URL을 * assetsURLs

PHPhotoLibrary *library = [PHPhotoLibrary sharedPhotoLibrary]; 
    [library performChanges:^{ 
     PHFetchResult *assetsToBeDeleted = [PHAsset fetchAssetsWithALAssetURLs:assetsURLs options:nil]; 
     [PHAssetChangeRequest deleteAssets:assetsToBeDeleted]; 
    } completionHandler:^(BOOL success, NSError *error) 
    { 
     //do something here 
    }]; 

이 코드가있는 경우.

+0

누구도이 작업을 한 적이 있습니까? 앱이 카메라 롤에서 애셋을 삭제할 수 있다고 생각하지 않습니다. – coco

+0

클래스 참조에 있습니다. [deleteAssets :] (https://developer.apple.com/library/ios/documentation/Photos/Reference/PHAssetChangeRequest_Class/index.html#//apple_ref/occ/clm/PHAssetChangeRequest/deleteAssets :) – cschandler

+0

예, 작동하지만 그는 사용자 확인이 필요하다고 말했습니다. – malhal

0

다음은 Swift 용 버전으로 라이브러리의 모든 사진을 삭제합니다. 여기 enter image description here

당신은 사진에 액세스하기 위해 사용자에 의해 권한이 부여 된해야합니다 (포함하지 않는 코드 :

첫째, 당신은 당신이 앱의 info.plist 파일의 권한에 대한 키를 가지고 있는지 확인해야합니다 그에 대한).

다음, 가져 오기 & 코드 :이 코드를 호출

import Photos 

func deleteAllPhotos() { 
    let library = PHPhotoLibrary.shared() 
    library.performChanges({ 
     let fetchOptions = PHFetchOptions() 
     let allPhotos = PHAsset.fetchAssets(with: .image, options: fetchOptions) 
     PHAssetChangeRequest.deleteAssets(allPhotos) 
    }) { (success, error) in 
     // Handle success & errors 
    } 
} 

, 사용자는 삭제를 확인하라는 OS 프롬프트를받습니다. 그들이 예를 클릭한다고 가정하면 모든 것이 사라집니다.