Отправка смс программно в iphone

Как программно отправить SMS-сообщение на определенный номер, выбранный в списке контактов в iPhone?

2 ответа

Решение

MFMessageComposeController это то, что вы ищете.

Чтобы отправить смс, вы смотрите что-то вроде этого:

#import <MessageUI/MessageUI.h>
@interface myClass : NSObject <MFMessageComposeViewControllerDelegate>{
}
@end

@implementation

-(void)sendMessage{
    if([MFMessageComposeController canSendText]){
        MFMessageComposeController *smsComposer =
[[MFMessageComposeController alloc] init]; smsComposer.recipients = [NSArray arrayWithObject:@"12345678"]; smsComposer.body = @"SMS BODY HERE"; smsComposer.delegate = self; [self presentModalViewController:smsComposer animated:NO]; } else{ //You probably want to show a UILocalNotification here. } } - (void)messageComposeViewController:(MFMessageComposeViewController *)controller
didFinishWithResult:(MessageComposeResult)result{ /* You can use the MessageComposeResult to determine what happened to the
message. I believe it tells you about sent, stored for sending later, failed
or cancelled. */ [self dismissModalViewControllerAnimated:NO]; } @end

Это единственный способ отправлять смс из вашего приложения на данный момент. Если только вы не хотите открыть приложение SMS. Если вы не беспокоитесь о теле сообщения, вы можете сделать это:

NSString *smsURL = @"sms:12345678";
NSURL *url = [NSURL URLWithString:smsURL];
[[UIApplication sharedApplication] openURL:url];

Э-э... Я думаю, что небольшая дискуссия будет полезна здесь. Я (возможно, по ошибке) отвечаю на вопрос "... отправить SMS программно…", чтобы означать отправку SMS за кулисами, когда MFMessageComposeViewController выскакивает.

Зеленая галочка для ответа выше неверна, если это вопрос. Я собираюсь предположить, что это вопрос (держу пари, я не единственный) и предложить некоторые пули, чтобы сэкономить другим время, которое я потратил, чтобы добраться сюда.

  1. В стеке немного обсуждается, что это не может быть сделано в iOS. и здесь
  2. Плагин Cordova для Android делает это просто отлично
  3. плагин Cordova для iOS не имеет (подразумевается, что это не может быть сделано.)
  4. Код выше не работает. Это своего рода псевдокод. Анимированный: НЕТ на presentModalViewController, предотвращает всплывающее окно vc, но я всегда заканчиваю деланием didFinishWithResult с MessageCancelled.
  5. Apple имеет право предотвращать это.
Другие вопросы по тегам