I could have sworn, that I uploaded build 1.0.6 (28) of a client’s app to his iTunes Connect before leaving the keyboard for the night. The next morning it still showed build 15. Turns out TestFlight makes some builds disappear, here’s what I learned, why.
It did have the build because when I tried to upload it once more from organizer, I got the message about the 1.0.6 train already having a build 28. So the build is online, but you don’t see it on iTunes Connect.
My has an individual app store account under his Apple ID and so I have no way to directly receive App Store notifications about problems to my own email address. He forwarded me this message from Apple:
We have discovered one or more issues with your recent delivery for “YOUR APP”. To process your delivery, the following issues must be corrected:
This app attempts to access privacy-sensitive data without a usage description. The app’s Info.plist must contain an NSCameraUsageDescription key with a string value explaining to the user how the app uses this data.
Once these issues have been corrected, you can then redeliver the corrected binary.
The App Store team
Indeed this app uses a UIImagePickerController to access the user’s photo library as well as make new photos. If you build against the iOS 10 SDK the app will crash as soon as you try to open the photo picker if you don’t have the NSPhotoLibraryUsageDescription present in info.plist. So I had added that.
But somehow I had missed that there is also a text to add for when you need to access the user’s camera: NSCameraUsageDescription. I swear that I had tried the app on my iPhone 6S and it didn’t mind that I did not have this key present.
Apparently there are several different reasons for a TestFlight build becoming invalid, including but not limited to code signing issues. So for the time being, if you don’t see a build appear on TestFlight, then ask the person who’s receiving the error emails to forward them to you.
It is bad user experience for us developers to have builds disappear on us. Especially if your are not the main recipient of the “Dear Developer” emails, but your client is.
I would expect the upload process to already flag such issues, since that is generating a map of Apple APIs which your app is using. But if that is not possible for some reason, then I would at least expect to see my build and a useful error message.
Also published on Medium.