Under The BridgeUnder The Bridge

Musings
App Store games

Ah, a little light humour for you today: turns out that these clowns called Reverb Communications got caught with their hands in the cookie jar offering their army of sock puppet reviewers up for open bidding.

Reverb employs a small team of interns who are focused on managing online message boards, writing influential game reviews, and keeping a gauge on the online communities. … Reverb will use these interns on Developer Y products to post game reviews (written by Reverb staff members) ensuring the majority of the reviews will have the key messaging and talking points developed by the Reverb PR/marketing team.

Heh, heh. And they figured that nobody would have enough of a sense of ethics to blow the lid off that? Well, apparently it took a surprisingly long time for anyone with some honor to come out of the woodwork:

Aside from representing Pangea Software, one of the more successful App developers for the iPhone (they made Enigmo, which was featured during the Apple WWDC Keynote 2008), they also represent Harmonix (the Guitar Hero and Rock Band guys), MTV Games, and a host of iPhone game developers.

Not that it’s a given that the above or their other clients were aware of this, I suppose … but a hefty dose of suspicion is warranted, yes?

Of course, it’s not as if it’s terribly surprising that any public review forum is gamed — Penny Arcade noted years ago this is even common practice in the webcomics world, for crying out loud — but it’s a good example of how lack of moral compass will destroy the value of trust-based resources. We won’t bother following up that line of thought further or anything, except to observe that if your trust in the App Store review process is not already destroyed … now would be a good time to work on that.

In the meantime, hey; if you’re not overly burdened with morality and/or community responsibility, now you know where to get effective PR for 75¢/paid download!

h/t: Slashdot!

Snippet: Playing YouTube Videos

So it’s very easy to play a video in your iPhone app — whether local or off the web — with MPMoviePlayerController; and it’s very easy to put a video on the web via YouTube. However, there is a problem combining the two; since YouTube doesn’t give out direct links to its videos, you can’t give a YouTube video to MPMoviePlayerController. And if you tell the system to open the URL, well then your app’s gone. A non-optimal experience, indeed.

But here’s a way around that — just have a UIWebView containing nothing but the EMBED code for the link you want to pull up, and it’ll show up — once it loads, so you do have a white flash while you wait — as a YouTube brand, play button, and frame from the video. When the user taps that, the YouTube application is launched on top of your app, and when it’s finished, control is returned. Not bad on the convenience, indeed.

Unfortunately, there’s no kind of direct control or notifications of loading, progress, quitting, etc. However, you can get some indirect notifications based on your application’s window state: add in your view controller

to get these called when the YouTube window is shown and goes away respectively.

and hey, if that’s all you require by way of notification you’re good!

Now, if some clever spark out there would tell me how to set up the HTML delineated in that article so it would actually display an image of my choice instead of what comes from YouTube, then I’d be really happy! Bueller? Bueller? Anyone?

UPDATES:

HCYoutubeParser: Class which lets you get the iOS compatible video url from YouTube directly!

Snippet: Distance Calculation

So, if you’re doing a GPS-enabled application, chances are you’re going to want to figure out distances sooner or later. Perhaps even, as in this iphonesdk thread, have a SQL database of points of interest and want to pick nearby ones. And here is how you would construct that kind of query:

sprintf(buffer, "SELECT * FROM POIs WHERE (ABS(lat - %f) < 0.03) AND (ABS(lng - %f) < 0.04);", nLat, nLon);

Handy, that. And if you really need exact distance sorting, here is a formula that works at any latitude:

Now you know!

User Support Services

So, since we mentioned offhandedly the topic of support woes yesterday, let’s dig around a little and see just what kind of services are out there to make that process easier, shall we? Especially since as it happens, the topic came up on the iphonesdk list a couple days ago and there were a number of options suggested:

  • The GetSatisfaction.com people that just a little while back we mentioned the library that you can embed right into your app; but after following up the links that Informed Reader “Jer” was kind enough to grace that post with, we’re just a bit skittish about doing business with them, slick integration and free signup notwithstanding.
  • Lighthouse for tickets paired with the from the same company Tender for customer service. This one piques our interest because as you may recall if you’re a really old school follower, we decided waaaay back when that Lighthouse Keeper was the sine qua non of OS X simple issue tracking, and why yes it still has pride of place in our Dock, no reason to second-guess that since. (And our gushiness was enough to merit a quote on their product page, no less. Heh.) Pricing starting at $19 a month though … hmmm, we’d have to have a good bit more support needs before that really made sense.
  • Hesk.com, which looks quite interesting; PHP/MySQL software you install on your site for free (long as you don’t mind their logo) or can have hosted if you want. Client interface demo looks nice and clean as well, a strong consideration with support software indeed.
  • SupportSuite from Kayako.com. If you want really full-featured that certainly looks like a top contender, but we at least don’t have any particular need for any of that so far, especially at the $30/month and up their solutions cost.
  • Fixx which is free for individual developers you might look at … but the recommender added “after looking at Hesk it definitely has a more user-friendly interface”; which as you see above had struck us at first glance as well. So we won’t investigate that one further we don’t think.

