How to avoid selling app to iPad 3 (or earlier)? - ios

I want to enable selling of my iPad app only for iPad 4 and later because it does not run fluently on an iPad 3.
Since Apple gives us no direct way to choose which device I can sell my app, the only ways to achieve this is via indirect methods like minimum iOS version support or so called required device capabilities.
However, it seems that there is no way to make a distinction between iPad 3 and iPad 4.
iOS 9, for instance, is supporting iPad back to 2nd generation.

Related

IOS Version only for Ipads

I have AppA v.1.0 that supports iPhones and iPads. I have a new update for it AppA v.2.0, for which the iPad design is ready but the iPhone's design is not. I need to launch it asap only for iPads. I don't want to create a separate application.
So what I want is to provide AppA v.1.0 for mobiles and AppA v.2.0 for iPads.
First of all you cannot do that.
If you remove iPhone support you will most likely get a rejection of your binary
This bundle does not support one or more of the devices supported by
the previous app version. Your app update must continue to support all
devices previously supported. You declare supported devices in Xcode
with the Targeted Device Family build setting. Refer to QA1623 for
additional
information:https://developer.apple.com/library/ios/#qa/qa1623/_index.html
Secondly if somehow you could do it then if you have AppA v1.0 and release AppA v2.0 then 1.0 is not available anymore to anyone on App Store and v2.0 becomes the released version. What that means for your NEW iPhone users is that if they search for your app name on their device they will see no search results returned. On iPad it will be shown. Again your two options are
Make a universal app and support both iPhone and iPad. If you got most of the code working for iPad then making it work for iPhone isn't that big leap.
Make a new app for iPad only.

Submit IPhone app on the app store, then decide to submit an IPad app?

I have never submitted an app to the appstore, but I will in the near future.
So far I am becoming quite comfortable with designing for the IPhone but not the IPad.
I understand that by putting a universal PAID app on the appstore that the customer would only have to pay once to have access to both the iPhone and Ipad versions.
What if you submit an IPhone app for $0.99. then later decide you also want an IPad App version for $0.99.
Would the consumer have to purchase both?
Or is there a way to tell Apple that "this is the IPad app" of this IPhone version, and so the consumer would only have to pay a one time fee (if he has already purchased the Iphone app = free download for Ipad App).
Thankyou
If you want just one app at one price, you can submit the app again (in a subsequent version) as a Universal app that runs natively both on iPhone and iPad. This kind of thing happens quite often, as developers expand their horizons...
If you submit an iPhone only app and an iPad only app they will be two separate apps with two different names and two separate prices. People do that - the New York Times app works that way, I believe - but it isn't as common. For one thing, it's confusing, because the iPhone version will run on the iPad, but as an iPhone app, so the user may not realize this is the wrong app (and it will probably look kind of crappy).
GoodReader is another well-known example where the iPhone version and the iPad version are two separate apps: see http://www.goodiware.com/goodreader.html

Universal iOS application

We have an iPhone app and want it to support iPad also.
But as I learned if you submit an app to Apple and indicate it is Universal, while in reality it is not (for example iPad is not supported at the time of submission, this is restricted by their policy).
So, what is the best way that we simultaneously allow further development of our application such that we also support iPad?
ps: we didn't want to create separate projects for iPad and iPhone since they share lot of code, but as I mentioned we encountered following obstacles.
Submit your app as an iPhone app. When you support iPad change it to a universal app when you submit your update.

Do I need to separately test on iPod touch, iPad and iPhone?

