You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS如何监听锁屏/来电事件以暂停后台运行的PIP功能?

监听锁屏/来电事件以控制后台画中画(PIP)功能

针对你的需求,下面是iOS平台下监听锁屏、来电事件并控制PIP的具体实现方案:

一、监听锁屏事件

可以通过系统的protectedDataWillBecomeUnavailable通知监听锁屏动作,这个通知会在设备锁定时触发,无论应用处于前台还是后台运行PIP状态:

  1. 注册通知并实现处理方法
// 在PIP控制器或管理类中添加监听
NotificationCenter.default.addObserver(
    self,
    selector: #selector(onDeviceLocked),
    name: UIApplication.protectedDataWillBecomeUnavailableNotification,
    object: nil
)

// 锁屏触发时的处理逻辑
@objc private func onDeviceLocked() {
    // 停止PIP或暂停播放
    if let pipController = AVPictureInPictureController.shared {
        if pipController.isPictureInPictureActive {
            pipController.stopPictureInPicture()
            // 如果只是暂停播放,也可以用:pipController.player?.pause()
        }
    }
}
  1. 记得在对象销毁时移除观察者
deinit {
    NotificationCenter.default.removeObserver(self)
}

二、监听来电事件

iOS 10及以上使用CallKit框架的CXCallObserver来监听来电状态变化:

  1. 导入CallKit并实现代理
import CallKit

class PIPManager: NSObject, CXCallObserverDelegate {
    private let callObserver = CXCallObserver()
    
    override init() {
        super.init()
        // 设置代理,在主线程处理回调
        callObserver.setDelegate(self, queue: DispatchQueue.main)
    }
    
    // 来电状态变化时的回调
    func callObserver(_ callObserver: CXCallObserver, callChanged call: CXCall) {
        // 判断是否有新来电(未接通状态)
        if !call.hasEnded && !call.hasConnected && call.isOutgoing == false {
            // 暂停/停止PIP
            if let pipController = AVPictureInPictureController.shared, pipController.isPictureInPictureActive {
                pipController.stopPictureInPicture()
            }
        }
    }
}

三、补充:精准区分didResignActive的触发场景(可选)

如果需要避免UIApplicationWillResignActiveNotification被切换App等场景误触发,可以结合应用状态和保护数据状态判断:

@objc private func onAppResignActive() {
    let appState = UIApplication.shared.applicationState
    let isLocked = !UIApplication.shared.isProtectedDataAvailable
    
    // 仅当应用因锁屏进入inactive状态时处理PIP
    if appState == .inactive && isLocked {
        // 执行PIP暂停/停止逻辑
    }
}

内容的提问来源于stack exchange,提问作者Bhupesh Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 11:43:11