iOS Device Test Mode and old iOS development - ios

When I was signing up for development program, then in the agreement, I saw a clause which basically stated that if a pre-release software is installed on any device, then that device will be put in test mode. So, what exactly is the limitation of a test mode as compared to a device which is in "normal" mode? Also, if I install iOS7 in a device (after iOS 7 has been released), then will the device be considered to be in a test mode if I test my application on it ?
Moreover, if I submit an application which runs on iOS 6 after iOS 7 has been launched, then can that be considered grounds for app rejection ? I will develop app for iOS 7 also. However, that will take some time.
Thanks

As far as I know, there is no limitation in "test mode".
If your application is developed for iOS 6, then it should still work on iOS 7 as well, but with the iOS 6 look & feel. However, it is always best to test it on a real device with iOS 7, of course.

There's no practical difference once you start using a device for development. I use my personal iPhone for most of my testing; it has no effect whatsoever on the utility of the phone.
On your second question: your app will NOT be rejected simply for supporting iOS 6, or any older version of iOS. Apple wants you to write apps that support iOS 7, of course, but they absolutely will not reject an app for supporting older versions; that would be crazy.
If your app actually failed to work on iOS 7 (once it's released), then obviously that would be a different matter.

Related

How to confirm App Store will respect my minimum iOS version?

We have set the minimum version of our App to iOS 10 in the Deployment Target setting in its build target in Xcode. I want to confirm that someone running iOS 9 cannot download the app. The app is on the App Store already.
I have a device which I would like to load iOS 9 on in order to test this. I checked Xcode and I can only download iOS10 on the simulator. There are sites all over the place with .ipsw files I can download, however they are for jailbroken phones - they are not signed by Apple. I do not want to jailbreak the device. Anyway I think that would not even work as I couldn't get to the App Store anyway.
There are a few iOS device models where the maximum iOS version supported is iOS 9, such as the iPhone 4s, and equivalent vintage iPad. Apple still signs iOS re-installs on such devices. You might be able to borrow or buy a used one fairly cheaply, and use that for Deployment target testing.
There is nothing to confirm. An app with a deployment target of iOS 10 cannot under any circumstances run on iOS 9. It won’t be downloaded to an iOS 9 device. But you cannot prevent the downloading of the app in some other way (though it still cannot run on an iOS 9 device). So just believe in reality and move on.

Using latest version of Xcode 8, support and test on for iOS 5.1.1

I have been searching for an answer for this for a while now and I can't seem to get a straight answer anywhere. I'm new to iOS development and am looking to get started porting my android app over to make my first iOS app. I'm not a big apple user, so I'm just running xcode in a VM and trying to build and test on my old ipod touch 3rd generation running iOS 5.1.1. I understand how out of date this is, but I want to develop and test on this device for 2 reasons:
I dont want to buy a $750 new apple product just to test my very simple app
When I publish my app, I want to reach the most users possible
So my question is this:
In xcode 8, is it possible to develop applications with a deployment target of iOS 5.1.1?
If so, will it build for all versions of iOS?
When I attach my ipod to xcode, it says device is not supported, can I fix this by installing some 5.1.1 developer package or sdk to allow support? Or would I have to build, then manually install and test each iteration?
If all of these are possible, and I build an app targeted to 5.1.1, can I publish it to the app store? If I open the app store on my 5.1.1 ipod, there are still apps in the store with recent update dates, so people must still be releasing updates to apps on iOS 5.1.1 right? Or am I missing something and an app that runs on iOS 5.1.1 is entirely banned by Apple.
A lot of questions, but If possible I really want to do this. Even getting a fully known, confirmed answer for ANY of these questions would be greatly appreciated.
Thanks
I dont want to buy a $750 new apple product just to test my very
simple app
Xcode has a simulator, you don't need a device to test your app.
When I publish my app, I want to reach the most users possible
As of July 31th 2017, https://developer.apple.com/support/app-store/
86% of devices are using iOS 10.
11% of devices are using iOS 9.
3% of devices are using earlier. (probably iOS 8)
It makes sense that you have this concern coming from Android, but iOS is quite different. Devices are designed to be uniform and apple encourages (almost forces) people to update them. (You won't stop receiving a notification to update your device)
It would actually be bad to focus on developing for that specific device you have, specially because a lot of the APIs will be deprecated, plus the screen ratio of that specific device is not so common.
In xcode 8, is it possible to develop applications with a deployment
target of iOS 5.1.1?
No*
If so, will it build for all versions of iOS?
Kind of, it will run but it won't probably be what you expect until you FIX it for that specific iOS version. (many things break between iOS updates so developers are sometimes forced to branch code)
When I attach my ipod to xcode, it says device is not supported, can I
fix this by installing some 5.1.1 developer package or sdk to allow
support? Or would I have to build, then manually install and test each
iteration?
Maybe, but probably not. You can actually copy files from older xcodes to enable testing in newer ones. You can search about how to do this by googling for "Using iOS 7 in Xcode 8". However I doubt going as far back as iOS 5 will be possible. The Xcode needed for running on iOS 5 is not even supported macOS Sierra (The newest OS)
If all of these are possible, and I build an app targeted to 5.1.1,
can I publish it to the app store? If I open the app store on my 5.1.1
ipod, there are still apps in the store with recent update dates, so
people must still be releasing updates to apps on iOS 5.1.1 right? Or
am I missing something and an app that runs on iOS 5.1.1 is entirely
banned by Apple.
Theoretically yes, iOS Apps can still "support" old iOS version, the reason why developers drop support for older os is because it gets increasingly hard to debug them as well as they just don't have support for new features and APIs that come with newer iOS.
My suggestion if you are really obsessed with building for iOS 5.1.1 is to ensure it's a 64 bit app:
https://developer.apple.com/library/content/documentation/General/Conceptual/CocoaTouch64BitGuide/ConvertingYourAppto64-Bit/ConvertingYourAppto64-Bit.html
And Download an old version of Xcode: (Maybe Xcode 7 or 6?)
https://developer.apple.com/download/more/
But I think you still have to Build with xcode 8 since you need to build against their latest SDK. The old Xcode is just to develop for it and facilitate debugging.

Version Requirements for iOS development

I am an experienced developer starting on my first iOS project. I am comfortable with the hardware and software that I will be using, but confused about the dependencies between the various components to achieve what I need to do.
Here's what I have:
iMac 21.5 inch, i5 processor 2011 vintage
OSX 10.7.5
XCode 4.2.1
iOS SDK 5.0/4.3/4.2
iPhone 4 running iOS 7
I first became aware of a problem, when XCode refused to let me download the app I am developing to the device. Presumably because I am targeting iOS 5, while the phone is on iOS 7.
I am hesitant to rush off and upgrade everything, as I am aware with Apple this is often a one-way street. For example, I bought the iPhone second hand that the vender had already upgraded to iOS 7, and now I cannot downgrade.
Here's what I want to be able to do:
Use my current hardware for development
Publish new apps in the App Store
Test my app on my iPhone (and preferably older models also)
Support iOS7 plus as many older iOS versions as possible
If possible, have the app use older controls styling (-iOS6) on iOS7
Can someone help me with my thought process through the various dependencies, and what versions I am going to need to achieve these aims?
You'll still be able to develop for iOS6 and earlier if you have the latest version of XCode, just set your deployment target accordingly. With XCode 5 though Apple stopped including the iOS5 simulators and earlier, so you would have to manually download it and include it if you wanted to use that.
Note that to develop with a real device (not just on the Simulator), you need to have an Apple Developer license and have added the device through the Developer portal.

Make app not support iOS 7

If for managerial reasons I'm am developing an app that has not been designed with iOS7 in mind(the notion of supporting iOS7 wasn't apparent until I upgraded to XCode5 and tested the app in the simulator running iOS7), can I restrict my app to devices not running iOS7?
I know it's possible to change the app to support iOS 7 but we're already in the testing phase and it's not my decision how the app is made.
You can compile your application using Xcode 4, which will mark the binary to run in a compatibility mode on an iOS 7 device.
I'm assuming you want the app to still work on an iOS 7 device, just not with an iOS 7 user interface.
No, you can not restrict your app to devices not running iOS7.
You could check if the device is running with iOS 7 and through some kinde of exception or show an error message. Of course you won't get it through apples revision.
But it might work if you only deliver it to local devices.

Will Apple reject my application if it does not run on an iPad 1?

I'm a beginner programmer and I have a universal application that works perfectly on iPhone and iPad with IOS 6.0 and up. However, it has certain features which cannot run on an iPad 1 because this device can only upgrade up to IOS 5.1.1. Whenever I run on an iPad 5.1 simulator, the application crashes. This is not the problem since I already expect it to do that.
Will Apple reject my application since it does not run on the iPad 1? Are there other iPad applications that leave out iPad 1's?
Of course not! Obviously, Apple thinks iPad 1 owners should just buy new iPads. :)
BTW, you should check out Apple's page on the approval process
, especially their approval guidelines for information on what they are looking for in an app submission.
No, they will not. So long as your app is supported on the latest iOS version, they will not reject your app for not supporting older devices. If your app has additional hardware requirements that the latest OS does not, be sure to clearly specify this in your app description.

Resources