iOS 下载 mp3 稍后在应用程序中使用
iOS download an mp3 to use later on in an app
我是否可以从网站下载 mp3,以便稍后在我的应用程序中使用它,而不会阻止我的应用程序的其余部分执行?
我一直在寻找同步的方法。
我想将 mp3 缓存在数组中。我最多只会得到5或6个短片。
有人能帮忙吗?
是的,你可以。
您可以使用 NSURLConnection
并将接收到的数据保存到临时 NSData 变量中,完成后将其写入磁盘。
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
_mutableData = [NSMutableData new];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
if (_mutableData) {
[_mutableData appendData:data];
}
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
dispatch_queue_t bgGlobalQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0);
dispatch_async(bgGlobalQueue, {
[_mutableData writeToFile:_filePath atomically:YES];
});
}
注意:你应该在上面的代码中添加所有相应的错误处理,不要使用它"as is"。
然后您可以使用文件路径创建 NSURL
并使用该 URL 播放 mp3 文件。
NSURL *url = [NSURL fileURLWithPath:_filePath];
最现代的方法是使用 NSURLSession。它内置了下载功能。为此使用 NSURLSessionDownloadTask
。
Swift
let url = NSURL(string:"http://example.com/file.mp3")!
let task = NSURLSession.sharedSession().downloadTaskWithURL(url) { fileURL, response, error in
// fileURL is the URL of the downloaded file in a temporary location.
// You must move this to a location of your choosing
}
task.resume()
Objective-C
NSURL *url = [NSURL URLWithString:@"http://example.com/file.mp3"];
NSURLSessionDownloadTask *task = [[NSURLSession sharedSession] downloadTaskWithURL:url completionHandler:^(NSURL *fileURL, NSURLResponse *response, NSError *error) {
// fileURL is the URL of the downloaded file in a temporary location.
// You must move this to a location of your choosing
}];
[task resume];
我是否可以从网站下载 mp3,以便稍后在我的应用程序中使用它,而不会阻止我的应用程序的其余部分执行?
我一直在寻找同步的方法。
我想将 mp3 缓存在数组中。我最多只会得到5或6个短片。
有人能帮忙吗?
是的,你可以。
您可以使用 NSURLConnection
并将接收到的数据保存到临时 NSData 变量中,完成后将其写入磁盘。
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
_mutableData = [NSMutableData new];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
if (_mutableData) {
[_mutableData appendData:data];
}
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
dispatch_queue_t bgGlobalQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0);
dispatch_async(bgGlobalQueue, {
[_mutableData writeToFile:_filePath atomically:YES];
});
}
注意:你应该在上面的代码中添加所有相应的错误处理,不要使用它"as is"。
然后您可以使用文件路径创建 NSURL
并使用该 URL 播放 mp3 文件。
NSURL *url = [NSURL fileURLWithPath:_filePath];
最现代的方法是使用 NSURLSession。它内置了下载功能。为此使用 NSURLSessionDownloadTask
。
Swift
let url = NSURL(string:"http://example.com/file.mp3")!
let task = NSURLSession.sharedSession().downloadTaskWithURL(url) { fileURL, response, error in
// fileURL is the URL of the downloaded file in a temporary location.
// You must move this to a location of your choosing
}
task.resume()
Objective-C
NSURL *url = [NSURL URLWithString:@"http://example.com/file.mp3"];
NSURLSessionDownloadTask *task = [[NSURLSession sharedSession] downloadTaskWithURL:url completionHandler:^(NSURL *fileURL, NSURLResponse *response, NSError *error) {
// fileURL is the URL of the downloaded file in a temporary location.
// You must move this to a location of your choosing
}];
[task resume];