Check it out here. What do you think?
Tag Archive for 'iPhone'
This post will have at least one follow-up, depending on the result of the “CastCatcher debacle.” Also, it’s probably a bit of a rant so skip to the next to last paragraph if you don’t want to hear about Apple behaving like the Microsoft of the late 90s.
Mobile apps are a strange beast. Users don’t want to pay much (<$5 in most cases), but they want a desktop application’s worth of functionality. Maybe the rationale is along the lines of paying less for something “physically” smaller (i.e. a mobile app fits in your pocket since it’s on your phone unlike the desktop version of Quicken). Until Apple’s iPhone and App Store, your best bet was to buy directly from the developer, through Handango or similar. This sucked. It was a major pain, support was shoddy at best, and you had no idea what you were getting into.
Today, Apple’s App Store eases the distribution pain for developers and gives users trust that the apps they purchase are worth it (screenshots, reviews, etc. all help). It doesn’t solve the support problem, but at least it makes it easy for a user to buy my apps. Cool.
There are some issues with the App Store, though. Some have been addressed, like the review system being open to anyone. You can now only review an application if you’ve purchased it. Other issues, like lengthy delays for Apple’s “approval” haven’t. This delay, though, is manageable. I can deal with waiting a week so Apple makes sure my application isn’t going to take over the world. No problem.
The first major pain of marketing an iPhone app is Apple’s closed policies. Apple prevents developers from releasing competing software on their platform. It’s all very reminiscant of the troubles Microsoft had with IE being bundled with Windows and the United States DOJ. I’m not entirely clear on how Apple gets away with it when Microsoft was unable to. Maybe it’s Steve’s good looks. It’s Apple’s platform, after all, so I won’t fault them even though I disagree. What is a problem, however, is the inconsistency of Apple’s app reviews. One of return7’s applications was just rejected for “using too much bandwidth.” We were asked to neuter the application by turning it into a WIFI-only streaming application. Two things come to mind: that’s total bullshit and I wonder if Apple is going to add streaming functionality to iTunes in iPhone in 2.2 or 2.3. There are at least seven other streaming applications I can think of, off hand, that aren’t subject to this limitation on the App Store. Also, three prior versions of CastCatcher have already been approved. The streaming code is shared among all versions, save for minor bug fixes and feature additions (like Icecast support). The latest version of CastCatcher does not use more bandwidth than many other version and most likely uses LESS bandwidth than most other streaming applications since it does not load its list of stations from an outside source. Bandwidth consumption is strictly based on the streams a user wants to listen to. CastCatcher’s rejection seems like some sort of mistake. Apple has generally been helpful in the past so this was pretty shocking to me.
The second pain is the actual marketing part. Assuming you can get your application on the App Store, you have to make sure it’s an immediate hit or it’s unlikely you’ll make enough money to make it worth your while. You need a well-designed (and built!) application with a leg up on competitors. Originality helps too. Advertising on the App Store probaby pays off in a big way, but I’ve not looked at the costs or tried it so I can’t help there. An alternative is AdMob but I’ve only heard that it’s expensive and I know from experience that the company is not generally responsive (where’s the $250 credit you promised me 2 months ago?) so the return may not be worth it unless you have an application with very high sales. If you fail to make the top 100 list, or at least have a popular application, you’ll be doomed to the 5-15 sales per day grave yard. Bad times.
So what happens now? I suppose it depends on whether or not Apple lets us release the latest version of CastCatcher (we’d really like to get this update in the hands of our users).
More to come.
Want to show an image on iPhone?
//xpos, ypos, height, width
UIImageView *img = [[UIImageView alloc] initWithFrame:CGRectMake(215,255,120,120)];
[r7logo setImage: [UIImage imageNamed:@"my_img.png"]];
[view addSubview: img];
[img release];
“my_img.png” needs to be imported into your project (just drag it onto your xcode project and tell xcode to copy it in).
“view” is a view — if you’re within the context of a view controller, try self.view instead.
You can play AAC+ Streams on iPhone just like a standard MP3 stream (Fetch w/ NSURLConnection, pass filled buffers to the AudioQueue), but pass the AudioFileTypeID “kAudioFileAAC_ADTSType” to AudioFileStreamOpen instead of “kAudioFileMP3Type.” How does one go about checking what type of stream they’re dealing with? Check the content-type (parse it out of headers or the initial response data — that depends on the stream server you’re dealing with):
if ([contentTypeLine rangeOfString:@"audio/aac"].length > 0)
{
audioFileType = kAudioFileAAC_ADTSType;
//Pause and resume so we reinitialize the audio stream with the new file type (AAC+)
[self restartAudioQueue];
}
where restartAudioQueue does something along the lines of the following:
-(void)restartAudioQueue {
[self resetAudioQueue];
AudioFileStreamOpen(&audioState, &PropertyListener, &PacketsProc, audioFileType, &audioState.streamID);
}
and resetAudioQueue calls AudioFileStreamClose, AudioQueueStop and AudioQueueReset as well as cleaning up buffers, etc.
Note that it’s not necessary to cancel and recreate your NSURLConnection — it’s (obviously) independent of the AudioQueue.
Don’t forget to parse out your metadata or you’ll get skips!
Update: AAC+ playback seems to be broken in iPhone 2.1. I’ve filed a bug report w/ Apple about playback skipping w/ 2.1 (same code works great w/ 2.0).
Get CastCatcher 1.2 (will be released sometime this weekend) for your iPhone, then add a new station using this URL: http://slack.wrek.gatech.edu:8000/wrek_live-128kb
Enjoy!

Recent Comments