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
Related
I developed an app that only runs on iPhone (iPad compatibility not required yet by me). After I publish it to the app store, the apple rejects the app as they test it on iPad and as I mention that it is only iPhone app, therefore, it looks ugly on iPad.
How could I submit it to app store by force apply the setting that it is an iPhone app only, not iPad?
This creates really much issue as I worked a lot and seeing this rejection made my heartbreak.
Apple have stated in their app-store guide lines that iPhone apps should run on iPad. Unless there is some really special need otherwise, which you must be able reason with them.
Check here: https://developer.apple.com/app-store/review/guidelines/
In addition to that it is really easy to make iPhone application compatible in most of the cases, just try and run it once on iPad device( or simulator), and you might find the crash and be able to fix that easy.
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.
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.
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.