Archive for May, 2011



This is kinda a nifty idea for marketing to your customers:

…In a previous #idevblogaday post, I wrote about how to get your users to spread the word and their love for your app in a post entitled Assisted word of mouth: Get users to sell your app.

In this post, I wrote about App Store Gifting and how awesome it actually is. To recap: You’ve already sold your app, the user loves it and wants to share his/her love for it. Gifting is a great way to share the app, and once a user has spent $X.XX, they’re usually more apt to want to Gift your app to a friend or someone in their family. Read the post for more insight.

While Gifting was just one of the ideas I included in my post, Gifting really seemed to be the key idea that most people loved and many wanted to include in their apps.

So, today I am releasing GiftKit. It’s basically Appirater, but for gifting…


Well, it’s certainly an interesting idea; like most things, you’re certainly more likely to get it if you ask than if you don’t!

h/t: @runmad!



Do you happen to use Redmine for your bug tracking? If so, you want to check out the RedMine-Feedbacks project on github:

Redmine Feedbacks is a simple MessageUI view which make the user of your iPhone App to send feedbacks directly to the tracker of your Redmine using Redmine REST-XML API…


Now, we still think as discussed here that ProjectPier looks like the best candidate out there for something that suits our particular circumstances; but this certainly is an interesting consideration in favor of Redmine, indeed.

h/t: @romainbriche!



This’ll be handy if you’ve got a location-aware project in mind:

SSLocationManager: A Compact Obj-C Library for Location Data

… CoreLocation can be used to obtain the latitude and longitude parameters of the location of the device. But sometimes we need some more detailed information about that specific location. Country, city, state, street, may be postal code etc.. It depends on the application. That is something iPhone or iOS platform does not provide. However, we can use a web service such as Yahoo! PlaceFinder to access detailed information about a location of which we know the latitude and longitude parameters.

What SSLocationManager does is as follows:

  • Ask CoreLocation services to determine current location of the device.
  • Get current position in latitude and longitude from CoreLocation.
  • Call Yahoo! PlaceFinder web service to get detailed information about the location specified with its latitude and longitude.
  • Notify the application via SSLocationManagerDelegate and supply the detailed location data…

Note that the terms of service for said web service include

Use of the Yahoo! PlaceFinder API web service should not exceed 50,000 requests per day. If you believe your application will exceed such volume, please contact us…

so you’d probably want to look into that before a massive deployment, but hey, this is certainly convenient for development!

h/t: @ardalahmet!



Here’s another nice piece from the people who brought you that nifty NMView: NMViewController!

iOS provides a lot of convenience classes to integrate common UI metaphors into your Apps: UITabBarController, UINavigationController and UIPopoverController amongst others.

Most of these classes lack the skinnability that many people require when creating branded apps. The NMViewController repository gathers custom implementations of common UIViewController subclasses which allow for a custom look and feel…

Right now there’s a custom NMTabBarController,

A re-implementation of a UITabBarController which allows for a custom look and feel of the tab bar. It comes with a default implementation of NMTabBar called NMUITabBar that provides the iOS default look and feel.

The architectural decision behind NMTabBarController was to free the implementation from an object like UITabBarItem. Without the contraints of the data that can be communicated using UITabBarItem, an NMTabBar hosted by NMTabBarController can display its tabs in whichever way it chooses…

and an NMNavigationController and more are promised soon.

‘Course, if you want to really really customize your tab bar look, the most excellent has a whole selection of others to draw from:

BCTabBarController for iOS

A ground-up rewrite of UITabBarController that adds: “A cool little arrow that slides around to indicate the current tab; support for all orientations; same height as a standard UIToolbar;” and optional labels…

CHViewControllerSwitcher for iOS

A replacement for UITabBarController, with useful features. It allows you to create your own selection interface with UI-components. It allows you to use just some part of the window, not the full-screen mode. It allows you to custom frame sizes of the content view for the portrait/landscape modes…

Animated Tab Bar Selection Indicator for iOS

As seen in Twitter for iPhone (née Tweetie 2), select a tab from the tab bar, and a small triangular selection indicator slides into place above the tab…

