在 iOS 内发送短信

Send SMS in iOS

我在 iOS 开发和 xCode 方面是全新的。 以前我开发了 android,我知道我应该使用 Intent 在 android 应用程序中拨打电话和发送短信。 现在我想开发一个简单的应用程序,当我按下 Button 时,它会向特定号码发送 SMS。 所以我在 Ubuntu 上安装了 Mac OS 10.11 VM。 并且可以将我的 iPhone 5 连接到那个和 运行 我简单的 Hello World 实际 iPhone 设备而不是 simulator 的应用程序。 现在我在 StoryBoard 中创建了一个 Button 并按照这篇文章创建了一个函数: Send SMS Message Toturial

也看看其他 links 和类似的。 这是我的简单 ViewController.swift.

import UIKit
import MessageUI

class ViewController: UIViewController, MFMessageComposeViewControllerDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()

    }

    @IBAction func sendMessage(sender: AnyObject) {

        print("Send button pressed") //display a text to make sure is calling

        if MFMessageComposeViewController.canSendText() {
            let controller = MFMessageComposeViewController()
            controller.body = "TestMessage "
            controller.recipients = ["xxxxxxxxx", "xxxxxxxxx"] // sending for two numbers
            controller.messageComposeDelegate = self
            self.presentViewController(controller, animated: true, completion: nil)
        }
    }
    func messageComposeViewController(controller: MFMessageComposeViewController, didFinishWithResult result: MessageComposeResult) {

        switch (result.rawValue) {
        case MessageComposeResultCancelled.rawValue:
            print("Message was cancelled")
            self.dismissViewControllerAnimated(true, completion: nil)

        case MessageComposeResultFailed.rawValue:
            print("Message failed")
            self.dismissViewControllerAnimated(true, completion: nil)

        case MessageComposeResultSent.rawValue:
            print("Message was sent")
            self.dismissViewControllerAnimated(true, completion: nil)

        default:
            break;
        }
    }

}

并且还创建了一个 Simple 按钮和 link 上面的 sendMessage。 当我 运行 应用程序显示按钮时,当我按下它时,它似乎在做某事,但未发送短信。 任何的想法?? 非常感谢。

更新:正如我们的朋友所说,我在 sendMessage Button 中添加了 print("Send button pressed"),所以当我按下它时,我发现按钮调用 sendMessage

我终于做到了,我混合了两个解决方案, 首先,我把sendMessage的功能改成了sendText,这样:

    @IBAction func sendText(sender: AnyObject) {
    if (MFMessageComposeViewController.canSendText()) {
        let controller = MFMessageComposeViewController()
        controller.body = "Text Body"
        controller.recipients = ["xxxxxxxxxxx"]
        controller.messageComposeDelegate = self
        self.presentViewController(controller, animated: true, completion: nil)
    }
}

MessageComposeViewController 的协议是:

func messageComposeViewController(controller: MFMessageComposeViewController, didFinishWithResult result: MessageComposeResult) {
    switch (result.rawValue) {
    case MessageComposeResultCancelled.rawValue:
        print("Message was cancelled")
        self.dismissViewControllerAnimated(true, completion: nil)
    case MessageComposeResultFailed.rawValue:
        print("Message failed")
        self.dismissViewControllerAnimated(true, completion: nil)
    case MessageComposeResultSent.rawValue:
        print("Message was sent")
        self.dismissViewControllerAnimated(true, completion: nil)
    default:
        break;
    }
}

然后点击故事板中的按钮,按下control键,将按钮拖到ViewController和select的sendText函数中,现在可以正常使用了.

感谢我的朋友@Kabiroberai 的帮助并给我一些时间。

这是转换为 swift 4 的底部函数:

func messageComposeViewController(_ controller: MFMessageComposeViewController, didFinishWith result: MessageComposeResult) {
    switch (result.rawValue) {
    case MessageComposeResult.cancelled.rawValue:
        print("Message was cancelled")
        self.dismiss(animated: true, completion: nil)
    case MessageComposeResult.failed.rawValue:
        print("Message failed")
        self.dismiss(animated: true, completion: nil)
    case MessageComposeResult.sent.rawValue:
        print("Message was sent")
        self.dismiss(animated: true, completion: nil)
    default:
        break;
    }
}