<!--
{
  "availability" : [
    "macOS: 10.7.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "IOBluetooth",
  "identifier" : "/documentation/IOBluetooth/IOBluetoothHandsFreeDevice",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "IOBluetooth"
    ],
    "preciseIdentifier" : "c:objc(cs)IOBluetoothHandsFreeDevice"
  },
  "title" : "IOBluetoothHandsFreeDevice"
}
-->

# IOBluetoothHandsFreeDevice

An object you use to manage phone calls on a connected Bluetooth hands-free phone or headset.

```
class IOBluetoothHandsFreeDevice
```

## Topics

### Creating a Hands-Free Device Manager

[`init(device:delegate:)`](/documentation/IOBluetooth/IOBluetoothHandsFreeDevice/init(device:delegate:))

Creates an object to manage phone calls on a hands-free Bluetooth device.

### Accepting Calls

[`acceptCall()`](/documentation/IOBluetooth/IOBluetoothHandsFreeDevice/acceptCall())

Accepts an incoming call.

[`acceptCallOnPhone()`](/documentation/IOBluetooth/IOBluetoothHandsFreeDevice/acceptCallOnPhone())

Accepts an incoming call and transfers the audio to the managed hands-free phone or headset.

[`callTransfer()`](/documentation/IOBluetooth/IOBluetoothHandsFreeDevice/callTransfer())

Ends all calls that are active or on hold, and accepts any waiting calls.

### Dialing Calls

[`dialNumber(_:)`](/documentation/IOBluetooth/IOBluetoothHandsFreeDevice/dialNumber(_:))

Calls the phone number on a hands-free phone or headset.

[`memoryDial(_:)`](/documentation/IOBluetooth/IOBluetoothHandsFreeDevice/memoryDial(_:))

Calls the phone number stored in a speed dial or memory slot of the hands-free phone or headset.

[`redial()`](/documentation/IOBluetooth/IOBluetoothHandsFreeDevice/redial())

Calls the number stored on the hands-free phone or headset again.

### Holding Calls

[`holdCall()`](/documentation/IOBluetooth/IOBluetoothHandsFreeDevice/holdCall())

Places all active calls on hold and accepts a held or waiting call.

[`addHeldCall()`](/documentation/IOBluetooth/IOBluetoothHandsFreeDevice/addHeldCall())

Adds held calls to the current conversation.

[`placeAllOthers(onHold:)`](/documentation/IOBluetooth/IOBluetoothHandsFreeDevice/placeAllOthers(onHold:))

Places all calls except the call with the specified index on hold.

### Ending Calls

[`endCall()`](/documentation/IOBluetooth/IOBluetoothHandsFreeDevice/endCall())

Ends the current call or refuses an incoming call.

[`releaseCall(_:)`](/documentation/IOBluetooth/IOBluetoothHandsFreeDevice/releaseCall(_:))

Ends the call with the specified index.

[`releaseActiveCalls()`](/documentation/IOBluetooth/IOBluetoothHandsFreeDevice/releaseActiveCalls())

Ends all active calls and accepts a held or waiting call.

[`releaseHeldCalls()`](/documentation/IOBluetooth/IOBluetoothHandsFreeDevice/releaseHeldCalls())

Ends all calls that are on hold or returns a busy signal for a waiting call.

### Sending Messages and Commands

[`sendSMS(_:message:)`](/documentation/IOBluetooth/IOBluetoothHandsFreeDevice/sendSMS(_:message:))

Sends a text message to a phone number.

[`sendDTMF(_:)`](/documentation/IOBluetooth/IOBluetoothHandsFreeDevice/sendDTMF(_:))

Sends the tone associated with a phone key to the hands-free Bluetooth device.

[`send(atCommand:)`](/documentation/IOBluetooth/IOBluetoothHandsFreeDevice/send(atCommand:))

Sends an AT command to the Bluetooth audio gateway.

[`send(atCommand:timeout:selector:target:)`](/documentation/IOBluetooth/IOBluetoothHandsFreeDevice/send(atCommand:timeout:selector:target:))

Send an AT command to the Bluetooth audio gateway and performs a selector on completion or timeout.

### Requesting Status Information

[`subscriberNumber()`](/documentation/IOBluetooth/IOBluetoothHandsFreeDevice/subscriberNumber())

Requests that the Bluetooth audio gateway send the subscriber number to the delegate.

[`currentCallList()`](/documentation/IOBluetooth/IOBluetoothHandsFreeDevice/currentCallList())

Requests that the Bluetooth audio gateway send the delegate a list of calls that are active, on hold, or being set up.

### Transferring Audio

[`transferAudioToComputer()`](/documentation/IOBluetooth/IOBluetoothHandsFreeDevice/transferAudioToComputer())

Moves the audio for current and future calls to a Mac.

[`transferAudioToPhone()`](/documentation/IOBluetooth/IOBluetoothHandsFreeDevice/transferAudioToPhone())

Moves the audio for current or future calls to a phone.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)