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

Capacitor iOS应用自定义AVPlayer播放后无法跳转桥接视图问题

问题根因

你的代码存在两个核心问题导致segue跳转失效:

  • 你自定义的viewControl本身已经是AVPlayerViewController子类,却在内部又额外实例化了一个新的AVPlayerViewController(也就是playerController变量),并将它present出来。当视频播放结束时,你调用的是下层被遮盖的viewControl的performSegue方法,上层还有present出来的播放控制器没有关闭,自然看不到跳转效果
  • 你没有在segue执行前移除通知监听,可能会造成后续重复回调异常

修复后的完整代码

//
//  AVPlayer.swift
//  App
//
//

import Foundation
import UIKit
import AVFoundation
import AVKit
import Capacitor

class ViewControl: AVPlayerViewController {
    
    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        playVideo()
    }
    
    private func playVideo() {
        guard let path = Bundle.main.path(forResource: "Splash_Screen_Christmas", ofType:"mp4") else {
            debugPrint("Splash_Screen_Christmas.mp4 not found")
            return
        }
        // 直接用当前控制器本身播放,不要额外新建AVPlayerViewController
        let player = AVPlayer(url: URL(fileURLWithPath: path))
        self.showsPlaybackControls = false
        self.player = player
        self.videoGravity = .resizeAspectFill
        // 添加播放结束监听
        NotificationCenter.default.addObserver(self, selector: #selector(playerDidFinishPlaying), name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: player.currentItem)
        player.play()
    }
    
    @objc func playerDidFinishPlaying(note: NSNotification) {
        // 先移除通知监听避免重复回调
        NotificationCenter.default.removeObserver(self, name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: nil)
        // 执行segue跳转
        performSegue(withIdentifier: "test", sender: self)
        print("video is finished ")
    }
}

额外检查项

如果修改后还是无法跳转,确认以下配置:

  • 故事板中segue的Identifier确实是test,没有拼写错误、大小写错误
  • 故事板中segue的类型是Show(Push)或者Present Modally,不要选自定义类型且没有实现自定义跳转逻辑
  • 确认Capacitor Bridge View控制器在故事板中的自定义类、模块配置正确,没有加载失败的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 22:45:04