菜鸟教程小白 发表于 2022-12-11 16:41:03

ios - 如何在 WebKit(WkWebview) 中为不支持的 webRTC JS API 提供 native 支持


                                            <p><p><strong><em>目标:</em></strong></p>

<p>为 WebKit 中不支持的 WebRTC JS API 提供原生支持,并通过 WkWebView 中加载的 webapp 进行 WebRTC 调用。</p>

<p><strong><em>到目前为止我尝试了什么:</em></strong></p>

<p>目前 webkit 不支持 WebRTC W3C JavaScript API。</p>

<p><a href="https://github.com/eface2face/cordova-plugin-iosrtc" rel="noreferrer noopener nofollow">cordova</a> 提供了一个跨平台插件。支持 webRTC 但我不想跨平台。</p>

<p>有一个webRTC <a href="https://github.com/ISBX/apprtc-ios" rel="noreferrer noopener nofollow">native framework</a>可用,但我不想完全采用原生方式。</p>

<p>到目前为止,我能够在 JavaScript 中覆盖 <em>navigator.getUserMedia</em> </p>

<pre><code>navigator.getUserMedia = function(constraints, onSuccess, onError){
    myWebRTC.getUserMedia(document.getElementById(&#39;roomid&#39;).value)
}
</code></pre>

<p>并调用原生AppRTC SDK API从原生端发起调用,就可以了。</p>

<pre><code>if let roomId=NSUserDefaults.standardUserDefaults().valueForKey(&#34;RoomId&#34;){
    appClient = ARDAppClient(delegate: self)
    appClient?.createLocalMediaStream()
    appClient?.connectToRoomWithId(String(roomId), options: nil)
    localVideoView?.hidden = false;
    remoteVideoView?.hidden = false;
    btnDisconnect?.hidden = false;
    webview?.hidden = true;
}
</code></pre>

<p>这里是完整的 <a href="https://github.com/Duraiamuthan/WebRTCSample" rel="noreferrer noopener nofollow">source code</a> </p>

<p>AppRTC 它有自己的原生视频 View ,但我想在 webview 内的 HTML 元素中显示视频。</p>

<p>AppRTC 也不提供视频流...即使我可以从中获取流。如何将流提供给 wkwebview 是一个挑战,因为它的 RTC 仅评估 JavaScript 我认为它是不可能的。</p>

<p>所以我整合了<a href="https://github.com/robbiehanson/CocoaHTTPServer" rel="noreferrer noopener nofollow">CocoaHTTPServer</a>我正在考虑找到一种方法将其流式传输到 WkWebView。</p>

<p>非常感谢任何有助于实现我的目标的见解和建议!</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>您可以使用 <a href="https://github.com/eface2face/cordova-plugin-iosrtc" rel="noreferrer noopener nofollow">plugin iosRTC</a>适用于 iOS 和适用于 android 的人行横道,但我们没有找到跨平台插件:/</p>

<p>这里是我们的教程:<a href="https://apirtc.com/apirtc-on-cordova/" rel="noreferrer noopener nofollow">https://apirtc.com/apirtc-on-cordova/</a> </p>

<p>还有一个带有cordova的示例项目:<a href="https://github.com/apizee/ApiRTC-mobile" rel="noreferrer noopener nofollow">https://github.com/apizee/ApiRTC-mobile</a> </p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 如何在 WebKit(WkWebview) 中为不支持的 webRTC JS API 提供 native 支持,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/37695739/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/37695739/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 如何在 WebKit(WkWebview) 中为不支持的 webRTC JS API 提供 native 支持