# API diff: Microsoft.iOS.dll

## Microsoft.iOS.dll

<h4>Assembly Version Changed: 18.0.0.0 -> 18.2.0.0</h4>

### Namespace AVFoundation

#### Type Changed: AVFoundation.AVAudioSession

Added properties:

```csharp
public virtual bool IsEchoCancelledInputAvailable { get; }
public virtual bool IsEchoCancelledInputEnabled { get; }
public virtual bool IsMicrophoneInjectionAvailable { get; }
public static Foundation.NSString MicrophoneInjectionCapabilitiesChangeNotification { get; }
public virtual AVAudioSessionMicrophoneInjectionMode PreferredMicrophoneInjectionMode { get; }
public virtual bool PrefersEchoCancelledInput { get; }
```

Added methods:

```csharp
public virtual bool SetPreferredMicrophoneInjectionMode (AVAudioSessionMicrophoneInjectionMode inValue, out Foundation.NSError outError);
public virtual bool SetPrefersEchoCancelledInput (bool value, out Foundation.NSError error);
```

#### Type Changed: AVFoundation.AVAudioSession.Notifications

Added methods:

```csharp
public static Foundation.NSObject ObserveMicrophoneInjectionCapabilitiesChange (System.EventHandler<MicrophoneInjectionCapabilitiesChangeEventArgs> handler);
public static Foundation.NSObject ObserveMicrophoneInjectionCapabilitiesChange (Foundation.NSObject objectToObserve, System.EventHandler<MicrophoneInjectionCapabilitiesChangeEventArgs> handler);
```



#### New Type: AVFoundation.AVAudioApplication

```csharp
public class AVAudioApplication : Foundation.NSObject {
	// constructors
	protected AVAudioApplication (Foundation.NSObjectFlag t);
	protected AVAudioApplication (ObjCRuntime.NativeHandle handle);
	// properties
	public override ObjCRuntime.NativeHandle ClassHandle { get; }
	public virtual bool InputMuted { get; }
	public virtual AVAudioApplicationMicrophoneInjectionPermission MicrophoneInjectionPermission { get; }
	public virtual AVAudioApplicationRecordPermission RecordPermission { get; }
	public static AVAudioApplication SharedInstance { get; }
	// methods
	public static void RequestMicrophoneInjectionPermission (System.Action<AVAudioApplicationMicrophoneInjectionPermission> response);
	public static System.Threading.Tasks.Task<AVAudioApplicationMicrophoneInjectionPermission> RequestMicrophoneInjectionPermissionAsync ();
	public static void RequestRecordPermission (System.Action<bool> response);
	public static System.Threading.Tasks.Task<bool> RequestRecordPermissionAsync ();
	public virtual bool SetInputMuted (bool muted, out Foundation.NSError outError);
}
```

#### New Type: AVFoundation.AVAudioApplicationMicrophoneInjectionPermission

```csharp
[Serializable]
public enum AVAudioApplicationMicrophoneInjectionPermission {
	Denied = 1684369017,
	Granted = 1735552628,
	ServiceDisabled = 1936876659,
	Undetermined = 1970168948,
}
```

#### New Type: AVFoundation.AVAudioApplicationRecordPermission

```csharp
[Serializable]
public enum AVAudioApplicationRecordPermission {
	Denied = 1684369017,
	Granted = 1735552628,
	Undetermined = 1970168948,
}
```

#### New Type: AVFoundation.AVAudioSessionMicrophoneInjectionMode

```csharp
[Serializable]
public enum AVAudioSessionMicrophoneInjectionMode {
	None = 0,
	SpokenAudio = 1,
}
```

#### New Type: AVFoundation.AVCaptureReactionType

```csharp
[Serializable]
public enum AVCaptureReactionType {
	Balloons = 2,
	Confetti = 6,
	Fireworks = 4,
	Heart = 3,
	Lasers = 7,
	Rain = 5,
	ThumbsDown = 1,
	ThumbsUp = 0,
}
```

#### New Type: AVFoundation.AVCaptureReactionTypeExtensions

```csharp
public static class AVCaptureReactionTypeExtensions {
	// methods
	public static Foundation.NSString GetConstant (this AVCaptureReactionType self);
	public static AVCaptureReactionType GetValue (Foundation.NSString constant);
}
```

