Что я пытаюсь сделать, так это сохранить видеоролики в PHPhotoLibrary, а затем удалить их при удалении на удаленном сервере клиентов в приложении (в основном, библиотека фотографий служит в качестве временного хранилища для добавления дополнительного слоя о безопасности в случае, если что-либо вообще не удается (я уже сохранить свои VIDES его в каталоге приложений)Отключить подтверждение при запросе на удаление в PHPhotoLibrary
проблема:.
проблема заключается в том, что на работу, все должно работать без участия пользователя Вы можете записать видео в библиотеку фотографий следующим образом:
func storeVideoToLibraryForUpload(upload : SMUpload) {
if PHPhotoLibrary.authorizationStatus() != PHAuthorizationStatus.Authorized {
// Don't write to library since this is disallowed by user
return
}
PHPhotoLibrary.sharedPhotoLibrary().performChanges({() -> Void in
// Write asset
let assetRequest = PHAssetChangeRequest.creationRequestForAssetFromVideoAtFileURL(NSURL(fileURLWithPath: upload.nonsecureFilePath!)!)
let assetPlaceholder = assetRequest.placeholderForCreatedAsset
let localIdentifier = assetPlaceholder.localIdentifier
// Store local identifier for later use
upload.localAssetIdentifier = localIdentifier
}, completionHandler: { (success, error) -> Void in
....
})
}
И это работает безупречно, я получаю локальный идентификатор, я храню его для последующего использования. Единороги и радуги.
Теперь, когда я хочу, чтобы удалить это видео сразу после загрузки заканчивается, я называю следующее:
func removeVideoFromLibraryForUpload(upload : SMUpload) {
// Only proceed if there is asset identifier (video previously stored)
if let assetIdentifier = upload.localAssetIdentifier {
// Find asset that we previously stored
let assets = PHAsset.fetchAssetsWithLocalIdentifiers([assetIdentifier], options: PHFetchOptions())
// Fetch asset, if found, delete it
if let fetchedAssets = assets.firstObject as? PHAsset {
PHPhotoLibrary.sharedPhotoLibrary().performChanges({() -> Void in
// Delete asset
PHAssetChangeRequest.deleteAssets([fetchedAssets])
}, completionHandler: { (success, error) -> Void in
...
})
}
}
}
успешно удаляет видео, но пользователь должен подтвердить удаление первого. Это проблема, так как эта резервная копия не будет работать.
Я, очевидно, знаю, почему есть подтверждение (так что вы не очищаете всю библиотеку пользователя, например, но дело в том, что мое приложение сделало видео - и поэтому я подумал, что вокруг будет способ, поскольку, владелец»Я не должен делать это, или по крайней мере иметь возможность отключить подтверждение
заранее спасибо
TLDR:.! Как отключить подтверждение на запрос удаления, если мое приложение создано, что содержание? (Я не хочу ничего удалять).
Примечание: Возможно, кто-то может сказать, что это довольно странная вещь, но приложение распространено внутри, и есть все основания для этого сделать это (видео контент слишком ценен для потери, даже если пользователь удаляет приложение для некоторых причина, или все что-то происходит не так, мы должны иметь возможность сохранять видео), поэтому, пожалуйста, не ставьте под сомнение это и просто сосредоточьте свое внимание на вопросе :)
Я не знаю окончательного ответа на этот вопрос, но сомневаюсь, что это возможно. Как только вы сохраните актив в библиотеке фотографий устройства, вы больше не являетесь владельцем, и вам будет необходимо попросить подтверждение удаления по той причине, о которой вы уже упоминали. Таким образом, игнорируя свою «заметку» в течение минуты: что делает сохранение ваших активов через фреймворк более безопасным, чем сохранение его самостоятельно? – Stuart
Я сам сохраняю содержимое видео в каталоге приложений (зашифровано), но видео будет удалено, если пользователь fe. удаляет приложение; Это уже произошло потому, что пользователи странные существа, поэтому мы пытаемся предотвратить даже это - видео будут сохранены на фотографиях. Проблема заключается в том, что из-за некоторых проблем с владением содержимым мы должны немедленно удалить его, когда мы загружаем его на наш сервер (в основном, система, которая продолжает загружаться после того, как устройство снова подключено к Интернету, поскольку устройство используется в поле без подключения). –
Итак, что происходит, когда пользователь стирает свое устройство или теряет его или просто удаляет актив непосредственно из фотографий? Потери контента обычно избегают путем резервного копирования/синхронизации/_показания пользователям не удалять damn app_ (!), А не путем захвата механизма хранения другого приложения - вы избегаете одной из многих «глупостей пользователей»! Извините, что забрал вас в тот момент, когда вы просили людей не делать этого, но я думаю, что это стоит рассмотреть. Если кто-то, у кого больше знаний о фреймворке, может доказать, что я ошибаюсь, я думаю, вам, возможно, придется мириться с предупреждением или подумать о переосмыслении вашего подхода. – Stuart