Вы бы сделали что-то вроде этого:
- (void) downloadVideo
NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://www.xyz.com/image.mp4"]];
NSString *tempPath = [NSString stringWithFormat:@"%@/%@", NSTemporaryDirectory(), temp.mp4];
[imageData writeToFile:tempPath atomically:NO];
UISaveVideoAtPathToSavedPhotosAlbum (@ tempPath, self, @selector(video:didFinishSavingWithError: contextInfo:), nil);
);
- (void) video: (NSString *) videoPath
didFinishSavingWithError: (NSError *) error
contextInfo: (void *) contextInfo {
NSLog(@"Finished saving video with error: %@", error);
}
Есть две вещи, на которые нужно обратить внимание:
- Убедитесь, что вы указали схему URL. Это не браузер, он не будет пытаться автоматически заполнить http и угадать для вас.
- Если это в главном потоке, это вызовет синхронный останов, пока
dataWithContentsOfURL:
происходит. Если основной поток останавливается более чем на 20 секунд, телефон предположит, что приложение застряло в бесконечном цикле, и уничтожит его. Поэтому, если этот код находится в основном потоке, вам нужно либо переместить его в фоновый поток, либо перейти к асинхронной загрузке с помощью NSURLConnection.