iPhones models currently in circulation - iphone

Does Apple provide data about iPhone models currently in circulation? I can only find data about iOS versions. I'm about to port a game from Android and I'm wondering if I need to worry about any models lower than the iPhone4, most specifically the 3GS? If they're less than a couple of % of the current market share then I won't worry about it.
Do Apple, or anyone else provide this data?

It's worth noting that the iPhone 3GS is the most recent iPhone model which cannot run iOS 7.
Apple provide information on OS version (but not device) here:
https://developer.apple.com/support/appstore/
As at August 24 2014, the splits were:
iOS 7: 91%
iOS 6: 8%
pre-iOS 6: 1%
That gives a cap of 8% of total iOS users using the iPhone 3GS. In practice, it will be much less than that, because there are also some iPads and iPod touches which don't support iOS7, plus people on later devices who have chosen not to upgrade.
Stats from one of our own popular apps which is run almost exclusively on iPhone show that <3% of users are on iOS 6 or earlier with a screen size of 320x480 (and therefore no more than 3% of users are on iPhone 3GS).
As regards porting or creating a new app, I would need a very strong motivation to support iOS 6. My default position would be iOS 7.1 or above.

Related

Which iPhone to buy for app testing [closed]

Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 10 years ago.
Improve this question
I am rather new to iOS development. I have previously developed several apps for Androud and i want to code them for iOS.
These apps will user CoreLocation, AVFoundation and such - mainly apps for music and localized events.
My question is: which iphone model should I buy to test my aps.
I am currently considering either 3GS or iPhone4. Some friends that develop for iOS recommended to buy 3GS - it can run iOS6 and packs all the necessary features - gps, accelerometer, compass.
I would actually go for iPhone 4 for the following reasons:
Retina screen which is found in many other devices (iPhone 4S, iPhone 5, 2 generations of iPod Touch), which is critical to verifying your interface looks sane
iPhone 4 is more likely to support future versions of iOS. Having a HUGE adoption rate it might be very critical for live apps (when you run into a bug and have to reproduce it)
If I'm not mistaken, multitasking is not supported by 3gs, which also might cause some bugs.
The amount of users with iPhone 4 devices is quite big according to many surveys and will (if have not already) outgrow 3gs owners.
iPhone 4 is just so much better :)
Don't always buy the weakest possible model out of all options. The 3GS can run iOS 6, and it has all the "core" features, yes, but there's no signs of life for it in the near future. You may start developing apps tomorrow, the day after iOS 7 gets released, and it turns out there's no support for the iPhone 3GS.
If you're really serious about it you should at least get an iPhone 4S, or at the very very least, an iPhone 4. If you buy an iPhone 3GS it may be a waste of money in the long run.
If that doesn't cut it for you, an iPod Touch 5 or iPod Touch 4 will be great for development with a few limitations, but both of them will be supported for a longer time than the 3GS (My guess).
The more devices available to you the better. Your friends suggestion of a 3GS might be a bit too old, but if your app runs well on hardware that is going on 4 years old then you will be sure that it'll be well optomized for the iPhone 5 and beyond.
Having an iPhone 5 available would be very useful for testing the different aspect ratio and how it affects your apps as well. The iPhone 5 will also future proof you for a bit as the 3GS will likely not support iOS7.
So basically, if can afford to get an old used iPhone 3GS and an iPhone 5 (or equivilent generation of iPod Touch), I'd get both.
It is upto you to decide what phone best works with you.
Do you want to develop for iPhone 3GS? Most likely in the next revision of the iPhone, Apple will drop support for 3GS. So to future-proof yourself a bit, I would go with 4s. This way you can have 2 years worth of development time with the device and also work on stuff which is not available on the 3GS.
Also 3GS may have some hardware missing which is found on the 4S (I don't have the exact list at the moment)
Ideally I would choose a 3GS and an iPhone 4+ as they are quite different.
The 3GS is best for testing that yr App will run with only 256MB of memory. The later phones have 512MB+. The 3GS also tests non retina screen usage. Later phones have the hi-res screen.
Without both types you can't truly test them. The simulator helps but isn't a 100% test.
The simulator from Keynote works wonders and emulates over 2200 devices.
http://mite.keynote.com/

iOS 4 for iPhone 4S

I am building an iOS application for public release, and I would like to develop it against iOS 4, as I see from the instapaper stats from November that iOS 5 has a 48% market share, which is good, but my app will probably not be used by these early adopters, and it's probably not going to be enough to force them to upgrade.
The issue is that I only have an iPhone 4S, which shipped with iOS 5. I have been unable to find an iOS build for my 4S, which upon reflection makes sense. Nontheless, I'd like to know if there is some sort of unofficial build for the 4S or some way to make the iPhone 4 version work on the 4S.
I'm pretty sure that the answer is going to end up being "Buy a 3GS/iPod touch for development". Would that necessarily be worth it or should I just tough it out? I'm pretty sure that most iOS 4 users will upgrade eventually. Does anyone have any stats on how long it took iOS 3 users to move on?
I would still suggest getting a used iPhone 3GS. Even if you are able to install iOS 4 on the 4S you still wouldn't be able to do any performance testing, but it's highly likely that someone who still uses iOS 4 has a 3GS.
For your first cut testing, you can use the simulator which, will allow you to test for iOS 4.3
Ideally you need to get hold of the appropriate devices to test your app. You say you're supporting iOS 4, but do you mean 4.2 or 4.3? If 4.2 then you'll be supporting iPhone 3G, if 4.3 then 3GS upwards.
There are testing services out there, just search "iPhone testing services". I've never used them myself, so can't vouch for any of them, but the cost may be less than investing in actual devices.
I kept a 3G and 3GS for testing, but to be honest, even though my main app supports 4.2, I rarely do any testing for older OS versions outside the simulator. I gave the 3GS to my father on condition he tested for me when asked… but of course I had to upgrade it to iOS 5 for him, so it's of little practical value, apart from testing at different screen res.
I would suggest you develop your app with minimum version 4.0 (or other) set. Then you test that on your iOS 5 iphone. I did it with my apps and it works great.
You can test on the lower version simulator or for final testing you could borrow a friend's device or similar.
As I understand (and believe), the compiler would stop you if you included features that are not 4.0 (or the set version) compatible.
Buying lower iOS is not worth it. If you can you should borrow it. In the simulator you can also make the iOS version to lower version to test. Also you can try ad hoc distribution to check how your app performs on other ios before releasing on appstore

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 iOS 4 generally backwards compatible?

I have the following problem, in near future I will need to write a few not very complicated apps for iPhone. I do not currently own an iPhone, so I plan to purchase one for testing purposes. In short would iPhone 4 allow me to test apps written for older ios versions? Any pitfalls? Or would I have to purchase older phones/ipad to do the testing properly?
Yes, to perform a proper test you will need to test on the individual devices you are supporting. The documentation will tell you if the framework/API you are using is supported in the older iOS versions. I'm afraid there will be some subjective answers here as I am sure some apps end up running just fine across many versions with simulator testing. There are many factors to consider when looking at backwards compatibility (desired speed, memory usage, APIs, ...). You stated your app is "not very complicated" so you may be fine. I would test your application on as many devices as possible.
I should also make the distinction that there is a difference between "will it compile" and "does it perform as expected". You can use xcode to test whether the application is compatible by targeting and older version. Whether or not the application runs as desired will be discovered when testing on the specific devices.
You can't run iOS 3 on iPhone 4, so you have to buy separate devices.
But if it is a new app I wouldn't consider to make it iOS3 compatible. Most users have upgraded to iOS4 already. And at the time your app is in the store there will be even less users running iOS3.
Sure, this will remove like 0,5% of potential customers. But you don't want to buy another device for 100$ if you can get only 10$ revenue from the 0,5% customers that run iOS3. And you have to test your whole app again, which will take a significant amount of time.
So you should consider to drop support for iOS3.
See this question: Will an application compiled for iOS 3 run on iOS 4?
It will allow you to test apps which are targeted at older iOS versions, yes.
Performance differences to older iDevices like the 1st gen iPhone / iPod touch are quite significant however. So if your apps require expensive calculations or the like, I'd recommend buying an older, used device too to get a feeling for performance on that generation of hardware.
Note that if you need to make sure the apps you are about to develop will run on very old devices / iOS versions, you maybe need to do without some cocoa classes and methods which require more recent versions of iOS
If you bought an iPhone 4 for testing purpose.. You're testing on the latest iPhone available in the market and that doesn't means your app is ready to target low-end device automatically.
Let's take a deep look: If you've designed an App that must look gorgeous and work right out of the box on iPhone 4, then you're probably making your app a Retina display compatible. That is like playing with 960x640 resolution screen.
Now, if you planned to target low-end device for eg, iPhone 3GS, then all you gotta do is to reduce the graphic assets size by half, as iPhone 3GS is 320x480
That's it! Your App is ready for the low-end device as well, in looks and feels perspective.
Now, let's look from deployment perspective. If you base SDK is 4.2.1 and you're targeting to devices which runs 3.3, then all you gotta do is to make sure you don't use latest libraries/classes which are introduced in iOS 4.2.1, as they won't be available to device which are running on iOS 3.3. If you take care of this part, your app is almost ready to ship out.
From Market perspective. I see all the great apps out there had made their deployment target as iOS 4.0 or later. That means, they are targeting to only devices which runs iOS 4.0 or later versions.
I think, you can try your build in low-end iPhone simulator after successful testing cycles ran on iPhone 4 device. :)
The iPhone is generally not backwards compatible. Sometimes methods, properties, classes etc. are added or older ones become deprecated.
For testing, i would recommend that you have several devices with different iOS Versions depending on the target iOS Version you want to release.
Also check the the iOS Reference Library: Under "Availability" for each function etc. is noted since when it is Available

