Hacker News new | ask | show | jobs
by 0m1cr0n 4988 days ago
The site generates a .mobileconfig file, which is an Apple plist file in XML format. The API is public, and easily reverse-engineered from other .mobileconfig files.

The "app" that gets installed is actually a webclip, not a native iOS application. They embedded the icon as a base64 string inside the .mobileconfig.

The webclip opens mobile Safari in fullscreen, with a link in the format of "http://mocava.de/ios/parental-control/profiles/UNIQUE_ID/par..., where UNIQUE_ID ties back to the choices you made on the setup screen of their website. This will allow Mocava to track usage stats, which seems like a fair trade-off for a free service.

You could roll your own version of this using Apple's Configurator application, however Mocava has done a decent job of streamlining the setup and installation.

2 comments

"Mocava has done a decent job of streamlining the setup and installation."

Thanks :) Usability wise, the hardest part was to explain that you have to install a profile to deactivate an existing profile. Also people associated the word "profile" with a facebook profile and thought it contains their personal data like name & address. To prevent confusion, the page I removed (almost) all instances of the word profile from the page.

The whole "profile" and "mobileconfig" nomenclature is confusing to most people, I'm a little surprised that Apple hasn't put more effort into this area.

Sorry if I came across as damning you with faint praise, you really have done a nice job of setting up the service for non-technically minded people who want to keep their kids safe online.

I can't find any reference to your privacy policy or terms of service. You appear to use a unique string to identify profiles, what are you doing with the data you collect?

The unique identifier was really just the technically simplest way to do it. I might eventually deduplicate the data and aggregate profiles with identical settings into a "canonical profile" if I can find the time.
Thanks for the explanation. I'd forgotten about mobileconfig.