通过 IBAction 直接发送短信 (Objective-C)
Send a text message directly via an IBAction (Objective-C)
如何直接通过 IBAction 发送短信(使用 MFMessageComposeViewController
)?就像,当按下按钮时,会发送一条带有预设号码的短信,但不会出现键盘或任何东西。只是一个警告,例如 "SMS was sent successfully,"。
所有的编码都完成了,除了这个"direct sending-function"。
嗯,从技术上讲,您不能 "auto-send" 消息,因为它需要用户确认才能通过。
但是,您可以使用 MFMessageComposeViewController
(相当多)设置消息的内容和收件人,并显示一个对话框,需要额外点击才能发送。
要访问该对话框,您必须 #import <MessageUI/MessageUI.h>
并将 MFMessageComposeViewControllerDelegate
添加到头文件中的视图控制器声明中。
然后,就可以写IBAction
了。首先,您要检查设备是否真的可以使用 canSendText
发送带有文本内容的消息。然后,您将创建视图控制器,用数据填充它,并显示对话框。
- (IBAction)sendMessage:(UIButton *)sender {
if([MFMessageComposeViewController canSendText]) {
MFMessageComposeViewController *messageController = [[MFMessageComposeViewController alloc] init]; // Create message VC
messageController.messageComposeDelegate = self; // Set delegate to current instance
NSMutableArray *recipients = [[NSMutableArray alloc] init]; // Create an array to hold the recipients
[recipients addObject:@"555-555-5555"]; // Append example phone number to array
messageController.recipients = recipients; // Set the recipients of the message to the created array
messageController.body = @"Example message"; // Set initial text to example message
dispatch_async(dispatch_get_main_queue(), ^{ // Present VC when possible
[self presentViewController:messageController animated:YES completion:NULL];
});
}
}
最后一件事:当用户在发送对话框中按下 "cancel" 时,您必须实现一个委托方法来告诉消息视图控制器关闭:
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result {
[self dismissViewControllerAnimated:YES completion:NULL];
}
如何直接通过 IBAction 发送短信(使用 MFMessageComposeViewController
)?就像,当按下按钮时,会发送一条带有预设号码的短信,但不会出现键盘或任何东西。只是一个警告,例如 "SMS was sent successfully,"。
所有的编码都完成了,除了这个"direct sending-function"。
嗯,从技术上讲,您不能 "auto-send" 消息,因为它需要用户确认才能通过。
但是,您可以使用 MFMessageComposeViewController
(相当多)设置消息的内容和收件人,并显示一个对话框,需要额外点击才能发送。
要访问该对话框,您必须 #import <MessageUI/MessageUI.h>
并将 MFMessageComposeViewControllerDelegate
添加到头文件中的视图控制器声明中。
然后,就可以写IBAction
了。首先,您要检查设备是否真的可以使用 canSendText
发送带有文本内容的消息。然后,您将创建视图控制器,用数据填充它,并显示对话框。
- (IBAction)sendMessage:(UIButton *)sender {
if([MFMessageComposeViewController canSendText]) {
MFMessageComposeViewController *messageController = [[MFMessageComposeViewController alloc] init]; // Create message VC
messageController.messageComposeDelegate = self; // Set delegate to current instance
NSMutableArray *recipients = [[NSMutableArray alloc] init]; // Create an array to hold the recipients
[recipients addObject:@"555-555-5555"]; // Append example phone number to array
messageController.recipients = recipients; // Set the recipients of the message to the created array
messageController.body = @"Example message"; // Set initial text to example message
dispatch_async(dispatch_get_main_queue(), ^{ // Present VC when possible
[self presentViewController:messageController animated:YES completion:NULL];
});
}
}
最后一件事:当用户在发送对话框中按下 "cancel" 时,您必须实现一个委托方法来告诉消息视图控制器关闭:
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result {
[self dismissViewControllerAnimated:YES completion:NULL];
}