difference between developing for iphone 3gs and for iphone 4 - iphone

I've developed application for the original iPhone, the 3G and the 3GS, now I need to develop an application for the iPhone 4. What is the difference between developing an application for iPhone 3GS and the iPhone 4?

The most noticeable change is the Retina Display and you should include #2x images in your project to support this. Other than that unless you plan on taking advantage of new hardware (gyroscope for example) or the graphics and cpu improvements, there is very little difference. Also you should reference the SDK Compatibility Guide for tips on maintaining backwards compatibility and/or supporting features available only on certain devices.

The iPhone 3GS uses a 480-by-320-pixel resolution screen where as the iPhone 4 (and 4S) uses a 960-by-640-pixel resolution screen.
As #Joe says, there is very little other differences.

Related

Use iPhone 5 for Retina 3,5" debugging

I recently gave my iPhone 4 to a friend so I don't have a Retina 3,5" Device anymore.
I wondered if theres a way without much tweaking the app code to get the 3,5" Version on the iPhone 5(like an App which isn't optimized).
If you do not include (or temporarily remove) Default-568h#2x.png if will run as a 3,5" app.
The simplest way would be to test on the iPhone simulator and change the hardware from retina 4 inch to retina 3.5 inch!
Or ask your friend to borrow their phone and test it on the device which involves certificates so it's slightly more inconvenient.
Either way, it's not too hard to test on multiple devices. Additionally, if you have an iPod touch that is older than the 5th generation, that works too.
Generally you can purchase, cheaply, used iPod touches online to use for development testing. Good luck!

AppStore: blocking the game for 3G- devices

My iPhone game makes heavy use of the OpenGL ES 2.0 API, and it uses only this version (it needs the shaders). Is it possible to make it only available for the iPhone 3GS+? Not allowing customers of previous versions to download it?
EDIT: I heard that the Infinity Blade runs only on iPhone4, how did they do that? Are there other games in the appstore that require OpenGL ES 2.0 and no other? If there is such a thing, how do I do that?
you can make your app on app store only visible to certain models with UIRequiredDeviceCapabilities.
check out the article.
thanks.
To expand upon mohacs' answer, if you only want to make the application available to certain classes of devices, you can set various keys within the UIRequiredDeviceCapabilities item in your Info.plist. The definitive listing of which capabilities filter for which devices can be found in Apple's iTunes Connect Developer Guide under the "Device Compatibility Matrix" section.
If you rely on OpenGL ES 2.0 support to be present for your application to run on a device, you'll want to have opengles-2 appear in your UIRequiredDeviceCapabilities. The iPhone 3G S was the first iOS device to support OpenGL ES 2.0, so this will filter out the original iPhone, iPhone 3G, and 1st and 2nd generation iPod touches. There are plenty of applications out there that require this, and with people like Marco Arment reporting that fewer than 3% of the iOS devices in the wild lack support for OpenGL ES 2.0, it's a safe filter to use.
You make mention of only supporting the iPhone 4 and up. That's a little trickier to filter out, because while you could use the gyroscope or front-facing-camera keys to target newer A4 or A5 processor devices, this will not include the original iPad, which had hardware slightly more powerful than the iPhone 4.
My recommendation is to target the iPhone 3G S and up, because the iPhone 4 isn't that much more powerful than the 3G S. Also, the iPhone 4's Retina display can mean that fill-rate-limited OpenGL ES applications could run a lot slower on in than the 3G S, due to the difference in the number of pixels you need to render.
I'm not sure that it is possible, but you can add a check on iOS version. If it's 5.0 or higher let the app run, otherwise give a feedback saying that this app requires iOS 5.0 or higher. AFAIK iOS 5.0 can only be installed on iPhone 3GS+
Hope it helps

Which iOS devices should we have for reasonable functionality and performance testing?

