Just to be sure, I want to know if an application targeted for IOS 4.2 could be submitted to apple approval process ?
So the application can be downloaded on iPhone 3G.
thanks for the info.
andré.
Yes this is fine, you can support any OS version you want.
It is best to be able to test on each version you support thou
edit: You will need to make sure your project support armv6 and armv7 thou
Related
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.
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!
I've been trying to get my app - built in Xcode 4.2 in Snow Leopard, using ARC, targeting iOS 4.0 and up - to install on a 3G, with no luck. I've tried every solution I can find (like this thorough one here: Is it possible to target older iOS versions when using Xcode 4.2 and iOS 5 SDK?) and while I've been able to get the app to run on the phone via Xcode, when I share the app and try to install it through iTunes, I keep getting the same error telling me the app was not installed because it is not compatible with this iPhone. My client is using a 3G so this is a pretty big problem.
I've set the architectures / valid architectures to support armv6 as well as armv7 in my build settings and I've deleted the line in info.plist about the required device capabilities with armv7 (I also experimented with adding armv6 instead of deleting the line, which made no difference). I also added the -mno-thumb to Other C Flags in case that was the issue. Even though I know for a fact that it works on a 3G, iTunes refuses to install it. Is there something I'm missing?
Check the OS version for you iPhone 3G. if it is running less than 4.0 you might need to have older sdk. Besides I guess ARC is not supported in earlier versions of iOS.
OK, I'm just dumb - I skipped a step and wasn't actually re-archiving the app, I just kept sharing the same original archive over and over again. Re-archived and now it works fine.
Thanks for all your help, everybody! Next time I ask a question I'll try to rule out my own lack of attention first...:P
I rewrote an app I have on the iTunes store using iOS5.
The original app had support for armv6 and armv7 on iOS 4.2 and higher.
The new app has only support for armv7 on iOS5.0 and higher (since iOS5 API is only supported on armv7)
So there's the issue. iTunes won't let me upgrade the app because it would mean some users won't be able to get an upgrade. Error message:
This bundle is invalid. UIRequiredDeviceCapabilities in the Info.plist may not contain values that would prevent this application from running on devices that were supported by previous versions.
The value in UIRequiredDeviceCapabilities is armv7. armv7 is required b/c iOS5 api.
What do I do? Do I pull the old app and replace it with the new one? What about my customers? How will they be able to upgrade? Are there any workarounds?
I also found this in my search:
https://developer.apple.com/library/ios/#qa/qa1623/_index.html
I wish they would fix this. I mean we can't support all versions all the time if they want us to use new features, and I'm not going to rerelease the app every time they upgrade the OS.
In short: UIRequiredDeviceCapabilities cannot be changed in app updates.
Take a look at Ole Begemann's post explaining it and suggesting changing required SDK version as a workaround.
I was just having this same issue. I tried adding armv6 to my architectures but that didn't work.
To make it work, I changed the deployment target to 5.0 and viola, no problems :)
I am just about to upload my first app to appstore :-)
I have tested the app on an iPhone 3G (IOS 4.2) and my iPhone 4. What version of code should i upload and:
If i upload 4.2 to support iPhone 3G, will that cause any problems with newer phones?
If i upload the latest version of the code i guess iPhone 3G's will not be able to run it?
Is it worth while to still support iPhone 3G?
Can someone please recommend me what to do?
If you upload a version that the 3G does not support, then all 3G users will not be able to download the app.
If you upload a version that is supported by 3G, then only if the users have updated their firmware will be able to use the app.
In other words, the role of thumb is: upload the one that is tested on the latest firmware, but can be launched from as many firmware version as possible.
That might mean to just upload the one that is tested on the least firmware possible, but be careful because newer firmware versions might stop supporting certain APIs that you might have used, and then all newer (potential) customers will be locked out of your app.
If i upload 4.2 to support iPhone 3G, will that cause any problems with newer phones?
No.
If i upload the latest version of the code i guess iPhone 3G's will not be able to run it?
You need to compile for arm6 in addition to arm7 architecture.
Is it worth while to still support iPhone 3G?
That's a matter of opinion. This there any requirement for you specific app that requires a iPhone 3GS?
Choosing the latest ios as the deployment version is bad idea. iOS 4.3 isn't supported by Verizon devices, which means that you will lose a big portion of US users.
I believe most of apple's apps are using "iOS 3.1" as the deployment version, and i would recommend choosing the this as the lowest supported version.
iOS 3.1 is the last version supported by the original iphone, which guarantees that all users can use your app. Note it's not enougth to just pick 3.1 as the deployment version. you will have to test it with a REAL 3.1 firmware. There are a few guides on downgrading your iphone to 3.1, which is helpful for testing (such as http://lifehacker.com/5572003/how-to-downgrade-your-iphone-3g%5Bs%5D-from-ios-4-to-ios-313)