mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-27 19:56:57 +02:00
Merge branch 'develop' into yostyle/voice_broadcast_playing
This commit is contained in:
@@ -41,6 +41,7 @@ class VoiceMessageAudioPlayer: NSObject {
|
||||
private var playbackBufferEmptyObserver: NSKeyValueObservation?
|
||||
private var rateObserver: NSKeyValueObservation?
|
||||
private var playToEndObserver: NSObjectProtocol?
|
||||
private var appBackgroundObserver: NSObjectProtocol?
|
||||
|
||||
private let delegateContainer = DelegateContainer()
|
||||
|
||||
@@ -225,6 +226,15 @@ class VoiceMessageAudioPlayer: NSObject {
|
||||
(delegate as? VoiceMessageAudioPlayerDelegate)?.audioPlayerDidFinishPlaying(self)
|
||||
}
|
||||
}
|
||||
|
||||
appBackgroundObserver = NotificationCenter.default.addObserver(forName: UIApplication.didEnterBackgroundNotification, object: nil, queue: nil) { [weak self] _ in
|
||||
guard let self = self, !BuildSettings.allowBackgroundAudioMessagePlayback else { return }
|
||||
|
||||
self.pause()
|
||||
self.delegateContainer.notifyDelegatesWithBlock { delegate in
|
||||
(delegate as? VoiceMessageAudioPlayerDelegate)?.audioPlayerDidPausePlaying(self)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private func removeObservers() {
|
||||
@@ -232,6 +242,7 @@ class VoiceMessageAudioPlayer: NSObject {
|
||||
playbackBufferEmptyObserver?.invalidate()
|
||||
rateObserver?.invalidate()
|
||||
NotificationCenter.default.removeObserver(playToEndObserver as Any)
|
||||
NotificationCenter.default.removeObserver(appBackgroundObserver as Any)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -183,6 +183,10 @@ import MediaPlayer
|
||||
}
|
||||
|
||||
private func setUpRemoteCommandCenter() {
|
||||
guard BuildSettings.allowBackgroundAudioMessagePlayback else {
|
||||
return
|
||||
}
|
||||
|
||||
displayLink.isPaused = false
|
||||
|
||||
UIApplication.shared.beginReceivingRemoteControlEvents()
|
||||
@@ -252,14 +256,8 @@ import MediaPlayer
|
||||
return
|
||||
}
|
||||
|
||||
let artwork = MPMediaItemArtwork(boundsSize: Constants.roomAvatarImageSize) { [weak self] size in
|
||||
return self?.roomAvatar ?? UIImage()
|
||||
}
|
||||
|
||||
let nowPlayingInfoCenter = MPNowPlayingInfoCenter.default()
|
||||
nowPlayingInfoCenter.nowPlayingInfo = [MPMediaItemPropertyTitle: audioPlayer.displayName ?? VectorL10n.voiceMessageLockScreenPlaceholder,
|
||||
MPMediaItemPropertyArtist: currentRoomSummary?.displayname as Any,
|
||||
MPMediaItemPropertyArtwork: artwork,
|
||||
nowPlayingInfoCenter.nowPlayingInfo = [MPMediaItemPropertyTitle: VectorL10n.voiceMessageLockScreenPlaceholder,
|
||||
MPMediaItemPropertyPlaybackDuration: audioPlayer.duration as Any,
|
||||
MPNowPlayingInfoPropertyElapsedPlaybackTime: audioPlayer.currentTime as Any]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user