Compare commits

...

5 Commits

Author SHA1 Message Date
tanhakabir e3e3af2b7a Release 5.1.0 2021-07-18 23:09:08 -07:00
tanhakabir 6987458f0a Merge pull request #114 from dylancom/issue-112
feat: pause player on interruption, resume when necessary
2021-07-18 22:58:50 -07:00
tanhakabir c912d5f381 update formatting and control functions 2021-07-18 22:57:58 -07:00
Dylan c444ae4c9f feat: pause player on interruption, resume when necessary 2021-07-16 15:08:44 +02:00
tanhakabir 6d3f3c6d6f Update README.md 2021-07-12 14:18:08 -04:00
3 changed files with 34 additions and 10 deletions
+2 -9
View File
@@ -117,16 +117,9 @@ For more details and specifics look at the [API documentation](#api-in-detail) b
## Contact
### Issues
### Issues or questions
Submit any issues or requests [on the Github repo](https://github.com/tanhakabir/SwiftAudioPlayer/issues).
### Any questions?
Feel free to reach out to either of us:
[tanhakabir](https://github.com/tanhakabir), tanhakabir.ca@gmail.com
[JonMercer](https://github.com/JonMercer), mercer.jon@gmail.com
Submit any issues, requests, and questions [on the Github repo](https://github.com/tanhakabir/SwiftAudioPlayer/issues).
### License
+31
View File
@@ -244,6 +244,7 @@ public class SAPlayer {
}
audioModifiers.append(AVAudioUnitTimePitch(audioComponentDescription: componentDescription))
NotificationCenter.default.addObserver(self, selector: #selector(handleInterruption), name: AVAudioSession.interruptionNotification, object: nil)
}
/**
@@ -283,6 +284,36 @@ public class SAPlayer {
func addUrlToMapping(url: URL) {
presenter.addUrlToKeyMap(url)
}
@objc func handleInterruption(notification: Notification) {
guard let userInfo = notification.userInfo,
let typeValue = userInfo[AVAudioSessionInterruptionTypeKey] as? UInt,
let type = AVAudioSession.InterruptionType(rawValue: typeValue) else {
return
}
// Switch over the interruption type.
switch type {
case .began:
// An interruption began. Update the UI as necessary.
pause()
case .ended:
// An interruption ended. Resume playback, if appropriate.
guard let optionsValue = userInfo[AVAudioSessionInterruptionOptionKey] as? UInt else { return }
let options = AVAudioSession.InterruptionOptions(rawValue: optionsValue)
if options.contains(.shouldResume) {
// An interruption ended. Resume playback.
play()
} else {
// An interruption ended. Don't resume playback.
}
default: ()
}
}
}
public enum SAPlayerBitrate {
+1 -1
View File
@@ -8,7 +8,7 @@
Pod::Spec.new do |s|
s.name = 'SwiftAudioPlayer'
s.version = '5.0.5'
s.version = '5.1.0'
s.summary = 'SwiftAudioPlayer is a Swift based audio player that can handle streaming from a remote location and audio manipulation.'
# This description is used to generate tags and improve search results.