отправка смс программно в айфоне

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


person user564963    schedule 01.02.2011    source источник
comment
возможный дубликат [iphone 4.0, отправляющий смс программно] (stackoverflow.com/questions/3758664/)   -  person Michael Petrotta    schedule 01.02.2011


Ответы (2)


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

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

#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 из вашего приложения. Если вы просто хотите открыть приложение SMS. Если вас не беспокоит тело сообщения, вы можете сделать это:

NSString *smsURL = @"sms:12345678";
NSURL *url = [NSURL URLWithString:smsURL];
[[UIApplication sharedApplication] openURL:url];
person Aurum Aquila    schedule 01.02.2011
comment
Разве это не messageComposeDelegate вместо delegate? - person Sedat Kilinc; 05.07.2012

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

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

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