Is there a way to delete images (and videos) in camera roll in the photos app that my app didn't create. I know you can't delete things from Asset Library that your app didn't create. But this app isn't on app store. It's on a kiosk type environment. So I can use private APIs.
So is there a way to do this using private APIs that apple would not approve for the app store, but would work for my situation.
Thanks.
Yep, you can do this in iOS 8 using Photos framework.
For example if you have Assets URLs stored in NSArray *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
}];
this code will ask user to confirm removal from Camera Roll.
Here is a version for Swift that will delete all photos in the library.
First, you will need to be sure that you have the key for permissions in your app's info.plist
file:
You will need to have been given permission by the user to access Photos (not including code here for that).
Next, the import & code:
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
}
}
When this code is called, the user receives an OS prompt asking to confirm the deletion. Assuming they click yes, then everything is gone.