Introduction to macOS Sierra
Let us know how you feel about this
last updated: 2016-09
This article introduces all of the new and modified APIs and features available in macOS Sierra for Xamarin.Mac developers.
WARNING! Xamarin.Mac Preview introduces preview supports for macOS Sierra. The latest version of Xcode 8 and a Xamarin install from the Alpha update channel is required to test these new features.
This document will cover the following topics in detail:
- Introducing macOS Sierra
- Xamarin.Mac Preview
- Installing macOS Sierra Support
- Reporting Bugs
- What's New in macOS Sierra
- Apple File System provides a modern file system for iOS, macOS, tvOS and watchOS.
- Apple Pay Enhancements in macOS Sierra allow users to make secure payments from websites.
- Building Modern macOS Apps covers several tips, features and techniques a developer can use to build a modern macOS app in Xamarin.Mac.
- CloudKit Data Sharing allows users to easily share records from within their private databases.
- Safari App Extensions Support allows the app to extend the behavior of Safari with being tightly integrated with macOS.
- Security and Privacy Enhancements have been made in macOS Sierra that improve the security of the code and ensure user privacy.
- Smart Card Driver Extension Support allows the app to access content from certain types of smart cards.
- Unified Logging provides a single, unified messaging API across all levels of the system.
- Wide Color extends the support for extended-range pixel formats and wide-gamut color spaces throughout the system.
- Additional Framework Changes have been made throughout macOS Sierra.
- Deprecated APIs in macOS Sierra.
Introducing macOS Sierra
With the new macOS Sierra, the developer can take advantage of new APIs that allow the end user to interact with their apps and websites in previously unavailable ways. For example, Apple now allows websites to give customers the option of paying securely via Apple Pay and enhancements to the Metal framework boost an app's graphics and computing potential.
For more information on macOS Sierra, please see Apple's macOS + Apps documentation.
If you would like to get a head start on developing apps for the new macOS Sierra platform using Xamarin, you can install an early preview build of Xamarin.Mac.
NOTE: Again, this preview allows you to test the features and abilities of the macOS Sierra platform. Given that this is a preview, some features may not be fully supported and apps developed against the preview may need to be modified when new previews or official macOS Sierra support is released.
Installing macOS Sierra Support
macOS Sierra support has now been added to the Xamarin releases on the Alpha and Beta channels. To install support, please do the following:
- Install the Latest Xcode – You'll need to Download the latest version of Xcode and install it to work with macOS Sierra support in Xamarin.
- Run Xcode First – You'll need to run the fresh install Xcode once, before updating and running Xamarin Studio, as it installs some tools that Xamarin requires the first time it is run.
- Switch to Alpha Channel - In Xamarin Studio, select Xamarin Studio menu > Check for Updates.... At the top of the dialog box, switch to the Alpha updated channels. Click the Switch button and start the download process:
- Install Alpha Support - Allow any updates to download, then click the Restart and Install Updates button to install them:
- Point to the Xcode 8.x SDK – Run Xamarin Studio, open the Preferences... menu item and navigate to SDK Locations > Apple. Under the Apple SDK section, click the Browse button and find the location of your Xcode 8.x install. Click the OK button to save your changes.
You are now ready to experiment with Xamarin's preview release of macOS Sierra support.
These previews allow developers to test the new features and platforms recently announced by Apple and for Xamarin to gather feedback and bug reports. Please report any bugs you find to Bugzilla. Your help is very appreciated!
What's New in macOS Sierra
Apple has added several new APIs and services in macOS Sierra along with many enhancements to existing features, including:
Apple File System
With macOS Sierra, Apple has released the new Apple File System as a modern file system for iOS, macOS, tvOS and watchOS. The Apple File System was optimized for Flash and SSD storage and provides the following features: strong encryption, copy-on-write metadata, space sharing, cloning for files and directories, snapshots, fast directory sizing and atomic safe-save primitives.
For more information, please see Apple's Apple File System Guide.
Apple Pay Enhancements
Apple has made several enhancements to Apple Pay in macOS Sierra that allow the user to make secure payments from websites.
With macOS Sierra, several new APIs have been added that work with macOS Sierra, iOS and watchOS to support dynamic payment networks and a new sandbox test environment.
For more information, please see Apple's ApplePay JS Framework reference.
Building Modern macOS Apps
Modern macOS apps such as Apple's Safari web browser, Pages word processor and Numbers spread sheet use many new technologies to present a unified, context sensitive User Interface that does away with traditional UI elements such as floating panels and multiple open windows.
Our Building Modern macOS Apps guide covers several tips, features and techniques a developer can use to build a modern macOS app in Xamarin.Mac.
CloudKit Data Sharing
The CloudKit framework has been expanded in macOS Sierra to allow user to quickly and easily share records or record sets from their private iCloud databases.
CloudKit provides a complete UI for sending and accepting shared record invitations and the user has complete read/write control over the people that have access to the records.
Safari App Extensions Support
Safari App Extensions allow the app to extend the behavior of the Safari web browser while being tightly integrated with macOS Sierra. Since macOS Safari App Extensions work similar to iOS Safari App Extensions, they are easy to port from one system to another.
For more information, please see Apple's Safari App Extension Programming Guide.
Security and Privacy Enhancements
Apple has made several enhancements to both security and privacy in macOS Sierra that will help the app improve the security of the app and ensure the end user's privacy including the following:
- The new
NSAllowsArbitraryLoadsInWebContentkey can be add to the app's
Info.plistfile and will allow web pages to load correctly while Apple Transport Security (ATS) protection is still enabled for the rest of the app.
- The Common Data Security Architecture (CDSA) API has been deprecated and should be replaced with the SecKey API to generate asymmetric keys.
- For all SSL/TLS connections, the RC4 symmetric cipher is now disabled by default. Additionally, the Secure Transport API no longer supports SSLv3 and it is recommended that the app stop using SHA-1 and 3DES cryptography as soon as possible.
- Because the new Clipboard in iOS 10 and macOS Sierra allows the user to copy and paste between devices, the API has been expanded to allow a clipboard to be limited to a specific device and be timestamped to be cleared automatically at a given point. Additionally, named pasteboards are no longer persisted and should be replaced with the shared pasteboard containers.
- If the app accesses protected data (such as the user's Calendar), it must declare that intent with the correct purpose string value key in its
NSCalendarUsageDescriptionin the case of the Calendar).
- Developer Signed apps that are not delivered via the Mac App Store can now take advantage of CloudKit, iCloud Keychain, iCloud Drive, remote push notifications, MapKit and VPN entitlements.
- macOS Sierra no longer supports delivering external code or data along with the code-signer app in its zip archive or unsigned disk image as the runtime path is not known before runtime.
Additionally, apps running on macOS Sierra (or later) must statically declare their intent to access specific features or user information by entering one or more Privacy Specific Keys in their
Info.plist files that explain to the user why the app wishes to gain access.
Since macOS Sierra shares these changes with iOS 10, please see our iOS 10 Security and Privacy Enhancements guide for more information.
Smart Card Driver Extension Support
With macOS Sierra, the app can create
NSExtension based smart card drivers that allows read-only access to the content from certain types of smart cards. This information is then presented inside the system keychain (replacing the deprecated Common Data Security Architecture method).
for more information, Pleas see Apple's CryptoTokenKit Framework Reference.
Unified Logging provides the app with a single API for efficient messaging across all levels of the system. With Unified Logging the app has fine-grained control over multiple levels of logging that include privacy controls and activity tracking for easier debugging.
Logging provides automatic message correlation when activity tracking and logging are used together.
macOS Sierra includes a new Console App (in Applications/Utilities) that is able to display log data from multiple sources including connected devices. It also supports tokenized and saved searches and displays connections between related messages across multiple processes.
Additionally, log messages can be viewed and maintained using command line tools.
For more information, please see Apple's Logging Reference.
macOS Sierra extends the support for extended-range pixel formats and wide-gamut color spaces throughout the system including frameworks such as Core Graphics, Core Image, Metal and AVFoundation. Support for devices with wide color displays is further eased by providing this behavior throughout the entire graphics stack.
AppKit has been modified to work in the new extended sRGB colorspace, making it easier to mix colors in wide color gamuts without significant performance loss.
Apple offers the following best practices when working with wide colors:
NSColornow uses the sRGB color space and will no longer clamp values to the
1.0range. If the app relies on the previous clamp behavior, it will need to be modified for macOS Sierra.
- When using a low-level API such as Core Graphics or Metal to provide image processing, the app should use an extended range color space and pixel format that supports 16-bit floating point values. Where necessary, the app will have to manually clamp color component values.
- Core Graphics, Core Image and Metal Performance Shaders all provide new methods for converting between the two color spaces.
To find out more, please see our Introduction to Wide Color guide.
Additional Framework Changes
In addition to the major framework changes and additions listed above, Apple has made many additional minor framework changes in macOS Sierra.
To find out more, please see our Additional Framework Changes guide.
The following APIs have been deprecated in macOS Sierra:
- The HFS Standard File System is no longer supported.
See Apple's OS X v10.12 API Diffs documentation for a complete list of deprecations and changes.