移动开发工具Xamarin.iOS 更新至9.8
* *典型弃用:* * 随着Xamarin.iOS添加了新的平台,我们开始逐渐摒弃典型(monotouch.dll)的功能。在这个版本中non-NRC(new-ref-count)选项被移除。NRC一直支持所有统一的应用程序(即non-NRC从来不是一个选项)并且没有已知的问题。下一个版本会删除使用Boehm作为垃圾收集器的选项。这也是一个没有统一的应用程序可用的选择。经典支持的完全删除将定于明年秋季伴随着Xamarin.iOS 10.0的发布而执行。
需求:
- 最新的特性和API需求Xcode 7.2以及捆绑iOS 9.2 SDK
- Apple Xcode 7.2需要Mac运行OSX 10.10 (Yosemite)或者10.11 (El Capitan)
更新:
tvOS支持
最新的(第4)代AppleTV允许开发者创建并提交应用程序到苹果应用商店。
tvOS通常是iOS 9.x API的一个子集,框架/API不适用于AppleTV平台且弃用的API已被移除。这包括:
- Accounts.framework
- AddressBook.framework
- AddressBookUI.framework
- AssetsLibrary.framework
- Contacts.framework
- ContactsUI.framework
- CoreAudioKit.framework
- CoreMIDI.framework
- CoreMotion.framework
- CoreTelephony.framework
- EventKit.framework
- ExternalAccessory.framework
- HealthKit.framework
- HomeKit.framework
- LocalAuthentication.framework
- MapKit.framework
- MessageUI.framework
- MobileCoreServices.framework
- MultipeerConnectivity.framework
- NetworkExtension.framework
- NewsstandKit.framework
- Photos.framework
- PhotosUI.framework
- PushKit.framework
- QuickLook.framework
- ReplayKit.framework
- SafariServices.framework
- Social.framework
- VideoToolbox.framework
- WatchConnectivity.framework
- WatchKit.framework
- WebKit.framework
- iAd.framework
- 音频/视频输入/捕获API(例如AVFoundation.framework)
- 设备定向API(例如UIKit.framework)外加一些框架和类型
- TVServices.framework
- TVMLKit.framework
- GCMicroGamepad *类型
Xamarin.TVOS.dll
Xamarin.iOS 9.8支持最新的稳定的tvOS 9.1 SDK附带苹果的Xcode 7.2。
连同所需的API更改tvOS 几个[Obsolete] API被从新的组装中删除。
以下文档包含一个iOS和tvOS之间API的区别列表。
HttpClient改进
HttpClient类现在可以使用一个本地HTTP引擎,而不是使用Mono的HttpWebRequest。这部分涵盖了你需要注意的细节。
NSUrlSessionHandler
程序集可以引用缓存在LocalApplicationData文件夹中的外部资源而不是在项目结构中。以前,这种缓存只执行于Xamarin的程序集。而从Xamarin.Android 6.1开始,这种缓存将应用于所有程序集,以减少可能需要被下载的资源数量。
当你使用NSUrlSessionHandler时,HttpClient堆栈将使用iOS原生NSURLSession类来执行所有的HTTP操作,而不是使用.NET HttpWebRequest。这有几个好处,其中,安全连接快得多,因为他们使用加密堆栈的本地实现,并支持TLS 1.2是默认启用。开发人员需要知道通过使用这个新的堆栈,iOS 9执法安全服务器连接才会生效。
这是为明显(没有可用的源代码)变化和减少HTTP堆栈所需的代码数量而设计。这样一些非默认的特定于ModernHttpClient的选项不被提供。仍可以从您的应用程序使用ModernHttpClient,因为我们避免了潜在的名称/类型的冲突。
一个通过新NSUrlSessionHandler会删除所有System.Net.WebRequest和HttpClient的用法的应用程序可以减少约850KB (每个架构)的大小,并且受益于本地堆栈的性能提升。
选择默认处理程序
为了更容易地采用特定的处理程序在您的应用程序中通过所有HttpClient使用,Xamarin.iOS现在允许您来设置哪些处理程序应该使用HttpClient。以下选项可用:
- HttpClientHandler:这是完全托管的HttpClient处理程序,已经附带了先前的Xamarin.iOS。它是与MS .NET和Xamarin的老版本最兼容的 (特性)。然而它运行较慢(如加密)并且在最终的应用程序中需要更多的代码。为确保现有的应用程序的最大兼容性,这是默认的处理程序。
- CFNetworkHandler:这个处理程序使用原生API(CFNetwork framework)来实现更好的性能和更小的可执行文件。但是它需要iOS6(或更高版本),而且它不可用于watchOS。不是每个HttpClient特性/选项都可用。
- NSUrlSessionHandler:这个处理程序使用原生API(NSUrlSession) 来实现更好的性能和更小的可执行文件。但是它需要iOS7(或更高版本),并且不支持每个HttpClient功能/选项。
选择默认的HttpClient处理程序可以使用您的IDE (XS or VS)项目选项或通过提供mtouch与命令行参数--http-message-handler=HttpClientHandler,--http-message-handler=CFNetworkHandler或--http-message-handler=NSUrlSessionHandler二选一。
苹果TLS支持
您现在可以选择要使用哪个安全传输层协议(Transport Layer Security,TLS)提供者应用于您的iOS应用程序,例如支持为System.Net.WebRequest和其伙伴提供SSL / TLS支持的SslStream。
默认情况下,您的项目将继续使用支持TLS 1.0的托管的Mono TLS堆栈。这是已装了Xamarin.iOS早期版本的相同的堆栈。
但现在你也可以选择使用支持原生代码(更好的性能)并且支持最新的TLS 1.1和1.2标准的新的苹果TLS堆栈。
选择使用哪个TLS提供者可以使用您的IDE (XS or VS)项目选项或通过提供mtouch与命令行参数--tls-provider=legacy或--tls-provider=appletls二选一。
PS: 关于移动开发,这些产品你可以关注>>
关于Xamarin+Microsoft的最新资讯,请咨询在线客服>!
本站文章除注明转载外,均为本站原创或翻译