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の終了検知方法を説明した。
コメント