mirror of
https://github.com/HaishinKit/HaishinKit.swift.git
synced 2026-05-07 20:12:28 +00:00
66 lines
1.9 KiB
Swift
66 lines
1.9 KiB
Swift
import HaishinKit
|
|
@preconcurrency import Logboard
|
|
import RTCHaishinKit
|
|
import RTMPHaishinKit
|
|
import SRTHaishinKit
|
|
import SwiftUI
|
|
|
|
nonisolated let logger = LBLogger.with("com.haishinkit.HaishinApp")
|
|
|
|
@main
|
|
struct HaishinApp: App {
|
|
@State private var preference = PreferenceViewModel()
|
|
@State private var isInitialized = false
|
|
|
|
var body: some Scene {
|
|
WindowGroup {
|
|
if isInitialized {
|
|
ContentView()
|
|
.environmentObject(preference)
|
|
} else {
|
|
LaunchScreen()
|
|
.task {
|
|
await initialize()
|
|
isInitialized = true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private func initialize() async {
|
|
await StreamSessionBuilderFactory.shared.register(RTMPSessionFactory())
|
|
await StreamSessionBuilderFactory.shared.register(SRTSessionFactory())
|
|
await StreamSessionBuilderFactory.shared.register(HTTPSessionFactory())
|
|
|
|
await RTCLogger.shared.setLevel(.debug)
|
|
await SRTLogger.shared.setLevel(.debug)
|
|
}
|
|
|
|
init() {
|
|
LBLogger(kHaishinKitIdentifier).level = .debug
|
|
LBLogger(kRTCHaishinKitIdentifier).level = .debug
|
|
LBLogger(kRTMPHaishinKitIdentifier).level = .debug
|
|
LBLogger(kSRTHaishinKitIdentifier).level = .debug
|
|
}
|
|
}
|
|
|
|
struct LaunchScreen: View {
|
|
var body: some View {
|
|
ZStack {
|
|
Color.black.ignoresSafeArea()
|
|
VStack(spacing: 20) {
|
|
Image(systemName: "video.fill")
|
|
.font(.system(size: 60))
|
|
.foregroundColor(.white)
|
|
Text("HaishinKit")
|
|
.font(.title)
|
|
.fontWeight(.bold)
|
|
.foregroundColor(.white)
|
|
ProgressView()
|
|
.tint(.white)
|
|
.padding(.top, 20)
|
|
}
|
|
}
|
|
}
|
|
}
|