Experiencing the App Store: A Developer’s Perspective and Rant

I am, by no means, an expert developer. The code that I write is of the same quality seen from any novice in any trade or hobby: it’ll do but it certainly isn’t professional. The code that I write is passable, functional but lacking an elegance that you’d see with someone who has extensive formal training. Despite this, I can put together an application in a variety of languages that work, are relatively bug-free and efficient enough to preempt end-user cursing. Given that this is the reality of my skills, I find that I’m confident enough to put applications up in relevant markets for download by end-users, individuals that I’ve never met but I can reasonably assume will bear with the app if they ever had the desire to use them. In this way, I’ve experienced what it’s like on the “other side” of the App Store; I’ve gone through and fought with the App Store approval process, having both experiences defined by success and frustration. Today, I want to focus on the latter and highlight why the App Store model, despite the merits that come with close scrutiny of the content submitted for approval, is fundamentally broken.

 

The Good

In many ways, the App Store has a variety of advantages over something like the Play Store (the only other app distribution channel that I have familiar with so I limit my comparison here). Whereas the Play Store lacks individualized scrutiny of each application submitted, Apple inspects applications submitted for approval. I figure that this must involve humans – the App Store emails from iTunes Connect (the service responsible for preparing and uploading application content for approval) all but disappear on weekends and holidays. End-users reading should take solace in this fact for you have a level of guaranteed scrutiny that you won’t see with something like the Play Store (this is double edged however – honest developers can push out bug fixes and updates many, many times faster on Android than they can on iOS). Although this doesn’t secure the platform with any sense of perfection, it does insulate the platform from sloppy and rather easily detectable flaws and malware.

The App Store approval process also acts as an extra layer of quality control. Rejection notices can include justifications rooted in concerns over quality. After all, it’s Apple that benefits primarily (let’s face it, the App Store is for Apple’s benefit first, developer benefit second) and to let anything enter the marketplace is to potentially tarnish reputations that Apple crafts in its marketing practices. By being selective in that which can piggy back off of the platform, Apple retains a tight leash over who and what gets privileged. Why is this a good thing? Simply put, it ensures a particular standard of quality, one that is relatively high with Apple.

Third, a longer approval process might encourage developers to think about their own quality standards to a greater degree than with something like the Play Store. By making the process drawn out (relatively speaking), Apple has incidentally create a culture in which developers can expect releases to take longer to propagate across devices. If it takes five days to get approval (not all that uncommon), developers might be more likely to make sure that everything works because if it doesn’t, bugs linger in the user base for days at a time. With the Play Store, a marketplace in which app updates are available within hours, developers can be confident that any mistakes can be fixed quickly and thus, apps can be pushed out with a smaller concern or regard for quality. In other words, if it’s easier to push out bug fixes, you can worry less about the consequences of bugs because fixes can be pushed out with relative expediency. While this does ensure quicker releases of bug fixes, it does encourage a culture of “let the users be the beta testers.”

The Bad

Let me tell you about a recent experience that I had with the App Store. As part of her teaching, I created an app that contains the readings for a course that my partner is leading. It gives students the chance to have the readings with them at all times and it lets students save excerpts for assignments in which they might want to reference content. I submitted the app to the App Store, realizing after the fact that a minor bug was present (purely cosmetic but a nuisance nonetheless). I let that one slide and intended to upload a bugfix release once the initial version was up. A few days after uploading the binary, I got a message from Apple asking me for some clarification on a few questions regarding its purpose and whether or not it was linked to an already existing service. While I had never seen this before, I went along with it and answered the questions as honestly as I could. A day later, I found out that the app had been rejected because the “market” for the app was too small. In other words, the potential userbase was too small and consequently, it was argued that this would detract from the overall experience of the App Store which is meant to provide a set of applications useful to large portions of the user base.

While Apple admitted that what constitutes “niche” is arbitrary (their wording), they noted that I could fill out an appeal if I had reasonable justification. That said, they argued that I couldn’t use precedence – if an app in the App Store appeared to target a similarly sized niche market, I couldn’t reference that as justification for its inclusion. Quizically, I decided to forego doing that (despite the fact that precedence is important) and proceeded to make a claim for its inclusion in the App Store on pedagogical grounds. I argued that the application was being used in an educational context (a context Apple purports to support with unquestioned enthusiasm) and that the app was being piloted with users in a specific classroom with the possibility that it might be used in other classrooms at some point, an argument made to directly address the “niche” argument.