I would like to start developing for iOS. Coming from an Android developing background, I know that the more types of devices you can get your hands on, the better testing will be, as all devices have wildly different specs, and what may work perfectly in your test device may not even run in another one, let alone look good.
I know that testing on the actual device is very important, as there are many limitations on what you can test on an emulator, so I've decided to get an actual device.
However, there are also tons of devices available in the iOS world! There's the iPod touch, the iPad and the iPhone, each in several different generations and configurations (8GB version vs 16GB version, WiFi version, 3G version, etc.). Not also the screen sizes, but also the aspect ratio is very different across devices, and also the included sensors.
I think that getting an application to run in varied devices should not be difficult, but is it necessary to actually test on all the device types you plan to support? Apple is not renown for its low price, and I would like to keep the starting costs as low as possible.
So, to conclude: Is it necessary/recommended to test on as many device types as you can in the iOS development world?
A small clarification: I'm specially asking if it is possible for there to be compatibility issues related to a specific device/family-of-devices that I would not be able to catch either by testing on the emulator nor a totally different device.
Generally speaking, the major differences in capabilities between testing on the simulator and testing on a device are:
The simulator does not use exactly the same sandboxing as the device. So, for instance, if your provisioning profile is missing your Passbook credentials, this problem will show up on a physical device but not on the simulator.
The simulator doesn't generally support GPS, multitouch, push notifications, Bluetooth, and some other specific features.
On a non-retina display, the simulator view for an iPhone 5+ or (especially!) a retina iPad will be nigh unusable at 100% because its size will exceed the size of your screen.
There are a few, very rare, crashes that occur only on the simulator and a few that occur only on the device.
The simulator does not always support the earliest iOS versions your app supports. For instance, the current version of Xcode (which you must use if you want to build for the latest iOS version) only has simulators from 5.0+ available.
Certain profiling with Instruments is, as far as I can tell, only available in the Simulator.
Now, in my specific case, I try to test on one of each screen resolution I support and one of each major OS version I support.
This boils down to the following array of test devices:
(480x320) iPhone 3GS running 4.3.3
(1136x640) iPod 5gen running the latest 6.x
(960x640) iPhone 4S running 6.0
(1024x768) iPad 1st gen running 5.0
(2048x1536) iPad 4th gen running the latest 6.x
Note that the iPad mini is the same resolution as the iPad 1st gen.
(My choices are skewed towards later iOS versions since I like to implement integration with all of Apple's snazzy optional features as they roll them out. It would probably be a more balanced assortment if one of the 6.x devices were running 5.1 instead.)
If you don't need to support 4.x, I would personally advise against it, since iTunes Connect no longer collects crash reports for it and the simulator no longer offers it. Of course, only you can decide whether you really need to or not, and if you do, focus a lot of your testing there as Xcode does not warn you if you are using APIs that were only introduced in 5.0, which will crash any device running 4.x.
Please note that there are ways to (with significant preparation) downgrade the version of iOS on a device, so if you really want to test more versions than you have devices for, you can (with a lot of effort). But you're probably better off cultivating a strong pool of beta testers for this, anyway.
Whilst it's obviously great to test on all possible devices, the iOS ecosystem is much tighter than Android, so you can narrow down the field somewhat.
You can start by limiting your target iOS versions. That will anyway cut out a number of older devices. iOS6 share of all iOS devices is now probably around 75% 4 months after release; iOS5+iOS6 upwards of 90%. If you are just now starting to develop for iOS, you could probably just target iOS6.
That means your minimum hardware platform is iPad2 / iphone3GS / ipodTouch4
Total list of devices
iPad: 2 3 4 mini
iPhone: 3GS 4 4S 5
iPod: 4 5
Ten devices.
But you won't need to test them all. You could sensibly narrow it to...
iPad: mini + one of the retina models
iPhone: 3GS + 5
for everyday testing.
Obviously if you do want to be more back-compatible, just replace the lower-end testing model for a lower-spec device (iphone 3, iPad 1).
The difference in storage capacity (8GB vs 16GB for example) will be mostly immaterial.
There are some hardware features you will have to pay special attention to, depending on your project. The obvious one is retina vs non-retina displays. Hardware features for location services is particularly nuanced between models.
Lowendmac have a pretty thorough iphone comparison chart...
I think that getting an application to run in varied devices should
not be difficult, but is it necessary to actually test on all the
device types you plan to support?
That depends a lot of what kind of apps you intend to build. For example, universal apps run on both small- and large-screen devices but may present themselves differently on each, so you'd want to be able to try both. Many apps target iPad specifically, so obviously testing on small devices isn't necessary. iPod Touch and iPhone are very similar, so testing on one or the other is often sufficient.
In short, you don't have to own every version of every device, and you don't probably don't have to test on every single version of iOS that's ever been released. But you do want to get your product tested on as many different devices and operating system versions as you can. So, cultivate a group of beta testers who will help you out by trying your app on their devices. The iOS developer program lets you add up to 100 test devices to your account precisely so that you can get your app tested in lots of different circumstances.
Testing on the iPod touch is generally not worth it.
In the iOS world, there is generally the iPhone/iPod, the iPhone 5/iPod 5th generation, and the iPad.
So, that is a total of 3 screen sizes.
If you plan on targeting more than the latest OS (iOS 6), that is where the complexity of testing comes in. Simply targeting iOS 5, and iOS 6 nearly doubles the amount of targets you need to test for.
I try and keep it simple. I test on my iPhone 5, and my iPad. Both of those run iOS 6. For iOS 5 and the small iPhone, I rely on the simulator.
I develop for both Android and iOS, so I get where this question is coming from. I have the luxury of being able to develop on most of the different iOS devices and I would say that in most cases I would feel comfortable testing on the least advanced device my user will be using. If it runs smooth on a iPOd 3rd gen then it is going to run very smooth on an iPhone 4S, 5, etc. For the different screen height for the iPhone 5, the simulator works very good with laying it out.
Things you will need to consider is if your apps have the option to use certain feature only a phone would have, like making calls. Also if you want to make a iPad or universal app, it would be very handy to have an actual iPad, but the simulator does work very good.

How do I target an app to work on ipad 2 or newer (not ipad 1) before submission to appstore?

My app is for the iPad 2 only. I have seen other answers involving setting the UIRequiredDeviceCapabilities key, but I need to exclude the iPad 1 because of the CPU power, not any specific hardware feature.
I would like the app to show up in the appstore for people in the future also (iPad 3 etc. should have equal or stronger processor than 2), so I need only exclude iPad 1 specifically.
Any ideas?
Set UIRequiredDeviceCapabilities to require front-facing-camera. I don't think they are going to cut down on features. There isn't any other way, it seems.
There appears to be no Processor_MHz_GHz, CPU_core_count or GPU_shader_count keys currently documented for the UIRequiredDeviceCapabilities plist. And Apple currently appears not to allow adding more hardware restriction keys to existing apps already in the App store.
So you appear to be out-of-luck, if you don't want to risk requiring a camera. Or just selling a new app (not an update) to support hypothetical future products.
ADDED/UPDATE (2012-September): You can now exclude a 1st generation iPad by specifying iOS 6.x as the minimum Deployment target in your build settings, since an iOS 6 update is not offered by Apple for the 1st gen iPad, whereas an iPad 2 and newer will run iOS 6.
In my opinion, CPU power is a hardware feature. Try disabling the ARM version of the iPad 1, so only newer iDevices will be supported.
Keep in mind though when disabling certain ARM versions you might also be excluding the older iPods and iPhones if your app is an universal one.
Bryan

Resources