Yesterday, soon after the 12.9.3 update was finally released by Apple after several days and some unfortunate discussions about HealthKit and the Sensor Tool, I received reports from users where the App didn’t start anymore after downloading the update.
By that time, I had no idea why this happens since many users reported successful installations and also my testing on several devices and different iOS Versions didn’t reveal any issues.
Around 9pm it got obvious that at leaset several, but not all, older iOS Versions before and until 12.1. were affected. On the iOS Simulator, where I usually test everything on different iOS Versions, everything was fine.
So I started looking into my drawer to find an iPhone or iPad with an old enough but not too old iOS Version and finally found an iPhone 6 plus with iOS 12.1. After charging the completely empty device, I luckily was able to reproduce this issue.
Usually, once it’s possible to reproduce an issue it is immediately solved but not in this case. The App didn’t even start so there was no chance for debugging. It was clear that it has to do with Swift (the development language) because a certain Swift library could not be loaded. I was wondering if older iOS Versions didn’t support the version of Swift but that should not be an issue.
I tried everything like removing code that I recently added, restored and tried older code etc., nothing helped.
Then I tried to run the latest update of my Electronic Toolbox App on that iPhone 6 plus because Electronic Toolbox has received similar changes recently and to my surprise (and relief) it ran.
So I started looking for differences and after some time, I found the reason. It was a minor compiler setting out of hundreds of other settings which was the root cause. This setting will normally never be touched by a developer since it’s set correct by the Development environment automatically. For some reason it was now set in a way to let the App crash on older iOS Versions. It even has nothing to to with the error or with iOS Versions. However, once I changed that setting, the App ran on the iOS 12.1 device.
Around 2am I sent another Update to Apple. After that, I contacted Apple and explained the situation and asked for an expedite review.
This morning at 11:30am Apple indeed started their review but…
..rejected the App and claimed that it is marked as App that uses Bluetooth LE but the App is no Bluetooth LE App. I was able to sort this out with Apple and on 11:52am they released the update 12.9.5.
Sorry guys for this issue and the trouble you have had and thanks for your patience. Thanks also to Apple for their quick response.
To be honest, I don’t need that every day.