Xamarin.iOS app - slower on iOS10 than iOS9 - ios

Our app has some performance issues. One particular area is the opening of a UITabBarController.
I have tested the app with Debug and Ad-Hoc builds built with VS 2015. I am using
Xamarin 4.5
Xamarin.iOS 10.10.0
I am testing on real devices
iPhone 6 iOS 10.1.1
iPhone 6 iOS 9.2
Pad Air 2 iOS 9.3.1
iPhone 5 iOS 10
I am seeing consistent and significant performance gains from the iOS 9 devices.
With the Ad-Hoc build, opening of the view, with a large dataset, takes just under 6 seconds (5.8). Opening the same View with the same data and same build takes just over 1 second on the iOS9 devices.
Can anyone suggest why iOS9 would be performing so much better?
We do not have anything that runs on iOS 10 only. The closest we have to that are calls like this:
if (UIDevice.CurrentDevice.CheckSystemVersion(9, 0))
However that check would return true for 9 and 10.

Related

What devices currently support Apple ARKit while its in preview mode?

I'm trying to play around with Apple's new ARKit and have downloaded their sample ARKitExample project into Xcode 9 (beta).
Since ARKit doesn't work in the Apple simulator, I'm trying to archive, export and install this ARKitExample app onto my iPhone 7+ so I can actually take ARKit for a test spin as an actual user.
However from that example project's own README:
"ARKit and this sample app require iOS 11 and a device with an A9 (or later) processor. (ARKit is not available in iOS Simulator.)"
Looking at the specs for iPhone 7+, it looks like I cannot upgrade my phone to iOS 11, which makes me think that I cannot deploy and run this ARKitExample app on my phone.
However I see lots of confusing articles about which devices currently support ARKit, like this one, which seems to indicate that my phone does support it.
So I ask: do I need to figure out how to upgrade my iPhone 7+ to iOS11, or will everything work fine as-is, or do I need to find some other device that does run iOS 11? If that last scenario is the case: what devices currently run iOS 11?! I don't think it's even been released yet as it still stands in preview mode...
List of iPhone and iPad Compatible with ARKit in iOS 11:
iPhone SE
iPhone 6s
iPhone 6s Plus
iPhone 7
iPhone 7 Plus
iPad Pro (All three variants and models)
New 9.7-inch iPad (2017)

How to skip the support for iPad , iPad 2, and iPad 3 when submitting iOS games and apps to Apple App store?

I am developing and testing my iOS game on my REAL device that is the iPad 4 (fourth generation), and it works well on the REAL iPad 4. However, I have not tested the game on the REAL older iPads such as iPad 1 and iPad 2 or even iPod. So, I would like to have 3 questions that are related to one another as follow:
(1) Xcode Simulator ?
The real iPad 1 only has 256 Mb of RAM, and the real iPad 2 only has 512 Mb of RAM. In addition, the processors of these 2 devices are certainly slower that those of the new iPads. (Unfortunately, I don't have the money to buy iPad 1 and iPad 2 for testing.)
So, if I use the Xcode simulator to test my game on these 2 devices, will the simulator accurately set up the test conditions that truly reflect the limitations of the RAM, processor speed and hardware performance of these 2 devices ? Please show me how to do that if there is a way to do that ?
(Honestly, I think that the XCODE simulator is just that: it is a simulator and NOT an emulator. Therefore, I doubt that the XCODE simulator can accurately simulate the testing conditions on the real iPad 1 and iPad 2 devices, and hence, I am afraid that my test on XCODE simulators won't be accurate. For example, the simulator may show that the game works fine, but in reality, when users install that game on the real iPad 1 and 2, it may have some lagging issue with the animation to say the least...)
(2) Skipping the iPad 1, iPad 2, iPad3, and iPod ?
Is there a way for me to tell Apple that I only want to release my game to iPad 4 (fourth generation) and newer generations of iPad, and I don't want to release my game for the iPad 1 and iPad 2 ?
(3) Apple Regulation ?
Or does Apple enforce the rule that says that all iPad games must work for all generations of iPad (including iPad 1 and iPad 2) before developers can release the games for sale on the App store ?
There are no such rules. There are two things which decide what devices should be supported.
1) Deployment target
So if your deployment target (Oldest iOS version supported) is iOS8 or iOS9 it means you need to support iPad 2 but not iPad 1 as iPad 1 cant run on iOS 8 or 9. You can wait for Xcode 8 public version and you can set minimum iOS to iOS10 , that will eliminate iPad 2.
If you want to skip both iPad 1 and iPad2 I would not run on that.
2) Valid Architecture
You can only support 64 bit processor (arm64) in build settings that will discontinue app for those devices which are not running on 64 bit processor. By doing this your app will only run on devices with Apple A7 and more Processors (You can figure out the devices)
Based on these two settings you can decide which devices you should be supporting
You can make an app iPad only. That removes the iPod from the equation.
Apple doesn't let you arbitrarily block certain versions of a device, but You can restrict your app based on OS version. The iPad 1 is old and only works up to iOS 7, if memory serves. You are likely using APIs that won't run on the iPad 1 already.
There are certain hardware-based APIs that are only available on some devices, and if your app requires one of those then it will exclude some devices.
Older devices are both slower and have less RAM. You should really test on the lowest spec device you support. (The sim is no good for performance or low memory testing.) eBay is a good source of cheap older devices.
In the requirements you can state a specific version of iOS or higher. I don't know accurately which versions of iOS that iPad 2 can support up to (for sure that iPad 1 will support up to a lower version than that one supported by iPad 2). Stating this so you excluded iPad 1 and 2. Moreover, you can state that this app is for iPad only, so you also excluded iPod and iPhone as well.

