Can I install an ad hoc build on iPad for an iPhone targeted app? - iphone

I'm creating an app targeted at iPhone/iTouch devices. They build on that just fine. Can I install an ad hoc build onto an iPad while having the 'Targeted Device Family' set to iPhone and not iPhone/iPad? I'm expecting of course because it isn't a universal app that it will run in the small window on the iPad. I don't have an iPad, client does and would just like to test on it.

Yes, as long as the target OS matches the version of the iPad it should work.

Sure; you just need to set "iOS Deployment Target" (IPHONEOS_DEPLOYMENT_TARGET) correctly (i.e. 3.2 if your client has not updated to 4.2 yet).
Note that Apple has rejected iPhone-only apps with IPHONEOS_DEPLOYMENT_TARGET=3.2 (and SDKROOT=iphoneos4.0). The only thing you could do was set iOS Deployment Target to 3.1.3 and below (and be forced to support iPhone/3.1.3), which was a bit of a pain since 3.2 has a lot of improvements on 3.1.
I'm not sure if they've fixed it. You have three options:
IPHONEOS_DEPLOYMENT_TARGET=3.1.3 (or below) and support old phones as well. (Don't support OS versions you can't test on!)
IPHONEOS_DEPLOYMENT_TARGET=3.2 and face possible rejection.
IPHONEOS_DEPLOYMENT_TARGET=4.0 (or above) and force users to upgrade.

Related

Restrict iPhone/iPad App to iPhone 4 and higher only?

I am looking to make my app so that it only works on iPhone4 or higher, and not the 3GS.
How can I do this? Is it done via setting the Architectures setting to Standard Armv7/Armv7s
And Valid architectures to Armv7 & Armv7s?
Or do I need to look at deployment target? And set it to a certain iOS version?
Thanks in advance!
Deployment target is only going to allow you to target a specific iOS version and a 3GS can run iOS6. If you're truly looking to restrict older devices from running your app you're likely going to have to do some checks for device model within the AppDelegate and restrict functionality.
A caveat to this is that your app will likely not be permitted in the App Store. What feature(s) are you trying to leverage that a 3GS doesn't support?
Unfortunately you can target the iOS version not the device! You can try to build for iOS 6.0+ and it'll isolate some older devices like iPad1. I'm not sure what iOS version will go up to on 3GS, it'll be phased out soon, though with upcoming iOS releases. I know iOS 6 will work on 3GS but iPad1 won't
You can detect the device, and restrict it via code, but through Apple and iTunes, there is no device centric restrictions, only OS.

Will iphone 5.1 deployment target reach all iphones upon release of ios 6?

I am new to iphone app development and am wondering which deployment target to use (as ios 6 approaches). My app is simple (http web service interaction, map) and my natural inclination is to target 3.1 to maximize potential use. However, I understand that ios 6 will soon be available to all iphones and I presume it will be widely adopted.
So, if I target 5.1 today, will my app be available to most, if not all, iphone users once ios 6 is released?
Right now, requiring a minimum of 5.1 is a bit bold in my opinion, but that depends on your app. It is customary to support the current version and the previous major release.
If you want to expand your target, you may considering going back to 4.3 or even all the way down to 4.0. But 3.x is practically obsolete. but:
Warning: Don't target a version you can not test on device. If you don't have a device running 4.0, testing your app only on the 4.0 simulator is not recommended (although perhaps it is OK. No assurance).
The iPhone 3G can run up to iOS 4.2.
All other phones and iPads can run the latest OS (5.1.1)
Not sure about iPod Touch devices but 3rd (and 4th) gen. should run iOS 5.
You can use 5.1.1 as deployment target if it is available to your menu.. if not 5.1 is best for your needs for now.
This way all (Who have not updated to IOS 6) can use your app...
Best luck for app development.

Exclude devices that do not support multitasking

I'm making an app that requires multitasking. Is there a way to compile an iPhone/iPad (universal) app so it excludes devices that do not support multitasking. I know iPhone 1, iPhone 3G and iTouch 1-2 do not support multitasking but I haven't found a way to build my app so it prevents people to download the app from the app store if they have one of these devices.
I was thinking to simply set the "Architectures" setting to armv7 on Xcode but I'm not sure if this will work and if it will have any other consequences.
Any help will be appreciated. Thanks!
You can set the minimum API level supported to be iOS 4.3. This version only runs on devices that support multi-tasking.
You should check in your application for multitasking support and fall back to a non multitasking alternative if it is not available.
Suppose you change the supported architectures to include ARM7 upwards. If you do, you need to find out what happens if somebody attempts to deploy such an application to an incompatible device. If iTunes stops them from doing it, that's fine and it's the right answer. But if iTunes lets them do deploy the app and it crashes when they try to run it, it would be far better to do the test for multitasking support and display an alert telling the user why your app won't work.
Go to targets section of your project--> navigate to Build Tab-->Go to Deployment tab & select IOS deployment target as 4.2. It will not run on IOS versions earlier than this.

How to build an iOS4 app that will also run on the iPad?

I'm trying to build an iOS4 app (not universal) that will also run in compatibility mode on the iPad. So I set the Deployment Target to 3.2 and the Device Family to iPhone.
This works fine in adhoc builds, but when I try to upload it the the store, Application Loader complains: “This bundle is invalid. An application targeting the iPhone device family may not require a iOS Deployment Target 3.2, which is an iPad-only OS”.
What? Are my only choices to set the Deployment Target to 4.0 and not run at all on the iPad, or set it to 3.1.x and build/test the app for a platform I don't want to support, that Apple doesn't even ship an SDK for any more? Am I missing something?
Set the "Targeted Device Family" to iPhone/iPad
New firmwares support compatibility on older ones. For example: 3.1.x apps are compatible with 3.1, 3.0, 2.2, etc.
My guess is set it up as an iOS4 app. Also remember there are some functions on iPad that do not work on iPhone and viceversa. So your app could still crash.

iPhone Build SDK 4.0 With 3.2 Target Won't Install on iPad OS 3.2

I'm building an app for iPhone/iTouch that I also want to run on iPads (not a universal app, but one that just runs on on iPad with the 1x/2x button in the lower right hand corner).
I'm using iPhone SDK 4.0 and setting the following:
Base SDK: 4.0
iPhone OS Deployment Target: 3.2
When I do this, I can build an app just fine and run it on an iPhone/iTouch, but when I try to install it on my iPad I get the following error: The Info.plist for application specifies a minimum OS version of 4.0
In addition, if I package up the binary and submit it to Apple and it becomes available on the iTunes store, it shows that it's only available for iPhone (not the iPad). When I go to the App Store icon on my iPad, it doesn't even list the app as available (because Apple thinks it won't run on iPad, I assume).
Now I'm really confused, because I thought I understood the difference between the Base SDK and the Deployment Target, but Xcode is telling me I don't.
Can anyone help explain this to me?
As an aside but related question, if I build with Base SDK = "iPhone Device 3.2" it works fine on my iPad, but by doing so would I lose the Base SDK 4.0 built-in multi-tasking feature?
Check the 'Targeted Device Family' setting in your target's build settings. It needs to be set to iPhone/iPad if you want to be able to deploy to both devices.
This build setting automatically sets the UIDeviceFamily entry in the app's Info.plist (You shouldn't update this yourself, though—use the build setting instead.)
UIDeviceFamily