iPod Touches and Development - ios

I've begun developing the iOS version of my app. While I have a working android, I don't have a working iPhone and I will not spend the $1000 for the new one. I found some older posts, which said yes to this question, but I wanted to make sure it was still valid before I buy an iPod touch. I was wondering, that so long as my app doesn't use iPhone specific hardware (like GPS) if I can just use an iPod touch for development. And if it works on the iPod touch, does that imply it will work on iPhone (again, given the hardware constraints).
Thanks for the help.

An iPod touch is an iOS device. All iOS apps not specific to just iPads will run on any iOS device, including iPod touches. This is true as long as the app doesn't list a required device capability not found on the given device.
So yes, in general, using an iPod touch to test an iOS app is perfectly fine. Use it along with all of the different simulators to make sure your app works properly on all of the different screen sizes. But you should always test an app on a real iOS device since the simulator has limitations such as no camera, inability to send email, no ability to launch other 3rd party apps, a case-sensitive file system (normally the simulators are case-insensitive), etc.
Just be sure you get the latest iPod touch that supports iOS 11 (the 6th gen). Keep in mind that even the latest iPod touch may not be useful for more than a year, maybe two, with regard to being able to install the latest version of iOS.
You could also look into a refurbished iPhone 6s or even a new iPhone SE. Both are much cheaper than $1000. As I write this, you can get a refurbished iPhone 6s for $369 USD. Though a refurbished 6th gen iPod touch is $149 USD. But buy the newest device you can afford. A cheaper device that won't run iOS 12 or 13 isn't much of a bargain.
I find the https://en.wikipedia.org/wiki/List_of_iOS_devices page useful to know what devices run which versions of iOS.

Related

Disable apps for iPhone 4s in apple store

I want my apps to be available for phones above 4s i-e iPhone 5,6 and iPad.
How can i disable app store to make it available for iPhone 4s. It asks me to put iPhone 4s and the app is not made for its screens.
You can't explicitly set a list of devices compatible with your app.
Some well-knows games explicitly writes the list of compatibles devices right in the beginning of the description text from the App Store.
Example taken from The Room Three app store page :
WARNING: DUE TO HEAVY GRAPHICS REQUIREMENTS, THE ROOM THREE IS NOT COMPATIBLE WITH IPAD 1, IPHONE 4 (& OLDER IPHONES) OR IPOD TOUCH 4TH GEN (& OLDER IPODS)
There is still a way to restrict the app to some devices using some special iOS Keys on the .plist file.
UIDeviceFamily : This key is added automatically by Xcode and represents the hardware on which this app is designed to run : iPhone/iPod touch or iPad. You can set it according to build settings.
UIRequiredDeviceCapabilities : This key is much more useful since it allows you to restrict the app according to the Device capabilities.
If you don't mind losing iPhone 5 and 5C users (since their devices are no longer produced) you can set the key arm64 which means that your app is compiled only for the arm64 instruction set, and thus will work only on iPhone 5s and later devices (and this even if your app work fine in armv7).
Unfortunality, you can't do this. If I were you, i would check screen size in applicationDidFinishLaunching method then if device is iPhone 4s, i would show an AlertView and explain the user. This might be the best way to do this approach.

Dropping iPhone 4S Support

The iPhone 4S is the oldest iPhone still to be supported by Apple, which as such runs iOS 8, a requirement of my own app.
However, as hard as I am trying, my app experience is being worsened due to the fact I keep having to adapt to the tiny (y comparison) screen size of the iPhone 4S.
Is it possible in any way to drop support for a device? Or as it runs iOS 8, do I have no way of doing so? Is it a case of, if I release it on iOS 8 for iPhone, it WILL be available for iPhone 4S owners?
You can't drop support for iPhone 4S just yet, however you can disable some features when your app runs on certain undesired devices. Just make sure you state that in your app's description.
This follows the lead of GarageBand for iOS version 2.1 in which some features are only available for newer devices.
PS: remember to also quote this fact in the reviewer's notes section.

iPhone 5 vs iPod Touch for development

I am currently developing iPhone apps on my iPhone 4 but I need a larger screen to test and develop on. Rather than buying a new iPhone 5 to test on (as rumour is that the iPhone 6 is about to be announced), I was thinking of buying the latest generation of iPod Touch. I was also thinking that my next phone will be an Android phone rather than an iPhone so thats another reason for the question.
From what I can see HERE the only difference between the iPhone 5 and iPod Touch is that the Touch does not have phone capabilities or Mobile Network support. For those I can always use my iPhone 4 so thats not really an issue.
Apart from these 2 features, are there any other features the iPod Touch lacks that I need to be aware of?
The answer depends on the nature of the apps you're developing. iPod doesn't have telephony and GPS capabilities, so if your app relies on Location Services then iPod is less than optimal (I believe Location Services are still available but only use Wi-Fi for positioning).
On the other hand, having a 4-inch device for testing is essential today, so having iPod is better than not having it.

