前回の投稿で作成したAVAudioPlayerUtil.swiftを流用し、urlから音声ファイルを直接ダウンロードして再生するだけの機能を作りました。
環境
- OSX Yosemite v10.10.5
- Xcode v7.0 beta6
- 検証端末 iPhone6 v8.4.1
AVAudioPlayerUtil.swift
前回の投稿を参照してください。
ViewController.swift
ViewControllerにNSURLSessionDownloadDelegateを継承させています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
import UIKit; class ViewController: UIViewController,NSURLSessionDownloadDelegate { override func viewDidLoad() { super.viewDidLoad(); // Do any additional setup after loading the view, typically from a nib. // 通信のコンフィグを用意 let myConfig:NSURLSessionConfiguration = NSURLSessionConfiguration.backgroundSessionConfigurationWithIdentifier("backgroundSession"); // Sessionを作成する let mySession:NSURLSession = NSURLSession( configuration: myConfig, delegate: self, delegateQueue: nil); // ダウンロード先のURLからリクエストを生成 let myURL:NSURL = NSURL(string: "http://hoge/fuga/***.mp3")!; let myRequest:NSURLRequest = NSURLRequest(URL: myURL); // ダウンロードタスクを生成 let myTask:NSURLSessionDownloadTask = mySession.downloadTaskWithRequest(myRequest); // タスクを実行 myTask.resume(); } /* ダウンロード終了時に呼び出されるデリゲート */ func URLSession(session: NSURLSession, downloadTask: NSURLSessionDownloadTask, didFinishDownloadingToURL location: NSURL) { AVAudioPlayerUtil.setValue(location); AVAudioPlayerUtil.play(); } /* タスク終了時に呼び出されるデリゲート */ func URLSession(session: NSURLSession, task: NSURLSessionTask, didCompleteWithError error: NSError?) { } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning(); // Dispose of any resources that can be recreated. } } |