SwiftUI | AVPlayerの終了検知方法

SwiftUI

SwiftUIでのAVPlayerの終了検知方法を説明する。

結論

NSNotification の AVPlayerItemDidPlayToEndTime を監視する。

具体例

import SwiftUI
import AVKit

struct ContentView: View {
    var body: some View {
        let ファイルURL = Bundle.main.url(forResource: "ゆうしゃヨシヒコのおもしろ動画",
                                         withExtension: "mp4")!
        let プレイヤー = AVPlayer(url: ファイルURL)

        VideoPlayer(player: プレイヤー)
            .onReceive(NotificationCenter.default.publisher(for: .終了検知)) { _ in
                print("動画が終わりました")
            }
    }
}

extension NSNotification.Name {
    public static let 終了検知 = NSNotification.Name.AVPlayerItemDidPlayToEndTime
}

extension UIWindow {
    open override func motionEnded(_ motion: UIEvent.EventSubtype, with event: UIEvent?) {
        super.motionEnded(motion, with: event)
        NotificationCenter.default.post(name: .終了検知, object: event)
    }
}

まとめ

SwiftUIでのAVPlayerの終了検知方法を説明した。

コメント

タイトルとURLをコピーしました