//
// ViewController.m // Web相关 //
// Copyright © 2016年 asamu. All rights reserved. //
//http://mr7.doubanio.com/832d52e9c3df5c13afd7243a770c094f/0/fm/song/p294_128k.mp3
#import "ViewController.h"
#import <AVFoundation/AVFoundation.h>
@interface ViewController () @property(nonatomic,strong)AVAudioPlayer *avaudioPlayer; @end
@implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; [self downloadFile]; } -(void)playMusic{ //获取缓存目录
NSString *cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)lastObject]; //获取缓存目录下的歌曲
NSString *filePath = [cachePath stringByAppendingPathComponent:@"xxx.mp3"]; /* fileURLWithPath: 文件链接 URLWithString: http链接 */ NSURL *fileUrl = [NSURL fileURLWithPath:filePath]; //判断文件存不存在
if( [[NSFileManager defaultManager]fileExistsAtPath:filePath]){ NSLog(@"exist"); NSError *error; _avaudioPlayer = [[AVAudioPlayer alloc]initWithContentsOfURL:fileUrl error:&error]; if (error) { NSLog(@"%@",error.localizedDescription); } //加入缓存
[_avaudioPlayer prepareToPlay]; //播放
[_avaudioPlayer play]; } } #pragma mark - 私有方法
-(void)downloadFile{ NSString *filename = @"xxx.mp3"; //获取 URL
NSString *urlStr = [NSString stringWithFormat:@"http://mr7.doubanio.com/832d52e9c3df5c13afd7243a770c094f/0/fm/song/p294_128k.mp3",filename]; NSURL *url = [NSURL URLWithString:urlStr]; //创建请求
NSURLRequest *request = [NSURLRequest requestWithURL:url]; //创建会话(全局会话)
NSURLSession *session = [NSURLSession sharedSession]; //创建任务
NSURLSessionDownloadTask *downloadTak = [session downloadTaskWithRequest:request completionHandler:^(NSURL * _Nullable location, NSURLResponse * _Nullable response, NSError * _Nullable error) { //获取缓存目录
NSString *cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)lastObject]; //歌存到缓存目录,并命名
NSString *savePath = [cachePath stringByAppendingPathComponent:filename]; //得到路径,打开终端 open 去掉 xxx.mp3 的目录,就可以直观的看到 MP3文件的下载
NSLog(@"%@",savePath); NSURL *saveurl = [NSURL fileURLWithPath:savePath]; /* 1.location 是下载后的临时保存路径,需要将它移动到需要保存的位置 2.move faster than copy (1).因为 copy 需要在磁盘上生成一个新的文件,这个速度是很慢的; (2).copy 后,还要把临时文件删除,move 这一步就行了 = (copy + remove) 3.move 有两个功能 一是移动 二是重命名 */ NSError *saveError; [[NSFileManager defaultManager]moveItemAtURL:location toURL:saveurl error:&saveError]; //如果错误存在,输出
if (saveError) { NSLog(@"%@",saveError.localizedDescription); } //播放
[self playMusic]; }]; //执行任务
[downloadTak resume]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; } @end