How does one remove the iphone 3G and the ipod touch 3 from the target?
I have an app that uses libraries that need armv6, so cannot remove that from the architectures. Is it possible to still exclude the iphone 3G and the ipod touch 3?
Thanks
NB: I've assumed you also don't wish to include devices lower than those that you've specified, i.e. ipod2.
It's not possible to remove devices individually from your application, but it is possible to restrict what your application requires in an attempt to restrict devices.
I can't think of anything that works exactly if you need to maintain armv6, but if you can think of something that the devices you want to include have that the devices you want to exclude haven't, you can add those items to the Required Device Capabilities in your Info.plist.
Open-GLES 2.0 might be a good starter think to require as the iPhone 3G has Open-GLES 1.1.
If you tell us a little more about why you want to exclude these devices, I might be able to provide a more elaborate answer.
Related
As far as I can tell, there aren't any "performance" criteria that you can specify to exclude specific iOS devices via info.plist.
Is it possible, via info.plist, to allow a universal app to run on iPad1, but not on iPhone 3GS/3G? Right now I use the gyroscope requirement (which my app does make use of), as a crutch to support only iPhone 4+ and iPad 2+.
To be absolutely clear, I want to make the app AVAILABLE FOR DOWNLOAD in the App Store on iPad1, but not on iPhone 3GS. This question is not about runtime query of the device from code.
Is my best/only option to create multiple binaries, and remove the gyroscope build from the iPad build (typically called the "HD" build) but leave it there for iPhone/iPod touch?
Look at this question:
Determine device (iPhone, iPod Touch) with iPhone SDK
It goes over determination of different iOS devices. So, you can explicitly support (or not support) some specific model.
Requiring armv7 will drop out everything <3gs, but still includes ipad1. That's the closest I see.
The short answer seems to be "no".
On the up-side, iPad1 only has 256Mb memory, so you need to make your app fit in 256Mb anyway, so it should work on the 3GS. The difference in CPU speed is significant though.
I'm want to target the iPhone 4, iPhone 4S, iPod Touch (4th generation). I do not want to target the iPhone 3G and iPhone 3GS. I've seen some post that said this is not possible. However, I notice in the App Store that some apps do this such as the picture below.
How would I accomplish this?
Those requirements show up because the developers have put armv7 as an entry in the UIRequiredDeviceCapabilities Info.plist key. There's no key specifically to target the iPhone 4 and up, although you can probably eliminate the 3GS using one of the other keys.
Why are you trying to stop people from installing your app on older devices?
I believe you want to set UIRequiredDeviceCapabilities to specify exactly which features your app needs. For example, the camera-flash key is only going to be true for iPhone4 and later, if that's what you need.
There's also a Q&A article on it.
In addition to setting the features the device needs with UIRequiredDeviceCapabilities, you can also specify the minimum iOS version that needs to be installed.
See this Apple Technical Note, TN2250.
Is this possible? I want to target iOS 4.0 and the iPhone 4 device in my App Store distribution build. How would I do that?
Thanks!
Applications can (and should) be limited to specific device capabilities, not to specific models - you can use UIRequiredDeviceCapabilities in application info.plist file for that (check the list of available keys here in "iTunes requirements" section.)
So the key to be used will depend to what functions your application require, it seems you can use front-facing-camera as only iphone4 currently has that.
You cannot limit to a certain device but you can limit to devices with certain capabilities. E.g. you could declare that your app requires telephony and front-facing-camera. That would more or less restrict your app to the iPhone 4G.
Required capabilities are declared in the Info.plist file
This is not possible and IMHO not wanted by Apple. I don't think that a target device would have any impact on limitation of device, if it was possible. However if your App relies on a fast device and it's unsuable on a 3g you may have to improve performance.
My iphone app doesn't run well on the iPhone 3G. Can I make it so users with these models can't download the app? If so, what does a 3G user see when they search for my app in the app store?
Does it appear in the store at all for them? If it does, when are they notified that they can't download the app?
I recommend you use the UIRequiredDeviceCapabilities key in your info.plist. This lets you tell the App Store exactly which capabilities you require instead of which device you require.
If your app "doesn't run well" on a 3G I'll guess it is because of performance and therefore you'd want to require a newer processor. Look into setting arm7 as one of your required device capabilities.
For more info look here:
http://developer.apple.com/iphone/library/documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html#//apple_ref/doc/uid/TP40009252-SW3
Make it run better. Or if it's not completely unusable, just let them use it anyway. People with old devices expect them to be a bit slow.
According to the iTunes Connect Developer Guide (which links to the iOS Application Programming Guide), you can't prohibit certain devices. You can, however, require certain features which are only present on new devices:
armv7 is what I'd recommend (older devices are armv6)
magnetometer, because older devices don't have one. Apple might look at you funny if your app doesn't actually use the compass though.
opengles-2, because older devices only support 1.1. Apple might look at you funny too.
auto-focus-camera, except the iPad and all the iPod Touches don't have one. Probably not what you want.
iPhone 3GS uses iOS 6.1.x so if your app support iOS 7+ it will not be able to install on iPhone 3GS, this is the best possible way to avoid download on that device.
I have a couple questions about submitting blue-tooth enabled apps on the iPhone.
I want to first say that bluetooth is merely an option in the application. The application does not completely rely on bluetooth as there are many modes the user can go in.
First, do they require you to have the "peer-peer" key set in UIRequiredDeviceCapabilities even if bluetooth interface options can be disabled or hidden for non-bluetooth enabled devices? Basically, it's just an OPTION in the game and there are many other modes the player can play.. Does Apple not allow you to do that? I'm just curious, because it seems like something they would do.
Adding to that, how do you check for it's functionality at runtime? In essence, how do you check UIRequiredDeviceCapabilities at runtime. I'm aware of checking iPhone device types, so would that be a proper way of going about it?
I'm also sort of unaware which devices can run bluetooth gamekit, there doesn't seem to be a proper reference at the SDK site, or I'm unable to find it.
Thanks for reading!
[edit] I can confirm the existance of somebody rejected for submitting a bluetooth enabled app which didn't work on a iPhone 2G.. Of course, they didn't say if that was the MAIN function of the app, though.
For devices that do not support this capability, see the Game Kit Programming Guide:
Bluetooth networking is not supported
on the original iPhone or the
first-generation iPod Touch. It is
also not supported in Simulator.
If this is an optionally-enabled feature, you might be able to get by with disabling it for the appropriate devices by detecting first-generation iPhones and iPod touches using code like Jeff LaMarche's UIDevice category. If you hide this option when running on unsupported devices, if a reviewer happens to use one of those devices they won't even see that there's something nonfunctional.