If you like my tutorials, you will love my book . It is chockful of advanced programming techniques and the only comprehensive barcode reference for serious iOS developers.
Our DNA is written in Objective-C

Apple Rejects iPhone-Damaging App

The first app that I submitted to apple, back in October 2008, I called DropClock. It basically measures freefall time and calculates distance fallen from the time the iPhone was falling. It’s meant as a joke of course. This is not what I meant when I wrote about making your apps crash proof.

If you drop the iPhone three times over a certain height an image of a cracked screen is shown and the iphone does not react to input for 20 seconds. Then a button saying “Ha Ha!” appears that takes you back to the main screen.

At the time I figured that I would make millions with this simple app due to it’s novelty factor. But such instant wealth never materialized. Instead I had to wait for 7 months, contacting the review team three times about it. Finally Apple has handed down it’s verdict:

Thank you for submitting DropClock to the App Store. We’ve reviewed DropClock and determined that we cannot post this version of your iPhone application to the App Store at this time because it encourages a physical activity that could result in a customer damaging their iPhone. We have chosen to not publish this type of application to the App Store.

If you believe you can make the necessary modifications to bring your application in compliance with iPhone Software License Agreement, we encourage you to do so and resubmit it for review.

I am not extremely sad about this as DropClock was just a silly experiment which only took me a day to implement. But several things can be learned from this experience. If your app is so unique that it does not fit with any of the SDK agreement paragraphs most likely Apple will take up to 7 months of not reacting on your submission. Previously I called this “Neverending Review Bin”, now I know that it extends to about half a year.

The second interesting fact though seems to be that Apple feels that they need to protect silly customers from hurting their phones. Law over here in Europe does not blame the manufacturer of a device if a nitwit damages this device. In the US however it’s not unheard of that sombody sues the maker of a microwave because no warning label prevented him from drying his cat in it. So while DropClock might cause more sales of iPhones, Apple does not want to risk the liability.


The same seems to apply for a whole category of apps. Need I mention fart apps? Only difference, apps that might cause customers to physically damage their iPhones are highly unlikely to ever be permitted in the store. Apple’s feedback mentions “this type of application” So Apple’s summary judgement seems to apply to a great deal more than just my own app. Namely all apps that could damage an iPhone.

I probably won’t bother messing around with the app any more. PayPal me a Dollar to my wedding fund at and I’ll send you the source code. Let’s see if YOU are smart enough to not damange your precious device.

Do You Remember Apple's Future?

More than 20 years ago Apple made two concept videos that show how they where envisioning the future of computers at that time. Long before flat monitors came into the main stream they showed them off in these videos.

Gestures are replacing the mouse, your index finger doing the pointing. Effortless video conferencing and collaboration. A smart search assistant very much like the famous computer voice from Star Trek: The Next Generation. But most impressively of all I find the vision of having all parts of the computer built into the display. Remember, the first iMac was sold 10 years later.

Also Apple did not shy away from making a point that computers should also be usable by people with disabilities even 20 years ago. I have yet to see a concept video by Microsoft that would dare this.

Read more

Adding Days to an NSDate

Nagarajan asks:

I just want to get a date which is some 50 or 60 days away from current date.

How do i get??

There are two methods to achieving this. One that is quick and (potentially) dirty. And one that is always safe.

Read more

Make Your Apps Crash-Proof!

Yesterday when I went into iTunes Connect to download some promo codes for peer reviews if noticed a new announcement. Apple has begun to provide customer’s crash reports for your apps. That’s great news as you now can see precisely where your apps need work.

Crash logs for applications are now available. To view them, go the Manage Your Applications Module below, click to view the desired application’s details, then click View Crash Report.

You can test all you want, in all likelyhood one of your valued customers will find a method to make your app crash because they use it in a way that you did not anticipate.

Read more

Peer Reviews

