Browse Source

Remote Command Center

Signed-off-by: marinofaggiana <marino@marinofaggiana.com>
marinofaggiana 3 years ago
parent
commit
666af1c8ec

+ 13 - 1
iOSClient/Viewer/NCViewerMedia/NCPlayer/NCPlayer.swift

@@ -38,7 +38,8 @@ class NCPlayer: NSObject {
     private var playerToolBar: NCPlayerToolBar?
     private var detailView: NCViewerMediaDetailView?
     private var observerAVPlayerItemDidPlayToEndTime: Any?
-    
+    private var timeObserver: Any?
+
     public var metadata: tableMetadata?
     public var videoLayer: AVPlayerLayer?
     public var pictureInPictureController: AVPictureInPictureController?
@@ -89,6 +90,13 @@ class NCPlayer: NSObject {
             }
         }
         
+        timeObserver = appDelegate.player?.addPeriodicTimeObserver(forInterval: CMTimeMakeWithSeconds(1, preferredTimescale: 1), queue: .main, using: { (CMTime) in
+            
+            if self.appDelegate.player?.currentItem?.status == .readyToPlay {
+                self.playerToolBar?.updateToolBar()
+            }
+        })
+        
         appDelegate.player?.currentItem?.asset.loadValuesAsynchronously(forKeys: ["playable"], completionHandler: {
             var error: NSError? = nil
             let status = self.appDelegate.player?.currentItem?.asset.statusOfValue(forKey: "playable", error: &error)
@@ -173,12 +181,16 @@ class NCPlayer: NSObject {
         if let observerAVPlayerItemDidPlayToEndTime = self.observerAVPlayerItemDidPlayToEndTime {
             NotificationCenter.default.removeObserver(observerAVPlayerItemDidPlayToEndTime)
         }
+        if  let timeObserver = self.timeObserver {
+            appDelegate.player?.removeTimeObserver(timeObserver)
+        }
         NotificationCenter.default.removeObserver(self, name: NSNotification.Name(rawValue: NCGlobal.shared.notificationCenterApplicationDidEnterBackground), object: nil)
         
         self.videoLayer?.removeFromSuperlayer()
         
         self.videoLayer = nil
         self.observerAVPlayerItemDidPlayToEndTime = nil
+        self.timeObserver = nil
         self.imageVideoContainer = nil
         self.playerToolBar = nil
         self.metadata = nil

+ 0 - 12
iOSClient/Viewer/NCViewerMedia/NCPlayer/NCPlayerToolBar.swift

@@ -51,7 +51,6 @@ class NCPlayerToolBar: UIView {
     private var wasInPlay: Bool = false
     private var playbackSliderEvent: sliderEventType = .ended
     private var durationTime: CMTime = .zero
-    private var timeObserver: Any?
     private var timerAutoHide: Timer?
     private var metadata: tableMetadata?
     private var image: UIImage?
@@ -118,10 +117,6 @@ class NCPlayerToolBar: UIView {
     
     deinit {
         print("deinit NCPlayerToolBar")
-        
-        if self.timeObserver != nil {
-            appDelegate.player?.removeTimeObserver(self.timeObserver!)
-        }
                 
         NotificationCenter.default.removeObserver(self, name: AVAudioSession.interruptionNotification, object: nil)
         NotificationCenter.default.removeObserver(self, name: AVAudioSession.routeChangeNotification, object: nil)
@@ -149,13 +144,6 @@ class NCPlayerToolBar: UIView {
         }
         
         updateToolBar(timeSeek: timeSeek, commandCenter: true)
-        
-        self.timeObserver = appDelegate.player?.addPeriodicTimeObserver(forInterval: CMTimeMakeWithSeconds(1, preferredTimescale: 1), queue: .main, using: { (CMTime) in
-            
-            if self.appDelegate.player?.currentItem?.status == .readyToPlay {
-                self.updateToolBar()
-            }
-        })
     }
     
     public func updateToolBar(timeSeek: CMTime? = nil, commandCenter: Bool = false) {