Delete images in camera roll from code iOS

ぃ、小莉子 提交于 2019-12-18 17:48:30

问题


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.


回答1:


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.




回答2:


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.



来源:https://stackoverflow.com/questions/27928647/delete-images-in-camera-roll-from-code-ios

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!