BuySellAds.com

My book Barcodes with iOS 7 is nearing completion. Buy it now to get early access!
Our DNA is written in Objective-C
Jump

Determining the Hardware Model

Not all Apple Hardware is created equal. For some apps you need to distinguish between different models of iPhones and iPod Touch. But when you query the model property of UIDevice you don’t get enough information to really know what hardware your app is running on.

With a little bit of googling I found an article on Ars Technica explaining how the pros are getting the kind of information that we regular dev guys dream of having at our fingertips. It basically uses barely documented system calls to get the infamous model string from which you can infer the real device model.

We are talking about sysctlbyname which Apple even documents as a standard C library function call to “get or set system information”. iPhone Dev crack Erica Sadun made this UIDevice category extension. We are inspecting it with awe as we see the magic unfold.

Read more

Help Us get an iTunes Connect API!

Apple to create API … if enough people want it!

Ever since my app MyAppSales got rejected I have been lobbying for an official and secure API which would permit us developers or creators of tools like AppViz to interface with iTunes Connect. The current situation, as you are probably well aware, is a real pain in the backside.

According to Apple this is the “expected mechanism for retrieving that data”. So they really expect developers to go to the report site every day and download daily reports manually. Apple makes great software and devices, but I keep asking myself how they can be so far away from the truth of the facts of real developer life?
Read more

MyAppSales Video Demonstration

Right after I e-mailed him the source code for MyAppSales, Moshe Malka responded:

OH MY GOD!
This Application is Extremely AMAZING!
“It puts AppSales Mobile in the trash bin!”

Do you mind If I review this app on my YouTube? — And I Guarantee this wont be a bad one! – Cause I am Flipping off at the amazing work!
Keep it up!

Of course I welcomed this. Long have I been longing for somebody to show the beauty and speed of MyAppSales in a video. Thank you Moshe!

Dr. Touch Fan Video

Sometimes I’ve been known to accept services as payment for services rendered. This is one example where a fan offered to create a promo video for me. He’s probably the youngest member of my Cocoa developer network but seems to be full of creative urges.

Cheesy or Cool? Leave a comment what you think!

PS: If you are looking for Hebrew localization for your apps this young person might be your man inexpensive choice.

How to Rename an Appthe

Andreas asks:

I need to rename my app to something else because the original name is a trademark of a UK-based company. After I replaced all instances of the name where I found it the name of the product is still the same. Now if I build the products stay red and I get “No launchable executable present at path.” I have changed the name EVERYWHERE. How can I fix that?

Apart from the quick fix that I found googling I am going to see if I can fix this in XCode myself. I’ll show all the steps for guidance and the “pro fix” at the end.

Read more

All That Can Go Wrong … All The Rejection Reasons

This is an overview of reasons why Apple has rejected apps temporarily or permanently. Not some theoretic reasons that might be construed from the SDK Agreement, but real instances of passed judgement. For each rejection reason the original paragraph written by Apple is included. I made it as non-judgemental as possible.

Originally this article was written for the Cocoapedia but I am publisizing it here for added exposure because I am hoping for comments informing me of missing reasons. For a reason to be included it must be documented on your blog or website and the link given. There is a website AppRejected.com that seems to be dedicating to collecting such rejection reasons, but there is no way to contact the owner and the list seems to be lacking specific citing of sources and order.

This list may serve as a checklist to help guide the general design principles such that fellow developers can avoid the temporary pitfalls which might delay their apps for two weeks. Also you might check your “killer app ideas” against this list to save you from wasting precious time on ideas that according to this list would in all likelyhood never be permitted into the store.

Read more

Piracy Data Update

In the pro versus contra copy protection debate there are some arguments against the other side’s viewpoint. Arguments that can be proven or disproven if you have some real life data available. Is there a need for piracy detection? Is this a cat and mouse game that single developers can never win?

Pirated versus PurchasedSpeaking for LuckyWheel installation base I have the following statistics available:

2052  (55%) purchased regular LuckyWheel

1661 (45%) pirated the game

3713 total (100%) LuckyWheel installations

66646 downloaded the Lite version

LuckyWheel Lite, limited to ten questions per language, is a great way to try out LuckyWheel for free. One argument I’ve heard a lot is that people will use a cracked copy to evaluate your app and if they like it very much will spend the dollar or two that it usually costs. But is this really the case?

Read more

BIG OUTCH – MacBook Falls From Hammock

