Webrtc 如何使用swiftUI创建视频通话功能?

Webrtc 如何使用swiftUI创建视频通话功能?,webrtc,swiftui,Webrtc,Swiftui,我正在用SwiftUI创建一个消息应用程序,我想在其中添加视频通话功能。我使用SkyWay webRTC API()实现了这一点,我可以构建一个用swift代码编写的示例项目。现在,我正在尝试将本地流与SKWVideo视图链接,并将其包装到UIViewRepresentable中。但我被下面的错误信息卡住了 import SwiftUI import SkyWay import UIKit struct ContentView: View { @State var video = SK

我正在用SwiftUI创建一个消息应用程序,我想在其中添加视频通话功能。我使用SkyWay webRTC API()实现了这一点,我可以构建一个用swift代码编写的示例项目。现在,我正在尝试将本地流与SKWVideo视图链接,并将其包装到UIViewRepresentable中。但我被下面的错误信息卡住了

import SwiftUI
import SkyWay
import UIKit

struct ContentView: View {
    @State var video = SKWVideo()

    var body: some View {
        VideoView(localStreamView: $video)
    }
}

struct VideoView: UIViewRepresentable {
    @Binding var localStreamView: SKWVideo

    func makeUIView(context: Context) -> SKWVideo {
        let option: SKWPeerOption = SKWPeerOption.init()
        option.key = "xxxx"
        option.domain = "localhost"
        let peer = SKWPeer(options: option)
        SKWNavigator.initialize(peer!)
        let constraints: SKWMediaConstraints = SKWMediaConstraints()
        let localStream = SKWNavigator.getUserMedia(constraints)
        localStream?.addVideoRenderer(localStreamView, track: 0)
        return localStreamView
    }

    func updateUIView(_ uiView: SKWVideo, context: Context) {
        //
    }
}

我犯了这个错误

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Modifications to the layout engine must not be performed from a background thread after it has been accessed from the main thread.'
我在iPhone7 real设备上运行了它,并编写了plist设置。我现在完全不知道。请帮帮我

iOS 13.0
xcode 11.0

错误是不言自明的。某些代码正在修改状态-
视频-
,在本例中-在主线程之外。鉴于您正在使用的库的性质,它可能是预期的,也可能只是一个编程错误。我会彻底检查它的文档,看看它发生在哪里。谢谢你给我一个提示。对但我不知道如何修复它。SKWVideo是从UIView继承的自定义视图,所以我想我可以像在苹果的swiftUI教程中一样遵循MKMapView的实现。这里是iosdk()的链接,页面底部有一个Swift示例代码。如果您知道如何通过其他方式使用SwiftUI实现视频消息传递,这将对我非常有帮助……如果您将
localStream?.addVideoRenderer(localStreamView,track:0)
放在
updateiview(…)
方法中会怎么样?错误是不言自明的。某些代码正在修改状态-
视频-
,在本例中-在主线程之外。鉴于您正在使用的库的性质,它可能是预期的,也可能只是一个编程错误。我会彻底检查它的文档,看看它发生在哪里。谢谢你给我一个提示。对但我不知道如何修复它。SKWVideo是从UIView继承的自定义视图,所以我想我可以像在苹果的swiftUI教程中一样遵循MKMapView的实现。这里是iosdk()的链接,页面底部有一个Swift示例代码。如果您知道如何通过其他方式使用SwiftUI实现视频消息传递,这将对我非常有帮助……如果您将
localStream?.addVideoRenderer(localStreamView,track:0)
放在
updateUIView(…)
方法中会怎么样?