We are developing our first iPhone game, and all is going OK for now. We are testing on an iPhone 3GS and an iPad 1. We were wondering which devices should we test on to make sure that also people with older devices will be able to play the game and actually enjoy it.
I have been recommended to get an iPod Touch 2nd generation; since these do not come cheap, I wanted to ask more experienced people for their opinion. I have found a couple of these on eBay from respectable sellers; one is a jailbroken device with iOS 4, the other is a regular iPod Touch 2nd generation with iOS 3.
I looked through past topics on the same subject, and most recent one was about 1 year ago, so things might have changed. Thanks for your help!
If you're checking on an iPhone 3GS then you probably don't need an iPod Touch as well. Although it wouldn't hurt as a secondary testing device.
I think either the iPad 2 or iPhone 4 would be good alternatives.. I know the iPhone 4 includes retina display so you'll be working at 326dpi. Much higher resolution for graphics and UI elements than previous iPhone and iPod Touch generations.
iOS devices fall into following categories for performance:
iPhone, iPhone 3G, iPod Touch 1G: 412MHz, 128MB RAM
iPod Touch 2G: 533MHz, 128MB RAM
iPhone 3GS, iPod Touch 3G: 600MHz, 256MB RAM
iPod Touch 4G: 800MHz, 256MB RAM
iPhone 4: 800MHz, 512MB RAM
iPhone 4S: Dual-Core 800MHz, 512MB RAM
iPad 1: 1GHz, 256MB RAM
iPad 2: Dual-Core 1GHz, 512MB RAM
For more details, see this Wikipedia article.
It would probably be beneficial to have as many of these categories covered as possible, especially if you want enable/disable certain things to optimize graphics/performance for each device. At minimum, I would suggest getting a device in that first group so you can make sure your game can run on the least powerful hardware.
I would also suggest getting an iPhone 4 in order to have Retina Display graphics. Retina Display graphics are generally expected in new games these days, and although you could test it in the simulator, I would suggest having an iPhone 4 handy to test it on a real device as well.
If you plan on a Deployment Target for your apps lower than iOS 4.3, you will need to find an armv6 architecture device on which to test, preferably running the iOS version of the lowest version iOS Deployment Target which you plan on supporting. armv6 devices include the iPhone 2G, 3G and the 1st and 2nd gen iPod Touch.
The 3GS has a newer CPU that runs armv7, so that's fine for Deployment Targets of 4.3 and above.
It all depends on what version of iOS you are developing for.
In an ideal world, you would be able to test your product on all the devices that support the OS you are developing.
If this is not an option, you should just need the bare minimum devices that the OS can run on:
iOS 3: iPhone (original), iPod Touch (1st generation), iPad
iOS 4: iPhone 3G, iPod Touch (2nd generation), iPad
iOS 5: iPhone 3GS, iPod Touch (3rd generation), iPad
One can assume that if your product runs well on these devices, it will run well (if not better) on devices of greater power.

Is there a diff in the new iphone versus previous version (development perspective)?

If I get an iphone, should I go for the latest version (with the antenna issue) or can I make do just fine with the previous version?
i.e. are there significant O/S changes that will effect my ability to test and run an iphone application?
A previous version (3g or 3gs) can still run the latest O/S (4.0.2), the only things truly different programmatically for the iPhone 4 is the higher pixel count and resolution of the screen, the new camera, and the new/improved gyro/accelerometer.
The iPhone 3G can't do multitasking. If you want to test your app's multitasking capabilities, you'll need at least an iPhone 3GS or the latest generation of iPod Touch.

What should I buy iPad or iPhone 4 for iPhone SDK 4?

Now, I'm developing on iPhone SDK3 and iPodTouch 2G. iPodTouch 2G can't do full function of iOS4. I want to change iPhone SDK4 development.In july, iPhone 4 and iPad will available in singapore. So, What should I buy iPad or iPhone 4 for iPhone SDK 4 ?
What different between iPad API and iPhone 4 API ?
How about market ?
Can I write iPhone app with iPad ?
Each version of the OS has the same API for all devices, but some of them don't support all all features. For example, the UIImagePickerController allows the user to select a photo. On an iPhone, they can take a picture with the camera or pick an existing photo from their Photo Library. With iPad and iPod Touch, there is no camera, so the user could only pick a picture from their Photo Library.
If you are relying on hardware features such as camera, compass, gyroscope, accelerometer for your application, you'd need a device that has this feature as the emulator does not them.
iPhone 4 has all of the hardware features of all iPhone, iPod Touch and iPad devices. Buying an iPhone 4 with or without contract is going to cost some money, but if you're developing an application you can recover the cost with sales of your app or iAd revenue.
If your application does not need specific hardware, then the best choice for you is going to depend on cost and whether you will use the device each day. A second-hand iPhone 3GS will do almost all iOS 4.0 features except front-facing camera and gyroscope.
The iPad runs iOS 3.2 currently. Apple has said that 4.0 won't be available for the iPad until "Fall" (aka Autumn). So if you want to test 4.0 apps in July on a real device (not just the simulator), you'll need an iPhone 3GS or 4.
I'm not experiences in ObjectiveC but I guess it really depends of what you want to do. You can do everything in the emulator so I guess you want the real devices to do proper testing over your applications. The only difference between both is that iPad doesn't have the new 6 axis acelerometer and doesn't have frontal camera. Apart from that the API should be the same (removing the support for phone calls oviously). I dont know what apple is going to do about games and so on but I guess the solution will be the same than between 3gs Iphone and IPad. Since the Ipad screen resolution is still bigger than the new Iphone one, you should be able to run any iPhone application (even the new ones) in your IPad (unless they use frontal camera or any other functionality not present in the iPad).
In resume, If you only want the device for development I whould buy an IPad since you can develop and test IPad and IPhone applications, so it is much more versatile. If you have an IPhone forget about testing IPad apps since you have not enough resolution.
Hope it helps.