Sunday, November 15, 2009

Caught in App Store Limbo

A few weeks back I tweeted about a problem I was having in the app store with one of my client's apps. The problem was that our application , BedBug Identifier, was not showing up in the app store , although it had been approved. I checked the normal things, typos, categories, release date and everything was in order. We waited days.

Finally the client got through to someone in developer relations (note: they do not actually have anything to do with the store itself). They gave us a glimmer of hope, indicating that we did not have a developer certificate in place, or a developer provisioning profile. This was simply because I use my own to develop for clients and don't see the need. This wasn't the first client that I did this for but it was worth a try. I casted the magic developer portal incantation and 'presto chango' ... nothing. I called develper relations myself, and basically got a slap on the wrist for not following official protocol. But still no luck, and the client was in a panic since they were at their yearly trade show and really wanted to get the app out the door.

Finally a true hero emerged, the fine folks at Xcellent Creations had done all the design work on the app and had some contacts at apple that were actually helpful. It turns out that the large icon for the app had a compression format that the app store didn't support. Everything in iTunes Connect showed green - go indicators, but still the icon was not valid. So 30 seconds later, I converted the tiff file to jpg , uploaded it to the store and 'presto chango' the app appeared in the store 2 hours later.

Now you would hope that someone at apple would realize that a 15 second convert scrpit could save them and developers all this headache. Or at the very least detect that the file is not supported and kick it back out ~ that is probaly only 10 seconds to write.

So if you app is approved but doesn't show up in the app store. Make sure your TIFF files don't have some compression turned on. Or even better, just make them jpegs to be sure.

Thursday, July 2, 2009

Codesign Error and FBConnect Library for Iphone

Just spent the morning tracking down an issue where I couldn't submit an application to the app store. Hopefully good will pick this up and save you some trouble

This is the key issue:
a sealed resource is missing or invalid
You will see that error when using ApplicationLoader while looking at Console.app.
Here is the full message:

7/2/09 1:26:31 PM ApplicationLoader[1037] *** Codesign error (please ignore invalid option comments): got requirements(0x805a00, 556)
Executable=/var/folders/fC/fCYkmIs5EtextlqOt9Oo9E+++TQ/-Tmp-/YourApp.app.zip/YourApp.app/YourApp
Identifier=com.yourcompany.app
Format=bundle with Mach-O thin (armv6)
CodeDirectory v=20001 size=10131 flags=0x0(none) hashes=498+5 location=embedded
Signature size=4331
Authority=iPhone Distribution: Your Company Inc.
Authority=Apple Worldwide Developer Relations Certification Authority
Authority=Apple Root CA
Signed Time=Jul 2, 2009 1:25:44 PM
Info.plist entries=20
Sealed Resources rules=3 files=86
Internal requirements count=0 size=12

Executable=/var/folders/fC/fCYkmIs5EtextlqOt9Oo9E+++TQ/-Tmp-/iGotchaLite.app.zip/iGotchaLite.app/iGotchaLite
got entitlements(0x805e00, 323)
codesign_wrapper-0.7.3: using Apple CA for profile evaluation
codesign_wrapper-0.7.3: Caling codesign with the following args:
codesign_wrapper-0.7.3: /usr/bin/codesign
codesign_wrapper-0.7.3: --verify
codesign_wrapper-0.7.3: -vvvv
codesign_wrapper-0.7.3: -R=anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.1] exists and certificate leaf[field.1.2.840.113635.100.6.1.4] exists
codesign_wrapper-0.7.3: --entitlements
codesign_wrapper-0.7.3: /var/tmp/signingbox/codesign_wrapper_entitlements.plist
codesign_wrapper-0.7.3: /var/folders/fC/fCYkmIs5EtextlqOt9Oo9E+++TQ/-Tmp-/YourApp.app.zip/YourApp.app
/var/folders/fC/fCYkmIs5EtextlqOt9Oo9E+++TQ/-Tmp-/YourApp.app.zip/YourApp.app: a sealed resource is missing or invalid
codesign_wrapper-0.7.3: failed to execute codesign(1)

I finally found out that the issue was some strangely named files in the FBConnect.bundle .

The solution is to remove files that start with "._".

Here is the blog post that finally saved me from my mental breakdown.

A solution to: Application failed codesign verification

Thanks Ev.

Thursday, February 26, 2009

Apple is Removing Apps from the Store --- Again!

Some of you might remember Sound Grenade. A total app store success story. Guy build an app in 20 minutes. You press a button and it makes a very annoying sound. Sound Grenade quickly became the #1 Free app in the App Store. And is sibling Sound Grenade Pro also did very well.

