# NordicID.NurApi.iOS

> Generated: 2026-05-06 07:29 UTC  
> Package version: `5.0.2`

## Guide

## Overview

`NordicID.NurApi.iOS` is a support library that extends `NordicID.NurApi.Net`
with Bluetooth Low Energy (BLE) transport capabilities for iOS and Mac Catalyst.
It enables discovery and connection to Nordic ID RFID readers over BLE.

Install it from NuGet:

```
dotnet add package NordicID.NurApi.iOS
```

### Supported platforms

- iOS 17.0+ (.NET MAUI & Xamarin)
- Mac Catalyst 17.0+ (.NET MAUI)

### How it works

The library scans for Bluetooth peripherals advertising the Nordic UART Service
and produces connection URIs in the format
`ble://{deviceIdentifier}?name={deviceName}` for use with `NurApi.Connect(Uri)`.

Only the device identifier part is required for connecting — the `name` query
parameter is added by discovery for display purposes.

### Sample projects

- [`maui_nur_app_template`](https://github.com/NordicID/maui_nur_app_template) — .NET MAUI multiplatform sample (iOS + Android)
- [`rfiddemo_xamarin`](https://github.com/NordicID/rfiddemo_xamarin) — Xamarin RFID demo (iOS, Android, UWP)

### Prerequisites

- `NordicID.NurApi.Net` must be installed.
- The application must declare Bluetooth usage descriptions in `Info.plist`:

```xml
<key>NSBluetoothAlwaysUsageDescription</key>
<string>Our app needs Bluetooth access to connect to Bluetooth devices.</string>
<key>NSBluetoothPeripheralUsageDescription</key>
<string>The app uses Bluetooth to connect to RFID readers</string>
```

## Initialization and Usage

### Initialization

Initialize the iOS BLE transport once during application startup.

In **.NET MAUI**, call `Init()` with a platform check in `MauiProgram.cs`
(`CreateMauiApp`):

```csharp
#if __IOS__ || __MACCATALYST__
NurApiDotNet.iOS.Support.Init();
#endif
```

In **Xamarin**, call it in `AppDelegate.FinishedLaunching`:

```csharp
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
    global::Xamarin.Forms.Forms.Init();
    LoadApplication(new App());
    NurApiDotNet.iOS.Support.Init();
    return base.FinishedLaunching(app, options);
}
```

### Device Discovery

After initialization, use `NurDeviceDiscovery` to find BLE devices.

#### 1. Create a discovery callback

```csharp
var callback = new NurDeviceDiscoveryCallback((sender, args) =>
{
    Console.WriteLine($"Found device: {args.Uri}");
});
```

#### 2. Start discovery

```csharp
NurDeviceDiscovery.Start(callback);
```

To discover only BLE devices:

```csharp
NurDeviceDiscovery.Start(callback, new string[] { "ble" });
```

#### 3. Connect using the discovered URI

```csharp
var api = new NurApi();

var callback = new NurDeviceDiscoveryCallback((sender, args) =>
{
    api.Connect(args.Uri);
});

NurDeviceDiscovery.Start(callback);
```

### Monitoring connection status

```csharp
api.ConnectionStatusEvent += (sender, status) =>
{
    Console.WriteLine($"Connection status: {status}");
};
```
