After Evolve there were a number of new exciting enhancements all around. First of all this is currently only in the Alpha channel version 4.2. I also want to mention this is just from myself exploring the new options, some of this functionality may be new but from a slightly older version and I haven’t actually used every one of these features yet.
Remote iOS USB
Announced at Evolve but as I later found out, not actually implemented yet, still waiting for this release but the functionality for us Visual Studio developers is awesome. Have a Mac Agent that builds the code then pushes it out to your iOS device, attached to your Windows PC. Its a fantastic solution for people like me where the Mac isn’t actually physically next to me. Though I did get some extra exercise.
Remote Windows Simulator
Another part that annoyed me as a Visual Studio developer is when I wanted to build in the simulator I needed to Team Viewer or Remote into the Mac to see what was happening. The application is still running on the Mac but at least its displayed locally to me now.
To enable it go to Tools > Options > Xamarin and tick the Remote Simulator to Windows.
I would show you a picture of the Simulator but I can’t get it to load. It just builds and then says Launching Application and nothing further happens. Its still in alpha so I will wait and see what the beta holds.
By default and in the past Xamarin has used the Mono TLS provider by default. In a continuing move I am seeing is bypassing Mono’s sometimes slow or outdated methods and going native when possible. In a new option you can now choose Apple TLS that supports v1.1 and v1.2 while they wait for Mono to catch up.
Currently the default is to use Mono’s default implementation of HttpClient which is quite slow and does have a few known issues. To speed up your iOS and Android applications you would normally use Paul Betts ModernHttpClient. It looks as though Xamarin has used this code and implemented it into the framework and you now have the ability to choose the default HttpClient implementation. I strongly recommend you change it to NSUrlSession, it is much faster and feature rich (if you end up getting dirty in lower level code).
This is a great feature for App developers. As any mobile developer knows, file size of that ipa causes many issues especially as we keep needing to support different architectures into the future. The biggest issue was when we needed to compile for ARMv7 and ARM64, almost doubling the file size. Bitcode allows you to compile to LLVM bitcode and submit that to the AppStore. Apple will then do optimizations as needed and compile for each architecture. Users who download your app will then only download the app that is compiled for their architecture, hence reducing the download time and storage requirements on the users phone.
Add Native Library
I am not sure if this is new new, or just new, but you can now add a native library direct from the project menu. Previously it required a few more steps as show in Linking Native Libraries.
That’s all the awesome new things I could find specific to iOS. Contact me if I missed anything new you think should be mentioned.