在Swift (iOS/macOS)上发送短信:MessageUI库API

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

在Swift (iOS/macOS)上发送短信:MessageUI库API



在现代移动开发中,从应用程序直接发送短信仍然是一项受欢迎的功能。在Apple平台(iOS和macOS)上,内置的MessageUI.framework库解决了这个问题。它提供了一个便捷的界面来创建和发送文本消息,无需连接第三方服务。在本文中,我们将详细介绍如何使用MessageUI API在Swift中发送短信,包括代码示例、错误处理以及在不同设备上的工作特点。



什么是MessageUI.framework?

MessageUI是Apple的一个系统框架,允许应用程序与内置的“信息”应用集成。用于处理短信的主要类是MFMessageComposeViewController。它提供了一个现成的UI控制器来撰写和发送消息。需要注意的是,此API仅在具有有效SIM卡的真实设备(对于iOS)或配置了iMessage的Mac(macOS 10.15+)上工作。在模拟器上该功能不可用。



项目准备

要使用MessageUI,需要:

  • 将MessageUI框架连接到项目(通常它已经在标准库中)。
  • 在调用发送的文件中添加导入:import MessageUI。
  • 确保设备可以发送短信——通过MFMessageComposeViewController.canSendText()进行检查。


发送短信的基本示例

让我们看一个最简单的例子:创建控制器,设置收件人和文本,然后显示它。



import UIKitimport MessageUI

class ViewController: UIViewController, MFMessageComposeViewControllerDelegate {

@IBAction func sendSMSTapped(_ sender: UIButton) { // 检查设备是否可以发送短信 guard MFMessageComposeViewController.canSendText() else { print("设备不支持发送短信") return }

// 创建控制器实例 let messageVC = MFMessageComposeViewController() messageVC.messageComposeDelegate = self

// 设置收件人 messageVC.recipients = ["+79991234567"]

// 设置消息文本 messageVC.body = "你好!这是来自我的应用程序的测试消息。"

// 显示控制器 present(messageVC, animated: true, completion: nil) }

// MARK: - MFMessageComposeViewControllerDelegate func messageComposeViewController(_ controller: MFMessageComposeViewController, didFinishWith result: MessageComposeResult) { // 发送/取消后关闭控制器 dismiss(animated: true, completion: nil)

// 处理结果 switch result { case .sent: print("消息发送成功") case .cancelled: print("用户取消了发送") case .failed: print("发送消息时出错") @unknown default: print("未知结果") } }}


在这段代码中,我们:

  • 使用canSendText()检查发送能力。
  • 创建MFMessageComposeViewController并配置收件人和消息正文。
  • 设置委托(messageComposeDelegate)以处理结果。
  • 在委托方法中处理四种可能的结果:已发送、已取消、错误、未知状态。


附加功能

MessageUI不仅支持纯文本,还支持附件:



// 添加附件(例如图片)if let imageData = UIImage(named: "photo")?.pngData() {    messageVC.addAttachmentD                    

推荐