Files
HaishinKit.swift/Examples/iOS/HaishinApp.swift
2026-02-11 17:51:48 +09:00

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)
}
}
}
}