So there’s a number of interesting options. So far our support needs don’t actually merit the trouble of setting up even a free one; but hey, always nice to keep abreast of the subject in case the need ever does suddenly become compelling! In that vein, any opinions on these or other services worth (or not) considering, Dear Readers?

UPDATES:

Appsfire App Booster is recommended by Five Lakes Studio!

Users Blowing

No, we’re not going to talk about support woes today, and we’re not talking about anything sexual either, misinterpretable title notwithstanding; we’re pointing you at another excellent Mobile Orchard tutorial, Detecting When A User Blows Into The Mic:

The job of detecting when a user blows into the microphone is separable into two parts: (1) taking input from the microphone and (2) listening for a blowing sound.

We’ll use the new-in-3.0 AVAudioRecorder class to grab the mic input. Choosing AVAudioRecorder lets us use Objective-C without — as other options require — dropping down to C.

The noise/sound of someone blowing into the mic is made up of low-frequency sounds. We’ll use a low pass filter to reduce the high frequency sounds coming in on the mic; when the level of the filtered signal spikes we’ll know someone’s blowing into the mic….

Not that we have any actual immediate need for this … or can think of any good ones off the top of our head, really; but hey, if you want to put a cool easter egg in your iPhone app, this certainly would be a stylish way to trigger it!

App Store Alternatives

So as an established iPhone developer, no doubt you’ve had your share of frustrations with the App Store and its approval process. Or maybe you just don’t like giving Apple it’s 30% cut. Or the … challenged … reports and payment process. What to do? What to do?

Well, there’s always the jailbreak crowd, we suppose — and they have indeed listed almost two dozen apps now! — but call us crazy, we just kinda tend to assume that the somewhere around 8% of the crowd that jailbreaks their phones in the first place are not heavy spenders on software, if you know what we mean and we think you do. If you have any evidence that the people listing Cydia apps are making a buck off it, let us know; but we’re just going to assume that it’s not so.

That doesn’t leave anything, does it? Well, according to Dow Jones, the people at Hottrix have sussed out something:

SAN FRANCISCO -(Dow Jones)- Steve Sheraton has a new magic trick: He’s making Apple Inc.’s (AAPL) App Store disappear.

The magician turned App developer has begun selling his $4.99 “iHypno” mind- reading application for Apple iPhones and iPod Touches directly from his Web site. That means consumers can buy the program without visiting the App Store, the official software bazaar that operates under Apple’s iTunes store.

“It’s based on technology encouraged by Apple,” Sheraton said during an email interview. “It’s totally legal and possibly the way you’ll see other apps delivered in a year or so.”…

Intriguing, yes? We thought so when it came up in this thread on iphonesb. The consensus was that they were using HTML 5 features — specifically the offline application cache — and CSS 3 visual effects which are hardware accelerated on the iPhone and all to provide an application-like experience which was essentially just a Web bookmark far as the phone was concerned.

So, in our never-ending quest to inform and entertain you the Gentle Reader, we decided we’d invest the big five bucks in checking out just how acceptable the experience actually is. So off to the site we went, picked an application, paid through a pretty standard credit card web purchase interface, and in short order got the email

OK then. So we tap on the link on the iPhone, and up comes in Safari

HottrixActivate.PNG
So we do, and after a shortish download we get

HottrixInstall.PNG

Heh. Well, that certainly does confirm the general consensus that these “applications” are cached websites, indeed. But are they actually comparable to native apps?

