Updates on Apple / PhoneGap

Things have been busy over the past few days, which is the reason why I haven’t had a chance to post about this until now. But for the PhoneGap community, I have some good news and some bad news.  First, the good news: I got a phone call from the Apple app reviewer that was reviewing my test app.  And before I go any further, I want to say a few things.

When I crafted my original letter to Apple, I was very cautious how I wrote it, because I don’t want to give anyone the wrong impression. I don’t have any problems with Apple or the fact that they have an app review process. I actually think the strict regulations Apple has with its review process is a good thing for users. If left to their own devices, app developers would release anything and everything whether it had merit or not, in the hopes of earning even a tiny bit of a buck.

That’s not to say that I have nothing but a big warm and fuzzy feeling for the review process, just that it’s like going to the dentist. It’s painful, but you’ll thank them later in life when your teeth would otherwise be falling out – or, in the case of the App Store review process, when the app store would otherwise be overrun with endless seas of buggy and non-functional crap.

Most developers out there seem to vilify the app reviewers, making them out to be legions of sadistic bureaucrats who like nothing more than to waste developer’s time. I’ve never been comfortable with that, because people simply don’t work that way. The app reviewers don’t have an easy job.  They’re not developers, they don’t know how to write apps, they just review them to ensure they meet the guidelines Apple sets forth.

So when they reject your app, it’s not because they’re out to get you, they’re just enforcing policy.  If they make some assumption about your app, perhaps you’re not giving enough information to help them along?  There’s a comments field that you can use to help the reviewer of your app do their job, instead of throwing an app over the fence and saying “Here, take that”.  They don’t owe you anything, and are simply making sure that they cover their asses.  Could you imagine how bad it looked on the guy who reviewed the “Shaking Baby” app? I’m not sure if he lost his job, or just got seriously reprimanded, but this is the sort of thing these guys are trying to prevent.  But because of the black-box nature of the whole process, it’s easy to jump to conclusions.

Finally, before I dig into the meat of my conversation with my App Store app reviewer, I want to point out a few things that many developers seem to have forgotten in their haste to get their apps released:

1.    The app store is a voluntary process; you don’t want to play by their rules, you don’t have to.
2.    All developers signed an agreement that states Apple can choose to reject any apps they want based on their own reasons. There’s no human right’s violations committed when Apple decides that your app isn’t fit for the store for some reason.
3.    Apple is a business, whose goals are to advance their stock and market position for their investors. While some of Apple’s decisions may seem confusing from outside the black box, keep in mind that they are prone to keeping secrets until they throw down their big announcements at whatever annual conference they’re attending. So there are sometimes more reasons why they wouldn’t want some feature leveraged by app developers if they plan to do something much the same themselves. Is it fair? No. Is this what they’re doing? I have no idea, this is speculation on my part.

Now that I have that out of the way, I’d like to relate to you my conversation with Steve from the App Store.

My test app, aCookie Fortunes, was released to the app store ages ago, back when I was still learning how to use PhoneGap (and before I even started to extend and improve it). It is full of bugs, and is badly in need of an update. I made my PhoneGap improvements, and subsequently made a bug fix release. At that point, it sat in Apple’s queue since March 18th.  I sent a few emails asking where things were with it, but never got anything more than the boilerplate responses.

So I suppose the app store reviewers were just chewing through their back-log of apps.  They’re basically a support department, and they do the best they can.  So when Steve got around to my app, he looked at the notes, saw the words “PhoneGap” in it, and was about to click the reject button.  But since it had been sitting in the queue for so long, he thought he’d do the right thing and picked up the phone to call me.

Let me pause here for dramatic effect.  This is awesome customer service, in my books.  He certainly didn’t have to do this, and it shows great initiative on his part, as well as wonderful diligence.  All he had to do was click “Reject”, and carry on with his day.  It’s so easy in this day and age to dehumanize the person on the other end of the computer screen.  To some people I was an entry in a FileMaker-Pro database.  Instead of treating me like a number, he called me on my cell.

I was at work at the time, but took the call anyway – hey, this was big news, and I’d been waiting for over 3 months.  Over an hour later (1:15 to be exact) I quickly sent out a message to Twitter and got back to work.  We’d covered a lot of ground in that conversation, but what it basically boils down to is this:

Apple has an unfounded hate-on for PhoneGap.  Most likely their misconceptions are based on early releases of PhoneGap, and they haven’t taken a second look since then.  Perhaps a few bad-apples ruined it for the rest of us (pun totally intended).  But these impressions are difficult to change.

Steve and I went through the list of every problem PhoneGap was perceived to have, and went through every single point of every single one of the Apple app guidelines that were listed as things that PhoneGap violated. It took a long time, but he would read out each problem, and I would explain to him why they were just flat out wrong.  Some of the problems included the misconception that we were linking to and including a custom-compiled version of WebKit, that we had our own code interpreter built-in, and that we were using private and unpublished APIs on the phone.

I pointed Steve at my Github source, at my blog, and at the PhoneGap mailing list.  He’s of course busy with his job too, so he didn’t have the time to read through the glut of articles that have been posted everywhere, but I did mention that I’d issued an open letter to Apple regarding this, and that it had been picked up by a number of sites around the ‘web.