My response from Apple was rather disheartening. The appeal was rejected, with Apple making the claim that the original decision was valid and that letting an app with a small target market would detract from the overall experience that Apple was trying to cultivate. Thus, Apple rejected the application not on technical or legal grounds but instead, rejected it because my target audience didn’t meet Apple’s arbitrary (admittedly so) criteria for acceptable market size.

As a possible solution, Apple suggested two things. First, it suggested that I distribute the app through an ad-hoc distribution server. This requires me to get the UDIDs of every single student who uses an iOS device in the class and then generate a provisioning file that includes each and every one. A simple mistake in copying over this code means that the app won’t work at all for that user. I’d also have to track each device – if a new one is added (pretend that a student gets a replacement phone or a new iPad), I have to remove the old one from the list of authorized apps, add the new UDID, recompile the app and update the copy of the app for every single user. Let’s assume for a moment that this was feasible. Were this the case, I’d have to setup an ad-hoc app server and then manage this. None of this is pleasant, easy or worth the effort.

The second solution involved Apple’s recommendation that I make a web based version of the app. In other words, Apple told me to rewrite the application such that I don’t run up against their draconian restrictions. In effect, Apple has said “one possible solution is to obviate our rules all together by ignoring the only market place available for the platform.” How this is a helpful solution escapes me.

The outcome here is simple – iOS users in this classroom get nothing and can watch their Android using classmates use the app. Why can they watch them? Simple: Google couldn’t care less how big the target market is because, presumably, they want developers to decide for themselves how large the market is. Google also seems to realize that niche products do not destroy or tarnish the quality of the platform as a whole and instead, make it easier to use the platform for very specific purposes. Even if they didn’t, the ability to install apps from wherever you want means that even if Google had similarly restrictive rules, I could distribute the app myself without having to contrive some sort of ad-hoc solution that required validating and authorizing individual devices. From where I sit, this is reflective of everything Apple does wrong about development for their platform. All steps in the process are convoluted, time consuming and require different parts to work together (you register the app using iTunes Connect and then have to use an application on your Mac called “Application Loader” to upload it…for some reason). I’m not saying that Google’s process is perfect for those criticisms of their process in relation to the benefits for Apple users are still worth noting and highlighting. What’s important here though are the benefits as they exist for end-users, not developers (and consequently, perhaps contradictorily so, for end-users). It would appear that Apple is doing what they can to make development miserable for iOS devices so as to ensure some sort of quality or standard for end users. Does that have to be the case though?

 

Conclusion

I don’t want to make it sound as if application development for the iOS platform isn’t worth it. The platform as a whole has benefits for developers in particular locations (if you’re in North America, you can’t ignore it). Instead, I bring this up to generate discussion around the difficulties experienced by those behind the scenes. The excessive attention to detail on the part of Apple gets offloaded to developers such as myself whose intentions can be as admirable as “trying to help students learn by making access to content easier.” I’m not trying to make myself sound like a victim either (indeed, this process has convinced me that developing for the iOS platform isn’t worth it and, as a consequence, has clarified a few things for me). From this, I hope to illuminate the consequences of the walled garden approach and not just for developers, but for end-users. From my experience, I now know that a portion of a class loses out on a possibly beneficial mobile tool and that there’s very little that I can do. Who knows how many other “niche” iOS markets have lost access to something.

Do you have any experience developing for iOS or any other platform? Do you have similar or different experiences?