Why yes, indeed, so they are! Our new MindBeam “application” has animation, device rotation detection, native alerts, and so forth … seriously, it’s more polished and functional than a lot of native apps we’ve seen. There’s nothing that we see that jars the illusion. What’s really interesting is that when you tap the “More Tricks” button that takes you to their website, it looks just like the “application” is quitting and Safari is launching. So either these offline web apps really are run as separate processes, or they’re doing the quit-zoom animation themselves and then letting the standard UI come up. But there certainly is no indication that your “application” is running in Safari — if, indeed, it actually is — or in any way other not acting just exactly like every other native app.

So! That was a most illuminating little experiment, wasn’t it? Apparently it is possible to put together a completely under your control shopping experience for the iPhone that is close enough to providing a native application so that our eagle-eyed vigilance didn’t notice anything jarring, at least not once we got past the bookmarking “install” and into the “application” itself, and we do assure you we were looking.

And the really intriguing thing is, an application developed this way would almost certainly be marketable in the same fashion to Palm Pre users, Android users, and anybody else who uses WebKit or anything else HTML 5 compliant. Sure, they’re probably trivially easy to pirate, but really, what isn’t? Personally, we figure that “display the registered user’s name prominently at startup” is as much copy protection as you need to keep honest people honest, and you can’t keep any other kind honest no matter how much you work at it instead of doing something useful.

So, to sum up, mad props to Hottrix for showing us how to work around the App Store whilst providing what appears to be a perfectly acceptable user experience … and we are definitely going to add to the to-do list getting up to speed on just exactly what classes of application functionality are practical to provide in HTML 5!

Library: MapKit-Route-Directions

Unfortunately, our Japanese translating skills aren’t up to reading this post, but we think that

MapKitでルート案内をするライブラリを公開しました。

translates to something to do with the library

kishikawakatsumi’s MapKit-Route-Directions at master – GitHub

Extend MapKit to add route directions powered by Google Maps API.

Hey, if you want turn-by-turn descriptions in your MapKit, then you’ll probably find someone who speaks Japanese to sort this out for you, we imagine. And if you do, come back and provide us some English usage notes, k?

Snippet: Selector choosing

[EDIT: Discontinued.]

Here’s yet another handy piece from the oft-mentioned Erica Sadun: convenience methods for NSObject which now include an elegant way to account for differing SDK interfaces at runtime.

… I’ve put together a category of NSObject utility methods here:

http://github.com/erica/NSObject-Utility-Categories/tree

This code basically derives from stuff I’ve needed for other projects at various times. The latest addition is a selector check that returns the first one an object responds to, e.g.

SEL aSelector = [object chooseSelector: sel31version, sel30version, sel22version];

This offers run-time selector selection based on the current firmware. To use the selector, I’ve added a plethora of performSelector choices…

Handier than figuring it out yourself!

h/t: iPhoneSDK!

Social Network: Ninja Code

[EDIT: Discontinued.]

And today we’re letting you know of a new social network for iPhone developers, Ninja Code. Yes, a social network. Whilst in general trolls don’t have any particular use for the onanistic triviality of these social network things all the little kiddies are into these days, we make the odd exception. Like this one. Because their intro art is just so damn cool.

ninjacodeheadercrop.jpg

Is that not, like, just essence of awesome? Why yes, indeed it is! So, we didn’t bother checking it out any more to find out if it looks actually useful or anything, because having an excuse to use that picture above, why that’s good enough for us!

So there we go then. If there’s anything actually interesting there you’ll hear about it no doubt. Any excuse to run that picture again!

h/t: LinkedIn – Cocoa Touch!

Tool: BuildCleaner

Here’s a handy little utility called BuildCleaner for, eponymously enough, cleaning up all those Xcode build folders that litter your drive:

I just wanted to let you know of a little utility app I’ve just posted, called BuildCleaner. As I explore example projects, open source frameworks, and test applications, I find that I usually have a lot of build folders cluttering my hard drive. When you combine that with backup services like Time Machine, Mozy, or DropBox, you can waste a lot of your bandwidth uploading build folders.

To help with this, I’ve created BuildCleaner. It’s a little menubar application that scans your hard drive every few minutes for build folders and deletes them if they haven’t been modified recently (you can change the cutoff interval in the settings window). You can also tell it to ignore the build folders of specific projects, such as the humongous project you’re following that takes ages to compile, but you only crack it open every couple of days…

Handy, indeed. And it’s been open sourced on github for your tweaking pleasure as well!

h/t: cocoa-dev!