It’s been a long time coming, but we’re now beta testing limited support for Cleanfeed (guests only) on Apple portable iOS devices. This means it’s possible to record or do a live interview with a guest on an iPhone or iPad. The ‘too long, didn’t read’ version of this is… try it! But many people have expressed an interest in the details, so here’s a little more.
First, let’s explain why supporting the iPhone and iPad has been so tricky. It’s intuitive to think that installing the Chrome browser would be enough, and you could just pick up the same Cleanfeed as a desktop PC or Android phone; unfortunately that’s not the case.
As web browsers have got more complicated, so have the browser engines, now encompassing whole virtual machines for running downloaded third-party code (ie. websites like Cleanfeed.) It’s reasonable that if Apple want to enforce the ‘walled garden’ approach that is engrained in the iPhone philosophy then they would careful of such things.
The result is that the ‘Chrome’ web browser on iOS isn’t actually based on the Chrome engine at all; it’s a set of user interface around Apple’s own Webkit engine to give the Chrome user experience. So to get Cleanfeed working on iPhone and iPad means it must work on Safari.
Enter stage left, Safari
We’ve been tentative around the issue of supporting multiple browser for some time; its one of our most asked FAQs.
We’re big fans of multiple browser world (to the point where I’m still using Firefox as my main browser and Chrome solely for Cleanfeed.) But Cleanfeed is heavily reliant on some of the newest browser technologies; some things aren’t possible in Firefox and other browsers just yet, especially when it comes to quirks of advanced audio handling that’s relatively new to web browsers. Not all things are present in a ‘standard’ yet, and broadening the number of browsers we support would spread our footprint for for bugs and testing considerably, without necessarily enabling Cleanfeed to be used by a wider audience right now.
Until recently Safari had so little support for the audio and network handling that we needed, that we and the rest of the internet knew it wasn’t possible; it was a no-go. However, that changed and allowed us to re-visit the issue.
WebRTC and the grid of combinations
Several people have commented that “WebRTC is now available in Safari”, “Cleanfeed uses WebRTC” therefore, job done, surely? Unfortuntately that’s only half the story. A complex application like Cleanfeed has a lot more going on than just sending audio over the network in the way Apple intended, and things broaden the footprint further; we use:
- ‘getUserMedia’ and related media system to access raw microphones and audio devices
- WebRTC to send data over the network
- WebAudio to process, and record audio
- a means to cross audio between WebRTC and WebAudio, in both directions
All of this has to work in both browsers. Then, when the network starts getting involved we have a new array of problems that a website doesn’t normally see:
- Chrome connecting to Chrome
- Chrome connecting to Chrome on another platform (eg. PC/Mac)
- Latest versions of Chrome connecting to older versions of Chrome
- Chrome to talk to Safari
- Old versions of Chrome to talk to Safari
See how the introduction of a new browser has had an exponential effect in our bug footprint? Standards are good, and helping us here as they are developed by the community, but there’s also a difference between the ‘standard’ behavior and ‘good’ behaviour. An example for start being that certain operations can be very fast in one browser, terribly slow in another browser. The standards let you open and transfer audio, but say very little (or nothing) about sample and codec rates.
So, there you have a brief insight into some of the work going on here to bring you this first beta. We’ve focused on the ‘guests’ to a Cleanfeed session for now as this is by far the most asked-for feature; you can still host a session on a desktop PC or Mac and make the recording there.
We already have a few reports that the presence of the visual audio meters can be intermittent; we’re checking out if this is a bug in our own iOS code or the browser itself — please let us know your experiences too, on the beta email address.