I don't want my iOS app to run on iPhone with 3.5 screens, is it possible to restrict my app only to 4 inch displays?

I don't want my iOS app to run on iPhone with 3.5 screens, is it possible to restrict my app only to 4 inch displays or larger?
Also, is it possible not allow the app to run on a certain device? I do not want my app to run on iPhone 4 and 4S.
Rather than selecting for a specific device you should focus on what capabilities you need.
For example Bluetooth 4.0 Low Energy communications supported only in iPhone 4S+ devices . You can add the bluetooth-le key to your UIRequiredDeviceCapabilities to prevent installation on every device but the iPhone 4S+ devices.
I don't think this is a good idea. Apple wants you to develop for as many devices as possible, and if you decide not to support a certain device for no reason (e.g. "no M7 coprocessor" for all devices except the 5S), Apple will reject your app.
You cannot choose an app to only be released for 4" devices, and you have no influence on what display the iPad simulates when it runs an iPhone only app. What you want is simply impossible. This answer was found here: Limit app to running only on 4 inch devices IOS and answer credit goes to #Scott Berrevoets
NO.
You can't make an iPhone app restricted to a certain screen size. Not only is it not technically possible, it's against Apple's App Store Review Guidelines, in ways.
2.10: iPhone apps must run on iPad without modification, at iPhone resolution, and at 2X iPhone 3GS resolution
Although it's an old guideline mentioning the iPhone 3GS, the gist is the same even now: the app MUST be able to run on any screen size. There are even resizable iPhone and iPad Simulators within Xcode that you may use to take guesses on the next iPhone's screen size.
If they made guidelines so that apps can be used on the iPhone 3GS and the 4 and the 4s, said apps should also be able to run on newer phones and whatever's currently supported with the OS.
You said you noticed performance issues on older devices in a comment. This is where you need to work. How would you go about fixing said performance issues on older devices? Do what Apple did with iOS 7's release:
Reduce graphical effects and unnessicary processor-heavy effects on older devices.
If you look between devices, iPhone 4 has none of the translucency and background blurring that was advertised with iOS 7, namely with Control Center, Notification Center, Alerts, Keyboards, and Navigation Bars. This is how Apple tried to compensate with the lag of the iPhone 4 trying to run iOS 7. Same goes with the iPad 2. The iPod touch 4th generation didn't have enough RAM to run iOS 7, so it's stuck on iOS 6.1.5.
You need to do some work here too. If you have unnessicary graphical and processor-intense effects in your app that causes lag and performance issues, disable them on devices that can't run them at a smooth frame rate.

What should I grab as a development platform, an iPod or an iPad?

I've recently gotten into the world of contract programming, and two of my clients have indicated that they'd like to do something 'trendy', like ipod touch/iphone/ipad development. I have a mac laptop (first gen macbook pro) that I'll have to upgrade to snow leopard to do the development for any of them, from what I've read. So that's already a bit of a commitment, given all the stuff I have on that laptop I'll have to make sure is recoverable from backup.
My budget is limited, but I think I need to learn this skill. Which device should I get to learn this kind of development, an iPod touch or an iPad? I don't have the money for an iPhone.
I think that the iPhone/iPad SDK has an emulator mode, but I like to have the device I'm going to roll out on available to make sure that everything works as I'd expect, ie, what's easily readable on a laptop screen is still readable on the touch, etc.
iPad - since you can simulate the others on your mac and the iPad.
Right now, there's way over a hundred thousand apps for the iPhone and iPod Touch, so I'd suggest developing for the iPad. There's a lot fewer apps to distinguish yourself from.
You can use iPhone apps on an iPad, but I wouldn't recommend pushing them out without testing them on a real iPod Touch or iPhone. The feel will be much different. For example, I type on my iPhone one-handed while holding the phone in one hand, but the Ars Technica review of the iPad says this isn't really feasible on the iPad.
I'd get the iPad. I've been using an iPhone and now an iPad for dev work, and the iPad will run iPhone only apps at the iPhone screen size. Unless you need a camera its the best choice in being able to run apps developed for any iPhone OS device. You just should remember that app performance on an iPad will be much better then on a iPhone/iPod touch. Since it's contract work I assume its more along the lines of utilities, or basically their site as an app. So 100% performance testing isn't as crucial as a 3D game.
Ideally, you would always test apps on the actual target device. So, if you want to build iPad apps, you get iPad. If you want to build iPhone apps, you get iPhone or iPod Touch. iPad will run iPhone apps, but you will not be able to test for performance neither in simulator nor in iPad. Performance is always a concern on iPhone-class devices. Plus you cannot really evaluate the full iPhone user experience on iPad, because the physical form factor and screen resolution/pixel density and many other details are different.

Resources