Welcome to our comprehensive guide on using MFMessageComposeViewController in your iOS app. This view controller allows you to integrate SMS functionality effortlessly, enabling your users to send text messages without leaving your app. 

In this tutorial, we’ll explore how to implement MFMessageComposeViewController and add SMS features to your application. Let’s get started!

How to Use MFMessageComposeViewController

Before we dive into MFMessageComposeViewController, ensure that you have a project ready in Xcode. If you don’t have one yet, create a new project that you’d like to integrate SMS functionality into.

Importing the MessageUI Framework

To use MFMessageComposeViewController, you’ll need to import the MessageUI framework into your project. Go to your project settings, select your app’s target, and in the “General” tab, scroll down to the “Frameworks, Libraries, and Embedded Content” section. Click the ‘+’ button and add the “MessageUI.framework” to your project.

Creating the MFMessageComposeViewController

In your project, navigate to the view controller where you want to implement SMS functionality. Import the MessageUI framework at the top of your Swift file using `import MessageUI`. Next, create an instance of MFMessageComposeViewController as follows:


let messageController = MFMessageComposeViewController()

messageController.messageComposeDelegate = self


Composing and Sending Messages

You can set the message recipients and body text by using the `recipients` and `body` properties of MFMessageComposeViewController. After composing the message, you can present the view controller to the user. Once the user sends the message or cancels, you can handle the result using the messageComposeDelegate methods.

Adding SMS Functionality to Your App

Before using MFMessageComposeViewController, you need to ensure that your app has permission to send SMS. Add the “Privacy – SMS Usage Description” key and a custom message to your app’s Info.plist to explain to users why your app needs SMS access. When you present the MFMessageComposeViewController, iOS will prompt the user for permission.

Composing SMS Messages Programmatically

In addition to user-initiated messages, you can also compose and send SMS messages programmatically in your app. This feature allows you to send messages based on certain triggers or events within your app.

Ready to explore responsive app design? Check out this guide Xcode Size: Demystifying iOS Interface Adaptation

Leveraging Customization in Your SMS Messages

MFMessageComposeViewController provides you with the ability to customize the SMS message before presenting it to the user. This includes setting the recipients, message body, and even adding attachments, such as images or files. 

The customization options empower you to create tailored SMS messages for different scenarios within your app: 

Setting Recipients

You can set the recipients for your SMS message using the `recipients` property of MFMessageComposeViewController. This is particularly useful when your app needs to send messages to specific contacts or numbers stored in your app’s data.


messageController.recipients = ["+1234567890", "+9876543210"]


Composing Dynamic Messages

Your app can dynamically generate message content based on user actions or app data. For example, you could create a feature that allows users to share their progress with friends via SMS, with the message body updating to reflect the user’s achievements.


messageController.body = "Check out my latest high score: \(highScore)!"


Adding Attachments

MFMessageComposeViewController supports adding attachments to your SMS messages. This feature is especially handy when you want to share images, documents, or other files with your users. You can attach files directly from your app’s resources or generate them on-the-fly.


messageController.body = "Check out my latest high score: \(highScore)!"


Handling the User Experience

When implementing SMS functionality in your app, it’s essential to ensure a seamless and user-friendly experience. Here are some key considerations:

Error Handling

Be prepared to handle potential errors when sending SMS messages. Users might cancel the message or encounter issues with their device’s SMS capabilities. You can implement error handling through the `messageComposeDelegate` methods.

```swiftfunc messageComposeViewController(_ controller: MFMessageComposeViewController, didFinishWith result: MessageComposeResult) {  switch result {  case .cancelled:    print("Message sending was cancelled.")  case .failed:    print("Message sending failed.")  case .sent:    print("Message sent successfully.")  }  controller.dismiss(animated: true, completion: nil)}```

User Authorization

Remember that users need to grant your app permission to send SMS messages. Ensure that you request this permission and provide a clear and user-friendly explanation for why your app needs SMS access. This request is made in your app’s Info.plist as the “Privacy – SMS Usage Description” key. 

Expanding Your App’s Capabilities 

With MFMessageComposeViewController at your disposal, you have the tools to enhance your app’s capabilities and improve user engagement. Consider creative ways to integrate SMS functionality into your app, such as sharing content, sending reminders, or allowing users to invite friends to join your platform.


Incorporating SMS functionality with MFMessageComposeViewController can elevate your app to new heights. This powerful tool enables you to connect with users through a familiar and convenient channel. As you continue your iOS development journey, remember that adding SMS features can bring valuable interactivity to your app and improve user communication.

Leave a Reply