Thoughts on App Store Experience
I’ve been selling software on the App Store for almost six years. Over that time, I’ve had both good and bad experiences.
Review Process
First, I will say that over the last six years the review process has become much faster. I remember it taking over a week from submission to getting my first app reviewed. It was rejected, of course, but a quick resubmit within 30 minutes led to an approval later that night. Getting bug fix releases out still took another waiting period though.
This time, I submitted yesterday afternoon and had my first rejection within a few hours. Revise, resubmit, reject, repeat a couple of times, and finally approved early this morning.
Most of the rejection reasons were clearly stated, but a couple were not, leading to a wasted cycle in the revising process. Additionally, most of these could have been avoided if Xcode did better validation before submitting in the first place. These were issues related to different settings in one configuration file vs another, that would be easily caught by Xcode. Other issues are more related to the vagaries of Apple’s rules that are not entirely clear until they tell you what they don’t like.
But in any case, the overall process was still much faster than it used to be, and that is appreciated.
In-App Purchases
Yesterday was the first time that I sold an application that made use of In-App Purchases (IAPs). I did this because Apple seems to be pushing the model of using a single application, rather than multiple versions of the same App (e.g. Lite, Standard, Pro, etc.) A small app I released a few months ago was initially rejected for “spamming” the App Store because there were three separate versions. Each had slightly different feature sets and different price points to allow people to choose the one that they needed.
Instead they seem to prefer that we use IAPs. This allows a single app that can be upgraded as desired (allowing the “freemium” model that seems to be quite popular among developers and loved/hated by users??)
So the latest product was released as a free app, with 2 basic IAPs.
Testing under the old model was relatively easy. You validate that the user has a proper receipt from the App Store, and you’re on your way. The new way requires multiple validations, but is still largely the same. The overall logic for the code is the same, but implemented differently.
The problem I had was this:
The app is available throughout the world
This is a new version of an existing app that a medium-sized group of people know and love (it’s no Angry Birds)
Said users were enthusiastically awaiting a new version, and some were downloading and trying to purchase within minutes of me announcing that it was available.
It’s always taken longer for new releases to make it to non-US app stores, but this was not a big deal. Users tend to understand that they can’t buy an app if it’s not showing up in the store.
This time, the app showed up in non-US regions relatively quickly, but they had difficulty trying to purchase upgrades.
So when I start getting bug reports within an hour of release saying that people are trying to give money for a product they want, but are unable to do so, that was frustrating. My first thought, of course, was that I did something wrong in the App Store code. It worked fine for me multiple times during testing in the App Store Sandbox, but there’s not a good way for me to test it in all regions around the world. And of course people don’t start conversations off with “I am not in the US” – fortunately a couple of email addresses were clearly in other countries leading me to confirm that it was non-US customers having trouble.
I reviewed the relevant code and couldn’t see any obvious problems. I created a debugging version to send to a beta tester in another App Store region. And had to sit back and wait.
Fortunately, I began to receive reports that purchases were beginning to go through in some regions (but others seem to be slower to catch up).
And unfortunately, it’s difficult to troubleshoot an issue that involves the App Store, rather than your own code. When researching it, I did discover the following:
Individual apps are marked as available or not available in different regions.
IAPs are not. According to Apple, if one can get the App, then you can get the IAPs. This is partly so that you can be sure to have access to upgrades for old apps if you move to a new region.
This made it even more confusing as to why users were having trouble.
Installation Troubles
I had a new (for me) issue in the midst of all this. The app worked fine for me. I then removed and reinstalled a few times during testing.
At one point, the following occurred:
Using Spotlight to search for the app, and then launching it with the return key causes an error warning that the app may be “damaged or incomplete.”
Using Spotlight the same way, but hitting Cmd-Return to view the app in the Finder, and then launching it works fine.
Deleting and reinstalling from the App Store temporarily resolved this, but it returned after a couple of launches.
I have not tried rebooting because I am in the middle of too many things to reboot at the moment.
Hopefully this is something that most user’s do not experience, since they download only once. But it is extremely frustrating when it happens, because it seems as though the problem is the app, not the App Store. But I control exactly none of the app delivery process….
Overall Thoughts
Over the years, my experience with the App Store has definitely been love/hate:
I do believe I get more “foot traffic” from being in the App Store than if my apps were not in it. I don’t have a comparison to be able to prove this. And I don’t know how big an effect this is.
During new releases, I usually spend more time troubleshooting App Store problems than issues with my software. Most of the time this has been, “Really – the app has been approved, but it takes a while to update the App Store”.
The In-App Purchase issue was the most frustrating I’ve had yet. Understandably, all customers see is that the download/purchase process seems broken. It’s not immediately obvious that (as best I can tell) it’s Apple’s fault, not my fault. Not being able to troubleshoot this is frustrating, as I would like to know (not guess) that it’s not my fault. Fortunately, customers are very understanding!
The issues with installing the app (aside from purchasing) are very frustrating. There seems to be a drop in quality of the App Store process from my perspective, but difficult to quantify.
Ideas for Next Time
If others are releasing apps in the App Store with IAPs, my advice is:
Choose to manually release the App once approved.
Wait at least a day before releasing it (no data for this, just a guess) to see if that helps things propagate internationally ahead of time. Not sure that it will, but worth a shot.
Two options:
Release the app in your native country first, ensure all is well for a day, and then release internationally.
Release internationally, but don’t announce it to your users. Try to get individual users across the world to try it out before a large group tries it. Also, allow at least 12 hours, probably a day (again, guess, not data-driven) to allow things to propagate throughout all regions.
Release at a time where you know you will be able to respond promptly to support emails. The difficulty here is that most of these issues have (for me) been in non-US regions, so they are in different timezones. Not sure when the best time would have been, but it was a long night, followed by an early morning after a couple of hours of sleep…