通过 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];
}