#### New Type: AVFoundation.MicrophoneInjectionCapabilitiesChangeEventArgs

```csharp
public class MicrophoneInjectionCapabilitiesChangeEventArgs : Foundation.NSNotificationEventArgs {
	// constructors
	public MicrophoneInjectionCapabilitiesChangeEventArgs (Foundation.NSNotification notification);
	// properties
	public bool IsAvailable { get; }
}
```


### Namespace AccessorySetupKit

#### Type Changed: AccessorySetupKit.ASDiscoveryDescriptor

Added property:

```csharp
public virtual Foundation.NSStringCompareOptions BluetoothNameSubstringCompareOptions { get; set; }
```



### Namespace AudioUnit

#### Type Changed: AudioUnit.AudioComponentStatus

Added value:

```csharp
InstanceTimedOut = -66754,
```


#### Type Changed: AudioUnit.AudioUnitStatus

Added values:

```csharp
ComponentManagerNotSupported = -66740,
InvalidFilePath = -66742,
MissingKey = -66741,
MultipleVoiceProcessors = -66635,
RenderTimeout = -66745,
```



### Namespace CoreImage

#### New Type: CoreImage.CIDistanceGradientFromRedMask

```csharp
public class CIDistanceGradientFromRedMask : CoreImage.CIFilter, ICIFilterProtocol, ObjCRuntime.INativeObject, System.IDisposable {
	// constructors
	public CIDistanceGradientFromRedMask ();
	public CIDistanceGradientFromRedMask (Foundation.NSCoder coder);
	protected CIDistanceGradientFromRedMask (Foundation.NSObjectFlag t);
	protected CIDistanceGradientFromRedMask (ObjCRuntime.NativeHandle handle);
	// properties
	public CIImage InputImage { get; set; }
	public int MaximumDistance { get; set; }
	public virtual CIImage OutputImage { get; }
}
```


### Namespace CoreLocation

#### Type Changed: CoreLocation.CLLocation

Obsoleted properties:

```diff
 [Obsolete ("Use 'AccuracyBestForNavigation' instead.")]
 public static double AccurracyBestForNavigation { get; }
```

Added property:

```csharp
public static double AccuracyBestForNavigation { get; }
```



### Namespace HealthKit

#### Type Changed: HealthKit.HKAudiogramSample

Added method:

```csharp
public static HKAudiogramSample GetAudiogramSample (HKAudiogramSensitivityPoint[] sensitivityPoints, Foundation.NSDate startDate, Foundation.NSDate endDate, HKDevice device, Foundation.NSDictionary<Foundation.NSString,Foundation.NSObject> metadata);
```


#### Type Changed: HealthKit.HKAudiogramSensitivityPoint

Added property:

```csharp
public virtual HKAudiogramSensitivityTest[] Tests { get; }
```

Added method:

```csharp
public static HKAudiogramSensitivityPoint GetSensitivityPoint (HKQuantity frequency, HKAudiogramSensitivityTest[] tests, out Foundation.NSError error);
```


#### Type Changed: HealthKit.HKMetadata

Added property:

```csharp
public string AppleFitnessPlusCatalogIdentifier { get; set; }
```


#### Type Changed: HealthKit.HKMetadataKey

Added property:

```csharp
public static Foundation.NSString AppleFitnessPlusCatalogIdentifier { get; }
```


#### New Type: HealthKit.HKAudiogramConductionType

```csharp
[Serializable]
public enum HKAudiogramConductionType {
	Air = 0,
}
```

#### New Type: HealthKit.HKAudiogramSensitivityPointClampingRange

```csharp
public class HKAudiogramSensitivityPointClampingRange : Foundation.NSObject, Foundation.INSCoding, Foundation.INSCopying, Foundation.INSSecureCoding, ObjCRuntime.INativeObject, System.IDisposable {
	// constructors
	public HKAudiogramSensitivityPointClampingRange (Foundation.NSCoder coder);
	protected HKAudiogramSensitivityPointClampingRange (Foundation.NSObjectFlag t);
	protected HKAudiogramSensitivityPointClampingRange (ObjCRuntime.NativeHandle handle);
	// properties
	public override ObjCRuntime.NativeHandle ClassHandle { get; }
	public virtual HKQuantity LowerBound { get; }
	public virtual HKQuantity UpperBound { get; }
	// methods
	public virtual Foundation.NSObject Copy (Foundation.NSZone zone);
	public static HKAudiogramSensitivityPointClampingRange Create (double? lowerBound, double? upperBound, out Foundation.NSError error);
	public virtual void EncodeTo (Foundation.NSCoder encoder);
}
```

