I am trying to submit an App that only supports arm64, which was developed in Xcode 7. However, having uploaded the binary to iTunes Connect, it shows the following error message when I try to Submit:
You must upload screenshots for 3.5-inch and 4-inch Retina displays., Your binary indicates support for iPhone/iPod touch. You must provide an iPhone/iPod touch screenshot.
I changed the Requirements in the Info.plist files, as well as the Architectures and Valid Architectures. Is there something I am missing? I only want to support 4+ inch displays and I believe you cannot have armv7s without armv7, so I only stipulated arm64.
Update:
In the end I just created separate Storyboard for the iPhone 4s and selected it in the View Controller programmatically.
If you support iPhone you are going to have to support the 4 inch retina display. Since iOS 9 is available for the iPhone 4s you need to support it. I had the same problem: Is there a way to limit iPhone App to only certain models?
Without knowing more about your application, There's a number of reasons you might be recieiving that message.
Your app shows that it's supporting iPhone/iPod touch somewhere (plist, target build, etc.)
You have restricted the device requirements:
Important: All device requirement changes must be made when you submit
an update to your binary. You are permitted only to expand your device
requirements. Submitting an update to your binary to restrict your
device requirements is not permitted. You are unable to restrict
device requirements because this action will keep customers who have
previously downloaded your app from running new updates.
https://developer.apple.com/library/ios/documentation/DeviceInformation/Reference/iOSDeviceCompatibility/DeviceCompatibilityMatrix/DeviceCompatibilityMatrix.html
An additional reason this might be required, as I just discovered: When viewing an app on the App Store on a 4-inch device, it actually uses the 3.5-inch screenshots in the listing. Even when I called Apple's developer support, they didn't seem to understand this, then were surprised when they discovered it was true.
Related
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.
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 done developed an apps, preparing for submission currently. The apps is actually developed for iPhone/iPod only. I have go to Xcode, target -> Build Settings -> Targeted Device Family,but the available option selection is either 1 or 2, which option should i select in order to make the app available for iPhone only?
open your project target - > genereal - > device Info --> devices --> iphone
for sample
In addition to Anbu's answer, there is something you should be aware of.
This drop down box saying iPhone or iPad (or both) does not itself determine what platforms your app runs on, or who it should be shown to on the market.
You can't run normal iPad apps on an iPad Pro without modification. How does Apple know you want to offer it to iPad Pro customers? They check to see if you have uploaded iPad Pro screenshots. Same with every variation in iDevices.
If it is complaining, as Anbu said its probably because you have indicated in your Project that it should also run on some platform (like iPads) but not uploaded screenshots which would allow it to be offered to iPad customers. Easily fixed.
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.