Home » Little Tips
Category Archives: Little Tips
Ok, yet another example of how Apple drives us iPhone developers crazy. When you develop software you want your development and test environments to match as closely to the distribution version as possible. In this case you want the iphone simulator and iphone dev system for the iPhone hardware to match how the final bundled app works. We’ve hit some issues in the past with this not being close, but we’ve found another lovely glitch. In looks like the iPhone simulator, and the dev hardware loader allow things that the distribution version doesn’t: specifically how file names are handled. On the simulator a file called “test.jpg” and a file called “Test,jpg” are considered the same. Some file systems allow this, others don’t. Howewver, when you bundle the app this breaks. Now the files are not considered the same, and this leads to broken links and images not correctly appearing in an app.
While it was definitely a mistake to not check that the file name matched the image call in the app–it wasn’t made easier to find this problem since the simulator happily displayed the image “properly”.
Sigh, a new version of the affected app has been submitted, but i really wonder why these types of glitches in the dev tools happen.
I wanted to relate an interesting issue I recently ran into using Xcode tools for iPhone development. Using iPhone SDK version 3.1.2 and Xcode 3.2.1 on Snow Leopard I ran into a weird crash issue. One of the new functions (and exclusive to Snow Leopard) is the “Rename Project” function in Xcode. Basically it’s normally a bitch to do this manually. Xcode places your project name all over the place in your app, so it’s a very likely situation that you’ll forget to change one somewhere and cause your app to crash or go crazy. So when they added the rename function it was a great relief to many programmers. In our case we use the function to make a new version of our “Central” app for usage by another webcomic in our Webcomic Central service.
Well, in short, the rename function was failing. After trying to do a rename Xcode would crash with an error– Internal error NSCFArray insertObject:atindex attempt to insert nil .
Yeah, not very helpful. The error seems to imply that something somewhere is being renamed but with nothing to input, or with something that’s nil already. So now I’m paranoid about our app. Did we make a mistake somewhere? Is there a cul-de-sac area of the program that doesn’t cause it to crash but is now showing an error when renamed? UGH!
I tried everything I could to find the issue, but it eluded me.
Then it struck me. Did any other apps rename properly? NOPE!
The rename function itself seemed screwed up. So I reinstalled Xcode. It still didn’t work!
What the hell? What do I do now? Then I started thinking. What’s the most basic thing that can go wrong in OS X? Yes, permissions issues.
So I moved the app out of the default applications folder in Xcode and moved it to the desktop. Guess what…it now worked to rename it!
All I can think is that at some point down the line something got screwed up with the permissions for the Xcode folders. It looks like a file with the xproj folder called foo.pbxuser didn’t have permissions to be rewritten with the renaming. So it failed.
Oh, BTW, when the rename failed it deleted the original xproj file for the app….so again with all things, always make a backup of your files before trying to do anything like this.
Anyway, I hope this helps anyone else who might have this issue.
I’d like to start my tales into iPhone development at the beginning. For all of you who think the hard part is the actual coding–Ha!
The first difficult part of the iPhone app store is getting your actual sign up approved. If you go to developer.apple.com you can start the process for signing up for your account. The one good thing about this is you can choose to go the “easy” route at first and only sign up for unpaid app (i.e. free apps) development. While this route is a bit easier, it still costs you some cash–$99 per year. Yes, you have to pay to develop apps that will make you no money from the store (of course, you can make money through other things other than purchases of the app).
One of the big pitfalls of this system is really the paid app sign up. This requires you to get a ton of financial info together and fax it off to Apple. (they want bank account and address info). Here’s where some major problems can crop up–You can’t easily change the data once they receive it. As part of your sign up you need to fill out some online forms with your company name and other info (tax, address, financial). If you make a mistake on some of these, you’re in trouble. There is no way to have this changed through the online interface. In fact, there’s no clear way to actually contact them over this.
We had an issue with our address. It looks like someone at Apple actually types in your info from the faxed forms you send over–and they did it wrong for us. What you end up with is a screen that shows you your info, but no clear location to contact Apple to correct it. I literally sent a customer contact email through every CSR interface on the Apple site and got no reply. About 2 months later I received an email from a CSR saying basically “Fax us a new copy of your company incorporation document” with the statement that they would then go in and make the necessary edits.
Look, 2 months is not a reasonable time frame for this type of thing. What if the issue had been with our financial info instead of something minor?
So, the main point of this is really think about what you will be entering into their sign up forms. As far as I can tell, you can’t make many changes later. (As a side note–there are reports that this is really a problem in other areas. It seems like it’s impossible to take over software from another account. For instance, if you were to buy another iPhone developer’s software business there isn’t a real way to combine accounts or move the apps without literally resubmitting them and losing any history or linkage.)
While Apple does a good job with their customer facing interface. Expect many hassles and surprising lapses with their business interfaces. This is just the beginning though, just wait until you here about the dev interfaces in the next posts.
AWSOM.org has, up until now, been primarily focused on setting up online sites for artists and comic creators. I do WordPress development, and host a few plugins here to add some features that might help out for the above purposes. Recently I’ve jumped into iPhone development, also to help out webcomic creators. Onezumi Studios just released a new service called the “Webcomics Central App Service“, which is designed to help webcomic creators connect with their fans through a branded iPhone app.
In many ways I see the iPhone service as similar to why I started this site. It’s not easy doing coding. Creators mostly don’t have time to even begin to look at this stuff. It’s also very hard and a very specialized skill, so it’s not something that many can even do. So once again we’ve stepped in to help in an area that we can provide our skill to the community.
So I plan on outlining some of the things we’ve discovered while developing our apps in hopes that it will make it easier for others to do so, and also outline why we decided to do the service in the first place (in other words, why it’s such a bitch to get anything developed for the iPhone).
So, the tales will soon begin. Brace yourself, it’s a bumpy ride.
I’m currently working on adding comic thumbnails to the RSS output of our comic site http://www.onezumi.com, but have discovered a very irritating fact: WordPress does not allow img tags in the description field in the RSS XML. As a result most feed readers will not see the images and won’t display them. (the default Firefox feed viewer being one of them). The img tag does get added to the content encoded element, but that’s less supported right now. So my normal technique is to write up a quick plugin to correct this….but apparently that’s not possible. All of the hooks and actions out there do not allow for this be accomplished. So it comes down to the old fashioned “hack the core file” thing to get this fixed. I hate doing that, but in this case there’s no other way to do it. The actual file to hack (for RSS2 feeds) is located in your wp-includes folder and is called feed-rss2.php. There are two lines in there that have the description element, one for if you are using only an excerpt, and the other if you are doing full text feed. Basically you hack the line to put in whatever you want right after the [CDATA[ part, or right before the final ]] of the line.
Of course you will now always need to remember to either add this back in after upgrading versions of WordPress, or keep a copy of this file and just merge it into things afterward (and make sure any updates didn’t affect this file).
The one thing that is unfortunate is I was hoping to be able to add some stuff to my plugins for this for anyone to benefit, but can’t. Oh well.