Several people have followed my call for peer reviewing each others apps. With a US iTunes account you can take part in this networking activity yourself. You might get much more valuable feedback then from regular customers.

Here are all the apps I had a look at so far. Sorry guys for taking so long, but my US iTunes account is on my Windows PC which I avoid to turn on whenever possible. ;-)

Read more

My App Rejected While Similar App Approved AND Featured

Several people contacted me today about this matter, for example Eknath:

Apple has been unjust to Oliver.

They just approved this app. “Sales Tracker” and not only did they approve it, they put it in featured apps. Very unfair.

I think we should make the noise in dev forums about his.


While I had known about “Sales Tracker” since it made it into the store today we made the heart-wrenching discovery that this competiting app also was made a featured app. Being on the front page of the app store is in all likelyhood a very lucrative stroke of luck for it’s maker.

Of course I resubmitted MyAppSales right after Sales Tracker appeared on the store. Only to get rejected once again a week thereafter.

I called the US landline of Apple Developer Support to find out that I have two avenues of progressing. I could either write to the Review Team to aiming to get my own app passed, or I could write to the App Store Notices Team to get the other apps pulled. I chose the former, read my e-mail to learn why I think this is better.

Read more

MyAppSales 1.0.3

Two minor fixes make out version 1.0.3 of MyAppSales.

  • Removed all NSLog statements
  • Revampted calculation of  sums as to make them match with the detail lines

The latter bug was caused by using old currency exchange data to pre-calculate sums but using newer exchange rates for detail lines. This would sometimes cause a difference of a couple of cents which was more than a rounding error. There might still be a difference of one cent but that is because MyAppSales calculates all amounts in floating point without limit of decimal places, but only two rounded decimal places are show on the reports regardless of currency.

Get the new version from the customer-only SVN. UPDATE: I had forgotten to bump the version in info.plist. That’s fixed now.

PS: Dylan Prozenak of AppViz contacted me earlier, regarding my call to action for an open report downloading API:

I had contacted Apple directly about this a while ago and received a reply indicating that they were looking at it. I just filed a bug report as suggested. Probably should have done that first thing.

Hopefully it will make a difference; I’d love to make an AppViz for the App Store and hearing both your story and some friends of mine who developed a similar product makes me shudder. I know how much time goes into these things and then not being able to sell it is like getting slapped in the face; particularly since there seem to be a couple that made it in. Competition can only be good for this space; it keeps us all on our toes and innovating. 

How to Fix Code Signing Errors

Andreas asks:

With Device | Debug and Code Sign “iPhone Developer” I have no problems getting my app onto the device, but with all other configurations I get this strange error message in XCode Organizer.
Unexpected Error

That’s a weird error that most of us have encountered one time or the other. Here are my hints how to get it fixed.

Read more

MyAppSales 1.0.2

This update of MyAppSales brings two cosmetic fixes plus on fix for a bug that I accidentially introduced in 1.0.1.

  • Added UTF-8 encoding header for import/export web server
  • Reduced tab bar icons in size, removed text from the splash screen
  • Fixed: On the reports root table the icons would not reflect that there are new reports in the daily/weekly category.

The last one was embarrassing enough to immediately release this version. I am updating the icons from an app-wide notification, but I did not consider that notifications only work if the Nib has already been loaded.

The new version can be checked out from the customer-only SVN.

The Importance of Method Naming

Recently Oliver’s blog post ‘Shuffling an NSArray‘ came across my twitter feed. I’m not sure I followed the link with the intention of being critical, but after reading, I felt the need to make a couple of points. Namely, a fairly staunch opinion that in it’s current form, Oliver’s -(NSArray *)shuffled method is an example of poor naming choice. I realize that the original post was intended to showcase the ability to extend existing classes with categories (a powerful and worthwhile concept to understand). However, take into consideration that many developers new to a language will copy and paste code snippets without fully understanding them, and the importance of using proper convention in code examples becomes very clear.

Read more