He asked if there was a way to write my app using something other than PhoneGap, so I could just get it released easier.  Certainly, there are alternatives, and since it’s just code, anything is possible.  But after explaining to him that the goal of PhoneGap is to write cross-platform apps in a Rapid Application Development fashion, there’s little to no point in creating some of these apps in the traditional way.

And largely, my persistence in this matter is more than for my own benefit.  I’m trying to help out the community at large, and want to make sure that all the PhoneGap developers can use it to build great apps, and not have to worry (any more than usual) about Apple rejecting their apps.

So Steve and I came to an arrangement.  He’d agreed to do his best to work with his superiors to try and reverse their impression of PhoneGap, or at the very least evaluate each PhoneGap-based app on its own merits.  I have no problems with Apple rejecting a crappy PhoneGap app, nor do I have a problem with Apple permanently banning a developer from the App Store if they try and do something subversive, like change the behaviour of an app remotely after an app has been released to the store.  But those are things that any developer can do, whether based on PhoneGap or not.  And if Apple comes back with a list of things that are problems still, then we can fix them.  As I put it, “I can can fix almost anything with it.  I have a hammer, I just need to see where the nail is so I can hit it.”

I’ll post more about this later, after I talk with Steve next.  I have a few experiments I’m going to run, and Steve will keep an eye on the apps I release over the next few weeks, to see what happens with them as the percolate through the app review process.  He’ll also be filling me in later if he was able to make any progress with his superiors.

Before I finish up this post, I’d like to say a big thank you to Steve.  If any of his supervisors are reading this, I want to let you know just how great he is.  He treated me with courtesy, listened to my problems, and didn’t prejudge me or my app based on any preconceived notions about PhoneGap or app developers as a whole.  He listened to what I had to say, and went above and beyond the call of duty to help me get my app released, and to help me in getting PhoneGap acceptable to the developer community at large.  These are all things he didn’t have to do, and his day would undoubtedly have been easier had he just clicked the “Reject” button.

And in the end, he actually thanked me for being so friendly and willing to help him through getting my app released.  Steve, right back at you, and I look forward to working with you again.

