March 08, 2017

Apple starts rejecting apps with “hot code push” features

This thread from Apple's Developer Forums is making some waves on the internets today. Apparently, they're now rejecting apps that include code that can modify your app after it's released to the store.

Rollout.io seems to be the SDK that's setting the alarm off, so far.

If you use Rollout.io, or another "push code after you release to the store" service, it's time to start thinking about changing your strategy. (clears throat I told you).

From Rollout.io's FAQ:

Does Rollout comply to Apple’s Guidelines?

Yes. As per Apple’s official guidelines, Rollout.io does NOT alter binaries. Rollout uses JavascriptCore to add logic to your patches. For more details, check out how Rollout is compliant with App Store guidelines.

I wouldn't build my business on such a fine line.

And also, please don't act surprised when Apple start rejecting React Native apps down the road.

The moral of the story: stay away from JavaScript.


November 13, 2015

Swift blog: Why is my Hashable implementation crashing on an iPhone 4s?

Today I found what I thought of as a bug that had me scratching my head for about an hour.

My app ran just perfectly on my iPhone 6S Plus. However, when I sent a build to my designer for him to do proper testing, it always crashed on the same spot.

Ran it on the iPhone 4s simulator and the crash looked like this:

No output on the console nor the debugger. Tried to run instruments to catch the crash, with no luck.

Did a bit of research, and finally got to the official Swift documentation.

Using overflow operators (&+, &-, &*) fixes the issue:

public var hashValue: Int {  
    return firstValue &+ secondValue
}

Numbers can overflow in both the positive and negative direction.

Which is exactly what may happen if you run your app on a 32 bit device, as the iPhone 4s and 5.

So, heads up! Make sure you do proper testing!


January 20, 2015

Why you can't delete an app from iTunes Connect

I hacked a Swift app in the past few hours. Submitted to beta testers, made some changes, and now I'm ready to send it to the App Store.

However, I decided that I didn't like the name I used for the beta. So... being me, I not only want to change the actual Bundle name on Info.plist, I also want to change the App ID, Bundle Identifier, etc...

I said to myself: "self, why have that app sitting in iTunes Connect if you're not going to use it?"

So, I went to iTunes Connect, selected the app I had set up for beta distribution... and started to look for the "Delete" button. Without success.

I removed all my builds. Turned off beta testing. Removed all my beta testers. Signed out. Signed in. Refreshed.

Still no Delete button.

Turns out...

Hi XXX,

I am following up with you about the deletion of your app, “XXX”. Recent changes have been made to the App Delete feature. In order to delete your app from iTunes Connect, you must now have one approved version before the delete button becomes available. For more information on the recent changes, please see the "Deleting an App" section of the iTunes Connect Guide (page 96-97):

Oh, Apple, Apple...


January 20, 2015

Swift app size

I've been writing Swift for the most part of the past 6 months. Mostly playing with it, nothing serious.

But today, I submitted my first Swift app to iTunes Connect (currently in beta review), and was reminded of the fact that Swift apps have embedded libraries.

8.6MB of libraries.

My actual code is less than 6KB.