Удалить изображения в фотоаппарате из кода 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
}
}
Когда этот код вызывается, пользователь получает приглашение ОС с просьбой подтвердить удаление. Если предположить, что они нажимают "да", то все исчезло.