When developing for iOS, which devices do you typically test on?

I'm needing to purchase whatever devices are needed to do testing for iOS applications. My initial thoughts are to test on a first-generation iPod Touch and an iPhone 4. Testing on the old iPod Touch with 3.1 software will give a good indication on how the app will work with little memory, and the iPhone 4 will obviously be a test for the faster system.
What do you all typically test on before submitting an application?
At minimum, a device running the oldest OS that I list as my Deployment Target, the slowest device/OS combo that I have (e.g. a 3G running 4.0.x is likely slower than anything running a 3.x OS) and which the app supports, and the current/latest released OS.
A device which includes all the features that my app will support (e.g. mic, camera, gyro, GPS, etc., if needed.)
Optionally, an iPad if the app is Universal, or if not to see how bad 2X zoom looks.
Optionally, a device with a beta OS installed if it appears Apple is going to release it well before I plan on revising the app.
So far all the apps I've submitted have been compatible with iOS 3.1.x, and I test them on my old 1st gen iPod Touch. I also test on my 3.2.2 iPad and my 4.0.2 iPhone 3GS.
My guess is all of these answers are going to be along the same lines -- test with as wide of a variety of devices as you can that are compatible with your app (i.e. meet the Minimum Deployment Version).
This is especially important if you develop Universal Apps that support 3.1.x. You'll find a ton of bugs with the hardware that you will never get with the simulator.
right now, I test using a 3g running 3.1 (a popular build), a 3gs running 4.0.2 (latest), a touch running 3.1.3(basically 3.1), and an iPhone 4 with 4.0.2.
Mainly try to keep a 3.x device around for sure, and then obviously a device with the most up to date OS.
Based on AdMob reports...around 98% of users are upgraded to atleast 3.0 and those that aren't shouldn't be your client base anyway (unlikely to use new apps).