Monotouch iPhone 5 build and app that supports ARM6 - iphone

I'm wondering what I need to do with my existing application when I build it. Currently I target ARM6 and ARM7 using 4.0 as my target build SDK.
I don't really want to drop ARM6 support but I also want to make sure that my app can be used on the new iPhone. From what I can tell Apple also won't let you drop support for ARM6 on apps that are already in the store and support that architecture.
Do I have to create a new version of my application just for iPhone 5 users?

Apple lets you drop ARMv6 support.
The trick is that you have to set the Deployment Target to an iOS version that is guaranteed to have ARMv7 support (I believe this would be 4.3).
That said, you do not have to drop ARMv6 just to make your app run on iPhone 5, your existing app will work just fine (but you will not be able to use any of the new iOS 6 features).

What if I don't want to drop the ARMv6 support? A lot of people are still using the old phones. My app just needs to support fullscreen on iPhone5.
This basically means that Apple has prevented the same app from running on iPhone 5 and older phones!
I'll try to submit the iPhone5 version as a separate app on iTunes connect, so that people can use the app on older phones and still enjoy full screen on iPhone 5. let's hope Apple doesn't reject my app - it's their fault after all!

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.

Can I still submit iOS 5.1 apps to the app store (Oct 2012 )?

I started building an iOS app with xCode 4.3.2 , using armv6 and armv7 instruction sets. My deployment target is iOS5.1 . Now that iPhone 5 is released, and xCode 4.5 drops support for armv6, and replaces it with armv7s , what is the correct approach to submitting apps to the app store?
I'm afraid that if I submit the app incorrectly, the app store review team would try to launch the app on iPhone 5, running armv7s , and the app would not run.
Should I update to xCode 4.5, and build my apps against iOS6 now, even though I do not have an iPhone 5 to test it on?
Thank you for any clarifications.
Should I update to xCode 4.5, and build my apps against iOS6 now, even though I do not have an iPhone 5 to test it on?
You can submit an app that does not exploit the iPhone specific features (namely, the taller screen). If your app works on iPhone 4, then it will work on iPhone 5, although in a special mode where the visual content of your app is centered on screen, with black bands both above and below it.
On the other hand, you can use the Xcode 4.5 simulator to ensure that your app works on iPhone 5, if you are worried about it. Then you could change your code base to make it run on iPhone 5 and still provide an official build for the App Store made with Xcode 4.3. This is good for all except performance tuning and fixing memory management issues; but you can work on those points on your current iPhone/iPad, whatever.
With Xcode 4.5, Apple decided to make a move towards discontinuing support for older devices: the original iPhone, iPhone 3G, and the first two versions of iPod Touch. So, if you want to support iPhone 5, you will be forced to discontinue support for those devices. I don't think it is a big issue, although I myself have got an old iPod Touch 2nd Gen and I cannot foresee a bright future for it.
If in doubts about supporting iOS5 vs. iOS6, you could also have a look at this other post.
Hope this helps.

How can I deploy app only for iPhone 3Gs,4,4S and skip iPhone5 support?

I want upload app to app store for review but it seems like I need also iPhone 5 screenshots but I don't have app prepared for iPhone 5. Please, how can I deploy app only for iphone 3gs,4,4s?
I find something in Targets/Build Settings/Architectures Standard armv7 and Base SDK is Latest iOS 6.0. Is that what I have to change?
Just for absolute clarity, Apple released an announcement on March 21st 2013 stating that starting May 1st 2013 new apps and app updates MUST be built for iOS devices with Retina display and iPhone apps must also support the 4-inch display on iPhone 5.
You can view the announcement here.
The best solution is to just properly prepare your app for the iPhone 5's display. And no. Changing the base SDK will not help here.
You can't, only apps submitted before iPhone5-release can run in "iPhone 4 mode" on the new iPhone. All updates to apps and newly submitted apps must support the new 4 inch screen.
You cannot exclude the iPhone5 in the target settings and if there were a way to do that, there is no way Apple would approve it. You can remove support for old devices, but never for new ones.
After all, Apple wants as many apps as possible to adapt the new format as soon as possible, and this is what you have to do... don't worry - if you are fairly used to developing to iOS you can do it in just a few hours...
Apple has stated that theY will still (currently) be accepting apps without specific iOS 6 and iPhone 5 support when developed with an Xcode version prior to 4.5, and thus with an SDK 5.1 or earlier. 568h support is specifically not allowed in apps built that way.
Apps built that way will run in letterbox on a 5, or the similar 1X/2X compatibility boxes that the iPad uses for legacy iPhone only apps.
I submitted an app following the release of the iPhone 5 with the latest version of XCode that runs letterboxed on the iPhone 5. Just remove armv7s from your supported architectures.

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.

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

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.