Удалить изображения в фотоаппарате из кода iOS

Есть ли способ удалить изображения (и видео) с камеры в приложении для фотографий, которое мое приложение не создавало. Я знаю, что вы не можете удалить из библиотеки активов то, что не было создано вашим приложением. Но это приложение не в магазине приложений. Это в среде типа киоска. Так что я могу использовать частные API.

Так есть ли способ сделать это с помощью частных API, которые Apple не одобрит для магазина приложений, но подойдет для моей ситуации.

Благодарю.

2 ответа

Да, вы можете сделать это в iOS 8, используя фреймворк Photos.

Например, если у вас есть URL-адреса активов, хранящиеся в 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
    }];

этот код попросит пользователя подтвердить удаление из Camera Roll.

Вот версия для Swift, которая удалит все фотографии в библиотеке.

Во-первых, вы должны быть уверены, что у вас есть ключ для разрешений в вашем приложении 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
    }
}

Когда этот код вызывается, пользователь получает приглашение ОС с просьбой подтвердить удаление. Если предположить, что они нажимают "да", то все исчезло.

Другие вопросы по тегам