iOS 9, 7 Upgrade Pitfalls - A Post From The Future

Written by: Eyal Keren
4 min read
Stay connected

Every OS version change comes with its own set of problems; developers use the new deployment target when releasing a new version of their application and then when it reaches their users, it crashes, freezes or just looks bad. When we all upgraded our apps to iOS 7 we were dealing with UI changes that were terrible to handle but were expected. iOS 8 brought to us the problem of permissions, especially background permissions. I've heard endless stories about expediting the review process after the developer found that background permissions are needed. Curiously enough, a blog post from an anonymous iOS developer had the good fortune to fall through a time warp, and landed on our laps. Yes!!! we have obtained a blog post from the future. In this blog post the anonymous developer describes his crashy transition to iOS 9. This blog will be written in December 2015. This is what he had to (or will) say:   -------------------------------------------------- Dec 2015, Springfield U.S. ------------------------------------------------ Finally after 3 upgrades and one expedite I was able to successfully migrate my app a-Towel in the App Store to work on iOS 9. For those who haven’t finished yet, here are the major issues you can expect to face:

  1. My application was using http enabled endpoint - iOS 9 by default prevents all non secure network connections, but I already knew this, so I have tested all my communications with the server although I did it only for my sandbox endpoints!!! I forgot to check it with my production environment… I checked the production url is https but then I found about the next problem (see issue 2)  Arghh…

  2. My application uses https endpoints that are still not supported by iOS 9, did you know it was possible!?!  - https is not enough. It turns out that Apple restricts all communications to SSL that doesn’t support certain protocols. In example, “forward secrecy” is mandatory unless explicitly ignored. In my case, my application was communicating with Amazon’s S3 https endpoint which uses SHA-1 that is not supported by iOS.

  3. Ahh, it turns out that apple has removed the option to use canOpenUrl on any url scheme. You now need to explicitly mark all URL schemes that you are going to open in your Info.plist file

  4. Ohhh - I didn't update all my SDKs that I am using for their iOS 9 compatible version

  5. Right to left support - iOS 9 introduce RTL support, which means that all my current RTL views got all mixed up… to find out more please consult Apple’s documentation

  6. ENABLE_BITCODE=NO - this didn’t really break my code, but it is just a friendly reminder. If you want to be able to use ENABLE_BITCODE=YES when you are archiving, then all of your SDKs should also be compiled with the appropriate flag. Note that this is not necessary unless you target your app to Apple watch.

  7. Beware of the missing function

  • Well this is kinda embarrassing, I've used the excellent utility function NSAttributedString containsAttachmentsInRange: but I didn't realize that it is new in iOS 9, so all iOS 8 devices had the NSInvalidArgumentException  ( unrecognized selector sent to instance) exception thrown…  It’s embarrassing because the exact same thing happened to me with NSString containsString:   during the upgrade from iOS 7  to iOS 8.

  • How come things that happen to stupid people keep happening to me?

BTW, crazy news about those martians inhabiting earth for all this time (poorly covered by the government for a while), it turns out they did the crop circles as a hoax.

          ---------------------------------------------------- end of original blog ---------------------------------------------------------- We’ve had this document for a while now, so CloudBees Feature SDK (version 0.10) is ready for iOS 9. We’ve also prepared solutions for our users in case they’ll be caught unprepared by these issues exactly, go to our iOS 9 support page for more info.

Stay up to date

We'll never share your email address and you can opt out at any time, we promise.