In the run up to the announcement of the new iPhone 6 and the Apple Watch, Apple also revamped iTunes Connect, the portal through which apps are submitted to the App Store. Unfortunately the new interface has a number of problems which I
spent wasted hours dealing with yesterday.
Beginning at the Beginning
The problems all started when I realised that my TXT-2-PARK app was supporting iPad devices when it really shouldn’t. Even if an iPad has 3G capability and has a SIM, it is not able to send SMS texts from these devices (possibly if it is jailbroken there may be a way, but that isn’t my target market).
So I made the necessary changes to the info.plist in my app and removed the iPad launch images, and was gratified to note that the app bundle now was barely over 100KB – much more reasonable.
I had already pulled my app from the review process earlier in the week, as I had decided not to wait for the app to be reviewed before introducing advertising into the free version. This (very simple) change had already been done.
So all I had to do was submit my new binary and update the screenshots (to fairly represent the presence of advertising in the app).
And this is when the problems began.
For perfectly valid reasons, Apple have a policy that states that an app should never support fewer devices than it originally supports. So if you release an app that supports iPhone and iPad, you cannot then update that app such that it supports only iPhone (or only iPad). You must instead release that as a new app.
This makes a certain amount of sense – to a point. I think it could be argued that in the case of free apps in particular, a user being unable to update to a newer version that doesn’t support their device isn’t being treated entirely unfairly. Paid for app’s are a different matter.
But where Apple’s reasoning completely falls down is that they apply this policy not just to free apps, but also to apps that haven’t even yet been reviewed let alone released.
To make matters worse, the manner in which this is reported is less than helpful.
The only indication you receive is when attempting to proceed to “Submit for Review”, at which point you get an error to the effect that:
iPad screenshots must be provided because the application binary indicates support for iPad
This initially had me chasing my tail trying to figure out what I had missed in my updated binary that still led the Apple systems to believe that it supported iPad, when it did not. The fact is, that my binary did not indicate support for iPad. The first binary I had uploaded had done so, but I had pulled this binary before it had been reviewed.
I eventually stumbled upon the explanation and was able to set about resolving it.
Further Incomplete Reasoning…
I reasoned that I would have to delete my app registration and start over. But oh no. Not in the world of Apple logic.
There are a number of situations under which it is possible to delete an app. But all of these have one, over-arching condition. Allow me to quote from the iTunes Connect Developer Guide:
You cannot delete an app that has not been approved for the store.
I simply cannot get my head around the logic that leads to this restriction at all. It makes no sense at all. But that’s the way it is. So here I am with an app that I can only submit for review if I include support for devices that do not support my app’s functionality. I suspect the app would not be approved precisely for this reason. So this app is stuck in limbo.
My first Zombie app.
Dealing with a Zombie
So, unable to delete my undead app, I had to start over with an entirely new app. Of course, perfectly reasonably, you are not allowed to have apps with the same name so this meant renaming my zombie. This, at least, is possible. So I then set about creating my new listing.
Having started to get a feeling for the sort of processes involved, I decided that as well as recreating my store listing details from scratch (unavoidable) I ought to also have an entirely new package name and that meant also having a new provisioning profile. I arranged all of this, spitting feathers the whole time, and a short while later I had my new app listing and was ready to submit my new binary.
I duly re-built for Release and used Application Loader (2.9.1 build 441 to be precise… a detail which will be important in a moment) to upload my binary.
After uploading, it takes a while for iTunes Connect to … do something, though I am not entirely sure what … before you are able to then select that binary to submit for review as a new (or initial) version of your app. If you try to add the build before this process has completed and attempt to Submit for Review you aren’t told to “please wait until the binary is ready”. Rather iTunes Connect simply states that:
you need to upload a binary using Xcode 5.1.1. or Application Loader 2.9.1
Every indication is that it seems oblivious to the fact that you already did.
Checking the status of the uploaded binary give no indication of any problem. The binary is initially listed in a “Processing” section of the builds list, which changes to “Inactive” when that processing is complete. Which apparently doesn’t mean that the processing is actually complete.
Some people have suggested that re-uploading the binary can help get past this point. I tried this. A number of times.
Others have suggested that you just have to wait, though some people have waited 20 hours or more without success.
I think it is perhaps a combination of the two, as indicated by the accepted answer to a question about this very problem on SO.
First try waiting… if a binary cannot be submitted after much more than 10 minutes (after processing has “completed”) then the binary might be “stuck”, and resubmitting could give it the nudge it needs. Wait again. Rinse and repeat as necessary.
10 Minute Call for The Fat Lady…
But we’re not quite done yet. She may be warming up, but The Fat Lady is not yet ready to take the stage.
I eventually was able to submit my new app listing for review. At which point there is one final hoop that the Apple Gatekeepers require you to jump though. A simple check list confirming that your app does or does not use encryption, present 3rd party content or employ an IDFA Advertising ID.
Having introduced advertising to the app I had to quickly check on that last one and determined that using an AdBannerView and serving iAd advertising did not in fact mean that my app used an IDFA.
So I ticked “No” to all of these questions and submitted this form. Only to get yet another exquisite example of the increasingly familiar and resolutely unhelpful error messages that the new iTunes Connect loves so much:
A problem occurred and we were unable to update your application, please try again. If the problem persists contact us
So I tried again. And again. And again.
In the end I tried to the “contact us” link only to find myself in a Moebius Strip of canned responses to specific questions where if the particular question you had was not listed, you were dumped right back at the “contact us” entry point to embark on another aimless wander down the Moebius Strip.
Perhaps I was starting to think like an iTunes Connect Automaton, but for some reason it occurred to me to check my listing one more time. Upon doing so, I realised that my app version in the listing was 1.0.0, but the version in my info.plist was still at the version I had bumped up to – 1.0.2 – after having made various changes.
I again cannot fathom why this discrepancy was not picked up earlier in the whole process. The application bundle version is checked by the upload process (you cannot upload a version lower than that already present). It might be expected that the build version in the bindle would be checked at the point at which you associated a specific build with a particular version of the app listing.
Changing the listing version number to match that in the binary made no difference.
But the bundle version is checked to ensure that you don’t upload a lower version than that already uploaded, so I had to increment my version again, make sure the app listing corresponded to this new version, rebuild my app, re-upload the binary, … wait … wait … wait … and try again.
At which point the Fat Lady burst into song!
The Take Away
- Right First Time is Crucial. Once you have uploaded a binary, regardless of how far it gets in the review process, Apple won’t give you a second chance to determine your supported devices. You can subsequently increase the number of supported devices, so if you are not absolutely certain err on the side of caution and start out with the bare minimum. You can add more later.
- Sweat the Petty Things. The new iTunes Connect is resolutely unhelpful. Despite the number of hoops you are forced to jump through to get an app submitted to the store, you cannot rely on the gatekeepers along the way to catch any mistakes you might have made and you can rely even less on getting any guidance from iTunes Connect to help you identify and rectify problems. Make a check-list and follow it.
- Patience is
a VirtueMandatory. Even if you get everything right, iTunes Connect has a process to follow and is not at all helpful in accurately indicating exactly where in the process it is at any given time. Sometimes you just have to wait.