2015-05-31 4 views
0

Как отправить текстовое сообщение (используя MFMessageComposeViewController) непосредственно через IBAction? Например, когда кнопка нажата, текстовое сообщение отправляется с заданным номером, и клавиатура не появляется или ничего. Например, сообщение «SMS было отправлено успешно», например.Отправьте текстовое сообщение непосредственно через IBAction (Objective-C)

Все кодирование выполняется, за исключением этой «прямой отправки-функции».

+1

Где вы хотите это сообщение Отправить? На какой объект? –

+0

К нескольким NSStrings :) – Yomo

+0

Вы имеете в виду SMS? Рассмотрим MFMessageComposeViewController. – matt

ответ

2

Ну, вы не можете технически «автоматически отправить» сообщение, потому что для этого потребуется подтверждение пользователя.

Вы можете, однако, настроить содержимое сообщения и получателей (получателей) с помощью 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]; 
     }); 
    } 
} 

Одна последняя вещь: вы должны реализовать метод делегата сказать контроллер представления сообщений, чтобы закрыть, когда пользователь нажимает «отменить» в диалоговом окне отправки:

- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result { 
    [self dismissViewControllerAnimated:YES completion:NULL]; 
} 
+0

Хм, так что нет способа отправить его напрямую без дополнительного крана? :/ – Yomo

+0

@simonsayzhi К сожалению, нет. В противном случае вредоносные приложения могут отправлять спам-сообщения всем в адресной книге пользователя в фоновом режиме без согласия пользователя. – AstroCB

+1

Я вижу. Благодаря!! – Yomo