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.
Related
How I can restrict an iOS App so that it can install only on specific device type. for example, I do not want my app to install iPhone5, iPhone5S, and iPhone6. I do not want to control it with deployment target settings (iOS version).
And this has to be distributed using Apple Developer Enterprise Program.
You can't prevent the installation of the app on specific devices.
But you can create a splash screen as your first view of the app in which you check the device and prevent the start of the app informing the user.
Well, there is no direct option available to achieve what you requested, because you can select the device type, like iPhone, iPad or Universal while setting up the target,
You can do this in alternate way, on applicationDidFinishLaunching You can simply put a check, if the device is other than the one you wants to provide the support then allow the proceed to the application functionalities, otherwise show a screen with some message showing that, we are not currently providing support on these devices (iPhone5, iPhone5S, and iPhone6)
And as you are going to distribute the application via enterprise account, so you will not need it to get confirmation from the Apple reviewers.
Hope it helps!
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
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.
When submitting an iOS app to iTunes connect, is it possible to exclude 3.5" devices? I do not want to support this screen size, just 4" and above.
I checked the iTunes Connect App Properties documentation and the App's Metadata documentation and unfortunately there doesn't look like there is an easy way to restrict your app from not being downloadable onto a iPhone 4S and older device.
But one thing you could try doing is setting your app to build for armv7s & armv8 (see this related question for more elaboration), or if that doesn't work, you could try throwing a "you need a modern iPhone in order to run this app" if it's launched on a smaller screen. This might be okay if your app is free, but you certainly will have an interesting time getting it onto the store if it's a paid app.
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.