---
title: RCSService
framework: TelephonyMessagingKit
role: symbol
role_heading: Class
platforms: [iOS 26.0+]
path: telephonymessagingkit/rcsservice
---

# RCSService

A class that provides an interface for performing RCS operations.

## Declaration

```swift
final class RCSService
```

## Mentioned in

Creating a carrier messaging app

## Overview

Overview Use the TelephonyMessagingSession property rcsService to get an instance of this class. An RCSService sends and receives different kinds of messages, distinguished by the content property of RCSMessage: Use the various overloads of sendMessage(_:to:using:messageID) to send messages of these types to recipients. The following example shows how to send a plain text message with sendMessage(_:to:using:messageID:): let service = TelephonyMessagingSession.shared.rcsService

let cellularServices = try TelephonyMessagingSession.shared.cellularServices let cellularServiceID = cellularServices[0].id

guard service.isViable(for: cellularServiceID) else { return }

let message = RCSMessage.Text("Hello there.") guard let handle = RCSHandle.phoneNumber(SAMPLE_PHONE_NUMBER) else { return } try await service.sendMessage(message,                    to: handle,                    using:cellularServiceID,                    messageID: RCSMessageID(rawValue: SAMPLE_RCS_MESSAGE_ID)) To receive messages, iterate over the incomingMessageNotifications asynchronous sequence with a for-await-in loop, then handle each notification based on its message content type, like this: let service = TelephonyMessagingSession.shared.rcsService

