This is an update to my previous post about the CircleAnywhere platform and mobile devices. I’m writing with good news: support for Android phones/tablets and iPhones/iPads/iPods is officially live! This is a ‘beta’ release, meaning that things should work pretty well, and there may still be some glitches to iron out as we onboard mobile users.
I’ll provide a high-level summary first, for those of you that wish to skip the details and just have the critical info to get online with your mobile device, and a more in depth section afterwards for those of you that want all the gory details, and to join me in nerding out a bit 😉
Before that, I want to talk briefly about the core technology we use for audio/video, called WebRTC. WebRTC is a cutting edge platform for doing real time media (like videoconferencing) directly in a user’s browser. I chose it because:
- It was a straightforward way to get a simple implementation going quickly (using Google Chrome)
- It holds a lot of promise long-term for the best way to easily interconnect the most people with the least amount of ‘friction’
The decision to use this core technology has dictated a lot of what we have (and have not) been capable of. Enough for now, I’ll go into detail more in the ‘long’ section below.
Let’s get you online with your mobile device!
THE SHORT VERSION:
For all mobile devices
- All events start with breakouts in ‘single video mode’
- In breakouts, you’ll see yourself and one other video, by default the active speaker
- You can upgrade to ‘multiple video mode’ by clicking the gear icon and selecting the mode
- IMPORTANT: Not all mobile devices will be powerful enough to show all the videos!
- The more videos shown in breakouts, the more powerful your device has to be to keep up
- If multiple video mode doesn’t work for you, then switch back to single video mode
For Android phone/tablet users
- Most phones/tablets that can run the latest version of the Google Chrome browser are supported
- Some of the cheaper phones/tablets may not yet be supported
- You can verify support by running our connectivity check
For iPhone/iPad/iPod users
- Your device must have the latest version of iOS installed (12.0 as of this writing)
- Older Apple devices may not run the newest iOS version, check here for currently compatible devices
- IMPORTANT: Apple’s real-time media implementation in the browser is new and a bit buggy. Nothing we can do about that until Apple improves things on their end.
- If problems come up, usually refreshing the tab in Safari, or closing and restarting Safari, will fix it
THE LONG VERSION:
While the WebRTC technology I described above is very promising, it’s still in the beginning stages, and has suffered from ‘interop’ issues for quite awhile, meaning that some browsers/operating systems/devices didn’t support it at all, and some that did used different approaches and had trouble communicating with each other.
This is particularly true of Apple and its products, which stubbornly didn’t implement even an initial version of the protocol until June of 2017 (mind you this effort started in 2011!). Why Apple dragged its feet so much is a matter of speculation…I believe it’s because Google was largely behind the effort, and Apple was attempting a power play.
With Apple finally joining the party, and most other vendors largely standardizing their implementation, we’re finally at a place where most computers and mobile devices can do real-time media right in the browser, yay!
There are several reasons why it’s most and not all computers/devices on the platform:
- A modern version of Google Chrome is required, and non-supported, legacy operating systems (like the venerable Windows XP) don’t get those updates any more, so they’re out. Thankfully this doesn’t affect many people.
- Android devices currently require a ‘hardware H264 encoder/decoder’ chip in order to properly process the video we send/receive. While most devices do have this chip, some of the more cheaply made phones/tablets do not, and cannot presently access the platform. There is an open issue with the Google Chrome software team to enhance their support of Chrome on Android to perform this encoding/decoding directly in the software, but it has not been finished yet — as soon as a Google Chrome version is released with this feature, all Android devices that can run the latest version of Google Chrome will be supported.
- Older Apple devices that cannot run the most recent version of the iOS operating system are not supported. This is unavoidable, as Apple didn’t add WebRTC support in their older iOS versions, and older iPhones/iPads/iPods can’t support the newer operating system.
I’ve tried to make reasonable compromises between maximum accessibility today, while recognizing that accessibility will naturally increase as these older/unsupported devices hit retirement.
Finally, a word about Apple: In my experience, Apple has not only been late to the party with WebRTC, and released a buggy initial version, it also has placed additional draconian limitations on its implementation that none of the other vendors have (an example being the aforementioned H264 video codec, which they force everyone to use, despite the technical standard including more codecs). This has made it a real nightmare for people such as myself who want to interconnect their devices, as I spent, quite literally, several months of my time rewriting major portions of this platform in order to adjust to their limitations. I did seriously consider telling Apple to fuck off, and not provide any support for their devices at all — in the end, I decided to set my philosophical/ethic considerations aside, and put in the work that resulted in the most opportunity for users to connect to our platform.