ALAssetsLibrary
jest obecnie uznany za przestarzały, ale praktycznie wszystkie przykłady dotyczące SO nadal go wykorzystują. Aby osiągnąć ten cel, muszę znać adres URL filmu, który został dodany do biblioteki zdjęć, aby móc udostępnić film do aplikacji Instagram (to jedyny sposób, w jaki Instagram akceptuje filmy wideo). Adres URL powinien chyba zacząć "aktywa-biblioteki: // ..."Uzyskaj adres URL nowo utworzonego zasobu, styl iOS 9
To proste z ALAssetsLibrary
:
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
[library writeVideoAtPathToSavedPhotosAlbum:videoFilePath completionBlock:^(NSURL *assetURL, NSError *error) { // ...
Przede URL jest przekazywana jako argument do bloku zakończenia. Ale co z metodą zgodną z systemem iOS 9 z metodą PHPhotoLibrary
i metodą performChanges
?
var videoAssetPlaceholder:PHObjectPlaceholder! // property
// ...
let videoURL = NSBundle.mainBundle().URLForResource("Video_.mp4", withExtension: nil)!
let photoLibrary = PHPhotoLibrary.sharedPhotoLibrary()
photoLibrary.performChanges({
let request = PHAssetChangeRequest.creationRequestForAssetFromVideoAtFileURL(videoURL)
self.videoAssetPlaceholder = request?.placeholderForCreatedAsset
},
completionHandler: { success, error in
if success
{
// The URL of the video asset?
}
})
Dlaczego nie można po prostu zaoszczędzić wideo lokalnie przed udostępnieniem go? –
@LeoDabus Sposób, w jaki filmy są udostępniane, Instagram nie będzie w stanie odczytać wideo z piaskownicy mojej aplikacji. –