CiExpandableTabBar for iOS

ExpandableTabBar is an iOS custom tab bar control. Its behavior emulates the system tab bar with the addition of supporting multiple rows…

TabBarKit for iOS

A flexible Tab Bar implementation for iPhone and iPad…

Something there for anything you want to do no doubt!


And here’s a pointer to VDTabBarController for colorizing your tab bar icons!

InfiniTabBar for iOS — “A scrolling tab bar with space for infinite items.”

ALCustomTabBarController for iOS — “Allows customization of the standard UITabBarController…”

JMTabView — includes a top tab selector as well.


GTM OAuth 2.0

You probably want to be on top of developments here if you write clients for any web service requiring a login, particularly a Google service:

iOS and Mac Sign-In Controllers graduate to OAuth 2.0

In September, we introduced OAuth 1 sign-in controllers to simplify authenticating users from iOS and Mac applications. As the Internet software industry is converging on a newer standard, Google now offers the Google Toolbox for Mac OAuth 2.0 Controllers. This new library enables Cocoa applications to sign in to Google and other services that conform to the latest draft of the OAuth 2.0 standard…

… The Google Data APIs Library for Objective-C now integrates the OAuth 2.0 controllers, making it the preferred way for developers to let users sign in to the library’s many supported APIs.

You can learn more about the OAuth 2.0 protocol by checking out Google’s documentation, and about the GTM OAuth 2.0 controllers by reading the introduction at the project site. Suggestions and questions on the controllers are welcome in the GTM OAuth 2.0 discussion group.

It’s better to be ahead of these kinds of sea changes than behind them … remember the OAuthpocalypse? Yes, we’re not going to find something like that blindsiding us a week before release again. Nuh-uh.



Now this looks downright handy for sanity checking your UIKit-based interface:

Introspect is a small library for debugging user interfaces created with UIKit on iOS. It contains tools for showing positions and other properties of views, highlighting of non-opaque views, showing outlines and more…

  • Highlighting of view frames
  • Displays a views origin & size, including distances to edges of main window
  • Move and resize view frames during runtime using shortcut keys
  • Logging of properties of a view, including subclass properties, actions and targets (see below for an example)
  • Manually call setNeedsDisplay, setNeedsLayout and reloadData (for UITableView)
  • Highlight all view outlines
  • Highlight all views that are non-opaque
  • Shows warning for views that are positioned on non-integer origins (will cause blurriness when drawn)
  • Print a views hierarchy to console (via private method recursiveDescription)


Wow, that’s quite the functionality set indeed. Grab it off github for next time your UI is acting squirrelly!

h/t: @cocoacontrols!


Live Video Photos

Here’s an article that makes it into the “must read” category if you’re doing photo or video stuff in your apps:

iOS4: Take photos with live video preview using AVFoundation

I’m writing this because – as of April 2011 – Apple’s official documentation is badly wrong. Some of their source code won’t even compile (typos that are obvious if they’d checked them), and some of their instructions are hugely over-complicated and yet simply don’t work.

This is a step-by-step guide to taking photos with live image preview. It’s also a good starting point for doing much more advanced video and image capture on iOS 4…

Note that AVFoundation requires a 3GS/touch 3G or later; but even if you have older picture-using code you should look into using it for your next rev. And this article will be of much help with that, indeed!

h/t: @redglassesapps!



Aaaaaaand for the second in our current series of “really, there’s a business model here?” services for the busy iOS programmer, let’s take a look today at HaveASec? — “The Mobile Survey Platform.” From the iPhone developer page:

Go beyond what analytics can provide.

With HaveASec, you can:

Find out who your users are (gender, age, etc.)

Find out how much they would be willing to pay for your application

Reach out to users for future products and releases

Get valuable feedback to prioritize development

I suppose that’s mildly interesting, and they do provide an iOS wrapper to make it easy … but their pricing page seems to us kinda on the steep side. Seriously, how long would it take you to knock together a simple quiz flow and some collating scripts? But hey, perhaps like yesterday again we are missing something here at first glance, as apparently some people have found value here:

Applications already using HaveASec

Rolando (ngmoco), Speed Brain (Lumosity), and iDiscover (Lilikoi) are three of the several application that have begun using HaveASec to power their feedback from their users.

… so hey, if you were thinking “gee, I really wish there was a drop in library to enable surveys in my app!” well there you go then!



Here’s a new service called AppA that’s interesting … more for “they really think there’s a business here?” than its actual functionality we think, but judge for yourself:

AppA: Drop-In Tools For iOS Devs

Developed first and foremost to make life easier for iOS developers, AppA is a service that provides drop-in tools that offer useful features for iOS apps in mere minutes!

AppA allows you to:

  • Support your users with an in-app support form and knowledge base.
  • Cross-promote apps within other apps.
  • Display an attractive app ‘about screen’.

Simply drop the AppA library into your projects to gain the functionality above, so that you can focus on the core functionality of your apps…

Errrrm … ok, we suppose the knowledge base is mildly interesting, but really, wouldn’t most people have all of this on tap already? Particularly when you look at their intended business model,

… Aside from paid plan upgrades, AppA displays unobtrusive advertising banners and receives a small commission from Apple any time someone downloads a paid app linked to from within AppA. This helps to support continued development of the service…

Hey, I like my LinkedIn commissions. I’ll do my own cross-promotion and keep them for myself, thank you very much. And advertising banners to boot, unless you pay? Yeah, we’re having trouble seeing where the compelling value proposition here is, really, if you’ve like ever written an app before. But hey, perhaps we are missing some really good reason that this actually is completely awesome. If you can find it, let us know what that would be!

h/t: @cocoanetics!


Note in the comments, Dear Reader, that the AppA developer showed up to explain the thinking here, pointing out in particular that being server driven means you can update the content without resubmitting to Apple. Yes, that makes it more of a job to duplicate yourself. Still think we’d prefer to do that and keep our own commissions mind you; but hey, if you’re not signed up with LinkedIn, then there is a value proposition here worth considering at least no doubt.


IAP: Anystone 0.4 vs. MKStoreKit 3.5

So we’ve got another project to add IAP support to tonight, and in line with the programmer’s natural desire to avoid work we’re checking out what news there might be on the open source IAP front since the 2.0 version of MKStoreKit we used a while back. And yes, there is a new playa in town:

Introducing the Anystone Store Kit

… However, there are a number of features missing that I wanted, and with no official source code repository for MKStoreKit I decided to kick off my own implementation: AnystoneStoreKit

Having read all of the background from Noel and Apple’s StoreKit documentation the decision was made to build a toolkit that met the following high level requirements:

  • Should not require changing toolkit source code to use it
  • Support for Consumable and Nonconsumable products (and eventually Auto-Renewable subscriptions)
  • Support for multiple product identifiers with the ability to link product ids against the same family (ie:buy 1 berry or 10 berries, they are still berries)
  • Detailed delegate methods to enable a great in-app store experience for the user
  • Lazy loading of the StoreKit data from iTunes
  • Ability to wipe the local data clean for an in app purchase so it can be restored or re-downloaded

That’s a nice list of features yes, and there’s some more interesting stuff planned; check out the 0.4 release notes on github.

However, MKStoreKit has been coming along too: there’s a github repository now, and it’s up to 3.5 with these recent release notes:

What’s new in Version 3.5

Support for Auto renewable subscriptions – MKStoreKit can automatically verify your subscriptions without requiring user to enter password

Bug fix in consumable module

What’s new in Version 3

Support for Server Product Model – MKStoreKit can automatically post the receipt data to your server and “remember” the purchases only when your server returns. The server code for the same in PHP is also available within MKStoreKit.

Well, given as how auto-renewable support is a requirement for us tonight, and server side verification is a probable near term request too, looks like MKStoreKit comes out as the winner and still champion here; we’ll go drop that in and update if we encounter anything worth mentioning. But if you think that Anystone looks like a better fit for your requirements, check it out and let us know how it worked for you!