Sound Grenade inspired us to create our own aggravating sound boards. Our first of these was Aggravate Nails on Chalkboard. Now I totally admit, this is a ringtone app. It is free , scrape your finger down the screen and it makes the sound of a Nail scratching a chalkboard. My wife Hates It!! And some days that is funny. Apple doesn't think. And neither does she actually.



Applying some quality metric they are able to distinguish between the annoying sound of Sound Grenade and Nails on Chalkboard. I got an email today saying they were removing it from the store because it does not provide enough functionality to be appropriate for the store.

At the time of this writing the app has 75k Downloads, 1.75 Sessions per user has a CTR on the ads of 10% and was pulling in a whopping $20 a day!

Now I admit the reviews on the app are abysmal, people don't think it sounds like a real chalkboard. I swear that it is a real chalkboard .. we even remastered the sound to make it better. And some people love it. Just not apple, or some reviewer at apple.

Maybe they did me a favor and I should go back to making apps that are not just entertaining but useful as well.

What does it mean? I guess I need to go record two awful sounds and offer that as an aggravating sound board? Would that be enough functionality?


UPDATE

Since the App is still available on the store the mystery of the app store rejection is still continuing. I don't think this letter is under NDA so I thought I would post it for all to get your opinion.



Dear Mr. Clements,

We've reviewed your application, Aggravate Nails On Chalkboard, and we have determined that this application contains minimal user functionality and will not be appropriate for the App Store.

If you would like to share it with friends and family, we recommend you review the Ad Hoc method on the Distribution tab of the iPhone Developer Portal for details on distributing this application among a small group of people of your choosing or if you believe that you can add additional user functionality to Aggravate Nails On Chalkboard, we encourage you to do so and resubmit it for review.

Regards,

iPhone Developer Program


So who knows what this really means I guess. If I were apple and determined that something was not 'appropriate for the store'. I would remove it from the store. Trouble in the review process? Maybe the reviewer does not know that they are reviewing an update? Still no word from apple.,,,


Latest Update: Aggravate 1.3 is live on the store

So it appears that I misspoke. Or perhaps Apple mis-cut and pasted the rejection response. They never took Aggravate off the store and I didn't have to send adhoc builds to my friends and family for them to be Aggravated. And I didn't have to add a flashlight or farting to the app in order to get it approved.

Aggravate 1.3 was approved a week ago and quickly rose to top 50 in its new category, Utilities. All I did was change the category and re-submit the application.

Not sure what this means. Are the guidelines for utility apps different? Do apple reviewers not realize they are reviewing an update? Could I have re-submitted in Entertainment?

Anyway, you can still aggravate your friends a little longer until the next update perhaps.

Tuesday, February 3, 2009

Battling the Crackers is not good for your soul

Very recently a piece of software was released that will make it very easy for average Iphone users to crack applications that they have purchased from the AppStore. To varying degrees developers are in an uproar about this and are beginning to have discussions on how best to battle this outrage.

This particular cracking software, ( I am purposely not going to mention the name ), will do for app cracking what napster did for music piracy. The average person will start to see it as a normal means of attaining these applications.

But all is not lost. Currently there are ways of detecting if your application has been cracked and there are many discussions starting around what to do in the case that your application detects that it has been cracked. Most of these discussions result in 'messing' with the user. Randomly crashing and reporting the user to apple are a few of these ideas.

I want to encourage all developers to avoid these types of punitive action. It will only end in heart ache and wasted cycles. Software piracy has been around for a long time and will continue to evolve from where it is today. It is not a war won by indie developers. We have too little time and too many features to implement.

So what can we do? Try to convert these users into paying customers. Treat these cracked apps as "Lite" versions and use the typical approaches to try and get them to pay using one of these methods:

  • Put ads at the top of a cracked app
  • Detect when a user has opened the app more that five times and prompt them to go to the AppStore and purchase the app
  • Remove some features from the application when it has been cracked and let the user know.
  • Set timer that will turn the application off
Many people have been asking Apple to implement try before you buy support into the app store. I think that this is exactly what the crackers are giving us.

Don't take it personally, don't feel threatened, this can be an opportunity.

Monday, January 26, 2009

Follow over 100 Iphone Developers on Twitter

@timhaines put out a call today for all Iphone developers that tweet to put there info into a google spreadsheet. Currently the list is over 160 developers and I thought I would be crazy and follow all of them.

Coming from the Rails world I thought would do the right thing and DRY it up with a little script. So little it will fit right here for the world to grab:

