12 comments on “Developing mobile WebRTC hybrid applications

  1. I totally agree that currently only a hybrid approach can deliver the experience that users expect. We have found that it is a major problem that the audio subsystem of the WebRTC works always in handsfree mode, probably because it thinks well this is the browser. Hopefully that will be addressed soon with the WebView. Then WebRTC can deliver a similar experience like making regular phone calls.

  2. The problem with the Cordova approach (at least with the regular WebView engine, which is mandatory on iOS) is that WebRTC video is rendered in a native view layered above the WebView. While you can do tricks like reflecting some properties like size and opacity, you won’t be able to apply most CSS styling or layer HTML elements on top of your video.

    I actually think the approach for hybrid apps should focus on reusing the core JavaScript logic and use a UI layer that’s platform dependent, i.e. HTML for web, native stuff for iOS and Android). The JavaScript doesn’t have to be pre-compiled in this case as you can expose all the platform UI APIs needed to a JavaScript engine that runs your dynamically loaded JS code. This is the approach taken by NativeScript. I’m curious to see where they end up.

  3. Pingback: RealTimeWeekly | RealTimeWeekly #87

  4. If you want a clean native iOS implementation, I recommend the Doubango Telecom
    idoubs implementation.

    I’m in the midst of a project using this stack and it’s working out well.

    Full disclosure, we use Doubango WebRTC libraries here for embedded devices as well.

  5. I get no sound from my Android device using webrtc + crosswalk, how can I enable the android microphone to record sound during call? I guess this is due to the device permissions, because the app works fine on PC + chrome.

  6. How about receiving calls, is it achievable with hybrid apps? I mean receiving a call when the smartphone is not in use, in a similar way as Whatsapp calls.

Leave a Reply

Your email address will not be published. Required fields are marked *