BuySellAds.com

Until Dec 3rd, 44% off all Manning books, including Barcodes with iOS! Promo code: mobicftw
Our DNA is written in Objective-C
Jump

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

Tripple your Sales in 2 Weeks

geocorder adLong time ago I created GeoCorder to have an app to record GPX tracks. These tracks can be mailed to an e-mail address in your address book and get attached to the mails. Something that was not possible before iPhone OS 3.0.

When I put it on the store for free the downloads skyrocketed only to crack on 0 as soon as I set the price to tier 1. That’s where sales stayed for many months, mostly 0, on some days as high as $2 in revenue. MyAppSales tells me that the daily average was around $1.50 in royalties from GeoCorder.

Enter AdMob. Andreas Heck of Super Trumps fame told me about his positive experience with integrating AdMob ads in his products, so I felt compelled (or shall I say envious) if his earnings. I made a couple of improvements of the GeoCorder codebase and added a new target that would display one AdMob cell in the table that shows the recorded tracks. As usual Apple wanted to play ball, so it went back and forth until finally GeoCorder [FREE] hit the store on June 7th.

Read more

Display Local HTML file in UIWebView

Stefan87 asks:

Is it possible to display a HTML File which was created by the application in a UIWebview?

I would like to provide a helpfile in HTML-Format in the webview.

I’ve read the documentation, but it seems that every loadprocess requires a URL ?

I wanted to do the very same thing for displaying the instructions in LuckyWheel. After some experimentation I found the following way to be the simplest for me.

Read more

You Have All The Trumps … in one single XCode Project!

I recently helped Andreas Heck to unify 4 of his projects into a single one. Before this intervention he would copy the project from a previous “Super Trumps” app and modify parts of it to fit the new theme. But of course this would multiply the effort necessary to do updates with every iteration of the process.

Top Trumps Cars Top Trumps Guns
Top Trumps Bikes Top Trumps Aircraft

It was for this surgery that I researched and discovered the method of Target-specific Headers and many of the techniques in this article about compiling for 2.x and 3.0 from the same project. Now he can happily concentrate on just collecting artwork and information for new sets and can keep 95% of his code unchanged.

Andreas Heck is doing beautiful work on the contents of his apps, you can purchase them by clicking on the images above. Now that his first 4 “Super Trumps” games are live on the app store I checked up on them on Applyzer because I was interested which geographic preferences could be gleaned.
Read more

A signing identity matching this profile could not be found in your keychain

NOTE: You might want to check out my guide to fix code signing problems.

I am getting tons of reports of developers who had to renew their expired certificates and who now find their new profiles unusable. Also affected a developers who had to add new devices to their ad-hoc profile.

Even though everything is done by the book, they are  get a “A signing identity matching this profile could not be found in your keychain”.

Yellow Bar

I experienced certificate expiration first hand, but that was some time before WWDC and so I had no problem creating new certificates and provisioning profiles. But last week, right after WWDC, Apple amended the online process to accommodate new provisioning profiles for push-enabled apps. You have to create a new app id and thus provisioning profile for each and every push-enabled app you want to distribute.

It currently seems as if this change to the process causes non-push-enabled profiles to be faulty in a way that even though the poor developers do everything right they still wind up with the above error message and no way to fix it. Not even my handy guide on how to fix code signing errors helps. I know because I went through it together with several affected developers.

Read more