iOS 8 - 9 Upgrade testing - ios

During QA testing of one of my iOS apps an issue has been logged when upgrading a device for iOS 8 to iOS 9. Although I have a good idea where the bug is occurring it is quite a difficult situation to test because once a physical device has been upgraded from iOS 8->9 it is not possible to roll back to 8 again to repeat the tests.
Is anyone aware of a way to perform this type of testing without having an illimited number of iPads. It is not possible using the XCode simulator obviously, and the physical device upgrade procedure prevents rolling back to a previous iOS version. Surely Apple must have some sort of provision for people in this situation but I can not find any information.
Any help would be appreciated.

Related

iOS app restarts in background on iOS 13.2.2 but not on iOS 12.4

I am developing an iOS app in React Native. I have been testing my application on two iPhones - iPhone 6 running iOS 12.4 and iPhone 11 Pro Max running the latest - 13.2.2.
I am having the strange problem that my application restarts when it is minimized in background and not used on the latest iOS. However, my app would continue from where it has been left after long periods of time on iOS 12.4 - in short it will not restart when in background, which is exactly what I want.
I wish to keep my app on the last state the user left it when navigating away from it, so the user can go back and continue their process. How can I fix this? How come an older iPhone with older hardware and older software manages to keep my application running in the background while the newest flagship with its latest software cannot manage it?
P.S. I had the same issue on one of the previous versions of iOS 13. I was really happy when I read that 13.2.2 has addressed this issue and I was hoping it would fix my problem. Unfortunately, it did not.
I would appreciate any ways and guides of debugging this problem and fixing it.

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.

How can I run my hybrid mobile app in debug/development mode on an iPhone?

TL;DR: I can run our app in development mode through VS2015 with remote debugging on the iPhone 5c that I have, but I cannot do the same on the iPhone 4s.
I'm having some difficulty getting a Cordova powered hybrid app to deploy on one particular device in my development environment... However I'm unsure if this is something I'm doing wrong or if there's some compatibility issue here. Posting a question here in the hopes that someone can help me work out what's going on.
Just for some background: The app in question was created using Intel XDK, then ported across to Visual Studio 2015 when Intel recently removed some of XDK's "Debug" functionality. A few things needed to be adapted, but the project does still include some of Intel's JS code as it was in the original project.
My environment includes:
Windows 10 Pro (primary desktop)
Apple Mac Mini with OSX "El Capitan" 10.11.6 (on the network as a build server)
iPhone 5c with iOS 8.3
iPhone 4s with iOS 9.0.2
While configuring this environment, I followed the instructions here. The remotebuild agent is configured to use http only to keep it simple, since this is all contained within a corporate network anyway.
After this I could run our app on the iPhone 5c without any problems, but trying to run it on the iPhone 4s gives an error in VS2015 stating:
Failed to deploy iOS remote for <project_path>\bld\ios\Debug\buildInfo.json to http://10.66.7.23:3000/cordova:
Error from http get [object Object]: Error: socket hang up
Note: There are no errors in the remotebuild console output on the Mac and VS builds the project correctly, but then fails to deploy it.
I've also tried multiple Provisioning Profiles on both devices, installed using iTunes, Xcode or Apple Configurator 2; but thanks to the provisioning profiles not showing up on devices with iOS 8 or newer, I can't even verify that they're installed at all.
Both of these devices can install and run the previous version of this app (available in app stores), but I need to be able to inspect the DOM in real-time, because even though they have the same screen size, the responsive break points are behaving differently.
So, before I pull out what little hair I do have left, please could somebody help me work out what the hell is going on here?? I've been fighting with this for over a week now and I feel like I'm going round in circles.
After all this backwards and forwards with the iPhone 4s, it turns out the device itself was actually faulty. Somehow this had translated to having a version of iOS that was not installed correctly, which resulted in software issues for apps running on the device.
This was not immediately apparent to us because of the unfortunate lack of devices we had access to for testing, but since I managed to get my hands on an iPad Mini with 9.3.5 and an iPhone 6 with 10.2.1, we've managed to verify our app's compatibility with the newer OS versions.
Anyways, in closing I just wanted to say a massive thank you for all the suggestions and ideas I got in the question comments (especially #Gandhi, sorry about the bounty story, I still feel like you deserve that just for being so helpful).
Despite the fact that my particular issue was not something that could be resolved here on SO, I have still learned a great deal during this process and I am so very grateful.
Even the answer is already posted by the Questioner himself, I m still posting mine for the benefit of others.
When a build deploys fine on one device running on iOS 8 and not on the one running on iOS 9, it could either be problem with iOS version due to the security changes or it could be the device compatibility problem.
In such case, the quick way to narrow down the problem is to test the build on other device with the same version (iOS 9). But unfortunately in #Zalithka's case he dint had device to test. But if someone encounters such problem, try out in different devices to narrow down the problem quickly and nail it.

iOS Device Test Mode and old iOS development

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.

Using iOS Simulator to emulate iPad 1

One of my customers is experiencing terrible slow downs only on the iPad 1 device. Is there any way of getting the iOS Simulator to emulate the performance/hardware of the original iPad?
I would rather not have to go out and buy an iPad one as iOS 6 won't support it this autumn.
The app runs fine on the iPad 2 and 3. I have tested using the allocations and activity instruments.
Any ideas? Thanks again. The OS is 5.1.1 and the App was compiled with XCode 4.4.1.
As far as I know, the simulator is what it says, a simulator, and as such will run as fast as it can on whichever computer you're using. You'll probably need to put delaying code into your run loops to simulate the slowness of the iPad 1, but maybe your client needs to be aware that the iPad 1 is much slower than the newer models - there are certainly some (particularly graphic intensive) operations which will struggle - you may find you need to adapt the user experience according the the device being used (Apple don't encourage this - they prefer you to check the iOS version - but there are several questions on SO which could help you here).

Resources