My app follows the "make everything sparkle" trend, which looks great on iPhone4+ and iPad2+ but chokes a bit on older devices. There are two routes to choose between:
Keep the same look on the app no matter what. Accept that some users will have long load times. In my experience, this seems to be the most common approach, but some great apps (Sword & Sworcery) have intolerably long load times on iPhone 3G, for example.
Detect the phone model and decide (based on my testing benchmarks) to skip certain non-critical animations or effects on older devices. This risks someone seeing it on an older app and thinking "this app looks okay, I guess" rather than "wow".
Aside from "it depends on context", is there a "best practice" or industry standard on this?
EDIT: What I'm using (which might be more objectively useful, skeptics) is this, slimmed down from Erica Sadun's great but bigger class:
+ (NSString *) platform {
char *m = (char *)"hw.machine";
return [self getSysInfoByName:m];
}
+ (BOOL) deviceIsLegacy {
NSString *platform = [self platform];
// LEGACY DEVICES:
// iPhone 1, iPhone 3G
// iPod 1, iPod 2
// iPad 1
if ([platform isEqualToString:@"iPhone1,1"]) return YES;
else if ([platform isEqualToString:@"iPhone1,2"]) return YES;
else if ([platform isEqualToString:@"iPod1,1"]) return YES;
else if ([platform isEqualToString:@"iPod2,1"]) return YES;
else if ([platform isEqualToString:@"iPod2,2"]) return YES;
else if ([platform isEqualToString:@"iPad1,1"]) return YES;
return NO;
}