Our iPhone Apps run beautifully up through iOS 6, but certain features do not work on the iOS 7 beta. My fear is that we won't be able to complete our iOS 7 compatibility before iOS 7 is released and our customers will upgrade to iOS 7 and the App will be unusable....resulting in negative reviews, etc...
Does anyone have any suggestions on how to best handle this? Is there a way to set a Maximum SDK that the App supports?
I think if you do this you will get bad reviews anyway, but it may be your only option if you can't revise in time.
You need to take a look at this SO answer and use a condition with a macro like
if(SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(#"6.1.3")) {
// work normally
} else {
// fail gracefully
}
to disable any part of your app that is broken post that version number.
I don't think there is a way to restrict users with later versions installing and trying to use your app as there is with users with versions earlier than you require. The reason is probably that while it's OK to use new features and lock out older devices it generally isn't OK to not support new devices indefinitely.
If you run a binary built against the iOS N SDK on iOS N+1, the device substitutes the behaviour of iOS N. Assuming you have an iOS 7 device set up for testing, try downloading anything from the App Store — you should see gradients and wide UISwitches and view controllers acting properly when wantsFullScreen is set to NO and everything else.
So you don't need to handle anything. It's dealt with automatically on the device.
There is not maximum iOS version setting anywhere but it shouldn't necessary.
If you build the app with Xcode 4.6 / iOS 6 SDK, then run it on device w/iOS 7 installed, does it work OK? If so, that's what you should release first (or leave in the app store). If not, you need to fix just those problems that show up and release an update made with Xcode 4.6. Just fix those issue, don't try to restyle and redo everything for iOS7 yet. Most apps built with Xcode 4.6 won't need fixes to run on iOS 7.
When you build with Xcode 5 / iOS 7 SDK, then you'll want to fully use and support iOS 7. But you can't release that build until we get a gm Xcode/SDK anyway. You don't have to go down this path right away if you aren't ready.
Try systemVersion of UIDevice.
Format is 6.1.3 or 7.0.1
Split them with '.' to get major version
https://developer.apple.com/library/ios/documentation/uikit/reference/UIDevice_Class/Reference/UIDevice.html#//apple_ref/occ/instp/UIDevice/systemVersion
Related
We are planning for a new mobile application for iPhones/iPads this month and we are outsourcing this project as we dont have much knowledge about the subject. Could someone tell me if current iOS applications will run on iOS 7?
I would appreciate help in this as I tried to search but could not find related articles as most of the articles talk about features and not backwards compatibility.
Sure. It will support older versions of iOS. If not millions of applications in Appstore will be unusable in iOS 7. You need to download iOS 7 SDK once available to exploit iOS 7 specific features, thats all.
Yes current iOS application will run on iOS 7, because apple will take care that if they launch new iOS then they create new iOS in such a way that it's always compatible with older iOS apps other wise if someone upgrade the iOS and the apps of previously developed will not work on it then they loose their customers/users. So don't worry new iOS 7 will also support apps developed for iOS5/iOS6. There were only new features in iOS7.
Although iOS 7 has seen a major overhaul in UI field as well as several back end changes too. But the main point for your question is that any application if working on previous versions of iOS should work in iOS 7 too. The OS will take care of all the UI instances drawings in different versions of OS. The situation where the applications supporting newer versions of OS not working on older versions is that they use some features only available to a specific version of OS or later.
It would run in iOS 7, but probably not as you would expect it to run, so my recommendation is to create 2 (or 4 if you build for iPad) 1 for iOS 6 - and one for iOS 7 + just detect the iOS version and load the storyboard for the appropriate version
It is always better to start development in the latest available version of iOS. In this case 7 is the latest with all the support for developers. You can get the relative iOS SDK and Xcode.
Long Story Short: Start Development in the latest iOS and nothing shall go wrong.
From the research I had done, indeed app built using 6.1 SDK and Xcode 4.6 will run on iOS7, however, the app will have an iOS6 look and feel on iOS7.
How can i check the compatibility of my application, based on IOS 5.0.1 created with Xcode 4.3.3 on Lion, on IOS 6 without having to change my current MAC OS version and Xcode? Is there any way? And as an addition to this question, if i submit my application to the Apple Store, can it be rejected just for the simple reason of being created compatible with IOS 5 and not with IOS 6.
It’s not clear what you mean by “compatible”. One thing is the version of the SDK you link against, one thing is your Deployment Target setting and then there’s actual code compatibility regarding various API, UI and behaviour differences between iOS 5 and 6.
It seems that you have to develop with at least the iOS 6 SDK to submit your app at all.
However, your Deployment Target setting may go as low as required, so that your app still supports older iOS versions.
Your app doesn’t have to be “compatible” with iOS 6 in the sense that you tested it on iOS 6 and handled all the potential quirks that may have appeared by moving from iOS 5 to iOS 6. Of course, the user experience on iOS 6 could suffer in this case, but unless there’s a major bug, the reviewer doesn’t care.
I have developed my app in Xcode 4.1 and iOS SDK version(Base SDK Version) is iOS 4.3 So, will this app run on iPhone with iOS 5 and/or iOS 6 or not?
I think the app can be run on a higher version of the OS than the Deployment Target. Is this right? I appreciate any help.
Yes, your app will run on anything that is iOS 4.3 or newer. That is, assuming you aren't using any depreciated methods that are removed from a future iOS release. You can check if things have been depreciated/removed through the documentation.
It doesn't matter with which Xcode you build your app, the base SDK signifies the lowest system your app is supporting.
You app can and will run on newer systems.
If you want to make an update to your app, you'll need to pay attention to depreciated methods for the newer systems or you will get rejected and won't be able to update in the App Store.
Yes, it will for sure run in higher versions than Deployment Target.
However, is always recommended to run also in newer versions as they are released, to check that every API used is still running fine (specially if they were deprecated).
Couldn't find similar questions:
I'm currently designing my app and after that I will build it with Xcode 4.2. My question is what iOS version should I use - iOS4 or iOS5?
I was trying out storyboard and ARC, so it would be great to build the app with iOS5, but I don't know if it will be better to use iOS4 to reach more users?
What are your advices?
Merry XMas! :)
According to this report, about a third of users had updated to iOS 5 in October. The figure has probably increased since then and will continue to increase (especially considering the huge influx of new iOS 5 devices which will enter use after Christmas), so by the time you publish your app it is quite likely that about half of users will have iOS 5.
Whether it's worth losing about half of your potential market for the extra features which are available when developing for iOS 5 is entirely up to you. To some extent, it also depends of what the app is - if it is something targeted at people who make intensive use of their iPhone, chances are they will already have upgraded, so it shouldn't be a problem. If, on the other hand, it's something that is likely to be used by non-techsavvy people, you might be better off making it compatible with iOS 4.
I would say go for IOS 4, you can still use Arc, and StoryBoards are not the end of the world...
I would:
In Xcode, set Base SDK to Latest iOS (iOS 5.0) and set iOS Deployment Target to iOSx.xx where x.x is any version from 3 to 5. The deployment target is where you can decide what is the minimum version of iOS that your app will need in order for it to work. So the lower the number would mean you can reach more targets. Just make sure you do test your app on those versions that you set before submiting to iTunes for review.
I have 2 devices,iphone with 4.3.1 and ipod with 5.0.
The problem is that in my iphone the debugger stop in break points, and in ipod the debugger won't stop on break points.
Any ideas on why that happens?
Have you installed the iOS 5 SDK in your Mac? I think that is what you require.
Also you need to understand that some of the functionalities might still be missing in some of the cases as it is still a BETA version. It might not be a fully functional version yet.
So either you can try using the iOS 5 SDK in your mac or if you have already tried it then I think you should wait for the final iOS 5 full version to work properly.
Also in the below link, they have discussed that some of the functionalities of iOS 5 still doesn't work on iPod. So may be Apple is working on it before the final launch.
http://www.ifans.com/forums/showthread.php?t=344401
You can also try referring to this link:
iPhone Dev: Xcode debugger does not stop on breakpoints
I think its the same problem like with iTunes. If you use a beta SDK you also need beta iTunes to sync with your device and a beta Xcode. Do you have the beta Xcode? Thats because the official Xcode release don't have an iOS 5 debugger. Open your Organizer and look if your iPod is listed as a supported debugging device.
Do you have iOS5 SDK installed as well? Are you testing with that? If not, the app won't stop at breakpoints. Your XCode version does not have the iOS5 debugger.
Not the solution to your problem, but I faced the same problem and solved it using UIAlertViews & NSLogs. I should also mention that I even installed xcode with iOS 5 SDK beta, even after which the breakpoints won't hit.
It was some issue with the symbols. You can create & display a temporary alert view where you want to put the break-point with its message/title being the value that you want to see, or you can log the value.
To debug a device running iOS 5 you will need to install the beta version of XCode, which contains the iOS 5 SDK. Once you register as an apple developer you can download it from developer.apple.com.