22 thoughts on “Updates on Apple / PhoneGap”

  1. Pingback: Open letter to Apple iPhone Developer Support | Web Developer's Life in Beta

  2. Pingback: Bugzappy’s Blog » PhoneGap Getting an Informal Second Chance with Apple

  3. Michael: Interesting experience. Thanks for sharing. Been looking at using PhoneGap for a couple of apps so your post is timely and relevant.

    I would be curious to see if Apple approved the same app developed using the new cross-platform, Titanium Mobile (Beta) http://www.appcelerator.com/products/titanium-mobile/ from http://www.twitter.com/appcelerator

    Kindly keep me posted via email or twitter if you decide to try this route.

    Thanks: http://www.twitter.com/aainslie

  4. I think everyone in the “PhoneGap community” owes you a big “Thank You” for making this effort, Mike. In fact, this *is* the only road to salvation – working *with* Apple to get over this barrier they’ve put up toward PhoneGap-based apps. And the only way that’s going to happen is if we have some insight into what they are fearful of. This is a good step forward, if not a fully satisfying answer. yet.

  5. Thanks, I appreciate it! I know that, if push came to shove, that I could leave PhoneGap behind and move on to building native Objective-C apps. But frankly I’m pushing this point and want to see this discussion with Apple through to the end, because not everyone has the option to develop in 100% native Objective-C.

    Plus, to be totally honest, it’s just so much easier to build an app in HTML/JavaScript. Getting to market faster certainly has its own appeal.

  6. Mike,

    Thank you. I’ve really been on the fence lately and this is enough for me to push through and get started with an app I need to do for work. No guarantees I understand, but really encouraging.


  7. “Some of the problems included the misconception that we were linking to and including a custom-compiled version of WebKit, that we had our own code interpreter built-in, and that we were using private and unpublished APIs on the phone.”

    Hi, just like I said in the google group, I was at an iPhone seminar in NYC this week and the presenter said the same thing about why Apple has a problem with PhoneGap.

    Maybe now that PhoneGap is all cleaned up they will see it under a different light.

    1. I’m not sure what other developers are doing, but it seems to be a hit-or-miss approach. If the reviewer notices, then the app is rejected. There still are apps being released to the App Store that are built using PhoneGap, but I can’t speak for those other developers for what they’re doing different, if anything, from other developers.

  8. NachoMan,

    First of all, I have to express my gratitude for your developments with PhoneGap. It has been a great launching pad for myself getting started with developing iPhone apps.

    I recently used your “buildprocess” branch on your github to publish my first app (iMobiles) into the App Store. I thought I’d share my experience because I know a lot of developers are curious how long it takes to get approved. It took a little over 2 weeks for my app to get a status of “Ready for Sale”. I didn’t mention anything about PhoneGap when I submitted the app. I didn’t intentionally leave out PhoneGap in my app description. In fact, I submitted without a description, not that I believe you should do that. But my app was so simple, that it really didn’t warrant it. It’s just a simple little flash card app for kids who love wheels. Touch the screen, and you get a new image.

    Anyway, just wanted to share that and also say thanks! You da man!

  9. Hi Mike,
    There was an article on /. about PhoneGap. I downloaded the code today and looking at PhoneGapDelegate.m method webView(), you will see a call [obj performSelector:NSSelectorFromString(constructedMethodName) withArguments:args withObject:options]; Thanks to Obj-C this is a fully general interpreter along the lines of LISP eval. With this line, and an external link you could execute pretty much anything in your App.

  10. Hi Mike,

    Nice posts, thanks for sharing. After some work on objectiv C, I was wondering if I’ll start using phonegap for small project that could benefit the cross platform feature. The “hit or miss” startegy on the other hand is really not a good one. Any update on that subject ? Did you stop using phonegap ?

  11. Pingback: PhoneGap officially permitted on the App Store | Web Developer's Life in Beta

  12. Very important post. Many thanks.

    I just came across Phonegap and I think part of the problem is the way I want to use it. If you use it as an ‘app’ generator which happens to be cross-browser/device capable, then Apple has no problem with it (maybe). If you use it as a cross-browser/device interface, ie. you load (purchase) it once (or not at all) on all different devices, and then the web developer has access to mobile functionality, Apple won’t go there since you won’t need the ‘app’ store any more. And of course, this is exactly what I want to do.

    So Phonegap has little interest for me, since I don’t build ‘apps’ for the i-Phone store and all I want is cross-browser functionality. If it is ‘controlled’ by the device maker and not really ‘open source’ in the sense that use is independent of the manufacturer’s acceptance, which can be rejected at any time, why would I want to invest must time and effort with it?

    I might be wrong, but I don’t think Phonegap’s long term interests are really in line with Apple’s. Being able to create apps which work on a multitude of phones at one clip doesn’t sell more Apple apps.

    Please don’t get me wrong, Phonegap looks like great code, well written and just what developers want. Just expressing concerns that could be long term problems. Any thought?

  13. @Dwight Vietzke
    That’s fine; if PhoneGap doesn’t do what you want, then just don’t use it. PhoneGap isn’t trying to solve your problem, which frankly doesn’t seem solvable on the App Store. It looks to me like you’re trying to circumvent the App Store, and whether you build something in PhoneGap or anything else, Apple won’t accept it.

    PhoneGap is a platform for developing apps, and nothing else. It’s not trying to be a web-app generator, portal, mini-app store or anything else. Look into what it’s actually meant for, since there’s plenty of documentation and descriptions of what it’s used for.

    And in my communications with Apple directly, they’re actually quite excited about the prospect of PhoneGap. It lowers the barrier to entry for creating applications on the iPhone and other devices, allowing developers who don’t or can’t code in Objective-C to publish applications.

  14. Michael,

    Thanks for all the work on PhoneGap, and for this dialog in public. As a developer, both are quite helpful. PhoneGap is imho ingenious, and a great dev path for mobile devices. I hope this path matures and becomes streamlined.

    I see that the AppStore has approved > 50 iPhone apps with PhoneGap currently, was wondering, does that mean this issue with the extra-critical approval process of phonegap iphone apps has been put to rest?

    It reads to me as: if your app is solid, whether built with PhoneGap or elsewhere, it will be accepted along the same [somewhat painful] AppStore approval processes as anyone else? Is that an accurate statement?


  15. @Mark Holton
    Yes, that indeed is accurate. I’ve recently gotten a client’s app released to the app store, Parking Mobility. Apple’s developers were doing a full technical review of PhoneGap, apparently, and were holding all PhoneGap-based apps in their queue until they finished. That’s why many developers were getting automated emails saying their apps were taking longer than usual.

    Parking Mobility is built on PhoneGap, and once Apple, and then Apple’s developers, vetted PhoneGap it was a simple matter for Parking Mobility to get approved. Admittedly, we had done a ton of work to make the app rock solid before releasing. So if you don’t commit to the same degree of pre-release bug testing, you might have Apple reject your app due to legitimate problems.

  16. Hi Michael,

    Hey, I didn’t mean to offend anyone… so sorry if I did. My interests are stricly outside of Apple’s App store. I really could care less about iPhone apps since I don’t have an iPhone myself. I was really just curious about the javascript interface for use on the web in general. The idea being, my web page responds to movement, camaras, sound, etc. from the iPhone (and later other phones). And you may be right, maybe this would render Apple app’s less exclusive (circumvent is such a harsh word), but I guess that is my point. Eventually some manufacturer will allow javascript to access advanced features on their pda’s or smartphones. I just wondered if PhoneGap did (or will).

    So I guess my answer is no. As long as PhoneGap works with iPhone app’s, it will never expose functionality to a user’s browser. I do appreciate the honesty.

    All I was saying was that I can see why Apple would be kind of touchy about your basic ‘design once’ for multiple platforms talk. Once an os allows it (Android?), PhoneGap or something like it, might become much more useful if it could provide a framework which allowed std methods of adding advanced features access to any pda or smartphone’s web browser.

    No worries though. Someone will do it if it makes $ense.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.