5

I am just finishing up a SpriteKit game that has been developed and tested on the iPhone5/5S (1136*640), the game runs at 60fps on both devices. I have also written a version that supports iPhone4/4S (960*640), granted I am testing on the slower iPhone 4 but this version struggles with 20fps and can lag/jump on initial load even though I am preloading all my assets.

My current understanding is that I need to submit both versions, but can specify in the description that "This application requires an iPhone 5 or above".

My question is: can I limit the application to the iPhone5/5S, I was thinking there might be a [Required Device Capability] like "Requires_Advanced_Processor" or something that I could set. Its especially hard with games to give a good experience on older hardware without doing a full cutdown version, I am just conscious that releasing the iPhone 4/4S version might tempt some people to download it and have a less than ideal experience, is there anything I can do other than add the above mentioned note in my description when submitting the app?

fuzzygoat
  • 26,573
  • 48
  • 165
  • 294

2 Answers2

3

I have been looking into this issue myself. From what I've come up with, the answer is you can (and should) clearly specify what the minimum requirements are for your app but you also have to make it compatible with all current iPhone models.

Apple's App Distribution Guide -> section Setting Architectures -> "Important: The store rejects a binary that supports only armv7s. If armv7s is included in the Valid Architectures list, armv7 must also be included."

If your app does not run well on a 4s, you could choose to hold off release until the 4s compatibility requirement is dropped (probably when the iPhone 6 is released).

sangony
  • 11,636
  • 4
  • 39
  • 55
1

I had the same problem when I was publishing my iOS game and wanted to drop the iPhone 4 compatibility for performance reasons.

  1. I agree with you. I would avoid the "This application requires an iPhone N or above" solution because many users do not read the app description. They could download and install your game on a device you are not supporting and leave you a bad feedback because of bad performance.
  2. You can exclude the iPhone 4 adding iOS 8 as requirement. Infact iOS 8 will run on the following iPhones/iPods: iPhone 4s, iPhone 5, iPhone 5c, iPhone 5s, iPod touch 5th gen: https://www.apple.com/ios/ios8/ (If you are planning to release the game a couple of months after the release of iOS 8 it should not be a big problem given the typical iOS high adoption rate).
  3. The solution I adopted for my game is to detect, inside the game, if the device is an iPhone 4/4s and disable some graphics effects not relevant for gameplay. I don't know your game but there are many things you can do (e.g. remove particle emitters, use simpler backgrounds, etc...) This is the code I wrote for the detection (look ad the second method):

(Sorry for the old fashion way Objective-C code!)

@implementation G1Utils:NSObject
+ (BOOL)isiPhone {
    return UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone;
}
+ (BOOL)isiPhone3Dot5Inches {
    return [self isiPhone] && [[UIScreen mainScreen] bounds].size.height == 480;
}
@end

P.S: Here you can find the device compatibility matrices https://developer.apple.com/library/ios/documentation/DeviceInformation/Reference/iOSDeviceCompatibility/DeviceCompatibilityMatrix/DeviceCompatibilityMatrix.html#//apple_ref/doc/uid/TP40013599-CH17-SW1

Luca Angeletti
  • 58,465
  • 13
  • 121
  • 148