Can we restrict download or launch of an universal app in iPad 1 alone? - ios

I have a universal app, it supports both iPad and iPhone. I do not want the app to be downloaded or launched in iPad 1 alone.
When the user downloads the app from App Store, is there a way to disable the download or launch of the app only for the first generation of iPad.
If not, can I add it in "What's new" option during the release of the app to App Store. Since it is a next version of release.
Please help.
Thanks in advance.

You could try to find a restriction with the UIRequiredDeviceCapabilities key in the info.plist. But this key only allows restrictions like armv7, magnetometer, etc. (full list available here). So you can't filter only iPads of the first generation.
Anyway, what you could do is checking at runtime whether it's an iPad 1 or not.
With this Library it's quite simple:
if([[UIDevice currentDevice] platformType] == UIDevice1GiPad){
//it's an iPad 1!
}

I don't believe you can restrict your software to a certain class of devices, but you can impose limits based on iOS version. The newest version of iOS supported by the original iPad is 5.1.1, which is quite dated now, so you might consider requiring iOS6+ on the App Store.
Also, you could require the device to have a camera, which the iPad 1 does not. But beware that Apple could reject your app if it does not actually use the camera.

Best possible way is to give the support for iOS 6+ which will exclude the ipad first generation.

Related

Excluding specific iPhone types from App Store submission

I created a SpriteKit game that needs large screen area to be played so I decided not to write the code for the iPhone SE, but now I'm not sure if I can submit it to the App Store for all devices except the SE. Please let me know whether it's possible, and if so how to do it (i.e. where on iTunes Connect would you do it).
I looked up a lot but I couldn't find anything that could help.
I also couldn't find anything in the API.
Unfortunately, there is no support from Apple for this kind of thing. But you can do something like detecting whether the user's device is an iPhone SE and if so show a full screen alert saying "App is not supported for this device" and block the UI (which is not recommended unless it's required).
Just a thought:
If you are lucky to find out one device capability which distinguish iPhone SE, you can set that to value in UIDeviceRequiredCapabilities key in info.plist.
Example: Adding an item to UIRequiredDeviceCapabilities in your Info.plist with the requirement of "bluetooth-le" should limit your app to iPhone 4S/5 and iPad 3, 4 and mini. You could also throw in a "camera-flash" requirement to limit the app to iPhones only, should you need that.
More info: Device Compatibility Matrix
As far as I know, you cannot exclude certain devices. You can exclude iPad/iPhone, or require a minimum iOS version.
If you want to exclude iPhone SE, you can add UIDeviceRequiredCapabilities of nfc.
Pay attention this will allow only iPhone 7 devices and above.
Apple filters your app on 2 bases -
iOS Version
Universal or iPhone/iPad
You can not avoid any specific iPhone model based on the screen size if you have created an app for iPhone.

Not able to make app iphone only [duplicate]

I'm shipping two binaries; one for iPhone/iTouch and the other for iPad. It's the same application.
Will Apple ensure that the user will never receive an iPhone version of the app on the iPad? If YES, then I don't have anything to worry about, but if not then I do have a problem.
The reason I ask is the iPhone application will simply not work correctly on the iPad because the server knows it's an iPad and will deliver the iPad HD content to it and the iPhone cannot handle that. I would rather not hack my application to send the server a fake device type if running the iPhone app on the iPad in order to receive the correct resources.
Suggestions?
I've been looking for this for a while because I couldn't prevent the iPhone app to load on the iPad. Searched a bit to understand why this was happening, followed #hotpaw2 instructions and found this on the official apple store rules:
UPDATE:
2.4.1 To ensure people get the most out of your app, iPhone apps should run on iPad whenever possible. We encourage you to consider
building universal apps so customers can use them on all of their
devices. Learn more about Universal apps.
https://developer.apple.com/app-store/review/guidelines/
The SDK and/or App store rules prohibit you from preventing an iPhone app from running on an iPad in 1X or 2X zoom mode, unless there are other requirements listed in the app plist. Apple's app review is known to test iPhone-only app submissions (unless there are other requirements) on an iPad, and reject the app if it doesn't run properly.
Other requirements (as listed under UIRequiredDeviceCapabilities in the app's plist) might include your app requiring telephone capabilities (or healthkit, etc.), which might help you temporarily, but still won't prevent the app from running on some hypothetical future iPad product that includes telephony capabilities (and/or healthkit, etc.).
Actually you can.
Add telephony to UIRequiredDeviceCapabilities in your plist file.
But i really not recommend it and maybe you could get rejected because of gratuitously using this property.
I think you should handle that there are iPad versions and iPhone versions on iPads, use the second one as an iPhone.
Also don't forget that retina iPads will use upscaled applications at retina resolution while none retina ones use the standard resolution. And this behavior can tweaked using jailbreak tweaks like RetinaPad and FullForce.
In the plist settings, add Application requires iPhone environment and set the boolean to YES

iOS app for specific devices

We are working on a kids app similar to Talking Ben app. It has lots of JPEG image sequences in it for interactive animations.
The thing is the animations are playing fine on iPad Air but they are playing slow or lagging on iPad 2. This is obviously due to the 512 MB RAM in iPad 2.
My question is can we mention in the app description something like - "Recommended devices iPad 3 or later" so that users dont download it on iPad 2 ?
Or can we straight away submit app for only iPad 3 or later devices ?
Whats the legal method for this ?
In short, I want to restrict my app to be downloaded in iPad 2.
Please help guys.
Thanks
Not too familiar with specifically what architecture is used on the iPad 2, but this post may help you with regards to making sure the app is only compatible with certain architectures: Restricting app installations from AppStore only to users with iPhone 5/5s/5c
You should set bluetooth-le as a requirement in your app Required device capabilities in your info.plist.
This should prohibit your app from being installed on iPad 2 as Bluetooth-LE (bluetooth 4.0) is available only since iPad 3rd generation (see here).

How to unsupport iPad properly in iTunes

We have an app on AppStore for almost 3 years, and we've set Deployment Device Info of this app as "iPhone" (not "Universal").
Earlier it seems iPad users could download our app and used it by enlarging the screen.
Now our uses reported they cannot download our app. (The guy who reported uses iPad Air + iOS7.1.1)
So, my first question is..
Is this new AppStore regulation that does't allow iPad users to download apps with "iPhone" set as deployment device target ?
We are fine if it's the regulation, but more confusing is when seeing the app in AppStore with Mac, we still see our app is compatible with iPads.
So my second question is..
From what info AppStore shows this compatibility information ?
Our aim is not to confuse users, so we want to go either way - tell users we are completely unsupporting iPads, or tell them you can download the app anyway.
That device list suggests that you require cellular access. Does the user in question have a wifi only iPad? The dialogue would be shown if the app required capabilities that the device did not have.
There is no change to the App Store policy - iPad users can still download iPhone apps, and it's pretty clear in the store that you're not getting an iPad-native version.
To answer your second question, the information shown in the App Store comes from what is set in your info plist- the minimum targeted version of iOS, and then device capabilities. Device capabilities are explained here.

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