Pages

Monday, June 25, 2012

iOS Music App Pause After A Headset Was Unplugged

當使用者在他們的 iPhone 上面聆聽著歌曲,聽著聽著,在還沒有暫停的情況下拔掉了耳機,這時候請問 iPhone 上的 Music App 是該繼續播放還是暫停?

好的互動設計應該是要暫停的。因為使用者因為要中斷聆聽而做出了拔開的行為,不論是拔掉耳機、拔掉音響的音源線都是要中斷現在操作行為,那麼音樂應該是要暫停的。

但是回到我們的程式設計,不做任何處理的話,程式是會一直讓音樂播放下去的。所以我們應該要在程式上做這樣的處理。那我們該分這些步驟規劃:

1. 註冊 Listener

在適當的位置登記一個 Audio Session 的 Listener,用意來監聽是否有任何 audio route 的改變。參考 Gist Code

2. 在對應 callback function 做邏輯處理

在對應的 function 裡面根據進來的改變原因來判定當下發生了哪種情境,而當耳機拔開算是 kAudioSessionRouteChangeReason_OldDeviceUnavailable,在文件上定義當裝置 UnPlugged 都算是這個原因,那麼我們就可以在那情境下將原本在聽歌的部分將它暫停掉。參考 Gist Code

那麼有哪些改變原因我們可以查詢呢?參考 iOS Developer Library 文件可以看到有這些情境可以讓我們來分析。
Audio Route Change Reasons

最後,我們就能因為加上這些貼心的程式碼,讓使用者可以在聆聽歌曲,搭配不同的情境下,而有更好的對應互動體驗。

No comments:

Post a Comment