8 Comments: 

  1. chscag's Avatar
    Well written article Van. I learned a great deal about how Apple interacts with developers and what constitutes an "acceptable" app for inclusion in their App Store.
  2. vansmith's Avatar
    Thanks. Yeah, it was an interesting process that gave me some insight as to how Apple regulates apps for inclusion into the App Store. It's worked well for them (they have a tremendous ecosystem) but what an odd process and response.
  3. TattooedMac's Avatar
    WOW. Great Article Van.
    Damn you be English Professor, I had to look up a few words and their meaning All good now . . .

    Mate I really do sympathise for you.
    Im surprised that the specifically came back to you and said you can't reference another App that has a small audience in your counter claim. It feels as if they are trying to save them from double standards, and then having to explain themselves why 'x' App is allowed in, and your not.
    What gets me, is there are Apps out there (knowing the Developer helps in this statement), that in 2 yrs on the App store, has only had 780 downloads, tells me, that, that isn't a App with a big audience, and not worthy of being on the App Store, and to top it off it was free as well.

    Knowing this, and recalling our rejection notice, you have to ask yourself, what categorises it as a App not with a big Audience ? I dare say, because of what it was, you had it as a Free App ?? Yes ?? So why would they ban it at all. As you stated, Apple are big on the Education side of things, so why refrain people using it at all ??

    I myself have had my first App rejected too. But their decision for me, was it was a copy cat of a App (namely Flappy Bird) and wasn't playable, and was too hard to advance in the game to make it a enjoyable game for people to play. (but in their by the book wording)
    Granted, it was a Flappy Bird Re-Skinned, but still a lot of my own code, and it had different graphics, too. Instead of Flappy Bird, I had a Semi Trailer truck on a road, and the pipes where changed to Barriers, but because I had a trailer on it, it was difficult to get through the barriers unscathed.

    I had a lot more work to do on it, as you could of been pixels off the barrier and it would mark it as a crash, and because I didn't have the barriers at a wider pre-defined distance, to get the truck through, and trailer, was very hard to do. You could get the Prime Mover through, but because of the trailing trailer, it cut corners, and I didn't know how to get that to follow the line of the Truck and not cut a corner when I turned the truck left or right.

    I used Portrait mode as well, so in my eyes, it was far enough away from Flappy Birds (so I thought) to get past the Copy Cat, requirement. Heck, there are hundreds of Flappy Bird clones out there now, so you just have to wonder sometimes.

    Was I disappointed ?? Yea. It would of been nice to have a App on the App Store to call my own, but I learnt a lot from the process. Will I try again with it ?? Probably not. I might wait until o know a little more and change the ways its played from touch, to movement, but then I will have to change it to play in Landscape, so maybe not. . . I am already working on "The Next Big Thing" but with iOS 8 and Swift, it like I need to relearn it all over again.

    I see Swift easier than Obj-C, but I need to be more proficient with Obj-C first before trying to learn something new . . . .

    Still nice write up, and its good to see it from someone that has experience in both markets, and platforms. Maybe I should rework it for the Google Play Store ?? I got no idea where to start though lol
  4. dtravis7's Avatar
    Outstanding article Van. I have learned a lot from it.

    Now that I have my Samsung tablet, I am starting to get a taste of the Google Play Store also. So far all has gone well with both stores for me.
  5. vansmith's Avatar
    You should see some of my academic articles.

    My apologies though - I tend to have difficulties separating the two types of writing sometimes.

    It was frustrating for two reasons: Apple admitted that their definition of small audience was arbitrary and despite my argument that this was not only free but designed for educational purposes, they said that it couldn't be included. It's hard to tell a class that only one portion of the users can use the app while the others are left out.

    "Big audience" is arbitrary but I'm guessing that it has to be in the hundreds at a minimum.

    Cross-platform frameworks are the key. One codebase, multiple platforms.

    I'm working on an app right now in Flex and all it takes to build for both iOS and Android is a checkbox:

    20595

    Sure, you don't get native controls but it doesn't mean that it has to look ugly:

    20596

    20597

    Not a single character of code is different between those builds and they're both ready to go for their respective stores.

    All I need to figure out now is how to make icons (I have no aesthetic sensibilities or talents in any way, shape or form).
  6. TattooedMac's Avatar
    Flex aye, I'll have to delve into that at a later date.
    As to the icon, I think you will find this very helpful then. Michael Flarup is a Icon guru and have ben using this Template in PS or Pixelmator since I found it.
    It can do iOS as well as the Android Launcher Templates, as long as you have the idea of what you want in it, this is just brilliant IMHO . . . . If all else fails, I've also used QuickIcons once I have the Icon made, drop it into this App, and it shoots out Android, iOS, Window Phone, Blackberry, Mac OS X and Windows Icons, in the sizes and 2x@ as you need them.
  7. cwa107's Avatar
    Their justification - that the market is too small - is completely bogus. I knew that they were draconian in their "quality" standards, but this is just absurd.

    As much as I don't care for the Android experience, I must say that the more I hear of stories like this, the less I feel like supporting Apple with my dollars.
  8. vansmith's Avatar
    The most frustrating part, of course, is that it costs Apple next to nothing to service a small market that they don't even need to do much for (since, after all, I'm the developer and thus responsible for fixing and working with the users).

    The end result of all of this is that the app has effectively been discontinued. While I can continue to support Android users, I'm not a big believer in giving some students access to tools while others can't.

    The upside to Apple's system is the promptness with their responses. I had to change my address (which, oddly, required me to send in proof that I had moved) and they were all over it - they responded quickly and made the change immediately.
Leave a Comment