From 254a3a43acb92036a6785c7f6286c73a7deba149 Mon Sep 17 00:00:00 2001 From: zjx Date: Mon, 23 Jun 2025 10:47:07 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8C=E6=AD=A5=E4=BF=AE=E6=94=B9bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ThimraTV/Libs/Player/SPPlayer.swift | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/ThimraTV/Libs/Player/SPPlayer.swift b/ThimraTV/Libs/Player/SPPlayer.swift index 714d4f5..ade6b25 100644 --- a/ThimraTV/Libs/Player/SPPlayer.swift +++ b/ThimraTV/Libs/Player/SPPlayer.swift @@ -58,6 +58,8 @@ class SPPlayer: NSObject { weak var delegate: SPPlayerDelegate? private(set) lazy var isPlaying = false + ///系统原因导致的暂停(来电话) + private(set) lazy var systemPause = false private(set) lazy var playState: PlayState = .unknown private(set) lazy var loadState: LoadState = .unknown @@ -168,6 +170,7 @@ class SPPlayer: NSObject { } func start() { + self.systemPause = false self.isPlaying = true // if self.interruptionType != .began { // } @@ -224,7 +227,7 @@ extension SPPlayer { guard let self = self else { return } if playState == .playStatePlaying && !isPlaying { self.pause() - } else if playState == .playStatePaused, isPlaying, self.interruptionType != .began { + } else if playState == .playStatePaused, isPlaying, !self.systemPause { self.start() } switch playState { @@ -251,7 +254,7 @@ extension SPPlayer { guard let self = self else { return } if loadState == .playable && !isPlaying { self.pause() - } else if loadState == .playable, isPlaying, self.player.playState != .playStatePlaying, self.interruptionType != .began { + } else if loadState == .playable, isPlaying, self.player.playState != .playStatePlaying, !self.systemPause { self.start() } @@ -314,9 +317,11 @@ extension SPPlayer { guard let interruptionType = userInfo[AVAudioSessionInterruptionTypeKey] as? UInt else { return } self.interruptionType = AVAudioSession.InterruptionType(rawValue: interruptionType) - if self.interruptionType == .began { + if self.interruptionType == .began, self.isPlaying { + self.systemPause = true self.player.pause() - } else { + } else if self.interruptionType == .ended { + self.systemPause = false if self.isPlaying { self.player.play() }