#### New Type: HealthKit.HKAudiogramSensitivityTest

```csharp
public class HKAudiogramSensitivityTest : Foundation.NSObject, Foundation.INSCoding, Foundation.INSCopying, Foundation.INSSecureCoding, ObjCRuntime.INativeObject, System.IDisposable {
	// constructors
	public HKAudiogramSensitivityTest (Foundation.NSCoder coder);
	protected HKAudiogramSensitivityTest (Foundation.NSObjectFlag t);
	protected HKAudiogramSensitivityTest (ObjCRuntime.NativeHandle handle);
	public HKAudiogramSensitivityTest (HKQuantity sensitivity, HKAudiogramConductionType type, bool masked, HKAudiogramSensitivityTestSide side, HKAudiogramSensitivityPointClampingRange clampingRange, out Foundation.NSError error);
	// properties
	public virtual HKAudiogramSensitivityPointClampingRange ClampingRange { get; }
	public override ObjCRuntime.NativeHandle ClassHandle { get; }
	public virtual bool Masked { get; }
	public virtual HKQuantity Sensitivity { get; }
	public virtual HKAudiogramSensitivityTestSide Side { get; }
	public virtual HKAudiogramConductionType Type { get; }
	// methods
	public virtual Foundation.NSObject Copy (Foundation.NSZone zone);
	public virtual void EncodeTo (Foundation.NSCoder encoder);
}
```

#### New Type: HealthKit.HKAudiogramSensitivityTestSide

```csharp
[Serializable]
public enum HKAudiogramSensitivityTestSide {
	Left = 0,
	Right = 1,
}
```


### Namespace NetworkExtension

#### Type Changed: NetworkExtension.NEProviderStopReason

Added value:

```csharp
InternalError = 17,
```



### Namespace ObjCRuntime

#### Type Changed: ObjCRuntime.Constants

Modified fields:

```diff
-public const string SdkVersion = "18.0";
+public const string SdkVersion = "18.2";
-public const string Version = "17.99.0";
+public const string Version = "18.2.9028";
```



### Namespace PassKit

#### Type Changed: PassKit.PKPayLaterView

Added methods:

```csharp
public static void ValidateAmount (Foundation.NSDecimalNumber amount, string currencyCode, PKPayLaterViewValidateAmountCallback callback);
public static void ValidateAmount (System.Decimal amount, string currencyCode, PKPayLaterViewValidateAmountCallback callback);
```


#### New Type: PassKit.PKPayLaterViewValidateAmountCallback

```csharp
public sealed delegate PKPayLaterViewValidateAmountCallback : System.MulticastDelegate {
	// constructors
	public PKPayLaterViewValidateAmountCallback (object object, IntPtr method);
	// methods
	public virtual System.IAsyncResult BeginInvoke (bool eligible, System.AsyncCallback callback, object object);
	public virtual void EndInvoke (System.IAsyncResult result);
	public virtual void Invoke (bool eligible);
}
```


### Namespace PencilKit

#### Type Changed: PencilKit.IPKCanvasViewDelegate

Added method:

```csharp
public virtual void DidRefineStrokes (PKCanvasView canvasView, PKStroke[] strokes, PKStroke[] newStrokes);
```


#### Type Changed: PencilKit.PKCanvasViewDelegate

Added method:

```csharp
public virtual void DidRefineStrokes (PKCanvasView canvasView, PKStroke[] strokes, PKStroke[] newStrokes);
```


#### Type Changed: PencilKit.PKCanvasViewDelegate_Extensions

Added method:

```csharp
public static void DidRefineStrokes (this IPKCanvasViewDelegate This, PKCanvasView canvasView, PKStroke[] strokes, PKStroke[] newStrokes);
```



### Namespace StoreKit

#### New Type: StoreKit.AppStore

```csharp
public static class AppStore {
	// methods
	public static void RequestReview (UIKit.UIWindowScene in);
}
```


### Namespace UIKit

#### Type Changed: UIKit.UIMenuIdentifier

