# `Dala.Device.Ios`
[🔗](https://github.com/manhvu/dala/blob/main/lib/dala/device/ios.ex#L1)

iOS-specific device events. Subscribers receive events that either have no
Android counterpart (e.g. `:protected_data_did_become_available`) or carry
extra iOS fidelity beyond what `Dala.Device` exposes cross-platform.

Messages are tagged `:dala_device_ios`:

    {:dala_device_ios, event}
    {:dala_device_ios, event, payload}

## Subscribe

    Dala.Device.Ios.subscribe()

## Events

All cross-platform `Dala.Device` events are also re-emitted here under the
same atom (so users targeting iOS only can subscribe just to this module
and get the full event set). Plus iOS-only:

- `:protected_data_will_become_unavailable` — device about to lock; data
  protection class A files become unreadable shortly after.
- `:protected_data_did_become_available` — device unlocked.
- `:audio_route_changed` — output route changed (headphones plugged in,
  Bluetooth connected, etc.).

## Raw queries

When `Dala.Device` normalizes values (e.g. thermal `:nominal/:fair/...`),
this module exposes the raw native values for diagnostics.

    Dala.Device.Ios.raw_thermal_state()  # 0..3 (NSProcessInfoThermalState)

# `child_spec`

Returns a specification to start this module under a supervisor.

See `Supervisor`.

# `raw_thermal_state`

```elixir
@spec raw_thermal_state() :: 0 | 1 | 2 | 3
```

Raw `NSProcessInfoThermalState` value (0=nominal, 1=fair, 2=serious, 3=critical).

Provided for diagnostics. Most code should use `Dala.Device.thermal_state/0`
which returns a normalized atom shared with Android.

# `start_link`

```elixir
@spec start_link(keyword()) :: GenServer.on_start()
```

# `subscribe`

```elixir
@spec subscribe() :: :ok
```

Subscribe the calling process to iOS-specific device events.

# `unsubscribe`

```elixir
@spec unsubscribe() :: :ok
```

Unsubscribe the calling process.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
