Preface: there are questions (some good, some bad) already in existance on StackOverflow about webRTC support on various browsers and platforms, including iOS. However I couldn't find anything definitive that was more recent than ~2012, and this is a rapidly-changing field.
I'm working on a browser-based webapp that uses webRTC for minimal-latency peer-to-peer data transfer (not for audio/video, unlike most applications it would seem - all I need is DataChannel).
I hit a snag when I started testing the data-transfer part of the project and discovered that iOS devices still don't natively support this in their built-in browsers (despite some recent rumors).
Bowser is a free open-source browser App for iOS that purports to support webRTC on iOS. The problem is that when I try to open the app, it simply crashes and closes. I've tested this on an iPhone 5 and 5s. Googling has failed to turn up alternatives - even Chrome for iOS doesn't currently support webRTC it seems.
My questions:
1) Are there alternative browsers (even iOS-version restricted) that are currently supporting webRTC, or is there anything promising coming down the pipeline?
2) Does Bowser actually work (webRTC) on iOS devices where it doesn't crash immediately upon launch?
3) What strategies have other people used to work around this limitation?
As of iOS 11, WebRTC is now supported in Safari: https://developer.apple.com/library/archive/releasenotes/General/WhatsNewInSafari/Articles/Safari_11_0.html#//apple_ref/doc/uid/TP40014305-CH13-SW1
Check out crosswalk project ( https://crosswalk-project.org )
This Provides runtime of Chromium engine for native support in older devices.
1) Are there alternative browsers (even iOS-version restricted) that are currently supporting webRTC, or is there anything promising coming down the pipeline?
Answer:
There is a Browser called Bowser that supports webRTC.
2) Does Bowser actually work (webRTC) on iOS devices where it doesn't crash immediately upon launch?
Answer:
It's not crashing as of now.But I couldn't successfully test with anything so far.I have raised an issue about it
3) What strategies have other people used to work around this limitation?
Answer:
Apple is yet to support WebRTC in Webkit so as of now the only way would be develop a native or Hybrid app that would support the unsupported WebRTC APIs.
You can develop a hybrid app powered by OpenWebRTC or cordova-plugin-iosrtc
Related
I'm really intrigued with WebRTC and want to start building web based technologies that have access to hardware and other aspects of what a native application might have. My question is, how might I implement WebRTC into WebKit, without using High Sierra for macOS or Safari 11/Safari Preview? This goes beyond using Chrome or Firefox to test some WebRTC components. I want to be able to implement an instance of WebKit, maybe using webview in a macOS app, and include WebRTC.
Maybe even, a framework that I could use in Xcode and Swift for a macOS app or iOS app? That would be even more awesome!
What I've looked at so far:
https://webkit.org/blog/7763/a-closer-look-into-webrtc/
http://www.webrtcinwebkit.org
https://www.openwebrtc.org
https://webrtc.github.io/samples/
https://www.openwebrtc.org/bowser/
Also found this to be interesting:
http://thejackalofjavascript.com/node-webkit-webrtc-and-angularjs-a-video-chat-client/
I have a URL that is working fine with Safari on iOS11 (Beta) Audio/Video is working fine.
But when I load this URL with WKWebView it gives me an error "Incompatible Browser" and when I check my browser version in WebKit it shows "WebKit based browser on iOS 11"
So the question really is, has Apple included this change in the WKWebview webkit (which should be the same as Safari) for the developer BETA of iOS 11?
Update: WebRTC Support is coming in iOS14.3 (Beta) 🎉
Learn more here: https://webkit.org/blog/11353/mediarecorder-api/
From iOS11+ :
WebRTC is partially supported in WKWebView, and fully supported in the Safari App browser.
Explained:
WebRTC has three main JavaScript APIs:
MediaStream (aka getUserMedia)
RTCPeerConnection
RTCDataChannel
For apps running inside Safari App, iOS11+, all WebRTC APIs are supported. That includes getUserMedia. Be sure to use adapter.js library for best compatibility, since each browser - including Safari - uses a different name for its implementation. For example, in Safari it's navigator.mediaDevices.getUserMedia().
But, when using WKWebView or SFSafariViewController, it's a different story:
Both RTCPeerConnection and RTCDataChannel are supported and working.
getUserMedia is not supported yet, for "security reasons". It most probably won't be available before the next major OS release, which would be iOS 12 in September 2018.
You can still stream video & audio from local storage or consume live media captured by a peer. Hopefully in iOS 12 we'll see some progress...
I did a bit of digging in the WebKit sources last night, and it looks like the WebRTC/MediaCapture stuff is all gated behind a preference that's only accessible via a private API. There was also a commit that mentioned something about apps needing to handle all the setup for A/V permissions.
In any case, the result is that getUserMedia doesn't work in WKWebView, even on iOS11 (beta 4, at least) :(
I've filed a radar (rdar://33571214 and http://www.openradar.me/33571214) and encourage everyone else to do the same.
I have done some tests with iOS Beta 4 and it seems that even WKWebview nor UIWebview don't support getUserMedia as a WebRTC API.
Can someone confirm this?
I am trying to build a audio/video streaming app that works cross platform on iOS and Android mobile devices.
No matter how deep I Google, I'm ending up with suggestions that point me towards OpenTok/TokBox API. But this is what I wish to avoid.
I've checked a few demo, but WebRTC/HTML5 do not seem to work with streaming video/audio in iOS browser. For example, the https://apprtc.appspot.com demo does not work in Safari or Opera Mini in iOS.
When I try http://dev.opera.com/articles/media-capture-in-mobile-browsers/demo/ ... I can capture image using the default iOS camera picker from my browser but streaming video fails.
It seems like the getUserMedia() stuff is not supported by any browser in iOS.
Moreover, I am planning to put this on a WebView in a native iOS app. This sounds like a really far cry.
I wish someone could point me towards something that helps me build a video streaming app (hopefully using HTML5), that works uniformly for iOS and android (without TokBox).
You might want to look into Ericsson's Bowser App http://www.ericsson.com/research-blog/context-aware-communication/bowser-openwebrtc-released-open-source. It claims to provide WebRTC on Android and IOS. Apparently the App is currently under review in the App Store so if you wait it may just be a case of downloading the App. However it's also open source so if you can't wait then you can build it yourself https://github.com/ericssonresearch/bowser.
getUserMedia and WebRTC Peer-to-peer connections APIs are not supported in iOS.
One of the reason is that at the moment efforts around WebRTC focus on VP8 video codec which Apple and Microsoft do not support natively. Support in the near future is unlikely with Microsoft pushing for its own standard.
Doing what you want on iOS requires you use a native iOS compatible solution like OpenCV which supports video capture. You can find on Google tutorials on how to implement a solution based on OpenCV.
good news, will be supported at Safari 11.0
https://developer.apple.com/library/content/releasenotes/General/WhatsNewInSafari/Safari_11_0/Safari_11_0.html
Which is the WebView of a PhoneGap app, is the Safari mobile or desktop one?
Is it possible to use WebGL in PhoneGap apps? If not which they work around to use them being able to submit the app to the Apple Store and Android Store
Will I be able to submit to Apple Store a PhoneGap app that uses WebGL?
UPDATE:
iOS 8 brought WebGL support on the UIWebView and WKWebView, so if you don't want to support previous versions you can use it without CocoonJS
See more details on ludei's website
OLD:
If you want to create HTML5 apps with WebGL for iOS and android, try CocoonJS
Right now it's the only way to create WebGL apps that run on iOS and android
I just figured out your issues in two points.They are-
phonegap build app links won't open in safari. For More details Please check HERE
Neither the iOS nor Android browsers support WebGL so it is pretty much a non-starter in PhoneGap.
Apple are clearly working towards supporting WebGL in a more general sense, as can be seen in their support for it in iAds.
It’s possible to take advantage of WebGL using standard embedded web views ( using private APIs).
check HERE too fro browser support.
I personally recommend Ejecta for it being open source:
https://github.com/phoboslab/Ejecta
The Android port doesn't seem widely active, but the main ios port seems well maintained, supporting WebGl.
The latest Android versions support webGL directly - if using older Android versions, Crosswalk can also be used along with phonegap to utilize webgl support.
https://crosswalk-project.org/
From my understanding, the web bluetooth api found here:
https://googlechrome.github.io/samples/web-bluetooth/
is good with chrome across devices, but other browsers do not support it. Is this true?
this stackoverflow post says otherwise but it was two years ago and i'm just not sure if its even possible with IOS or a significant number of devices.
Scanning for beacons on iOS thru' web browser
I also saw this hackaday site that says you need the WebBLE app to do this, is that true?
https://hackaday.io/project/164733-pisugar-battery-for-raspberry-pi-zero/log/167217-use-web-bluetooth-to-connect-your-pi
Web Bluetooth Implementation Status is the best source for status.
On mobile: Android support via Chrome, Samsung Internet. iOS support via WebBLE.