Xamarin.Mac - macOS Sierra Troubleshooting

This article provides several troubleshooting tips for working with macOS Sierra in Xamarin.Mac apps.

The following sections list some known issues that can occur when using macOS Sierra with Xamarin.Mac and the solution to those issues:

App Store

Known Issues:

  • When testing In-App Purchases in the sandbox environment, the authentication dialog may appear twice.
  • When testing In-App Purchases with hosted content in the sandbox environment, the password dialog will appear every time the app is brought to the foreground until the content download completes.

Apple Pay

If an incorrect expiration date or security code (CW) is entered when adding a new payment card to Apple Pay, the card provisioning process will be terminated.

Binary Compatibility

Known Issues:

  • Calling NSObject.ValueForKey will a null key will result in an exception.
  • Both NSURLSession and NSURLConnection no longer RC4 cipher suites during the TLS handshake for http:// URLs.
  • Apps can hang if they modify a superview's geometry in either the ViewWillLayoutSubviews or LayoutSubviews methods.
  • 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.

CFNetwork HTTP Protocol

The HTTPBodyStream property of the NSMutableURLRequest class must be set to an unopened stream since NSURLConnection and NSURLSession now strictly enforce this requirement.

CloudKit

Long running operations will return a "You don't have permission to save the file." error.

Core Image

The CIImageProcessor API now supports an arbitrary input image count. CIImageProcessor API that was included in macOS Sierra beta 1 will be removed.

Notifications

When working with Notification Content Extensions, View Controllers are not being correctly released and might result in a crash when Extension memory limits are reached.

NSUserActivity

After a Handoff operation, the UserInfo property of a NSUserActivity object might be empty. Explicitly call BecomeCurrent NSUserActivity object as a current workaround.

Safari

WebGeolocation requires a secure (https://) URL to work on both iOS 10 and macOS Sierra to prevent malicious use of location data.