@@ -50,6 +50,7 @@ class CustomPlayerView: NSObject, AVPlayerViewControllerDelegate {
5050 var customDelegate = [ URL: [ CustomAVARLDelegate] ] ( )
5151 var infoItems = [ URL: [ String: Any] ] ( )
5252 var image : MPMediaItemArtwork ?
53+ var playCount = - 1
5354
5455 func getURL( storage: String , fileId: String ) -> URL {
5556 var allowedCharacterSet = CharacterSet . alphanumerics
@@ -100,6 +101,9 @@ class CustomPlayerView: NSObject, AVPlayerViewControllerDelegate {
100101 }
101102 return playitem
102103 } )
104+ if !self . loop {
105+ playCount = items. count
106+ }
103107 var player = AVQueuePlayer ( items: items)
104108 return player
105109 } ( )
@@ -181,10 +185,12 @@ class CustomPlayerView: NSObject, AVPlayerViewControllerDelegate {
181185 }
182186
183187 func skipNextTrack( ) {
184- let url = ( player. currentItem? . asset as? AVURLAsset ) ? . url
188+ print ( " skipNextTrack " , playCount)
189+ print ( player. items ( ) )
190+ let url = prevURL
185191 player. pause ( )
186192 if player. items ( ) . count <= 2 {
187- if loop {
193+ if loop || UserDefaults . standard . bool ( forKey : " keepOpenWhenDone " ) {
188194 loopSetup ( )
189195 }
190196 }
@@ -216,7 +222,15 @@ class CustomPlayerView: NSObject, AVPlayerViewControllerDelegate {
216222 customDelegate. removeValue ( forKey: url)
217223 }
218224 }
219- player. play ( )
225+ if playCount <= 1 {
226+ playCount = playItems. count
227+ }
228+ else {
229+ player. play ( )
230+ if playCount > 0 {
231+ playCount -= 1
232+ }
233+ }
220234 }
221235 }
222236
@@ -275,6 +289,13 @@ class CustomPlayerView: NSObject, AVPlayerViewControllerDelegate {
275289 }
276290
277291 func play( parent: UIViewController ) {
292+ do {
293+ try AVAudioSession . sharedInstance ( ) . setCategory ( . playback)
294+ try AVAudioSession . sharedInstance ( ) . setActive ( true )
295+ } catch {
296+ print ( error)
297+ }
298+
278299 playerViewController. player = player
279300 playerViewController. updatesNowPlayingInfoCenter = false
280301
@@ -412,17 +433,14 @@ class CustomPlayerView: NSObject, AVPlayerViewControllerDelegate {
412433 }
413434
414435 func nextTrack( ) {
415- let url = prevURL
416- var reload = UserDefaults . standard . bool ( forKey : " keepOpenWhenDone " )
417- if reload && player . items ( ) . count > 1 {
418- reload = false
436+ print ( " nextTrack " , playCount )
437+ print ( player . items ( ) )
438+ if playCount > 0 {
439+ playCount -= 1
419440 }
441+ let url = prevURL
420442 if player. items ( ) . count <= 2 {
421- if loop {
422- reload = false
423- loopSetup ( )
424- }
425- if reload {
443+ if loop || UserDefaults . standard. bool ( forKey: " keepOpenWhenDone " ) {
426444 loopSetup ( )
427445 }
428446 }
@@ -454,8 +472,9 @@ class CustomPlayerView: NSObject, AVPlayerViewControllerDelegate {
454472 }
455473 }
456474 }
457- if reload {
475+ if playCount == 0 {
458476 player. pause ( )
477+ playCount = playItems. count
459478 }
460479 }
461480
0 commit comments