<!--
{
  "availability" : [
    "visionOS: 27.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "FoveatedStreaming",
  "identifier" : "/documentation/FoveatedStreaming/FoveatedStreamingProviderMessageChannel",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "Foveated Streaming"
    ],
    "preciseIdentifier" : "s:17FoveatedStreaming0aB22ProviderMessageChannelC"
  },
  "title" : "FoveatedStreamingProviderMessageChannel"
}
-->

# FoveatedStreamingProviderMessageChannel

A message channel between the host app and a streaming provider extension.

```
@MainActor final class FoveatedStreamingProviderMessageChannel
```

## Overview

Message channels are created by the framework when the host app opens a channel and
delivered to the extension via [`openMessageChannel(_:)`](/documentation/FoveatedStreaming/FoveatedStreamingExtension/openMessageChannel(_:)).
Provider extensions do not construct values of this type directly.

A channel unifies both directions of message flow:

- Messages the host app sends to the extension arrive on [`receivedMessages`](/documentation/FoveatedStreaming/FoveatedStreamingProviderMessageChannel/receivedMessages).
- Data the extension receives from the streaming endpoint is delivered to the host app
  via [`send(_:)`](/documentation/FoveatedStreaming/FoveatedStreamingProviderMessageChannel/send(_:)).

## Topics

### Instance Properties

[`var channelStatus: FoveatedStreamingSession.MessageChannel.ChannelStatus`](/documentation/FoveatedStreaming/FoveatedStreamingProviderMessageChannel/channelStatus)

The current status of this channel.

[`let id: FoveatedStreamingSession.MessageChannel.ID`](/documentation/FoveatedStreaming/FoveatedStreamingProviderMessageChannel/id)

The identifier of this channel.

[`var receivedMessages: some AsyncSequence<Data, Never>`](/documentation/FoveatedStreaming/FoveatedStreamingProviderMessageChannel/receivedMessages)

The messages the host app has sent to the extension.

### Instance Methods

[`func close()`](/documentation/FoveatedStreaming/FoveatedStreamingProviderMessageChannel/close())

Closes the channel and finishes [`receivedMessages`](/documentation/FoveatedStreaming/FoveatedStreamingProviderMessageChannel/receivedMessages).

[`func send(Data)`](/documentation/FoveatedStreaming/FoveatedStreamingProviderMessageChannel/send(_:))

Sends data received from the streaming endpoint to the host app.

## Relationships

### Conforms To

[`Copyable`](/documentation/Swift/Copyable)

[`SendableMetatype`](/documentation/Swift/SendableMetatype)

[`Sendable`](/documentation/Swift/Sendable)

[`Observable`](/documentation/Observation/Observable)

[`Escapable`](/documentation/Swift/Escapable)

---

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)