Swift playground is not installed

Ok so I installed the apple IOS 10 beta 10.0 on my ipad (Forth-gen) just for swift playground. But its not appearing on the home screen and its not appearing when I search for it. (I have searched playgrounds and swift playgrounds)
Swift Playgrounds is loaded on any iPad that can run iOS 10 except for the 4th Generation iPad.
This is most likely due to the 4th generation iPad being the only 32-bit iPad that iOS 10 will support.

Xcode not showing iOS 6 UI

I have an application build on Xcode 4.6 and iOS 6.1, but now apple requirement of submitting app must be published using Xcode 5.0. I set the deployment target to 6.1 in Xcode 5 and publish the app to app store.
I have a plan to shift completely to ios7 later but when I run app from Xcode 5 I am getting old UI but if i am downloading from store I am getting the ios7 UI which is not optimised and all loping very bad.
How to fix this issue?
Some UI elements are iOS version depended (no matter on what Xcode version your app was compiled). If you are using iOS 7 (on the simulator or on a real device) your UIAlertView for example will have the new iOS 7 UI. (Blurred white with blue writing)
I'm guessing that your iPhone has iOS 7 on it while you are trying to run your app from Xcode on iOS 6 simulator.
On a device running iOS 7, all of the system UI—such as alerts and
notifications—uses the iOS 7 appearance, even if your app is currently
using an earlier appearance.
iOS 7 UI Transition Guide
If you want to keep the legacy UI and still use Xcode 5 you can read this great tutorial.
I'd still advise against this, staying behind will stack more and more problems that you'll need to solve eventually.

UIButton doesn't get iOS 6 styling in compatibility mode in iOS 7

I am working on an app that has not yet been redesigned for iOS 7. There are a few new features being added that I want to deliver in an app update, but I want the app to run in iOS 6 "compatibility mode" on iOS 7. I have set the Base SDK to iOS 6.1. When I build and run everything looks fine in the iOS 6 Simulator. However, in the iOS 7 Simulator, all elements look iOS 6-ish with the exception of the UIButtons which are all borderless.
Is this expected behavior, or am I doing something wrong?
I tested this using a simple app with one button and one switch.
iOS 6 Simulator:
iOS 7 Simulator:
Notice how the switch remains iOS 6-like in iOS 7 but the button does not.
From my experience you need to work and submit the app using xCode 4.6 if you want to retain the iOS 6 UI. Testing is a little tedious in iOS 7 but you can do it but installing the ad hoc app on your iOS 7 device.
Update
as #rmaddy mentions in the comments, you can build directly from Xcode 4.6 to iOS 7. Use your iOS 7 device with xCode 5 before doing so.

Resources