require "rubygems"
require "google_spreadsheet"
require 'twitter'

google_user = "XXXXXXXX"
google_pw = "XXXXXX"
twitter_user = "XXXXXXX"
twitter_pw = "XXXXXXX"

session = GoogleSpreadsheet.login(google_user, google_pw)

ws = session.spreadsheet_by_key("p3LA_Q08eM-VAAyq03ZSjYQ").worksheets[0]

base = Twitter::Base.new(twitter_user, twitter_pw)

(1..1000).each do |row|
url = ws[row,2]
matched_user = url.match(/http:\/\/.*twitter.com\/(.*)/)
next unless matched_user
matched_user = matched_user[1]

puts "Attmepting to follow #{matched_user}"

begin
base.create_friendship(matched_user)
puts "success"
rescue
puts "******* Failed #{$!.message}"
end
end
You can grab the code from github at http://github.com/digidigo/iphone-dev-tweeters-/tree/master

You will need to grab a few ruby gems to make this work. Check out the google spreadsheet gem at http://github.com/gimite/google-spreadsheet-ruby/tree/master . And then the twitter gem at http://twitter.rubyforge.org/rdoc/

So go out there and be crazy like me and see what all of us Iphone devs are tweeting about.


If you get an error like this:

ERROR: Error installing twitter: echoe requires RubyGems version >= 1.2

You will need to update your rubygems. gem update --system should do the trick.

Tuesday, January 20, 2009

Apple approves Iphone app in under 2 days!!

I have to say those guys at the App Store are working hard. We are up to 15000 apps and there are 3 new farting apps a day. Those guys are cranking.

And yet I have never noticed a slow down in app approval time. Most of the time a new app for me takes about 4 days and updates get approved in 3 or 4 days.

But today I got a big suprise, Chatterbox a paper fortune teller hit the store in under 40 hours. You gotta love that.

Thanks guys!!


Here is the store text about Chatterbox --- My wife loves this app.

Chatterbox is a fortune teller or a cootie catcher (sometimes called a scrunchie and a chatterbox in Australia) for your iPhone. It is an origami device used in fortune-telling games. Predicting your future using paper fortune tellers was a common pastime during the grade school years. Paper fortune tellers magically told who liked you, who hated you, if you would be rich some day, and even answered questions.

We've made a fortune teller that can be customized by anyone. Included are a few sets, but there is room for you to make many more.

Example of one of the included sets:

DISASTROUS DATING FORTUNE SET (Quick ice breaker for those with a sense of humor)

1. I lost my number, can I have yours?
2. Do you believe in love at first sight, or should I walk past you again?
3. Are you a parking ticket? (What?) You got fine written all over you.
4. Does my breath smell okay?
5. Is your dad a thief or something? Because someone stole the stars and put them in your eyes!
6. Here's 20$. Drink until I am really good looking, then come talk to me.
7. You sure have a great looking tooth.
8. You want me, I can smell it.



The game could be used to cheer someone up (by writing a bunch of encouraging fortunes), to play a trick on someone (by writing all bad fortunes), to help with dating by perhaps writing eight fortunes that all tell the person you're interested in that they are "meant to dance with you". It's up to you. The game is a common pastime for kids in school but, make up your own sets of fortunes and you'll find that the fun of playing with a fortune teller doesn't diminish just because you're no longer in school.

How to Play:

A player asks a question, then chooses a color. The chatterbox shuffles, the player chooses a number and after the final shuffle the player chooses a final number. Their fortune or answer to their question is then revealed.

Friday, January 2, 2009

Bug in App Store Causes Apps to Disappear

A few app developers are reporting that their apps have disappeared from the App store. This happened to one of my apps, WristPop Coin Toss , and has happened to one other app that I know of, Kana. Customers attempting to purchase one of these applications were greeted with a message that the app is no longer available on the store.

The bug that is causing this is in the Itunes Connect Management Application and can happen after changing the price of an application. Here is a screen grab of the pricing tab


Notice that the availability date for this application is December 22nd 2009. If you hit save at this point your application will disappear from the store for almost a year. This is really a rookie HTML mistake, for some reason the current year is not in the select list and so the browser selects the first year in the list.

All is not lost. If you made this mistake or you need to update your price for an application, you can select today's date from the drop downs and hit save. You application will reappear in the store within an hour. Your release date will not change.

This happened to both of the apps mentioned above after the end of the New Year's App Blowout, which was great fun!

A special thanks to macgicDave for passing this on and twitter of course for bringing it into my ambient field.