VEX-5938: Update resource loader to handle encrypted local files (#12)

Adds offline decryption key and uses it to decrypt content during offline playback

Jira: VEX-5938
https://jira.tenkasu.net/browse/VEX-5938

- Update to accept scheme for key required to play offline playback
- Uses provided scheme to intercept call from player and return the key
- Fixes player item observer removal pattern

### Reviews
- Major reviewer (domain expert): @armadilio3
This commit is contained in:
Nick Fujita
2021-10-28 10:34:05 +09:00
committed by GitHub
parent 8b75438148
commit e27baeb065
12 changed files with 573 additions and 379 deletions

View File

@@ -28,39 +28,43 @@ class RCTPlayerObserver: NSObject {
var _handlers: RCTPlayerObserverHandler!
var player:AVPlayer? {
willSet {
removePlayerObservers()
removePlayerTimeObserver()
}
didSet {
if player == nil {
removePlayerObservers()
removePlayerTimeObserver()
} else {
if player != nil {
addPlayerObservers()
addPlayerTimeObserver()
}
}
}
var playerItem:AVPlayerItem? {
willSet {
removePlayerItemObservers()
}
didSet {
if playerItem == nil {
removePlayerItemObservers()
} else {
if playerItem != nil {
addPlayerItemObservers()
}
}
}
var playerViewController:AVPlayerViewController? {
willSet {
removePlayerViewControllerObservers()
}
didSet {
if playerViewController == nil {
removePlayerViewControllerObservers()
} else {
if playerViewController != nil {
addPlayerViewControllerObservers()
}
}
}
var playerLayer:AVPlayerLayer? {
willSet {
removePlayerLayerObserver()
}
didSet {
if playerLayer == nil {
removePlayerLayerObserver()
} else {
addPlayerLayerObserver()
}
}
@@ -148,8 +152,8 @@ class RCTPlayerObserver: NSObject {
/* Cancels the previously registered time observer. */
func removePlayerTimeObserver() {
if let timeObserver = _timeObserver {
player?.removeTimeObserver(timeObserver)
if _timeObserver != nil {
player?.removeTimeObserver(_timeObserver)
_timeObserver = nil
}
}