I bought my first MacBook Pro last September to get started on my Mac journey. The whole family on the side of my wife had been fully Mac’edized and I figured I wanted to give it a chance as well, after having had a small Laptop provided by the company I work for. Also shortly before that time Apple had released the SDK and iPhone OS 2.0 enabling third party apps. So I justified the expense to myself by needing a Mac to be able to develop for the iPhone.

I had been one of the first Austrians with an iPhone 2G and when iPhone 3G became the first official iPhone in Austria I jumped at the chance of upgrading. My then girlfriend (now wife) inherited the 2G and I started developing for my 3G in September 2008.

Shortly thereafter Apple released a new generation of MacBooks in the famous aluminum unibody case. As usual when you purchase Mac hardware you soon feel a minor regret because usually 1-2 months after such a purchase something new arrives to be lusted after. But an upgrade 2 months after having purchased my Mac was out of the question, I was still amortizing the first one.

Then came the WWDC and my mind was blown once more. Apple dangled the Mac carrot even closer in front of my nose by reducing prices, adding a SecureDigital slot, and a great new battery which promises 5 hours of wireless work. And at the same time announcing the release date of the next update to OSX, dubbed Snow Leopard coming in September.

The crack in my heart started to get a little bit wider. Outwardly I told myself that I cannot buy more than one Mac Laptop per year, that I preferred the silver keyboard to the black ones anyway and that the glossy screen is useless. But unknowingly I had already ordered from the universe the circumstances that would make upgrading irrefutable.

When grabbing a couple of things in our Wintergarten the smooth Mac slipped and dropped onto the stone floor. The lower backside corner got dented and I was somewhat wrecked. I researched my options and found that I had cancelled the only insurance which would have covered it 2 years ago. The bottom case would cost $200 and another $200 at an authorized Mac support center to get it installed. Essentially the bottom case is the frame where all parts are mounted inside. So it takes long time to take it all apart.

I found the bottom case for around $50 with shipping on ebay and figured that I would just pay a handy friend to replace it for me. When I received the lower case I figured I’ll wait with replacing it so that I could get a new Mac first in a couple of months and then, after having moved all my development tools to the new one, could refurbish the device and put it on ebay. Or keep it as emergency Mac.

I thought so until today. After a nice day I wanted to climb into my hammock in the same Wintergarten I mentioned before. But when I pulled myself up to the hammock the MacBook felt like exiting it and heading for a second encounter with stone. OMG. F*CK.

Mac Crash MacBook Crash MacBook Crash

The drop this time was more than twice the height, but still it survived… technically. Not aestethically. I had to bend the frame above the Maglock power connector  back, but apart from this the Mac performs as if nothing had happened. This serves as proof of the superior build quality and sturdiness of the MacBook Pro design. So I can tell you from my own experience: Macs bend, they don’t break.

Looks to me as now I don’t have much of a choice to get a new unibody MacBook Pro next month. Incidently it’s my birthday then and I am getting my income tax refund so there now is really no way around it.

Donations for AntiCrack and My App Sales are now being saved to offset the cost of new hardware.

Oh No! All App Sales Data Gone!

When I updated my iPhone 3G to OS 3.0 to be used on – shall we say – the network of my choosing I found that the signal strength reported is much less. Most of the times it is even “No Service”. On various forums you can read that this might be due to restoring the iPhone from backup. So I did a full factory reset hoping to fix the problem, which it did not.

But when I wanted to get back to my normal life I found that the wipe also had removed important data like all my daily sales reports since October which I have been faithfully collecting with my trusty MyAppSales app. With the built-in import/export web server it is easy to copy the sqlite database over to your Mac. But then it dawned on me that I had done so the last time 13 days ago.

So if I would put this in db in, I would have a gap of 6 days. I needed to find a way to get back to just the single apps.db contained in the iPhone backups that iTunes routinely creates every time you synch.

Read more

__MyCompanyName__ Treats Warnings as Errors

I finally figured out three XCode settings that I’ve been dreading to change for quite a while now. See if you didn’t think of changing them yourself as well, but could not be bothered to Google them.

Are you still working for __MyCompanyName__?

If not you might want to change what XCode puts into the standard header which is being generated for all new files.

//
//  Report.m
//  ASiST
//
//  Created by Oliver Drobnik on 24.12.08.
//  Copyright 2008 __MyCompanyName__. All rights reserved.
//

There is no UI method of changing this string which is kept in the XCode preferences file. Instead you have to use a command like this.

defaults write com.apple.Xcode PBXCustomTemplateMacroDefinitions '{"ORGANIZATIONNAME" = "Drobnik.com";}'

The result being that from now on all code belongs to your company, even if it’s just a company of one.

Read more