отправка смс программно в iphone - PullRequest
1 голос
/ 01 февраля 2011

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

Ответы [ 2 ]

4 голосов
/ 01 февраля 2011

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

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

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

@implementation

-(void)sendMessage{
    if([MFMessageComposeController canSendText]){
        MFMessageComposeController *smsComposer =<br>                                       [[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 <br>                                 didFinishWithResult:(MessageComposeResult)result{

    /* You can use the MessageComposeResult to determine what happened to the <br>message. I believe it tells you about sent, stored for sending later, failed <br>or cancelled. */

[self dismissModalViewControllerAnimated:NO];
}

@end

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

NSString *smsURL = @"sms:12345678";
NSURL *url = [NSURL URLWithString:smsURL];
[[UIApplication sharedApplication] openURL:url];
1 голос
/ 27 декабря 2012

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

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

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