let incomingMessageNotifications = try service.incomingMessageNotifications Task {     for await notification in incomingMessageNotifications {         let receivedMessage = notification.message         switch receivedMessage.content {             case .text(let text): // ...             case .fileTransfer(let fileTransfer): // ...             case .geolocationPush(let geolocationPush): // ...             case .dispositionNotification(let dispositionNotification): // ...             case .composingIndicator(let composingIndicator): // ...         }     } }

## Topics

### Determining service viabililty

- [isViable(for:)](telephonymessagingkit/rcsservice/isviable(for:).md)
- [viabilityNotifications](telephonymessagingkit/rcsservice/viabilitynotifications.md)
- [RCSService.ViabilityNotification](telephonymessagingkit/rcsservice/viabilitynotification.md)

### Managing RCS configuration

- [configuration(for:)](telephonymessagingkit/rcsservice/configuration(for:).md)
- [RCSService.Configuration](telephonymessagingkit/rcsservice/configuration.md)

### Sending messages

- [sendMessage(_:to:using:messageID:)](telephonymessagingkit/rcsservice/sendmessage(_:to:using:messageid:)-70q7h.md)
- [RCSMessage.Text](telephonymessagingkit/rcsmessage/text.md)
- [sendMessage(_:to:using:messageID:)](telephonymessagingkit/rcsservice/sendmessage(_:to:using:messageid:)-63zct.md)
- [RCSMessage.FileTransfer](telephonymessagingkit/rcsmessage/filetransfer.md)
- [sendMessage(_:to:using:messageID:)](telephonymessagingkit/rcsservice/sendmessage(_:to:using:messageid:)-9i178.md)
- [RCSMessage.ComposingIndicator](telephonymessagingkit/rcsmessage/composingindicator.md)
- [sendMessage(_:to:using:messageID:)](telephonymessagingkit/rcsservice/sendmessage(_:to:using:messageid:)-y1z.md)
- [RCSMessage.GeolocationPush](telephonymessagingkit/rcsmessage/geolocationpush.md)
- [sendMessage(_:to:using:messageID:group:)](telephonymessagingkit/rcsservice/sendmessage(_:to:using:messageid:group:).md)
- [RCSMessage.DispositionNotification](telephonymessagingkit/rcsmessage/dispositionnotification.md)
- [RCSHandle](telephonymessagingkit/rcshandle.md)
- [CellularServiceID](telephonymessagingkit/cellularserviceid.md)
- [RCSMessageID](telephonymessagingkit/rcsmessageid.md)

### Sending encrypted messages

- [sendEncryptedMessageRequest(_:)](telephonymessagingkit/rcsservice/sendencryptedmessagerequest(_:).md)
- [RCSService.SendEncryptedMessageRequest](telephonymessagingkit/rcsservice/sendencryptedmessagerequest.md)
- [RCSService.SendEncryptedMessageRequest.Result](telephonymessagingkit/rcsservice/sendencryptedmessagerequest/result.md)

### Receiving messages

- [incomingMessageNotifications](telephonymessagingkit/rcsservice/incomingmessagenotifications.md)
- [RCSService.IncomingMessageNotification](telephonymessagingkit/rcsservice/incomingmessagenotification.md)
- [RCSMessage](telephonymessagingkit/rcsmessage.md)

### Revoking messages

- [revokeMessage(_:)](telephonymessagingkit/rcsservice/revokemessage(_:).md)
- [RCSService.RevokeMessageRequest](telephonymessagingkit/rcsservice/revokemessagerequest.md)

### Transferring files

- [upload(_:)](telephonymessagingkit/rcsservice/upload(_:).md)
- [RCSService.FileUploadRequest](telephonymessagingkit/rcsservice/fileuploadrequest.md)
- [RCSService.FileUploadRequest.Metadata](telephonymessagingkit/rcsservice/fileuploadrequest/metadata.md)
- [download(_:)](telephonymessagingkit/rcsservice/download(_:).md)
- [RCSService.FileDownloadRequest](telephonymessagingkit/rcsservice/filedownloadrequest.md)
- [RCSService.FileDownloadRequest.Metadata](telephonymessagingkit/rcsservice/filedownloadrequest/metadata.md)

### Receiving handle updates

- [remoteHandleUpdates](telephonymessagingkit/rcsservice/remotehandleupdates.md)
- [RCSService.RemoteHandleUpdate](telephonymessagingkit/rcsservice/remotehandleupdate.md)

### Reporting spam

- [reportSpam(_:)](telephonymessagingkit/rcsservice/reportspam(_:).md)
- [RCSService.ReportSpamRequest](telephonymessagingkit/rcsservice/reportspamrequest.md)

### Managing group chats

- [createGroupChat(_:)](telephonymessagingkit/rcsservice/creategroupchat(_:).md)
- [RCSService.CreateGroupChatRequest](telephonymessagingkit/rcsservice/creategroupchatrequest.md)
- [leaveGroupChat(_:)](telephonymessagingkit/rcsservice/leavegroupchat(_:).md)
- [RCSService.LeaveGroupChatRequest](telephonymessagingkit/rcsservice/leavegroupchatrequest.md)
- [addGroupChatParticipants(_:)](telephonymessagingkit/rcsservice/addgroupchatparticipants(_:).md)
- [RCSService.AddGroupChatParticipantsRequest](telephonymessagingkit/rcsservice/addgroupchatparticipantsrequest.md)
- [removeGroupChatParticipants(_:)](telephonymessagingkit/rcsservice/removegroupchatparticipants(_:).md)
- [RCSService.RemoveGroupChatParticipantsRequest](telephonymessagingkit/rcsservice/removegroupchatparticipantsrequest.md)
- [changeGroupChatSubject(_:)](telephonymessagingkit/rcsservice/changegroupchatsubject(_:).md)
- [RCSService.ChangeGroupChatSubjectRequest](telephonymessagingkit/rcsservice/changegroupchatsubjectrequest.md)
- [groupChatEvents](telephonymessagingkit/rcsservice/groupchatevents.md)
- [RCSService.GroupChatEvent](telephonymessagingkit/rcsservice/groupchatevent.md)

### Discovering remote capabilities

- [remoteCapabilities(for:)](telephonymessagingkit/rcsservice/remotecapabilities(for:).md)
- [RCSService.RemoteCapabilitiesRequest](telephonymessagingkit/rcsservice/remotecapabilitiesrequest.md)
- [RCSService.RemoteCapabilities](telephonymessagingkit/rcsservice/remotecapabilities.md)

### Responding to business suggestions

- [sendSuggestionResponse(_:)](telephonymessagingkit/rcsservice/sendsuggestionresponse(_:).md)
- [RCSService.SuggestionResponse](telephonymessagingkit/rcsservice/suggestionresponse.md)
- [sendDeviceSpecifics(to:using:messageID:)](telephonymessagingkit/rcsservice/senddevicespecifics(to:using:messageid:).md)

### Retrieving business information

- [businessInformation(for:)](telephonymessagingkit/rcsservice/businessinformation(for:).md)
- [RCSService.BusinessInformationRequest](telephonymessagingkit/rcsservice/businessinformationrequest.md)
- [RCSService.Business](telephonymessagingkit/rcsservice/business.md)

### Handling errors

- [RCSService.Error](telephonymessagingkit/rcsservice/error.md)

### Supporting types

- [RCSService.GroupChatEndedEvent](telephonymessagingkit/rcsservice/groupchatendedevent.md)
- [RCSService.GroupChatParticipantsAddedEvent](telephonymessagingkit/rcsservice/groupchatparticipantsaddedevent.md)
- [RCSService.GroupChatParticipantsRemovedEvent](telephonymessagingkit/rcsservice/groupchatparticipantsremovedevent.md)
- [RCSService.GroupChatStartedEvent](telephonymessagingkit/rcsservice/groupchatstartedevent.md)
- [RCSService.GroupChatSubjectUpdatedEvent](telephonymessagingkit/rcsservice/groupchatsubjectupdatedevent.md)

### Structures

- [RCSService.GroupChatSubjectInvalidatedEvent](telephonymessagingkit/rcsservice/groupchatsubjectinvalidatedevent.md)

### Instance Methods

- [sendMessage(_:to:using:messageID:)](telephonymessagingkit/rcsservice/sendmessage(_:to:using:messageid:)-61imq.md)
- [sendMessage(_:to:using:messageID:)](telephonymessagingkit/rcsservice/sendmessage(_:to:using:messageid:)-6kuet.md)
- [sendMessage(_:to:using:messageID:)](telephonymessagingkit/rcsservice/sendmessage(_:to:using:messageid:)-8213t.md)

## Relationships

### Conforms To

- [Sendable](swift/sendable.md)
- [SendableMetatype](swift/sendablemetatype.md)

## See Also

### Using Rich Communication Services (RCS)

- [rcsService](telephonymessagingkit/telephonymessagingsession/rcsservice.md)