Added value:

```csharp
Open = 48,
```


#### Type Changed: UIKit.UIPressType

Added values:

```csharp
TVRemoteFourColors = 33,
TVRemoteOneTwoThree = 32,
```


#### Type Changed: UIKit.UITraitCollection

Obsoleted methods:

```diff
 [Obsolete ("Use the overload that takes a 'UITraitMutations' parameter instead.")]
 public virtual UITraitCollection GetTraitCollectionByModifyingTraits (System.Func<IUIMutableTraits> mutations);
 [Obsolete ("Use the overload that takes a 'UITraitMutations' parameter instead.")]
 public static UITraitCollection GetTraitCollectionWithTraits (System.Func<IUIMutableTraits> mutations);
```

Added methods:

```csharp
public virtual UITraitCollection GetTraitCollectionByModifyingTraits (UITraitMutations mutations);
public static UITraitCollection GetTraitCollectionWithTraits (UITraitMutations mutations);
```


#### New Type: UIKit.NSObject_UIAccessibilityTextOperations

```csharp
public static class NSObject_UIAccessibilityTextOperations {
	// methods
	public static IUITextInput GetAccessibilityTextInputResponder (this Foundation.NSObject This);
	public static UITextInputReturnHandler GetAccessibilityTextInputResponderHandler (this Foundation.NSObject This);
	public static void SetAccessibilityTextInputResponder (this Foundation.NSObject This, IUITextInput textInput);
	public static void SetAccessibilityTextInputResponderHandler (this Foundation.NSObject This, UITextInputReturnHandler handler);
}
```

#### New Type: UIKit.UITextInputReturnHandler

```csharp
public sealed delegate UITextInputReturnHandler : System.MulticastDelegate {
	// constructors
	public UITextInputReturnHandler (object object, IntPtr method);
	// methods
	public virtual System.IAsyncResult BeginInvoke (System.AsyncCallback callback, object object);
	public virtual IUITextInput EndInvoke (System.IAsyncResult result);
	public virtual IUITextInput Invoke ();
}
```

#### New Type: UIKit.UITraitMutations

```csharp
public sealed delegate UITraitMutations : System.MulticastDelegate {
	// constructors
	public UITraitMutations (object object, IntPtr method);
	// methods
	public virtual System.IAsyncResult BeginInvoke (IUIMutableTraits mutableTraits, System.AsyncCallback callback, object object);
	public virtual void EndInvoke (System.IAsyncResult result);
	public virtual void Invoke (IUIMutableTraits mutableTraits);
}
```


### Namespace Vision

#### Type Changed: Vision.VNCircle

Added constructor:

```csharp
public VNCircle (VNPoint center, double radiusOrDiameter, VNCircleInitializationOption option);
```


#### Type Changed: Vision.VNUtils

Added property:

```csharp
public static double VisionVersionNumber { get; }
```


#### Type Changed: Vision.VNVector

Added constructor:

```csharp
public VNVector (System.ValueTuple<System.Double,System.Double> polarCoordinates);
```


#### New Type: Vision.VNCircleInitializationOption

```csharp
[Serializable]
public enum VNCircleInitializationOption {
	Diameter = 1,
	Radius = 0,
}
```


### New Namespace ObjCBindings

#### New Type: ObjCBindings.BindingTypeAttribute

```csharp
public class BindingTypeAttribute : System.Attribute {
	// constructors
	public BindingTypeAttribute ();
	// properties
	public string Name { get; set; }
}
```

#### New Type: ObjCBindings.EnumValue

```csharp
[Serializable]
[Flags]
public enum EnumValue {
	None = 0,
}
```

#### New Type: ObjCBindings.Field

```csharp
[Serializable]
[Flags]
public enum Field {
	None = 0,
}
```

#### New Type: ObjCBindings.FieldAttribute`1

```csharp
public class FieldAttribute`1 : System.Attribute {
	// constructors
	public FieldAttribute`1 (string symbolName);
	public FieldAttribute`1 (string symbolName, string libraryName);
	public FieldAttribute`1 (string symbolName, T flags);
	public FieldAttribute`1 (string symbolName, string libraryName, T flags);
	// properties
	public T Flags { get; set; }
	public string LibraryName { get; set; }
	public string SymbolName { get; set; }
}
```