About a year ago, I got contacted with an unusual request: how can users with iPhone to participate in WebRTC video conferences?
All other desktop browsers already did support WebRTC, and Safari on Mac needed a plugin for it. But Mobile Safari never supported Flash or any other plugins. But I knew how to achieve this and this resulted in the development of the Klickerr.com app.
Since Klickerr.com launched today, I would like to tell you something about it. Besides the question how I solved the riddle, you might like it as way to offer coaching services for pay to an international audience. Or you might be interested in learning new skills from international experts.
On Klickerr experts in a wide variety of topics offer their services via video conference. Experts can offer their services in all languages they can speak. They can specify a topic, a duration between 5 and 90 minutes and a price between $5 and $1000. Klickerr keeps a small percentage of that and the rest is paid out to the expert.
Be it that you want somebody to critique your yoga postures or you need marketing advice. Be it that you want to understand some area of physics or deepen your programming skills. Klickerr will have you covered … when enough experts have listed their services. Of course, I was the first to add something to the Technology – Apps section.
As a service provider – I prefer the term “expert” – you can specify at what times you’d be available to be booked. Clients send an inquiry for a specific service and time. If the provider accepts then the client has to pay in advance for the service. Then all that remains is for both parties to meet in a private chat room and commence the session once the scheduled time arrives.
As an expert you probably want to have the session on your Mac and in Chrome, because there you have a built-in camera and the ability to share your screen.
WebRTC on iOS
As a fresh startup Klickerr needed to have their platform first solely on the web. As alluded to earlier, most desktop web browsers already support WebRTC natively or via plugin. But how did we get iOS to play with that?
The answer is a combination between universal links and an iOS WebRTC SDK. Users can do all the session initiation from Mobile Safari, but when it comes to starting the video conference the link leads to a different sub-domain which is set up in the site’s app association file as being representable by the iOS app.
The process is explained in-depth by this talk I gave in 2015. At this time my experience was with integration the prod.ly site and app. But having researched this a year earlier was the basis for the approach I suggested to Klickerr.
Tapping on the session link opens the app which you needed to have installed before hand. If you haven’t installed it yet, the universal link opens from the web server and there you find a smart app banner and instructions on how to install the iOS app. The universal link contains all information to hand over the video conference to the iOS app.
From WWDC 2017 we know that some form of WebRTC- support is coming to Mobile Safari, but the current solution via app makes Klickerr available to everybody on iPhones and iPads right now.
Some Mild App Review Trouble
The app does not do anything if you don’t open it via universal link. So we only show a label that no session is currently active and that the user should go to klickerr.com to start one. I had a simple openURL to leave the app and go into Mobile Safari.
App Review didn’t like that, referencing “Section 4 – Design Preamble” from the App Review Guidelines.
We noticed that the user is taken to Safari to sign in or register for an account, which provides a poor user experience.
They kindly provided us with this advice:
To resolve this issue, please revise your app to enable users to sign in or register for an account in the app.
We recommend implementing the Safari View Controller API to display web content within your app. The Safari View Controller allows the display of a URL and inspection of the certificate from an embedded browser in an app so that customers can verify the webpage URL and SSL certificate to confirm they are entering their sign in credentials into a legitimate page.
The openURL was easily replace with a Safari View Controller. Once I had submitted this update, version 1.0 passed and got approved.
Some time passed and we did some UI improvements all around the app. This update was rejected for a different reason, referencing “Section 4.2 – Design: Minimum Functionality”.
Your app provides a limited user experience as it is not sufficiently different from a mobile browsing experience. As such, the experience it provides is similar to the general experience of using Safari. Including iOS features such as push notifications, Core Location, and sharing do not provide a robust enough experience to be appropriate for the App Store.
One several occasions I had stressed the fact that Mobile Safari was incapable of WebRTC and therefore the app was providing functionality that a web site couldn’t on iOS.
I couldn’t believe that Apple wouldn’t understand this distinction, I even offered to remove the link to Klickerr.com or the Safari View Controller because those were the only way how you could assume that the app was a repackaged version of the website. This went back and forth about 5 times with 2 new submissions that also got rejected with the same reasons.
I was at the end of my wits, but in the end the response offered:
Please let us know if we misunderstood your app, please let us know. So we can set up a phone call to understand your app.
Three days later I got a call from the United States, while flying with my drone next to a wind turbine. Once I had landed it, I explained to the friendly app reviewer why this app was necessary for users to be able to participate in Klicker. The worst case scenario would have been that would have to go live with the previously approved 1.0 version which would lack the improvements I had made, but would technically be functional.
After a bit of explaining, imploring and some mild begging, the reviewer agreed to grant us a one time exception. We would get the update approved, provided that the next update would contain functionality so that users could launch video sessions from within the app.
App Reviewers are Human, too
The learning from this episode was this:
- if you are trying something new where you don’t know that Apple would approve it, make a minimum viable first version and see if Apple approves this. You can hold it back from being published if they approve it outright, but you gain valuable insight.
- if you don’t seem go get anywhere by responding to messages in Resolution Center, then ask for a phone call to explain in person. Having to dedicate some time for a conversation with another human being might cause the app reviewer to be more receptive to your explanations and special circumstances.
- reviewers have the Guidelines, but have some liberty to interpret these. Sometimes you can be successful by explaining how a slightly different interpretation chimes better with the rules and cause the coveted approval to occur.
- it goes without saying that you should be polite, appreciative of being granted a conversation and respectful. You can catch more flies with honey than you can with vinegar.
I think the idea behind this platform is great. Google tried something similar in 2013 – limited to native English speakers in a few countries – but they ceased 2 years later, because it didn’t grow at a pace they had wanted to see. The service offered by HackHands might be seen as similar, but this service is driven by clients seeking help for specific topics with a sort of auction system for finding a provider and exclusively for programming topics.
The iOS app I built for Klickerr is only a small part of the entire platform. Nevertheless I would like to see it flourish and become the place to go for one-on-one expert advice, if only to know that had a small part in it.
Please check out the Klickerr.com website and if you feel like you have some coaching in you, list your services! Or maybe pass on the word about this being launched.
Also published on Medium.