[Swift]ヘッドフォンを抜き差しするとAVAudioEngineがクラッシュするときの対処方


AVAudioEngineを使ってオーディオ再生プレイヤーを作っていたところ、ヘッドフォンやイヤフォンを抜き差しするとアプリがフリーズし、しばらくしたらクラッシュするという現象が発生しました。

こまったときはStackOverflowだということで質問したところ、
AVAudioEngineConfigurationChangeNotificationを使うんだよ、と教えられました。

そういうのってデバイス側でなんか勝手にやってくれると思ってたら、挙動をプログラミングしないといけないのね。。。

初心者の私は、それだけ言われてもよくわかんねーよと思いつつ、せっかくもらったヒントでググりまくりStackOverflowやGithubなどを見まくった結果、以下のとおり解決しました。

・ViewDidLoadの中に以下を書く

NSNotificationCenter.defaultCenter().addObserver(self,
selector:"configChange:", // 動作させたいfunction名
name:AVAudioEngineConfigurationChangeNotification,
object:audioEngin // AVAudioEngineを代入した変数名)


・ViewDidLoadm外に適当に以下を書く

func configChange(notification:NSNotification) {
// ヘッドフォンを抜くor差した時にしたいこと書く
}


なんか正しいのかわかんないながらも、無事フリーズとクラッシュはしなくなりました。
以上。

※万事解決かと思ったら、まだ問題が。。。。
(続き:[Swift]NSNotificationCenterを使ってヘッドフォン抜き差し時のトリガーができたのにbuttonのtitleとかlabelのtextが変わらない時


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です