diff --git a/packages/react-native-video/ios/core/NowPlayingInfoCenterManager.swift b/packages/react-native-video/ios/core/NowPlayingInfoCenterManager.swift index 6824df36..7bc9a390 100644 --- a/packages/react-native-video/ios/core/NowPlayingInfoCenterManager.swift +++ b/packages/react-native-video/ios/core/NowPlayingInfoCenterManager.swift @@ -24,9 +24,12 @@ class NowPlayingInfoCenterManager { var receivingRemoteControlEvents = false { didSet { if receivingRemoteControlEvents { - DispatchQueue.main.async { + DispatchQueue.main.async { [weak self] in VideoManager.shared.setRemoteControlEventsActive(true) UIApplication.shared.beginReceivingRemoteControlEvents() + if self?.currentPlayer?.currentItem != nil { + self?.updateNowPlayingInfo() + } } } else { DispatchQueue.main.async { @@ -317,10 +320,10 @@ class NowPlayingInfoCenterManager { // We will observe players rate to find last active player that info will be displayed private func observePlayers(player: AVPlayer) -> NSKeyValueObservation { - return player.observe(\.rate) { [weak self] player, change in + return player.observe(\.rate) { [weak self] player, _ in guard let self else { return } - let rate = change.newValue + let rate = player.rate // case where there is new player that is not paused // In this case event is triggered by non currentPlayer diff --git a/packages/react-native-video/ios/hybrids/VideoPlayer/HybridVideoPlayer+Events.swift b/packages/react-native-video/ios/hybrids/VideoPlayer/HybridVideoPlayer+Events.swift index c042a38b..986d20f2 100644 --- a/packages/react-native-video/ios/hybrids/VideoPlayer/HybridVideoPlayer+Events.swift +++ b/packages/react-native-video/ios/hybrids/VideoPlayer/HybridVideoPlayer+Events.swift @@ -175,6 +175,13 @@ extension HybridVideoPlayer: VideoPlayerObserverDelegate { ) } + func onPlayerItemChange(player _: AVPlayer, playerItem: AVPlayerItem?) { + guard showNotificationControls, let playerItem else { return } + DispatchQueue.main.async { + NowPlayingInfoCenterManager.shared.updateStaticInfo(ifCurrentItem: playerItem) + } + } + func onPlayerItemWillChange(hasNewPlayerItem: Bool) { if hasNewPlayerItem { // Set initial buffering state when playerItem is assigned diff --git a/packages/react-native-video/ios/hybrids/VideoPlayer/HybridVideoPlayer.swift b/packages/react-native-video/ios/hybrids/VideoPlayer/HybridVideoPlayer.swift index 690bbfea..433ebdb7 100644 --- a/packages/react-native-video/ios/hybrids/VideoPlayer/HybridVideoPlayer.swift +++ b/packages/react-native-video/ios/hybrids/VideoPlayer/HybridVideoPlayer.swift @@ -342,7 +342,6 @@ class HybridVideoPlayer: HybridVideoPlayerSpec, NativeVideoPlayerSpec { try await self.initializePlayerItem() } self.player.replaceCurrentItem(with: self.playerItem) - NowPlayingInfoCenterManager.shared.updateNowPlayingInfo() promise.resolve(withResult: ()) } catch { if error is CancellationError {