2015-01-13 2 views
2

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

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

Спасибо.

ответ

10

Да, вы можете сделать это в iOS 8 с помощью рамки фотографий.

Например, если у вас есть активы 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.

+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, которая удалит все фотографии в библиотеке.

Во-первых, вы должны быть уверены, что у вас есть ключ для разрешения в info.plist файле вашего приложения: enter image description here

Вам нужно будет дано разрешение пользователю доступ к фотографиям (не включая код здесь для этого).

Далее, код импорта &:

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 
    } 
} 

Когда этот код называется, пользователь получает приглашение операционной системы с просьбой подтвердить удаление. Предполагая, что они нажимают «да», все исчезло.

Смежные вопросы