Filed under: Analysis / Opinion, Humor
Dear Aunt TUAW: Limiting distribution to faster iPods and iPhones
Dear Aunt TUAW,I'm an iPhone developer. My applications really need some computing *oomph*. How can I ensure that the app is only distributed on the iPhone 3GS or the iPod 3G or later?
Speaking of which, what exactly is the adoption rate of those newer, faster units? How can I find that out?
Love & Kissies,
Mr. Gando
Read on for Auntie's response...
Darling Gando,
Unfortunately, the iPhone device required capabilities do not provide a minimum CPU speed hook. These items are normally specified in the Info.plist file using the UIRequiredDeviceCapabilities key. Although you can specify that your application needs telephony services, access to a still camera or to GPS, or even peer-to-peer via Bluetooth, you cannot say "needs at least the computing power of a 3rd generation device." And that's a shame.
Hop on over to bugreport.apple.com (you'll need a free online developer account), and add a feature request! My radar number for this is 7302332. As I wrote in that request, applications should have the option of limiting sales, delivery, and installation based on device CPU/RAM performance. It's clear that the 3rd generation iPod and iPhone outperform the 1st (and to a degree, 2nd) generation units.
As for the adoption rates, I recommend you check out some of the iPhone analytics sites. Companies like Pinch Media and AdMob provide both free and paid reports. I don't have a link to a specific list of device-by-device breakdowns but I've read that YouTube Mobile uploads grew by 400% after the iPhone 3GS launch.
Warmly,
Auntie T
P.S. Don't forget to take extra Vitamin C and get your flu shots!

![TUAW [Cafepress]](http://www.blogsmithmedia.com/www.tuaw.com/media/tuaw-cafepress-promo.png)


Reader Comments (Page 1 of 1)
jftreko said 4:05PM on 10-14-2009
yeah I recently ran into this , when a user downloaded my app. The app only works on 2nd gen devices and we state that in the app store description too. But it would have been nice if the user could have just been cut off before the sale.
Reply
9600baud said 4:11PM on 10-14-2009
or you could be less lazy and optimize your code so you dont need all that processing power. I know its hard to put effort and not use off the shelf API calls and call it a day so you can make a quick buck, but in the long run it'll give you more credibility as a publisher and allow you to reach a greater user base.
Reply
jftreko said 4:27PM on 10-14-2009
You are so wise and your wit.. amazing!
Bergamot said 4:32PM on 10-14-2009
It's not a matter of laziness; along with more available memory and a faster CPU, the third generation devices have access to OpenGL ES 2.0 features like shaders and a programmable graphics pipeline.
In many cases it simply isn't possible to backport and maintain any reasonable level of quality.
Dale said 10:24AM on 10-15-2009
It's not lazy development, but I do worry that we will start to see a trend of older models being progressively shut out of future applications and updates just because the closed platform allows for it.
Honza said 4:24PM on 10-14-2009
If you put pinch media or other data collecting libraries in your app, I and many others will not purchase it. There are websites that list apps that embed this 'spyware' and this gives people a choice to not have their data network used and device (and therefore you personally) identifying data sent to 3rd party servers without their consent or knowledge.
Reply
aggripa said 5:23PM on 10-14-2009
Honzo, would you have links to those websites. My google-fu on this was weak. Thanks.
Sparks said 4:41PM on 10-14-2009
Erica, if you're adding Radar bugs that aren't sensitive, you might also want to add them to the (still under-utilized) OpenRadar -- http://openradar.appspot.com/
Since Radar is only accessible to Apple folks, OpenRadar maintains a sort of mirror of bugs that have been made publicly available. You can even map the rdar: URL to OpenRadar, so that clicking on one of the ever-popular rdar:// URLs on an Apple mailing list will immediately direct you to OpenRadar to check if there's a public mirror of the bug.
Reply
Thomas said 5:17PM on 10-14-2009
You actually can get the cpu speed using a c function based on sysctl. It works perfectly on the iPhone. I use it in my application, Gauge Mathematical Tool, for publishing benchmark scores to a score server along with cpu clock speed.
Here's the function:
#import
#import
(import these headers if you need to.)
int getProcessorFrequency()
{
int count ;
size_t size=sizeof(count) ;
if (sysctlbyname("hw.cpufrequency",&count,&size,NULL,0)) return 1;
return count;
}
The return value will be the cpu clock speed in hz. 600 mHz would be something like 600000000.
You can also get the ram size, like this:
int getRamSize()
{
int count ;
size_t size=sizeof(count) ;
if (sysctlbyname("hw.memsize",&count,&size,NULL,0)) return 1;
return count;
}
The return value will be in bytes.
One more function is useful, and it allows you to get the hardware model id of your device (i.e. iPhone2,1 or iPod3,1)
- (NSString *)hardwareModel
{
static NSString *hardwareModel = nil;
if (!hardwareModel) {
char buffer[128];
size_t length = sizeof(buffer);
if (sysctlbyname("hw.model", &buffer, &length, NULL, 0) == 0) {
hardwareModel = [[NSString allocWithZone:NULL] initWithCString:buffer encoding:NSASCIIStringEncoding];
}
if (!hardwareModel || [hardwareModel length] == 0) {
hardwareModel = @"Unknown";
}
}
return hardwareModel;
}
Hope that this helps you.
Reply
csnplt said 5:19PM on 10-14-2009
Sorry, the headers are sys/sysctl.h and sys/param.h.
Steve said 1:24AM on 10-15-2009
Surely you can limit distribution to the 3GS and above by only compiling for armv7 instead of universal using the option in Xcode?
Older iPhones/iPods used armv6.
Reply
Honza said 5:24AM on 10-15-2009
@agrippa (TUAW won't let me reply to my own post apparently):
Sure here's a couple of links explaining the issue:
http://www.iclarified.com/entry/index.php?enid=4935
http://www.taranfx.com/blog/iphone-privacy-is-your-iphone-spying-on-you-how-to-fix-it
Main site which has also a list of apps:
http://i-phone-home.blogspot.com/
Reply