Skip to content

Commit 8897363

Browse files
authored
fix: add check for in PiP before loading new content on iOS (#177)
1 parent 14836e2 commit 8897363

File tree

1 file changed

+20
-1
lines changed

1 file changed

+20
-1
lines changed

ios/RNJWPlayer/RNJWPlayerView.swift

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -275,9 +275,28 @@ class RNJWPlayerView: UIView, JWPlayerDelegate, JWPlayerStateDelegate,
275275
}
276276
}
277277

278+
// Check if player is in PiP mode before loading new playlist
279+
var isPipActive = false
280+
var pipController: AVPictureInPictureController?
281+
282+
if let playerView = playerView {
283+
pipController = playerView.pictureInPictureController
284+
isPipActive = pipController?.isPictureInPictureActive ?? false
285+
} else if let playerViewController = playerViewController {
286+
pipController = playerViewController.playerView.pictureInPictureController
287+
isPipActive = pipController?.isPictureInPictureActive ?? false
288+
}
289+
278290
if let playerViewController = playerViewController {
279-
playerViewController.player.loadPlaylist(items: playlistArray)
291+
// We must treat PiP mode differently and setup as a new config
292+
// or else the player will become unresponsive
293+
if isPipActive {
294+
setNewConfig(config: config)
295+
} else {
296+
playerViewController.player.loadPlaylist(items: playlistArray)
297+
}
280298
} else if let playerView = playerView {
299+
// If you use player only, consider doing a simpliar check for PiP as above
281300
playerView.player.loadPlaylist(items: playlistArray)
282301
} else {
283302
setNewConfig(config: config)

0 commit comments

Comments
 (0)