在 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;
}
}
我在 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;
}
}