---
title: "setIncomingMessageHandler(_:)"
framework: xpc
role: symbol
role_heading: Instance Method
path: "xpc/xpcsession/setincomingmessagehandler(_:)-2ukdh"
---

# setIncomingMessageHandler(_:)

Sets a closure to receive incoming decodable messages for a session.

## Declaration

```swift
@preconcurrency func setIncomingMessageHandler<Message>(_ incomingMessageHandler: @escaping @Sendable (Message) -> (any Encodable)?) where Message : Decodable
```

## Parameters

- `incomingMessageHandler`: A closure that the session invokes when it receives messages. The closure has a parameter that contains the message from the client, and optionally returns an encodable reply message to returns to the client. If the closure returns doc://com.apple.documentation/documentation/ObjectiveC/nil-227m0, you can use doc://com.apple.xpc/documentation/XPC/XPCSession/send(message:) to reply asynchronously after the closure completes.

## Discussion

Discussion important: Only call this method on an inactive session.

## See Also

### Managing the life cycle

- [activate()](xpc/xpcsession/activate().md)
- [setIncomingMessageHandler(_:)](xpc/xpcsession/setincomingmessagehandler(_:)-5lu26.md)
- [setIncomingMessageHandler(_:)](xpc/xpcsession/setincomingmessagehandler(_:)-75ou9.md)
- [cancel(reason:)](xpc/xpcsession/cancel(reason:).md)
- [setCancellationHandler(_:)](xpc/xpcsession/setcancellationhandler(_:).md)
