프로그래밍 방식으로 iPhone에서 SMS를 보내는 방법은 무엇입니까?


526

공식 SDK / Cocoa Touch를 사용 하여의 프로그래밍 방식으로 SMS 를 보낼 수 있는지, 그리고 어떻게 프로그래밍 방식으로 SMS 를 보낼 수 있는지 아는 사람이 iPhone있습니까?


Ios 4에서 코드를 사용하여 SMS를 보낼 수 있지만 문제는 응용 프로그램이 종료 될 것입니다
Pankaj Kainthla

공식 SDK를 사용하는 것이 다른 사람들의 요구 사항이 아닌 경우이 게시물을 작성하여 Twilio를 사용하여이 작업을 수행하는 방법을 보여줍니다. twilio.com/blog/2016/11/…
Megan Speir

Gmail에서 Google 스프레드 시트를 만들고 원하는 입력란을 만든 다음 tools->script editorPOST 요청에서 MailApp.sendEmailapi를 사용 하여 전화 번호로 이메일을 보낼 수 있습니다. AT & T의이 YOURNUMBER@mms.att.net입니다, T - 모바일의 내가 (ALL FREE) 생각 YOURNUMBER@tmomail.net입니다
코티 엠브리

답변:


404

제한 사항

iPhone의 프로그램 내에서 SMS를 보낼 수 있다면 백그라운드에서 사람들을 스팸으로 만드는 게임을 작성할 수 있습니다. 당신은 정말로 당신의 친구로부터 스팸을 원한다고 확신합니다. "이 새로운 게임을 시도하십시오! 포인트들!!"

Apple은 자동 (또는 부분적으로 자동화 된) SMS 및 전화 걸기 작업에 대한 제한이 있습니다. (게임이 특정 시간에 911로 전화 한 경우를 상상해보십시오)

가장 좋은 방법은 온라인 SMS 전송 서비스를 사용하는 인터넷에 중간 서버를 설정하고 완전한 자동화가 필요한 경우 해당 경로를 통해 SMS를 보내는 것입니다. (즉, iPhone의 프로그램이 UDP 패킷을 서버로 보내면 실제 SMS가 전송됩니다)

iOS 4 업데이트

그러나 iOS 4는 이제 viewController응용 프로그램으로 가져올 수 있는 기능 을 제공합니다 . SMS 필드를 미리 채우면 사용자가 컨트롤러 내에서 SMS 전송을 시작할 수 있습니다. "SMS : ..."url 형식을 사용하는 것과 달리 응용 프로그램을 계속 열어두고받는 사람 및 본문 필드 모두 채울 수 있습니다 . 여러 수신자를 지정할 수도 있습니다.

따라서 사용자가 명시 적으로 인식하지 않고도 응용 프로그램이 자동 SMS를 보내지 못하게됩니다. 여전히 iPhone 자체에서 완전 자동화 된 SMS를 보낼 수 없으며 일부 사용자 상호 작용이 필요합니다. 그러나 이것은 적어도 모든 것을 채우고 응용 프로그램을 닫지 않도록합니다.

MFMessageComposeViewController의 클래스는 잘 설명하고, 튜토리얼 이 구현하는 것이 얼마나 쉬운 지 보여줍니다.

iOS 5 업데이트

iOS 5에는 iPod touch 및 iPad 장치 용 메시지가 포함되어 있으므로 아직 직접 테스트하지는 않았지만 모든 iOS 장치가 MFMessageComposeViewController를 통해 SMS를 보낼 수 있습니다. 이 경우 Apple은 셀룰러 모뎀이없는 장비 대신 메시지를 보내는 SMS 서버를 실행 중입니다.

iOS 6 업데이트

이 수업에는 변화가 없습니다.

iOS 7 업데이트

이제 사용중인 메시지 매체가 제목이나 첨부 파일을 허용하는지, 어떤 첨부 파일을 허용하는지 확인할 수 있습니다. 제목을 편집하고 매체가 허용하는 메시지에 첨부 파일을 추가 할 수 있습니다.

iOS 8 업데이트

이 수업에는 변화가 없습니다.

iOS 9 업데이트

이 수업에는 변화가 없습니다.

iOS 10 업데이트

이 수업에는 변화가 없습니다.

iOS 11 업데이트

이 수업에 큰 변화가 없습니다

이 수업에 대한 제한

iOS 4가없는 전화에서는 작동하지 않으며, iOS 5에서는 iPod touch 또는 iPad에서는 작동하지 않습니다.이 기능을 사용하기 전에 장치 및 iOS 제한을 감지해야합니다. 앱을 최근에 업그레이드 한 3G, 3GS 및 4 iPhone으로 제한 할 수 있습니다.

그러나 SMS를 보내는 중간 서버는 인터넷에 액세스 할 수있는 한 이러한 모든 iOS 장치가 SMS를 보낼 수 있도록 허용하므로 많은 응용 프로그램에서 여전히 더 나은 솔루션 일 수 있습니다. 또는 둘 다 사용하고 장치가 지원하지 않는 경우에만 온라인 SMS 서비스로 폴백합니다.


12
그리고 당신이 그 도메인을 구입하면 나는 당신을 다시는 같은 방식으로 다시 볼 수 없을 것입니다.
Adam Davis

79
누군가가이 게시물을 스팸으로 표시 한 것은 아이러니하다고 생각합니다. 사람들 사이의 선을 읽으십시오!
Randolpho

2
추론으로 읽히기 때문에 -1입니다. 또한 인앱 SMS를 보내는 방법에 대한 Jus 'Wondrin 's 및 rydgaze의 답변을 참조하십시오.
Frank Shearar

8
@Frank-새로운 iOS 4 기능을 반영하도록 내 글을 업데이트했습니다. 소란스러운 말씨를 제거했습니다.
Adam Davis

13
이 게시물을 새로운 iOS 버전으로 업데이트 한 것에 대해 진심으로 감사드립니다. :)
Ciryon

143

다음은 원하는 것을 정확하게 수행하는 자습서입니다 MFMessageComposeViewController.

http://blog.mugunthkumar.com/coding/iphone-tutorial-how-to-send-in-app-sms/

본질적으로 :

MFMessageComposeViewController *controller = [[[MFMessageComposeViewController alloc] init] autorelease];
if([MFMessageComposeViewController canSendText])
{
    controller.body = @"SMS message here";
    controller.recipients = [NSArray arrayWithObjects:@"1(234)567-8910", nil];
    controller.messageComposeDelegate = self;
    [self presentModalViewController:controller animated:YES];
}

그리고 문서에 대한 링크.

https://developer.apple.com/documentation/messageui/mfmessagecomposeviewcontroller


여전히 SMS 양식이 나타납니다. 백그라운드로 보낼 방법이 있습니까?
랩터

5
Twilio와 같은 서비스를 사용하여 백그라운드에서 SMS를 보낼 수는 있지만 사용자의 전화 번호에서 보내려면 위의 방법을 통해 메시지를 승인해야합니다.
Daniel Amitay

3
위의 코드를 사용하는 사람 MFMessageComposeViewController *controller = ...은 if 블록 안에 넣는 것을 고려할 수 있습니다 . (클래스 메소드에는 테스트를 수행 할 인스턴스가 필요하지 않음)
동기화되지

링크 http://blog.mugunthkumar.com/coding/iphone-tutorial-how-to-send-in-app-sms/가 랩탑에 "502 Bad Gateway"라고 표시되어 있습니다. 링크가 끊어졌을 수 있습니다.
Nikita Vlasenko

99
  1. MessageUI.framework를 Xcode 프로젝트에 추가해야합니다
  2. 포함 #import <MessageUI/MessageUI.h> 헤더 파일을
  3. 이 대리자를 헤더 파일에 추가하고 MFMessageComposeViewControllerDelegate &UINavigationControllerDelegate
  4. 당신의 IBAction방법에서 MFMessageComposeViewControllersay의 인스턴스를 선언messageInstance
  5. 장치가 [MFMessageComposeViewController canSendText]if 조건에서 텍스트 사용 을 보낼 수 있는지 확인하기 위해 Yes / No를 반환합니다
  6. 에서 if조건이 작업을 수행합니다

    1. 당신의 몸을 먼저 설정하십시오 messageInstance:

      messageInstance.body = @"Hello from Shah";
    2. 그런 다음 메시지 수신자를 다음과 같이 결정하십시오.

      messageInstance.recipients = [NSArray arrayWithObjects:@"12345678", @"87654321",         nil];
    3. messageInstance의 위임을 다음과 같이 설정하십시오.

      messageInstance.messageComposeDelegate = self;
    4. 마지막 줄에서 다음을 수행하십시오.

      [self presentModalViewController:messageInstance animated:YES];

2
버전 메모 : presentModalViewController:animated:더 이상 사용되지 않습니다. 사용하는 presentViewController:animated:completion:대신. 또한 - (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result결과를 알고 싶다면 대리자 메서드를 정의 해야합니다.
랩터

테스트 코드를 입력하십시오. @Najeebullah Shah는 여기 또는 github에 있습니다.

50

sms:[target phone number]URL을 사용하여 SMS 응용 프로그램을 열 수 있지만 SMS 본문에 텍스트를 미리 채우는 방법에 대한 표시는 없습니다.


반응 - 네이티브 통신을 사용하는 보디 = 상기 SMS를 개방 텍스트 미리 기입하는 파라미터 : iOS 용 targetphonenumber 보디 = textyouwanttoprefillwith
덕 Voss의

방금 내 아이폰 8에서 이것을 시도했지만 훌륭하게 작동했습니다 ... 감사합니다!
Brad Parks

미리 정의 된 (사전 채우기) 본문 텍스트로 특정 번호로 SMS를 보내야합니다. 토스 본문은 4 가지 가능한 옵션 중에서 수동으로 선택해야합니다. 예 : 앱이 열리고 "이유 선택"팝업이 표시됩니다. 그런 다음 4 가지 옵션을 사용할 수 있습니다. 다음으로 사용자는이 4 가지 옵션 중 하나를 선택한 다음 사용자가 선택한 본문을 자동 SMS로 보냅니다. 어떤 팁?
seralouk

25

MacOS의 프로세스 간 통신 시스템 중 하나는 XPC입니다. 이 시스템 계층은 libSystem을 사용하여 plist 구조의 전송을 기반으로 프로세스 간 통신을 위해 개발되었으며 시작되었습니다. 실제로 사전과 같은 구조의 교환을 통해 프로세스를 관리 할 수있는 인터페이스입니다. 유전성으로 인해 iOS 5에도이 메커니즘이 있습니다.

이 소개의 의미를 이미 이해했을 것입니다. 그러나 iOS에는 XPC 통신 도구가 포함 된 시스템 서비스가 있습니다. 그리고 SMS 전송을위한 데몬으로 작업을 보여주고 싶습니다. 그러나이 기능은 iOS 6에서 고정되어 있지만 iOS 5.0-5.1.1과 관련이 있습니다. 탈옥, 개인 프레임 워크 및 기타 불법 도구는 악용 될 필요가 없습니다. / usr / include / xpc / * 디렉토리의 헤더 파일 세트 만 필요합니다.

iOS에서 SMS를 전송하기위한 요소 중 하나는 시스템 서비스 com.apple.chatkit입니다.이 작업에는 짧은 문자 메시지 생성, 관리 및 전송이 포함됩니다. 쉽게 제어 할 수 있도록 공개적으로 사용 가능한 통신 포트 com.apple.chatkit.clientcomposeserver.xpc가 있습니다. XPC 서브 시스템을 사용하면 사용자의 승인없이 메시지를 생성하고 보낼 수 있습니다. 

글쎄, 연결을 만들어 보자.

xpc_connection_t myConnection;

dispatch_queue_t queue = dispatch_queue_create("com.apple.chatkit.clientcomposeserver.xpc", DISPATCH_QUEUE_CONCURRENT);

myConnection = xpc_connection_create_mach_service("com.apple.chatkit.clientcomposeserver.xpc", queue, XPC_CONNECTION_MACH_SERVICE_PRIVILEGED);

이제 XPC 연결 myConnection이 SMS 전송 서비스로 설정되었습니다. 그러나 XPC 구성은 일시 중단 된 연결을 만들 수 있도록하기 위해 활성화 단계를 한 단계 더 수행해야합니다.

xpc_connection_set_event_handler(myConnection, ^(xpc_object_t event){
xpc_type_t xtype = xpc_get_type(event);
if(XPC_TYPE_ERROR == xtype)
{
NSLog(@"XPC sandbox connection error: %s\n", xpc_dictionary_get_string(event, XPC_ERROR_KEY_DESCRIPTION));
}
// Always set an event handler. More on this later.

NSLog(@"Received a message event!");

});

xpc_connection_resume(myConnection);

연결이 활성화되었습니다. 현재 iOS 6은 전화 로그에 이러한 유형의 통신이 금지되었다는 메시지를 표시합니다. 이제 메시지 전송에 필요한 데이터로 xpc_dictionary와 비슷한 사전을 생성해야합니다.

NSArray *recipient = [NSArray arrayWithObjects:@"+7 (90*) 000-00-00", nil];

NSData *ser_rec = [NSPropertyListSerialization dataWithPropertyList:recipient format:200 options:0 error:NULL];

xpc_object_t mydict = xpc_dictionary_create(0, 0, 0);
xpc_dictionary_set_int64(mydict, "message-type", 0);
xpc_dictionary_set_data(mydict, "recipients", [ser_rec bytes], [ser_rec length]);
xpc_dictionary_set_string(mydict, "text", "hello from your application!");

적은 남음 : 메시지를 XPC 포트로 전송하고 전달되었는지 확인하십시오.

xpc_connection_send_message(myConnection, mydict);
xpc_connection_send_barrier(myConnection, ^{
NSLog(@"The message has been successfully delivered");
});

그게 다야. SMS를 보냈습니다.


1
XPC를 사용하여 SMS를 보내면 안됩니다. 제작 된 앱은 Apple의 승인을받지 않습니다. 대신 MessageUI Framework 사용
랩터

조직에 사용하는 앱에이 기술을 사용하고 있고 앱이 앱 스토어를 거치지 않는 경우 걱정할 필요가 없습니다.
Martin Berger

이것은 iOS 버전 10 이상에서 작동합니까?
Martin Berger

iOS 12에서 "XPC 샌드 박스 연결 오류 : 연결이 잘못되었습니다"
Martin Berger

23

MessageUI.Framework를 추가하고 다음 코드를 사용하십시오.

#import <MessageUI/MessageUI.h> 

그리고:

if ([MFMessageComposeViewController canSendText]) {
  MFMessageComposeViewController *messageComposer =
  [[MFMessageComposeViewController alloc] init];
  NSString *message = @"Your Message here";
  [messageComposer setBody:message];
  messageComposer.messageComposeDelegate = self;
  [self presentViewController:messageComposer animated:YES completion:nil];
}

위임 방법-

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

이거 훌륭하지만 배경에서이 기능을 수행 할 수 있습니까?
Raj

3
Apple은 사용자의 승인없이 메시지를 보낼 수 없습니다. 버튼을 수동으로 눌러 메시지 / 메일을 보내야합니다. 또는 전자 메일 / 번호를 백엔드로 보낸 다음 보내서 사용자 정의 서비스를 사용할 수 있습니다. 아이폰에서 직접 할 수는 없지만
Bharat Gulati

21

이 방법을 사용할 수 있습니다 :

[[UIApplication sharedApplication]openURL:[NSURL URLWithString:@"sms:MobileNumber"]]


iOS는 앱에서 메시지 앱의 메시지 작성 페이지로 자동 탐색합니다. URL 스킴은 sms :로 시작하기 때문에 메시지 앱에서 인식하고이를 실행하는 유형으로 식별됩니다.


12
//Add the Framework in .h file

#import <MessageUI/MessageUI.h>
#import <MessageUI/MFMailComposeViewController.h>

//Set the delegate methods

UIViewController<UINavigationControllerDelegate,MFMessageComposeViewControllerDelegate>

//add the below code in .m file


- (void)viewDidAppear:(BOOL)animated{
    [super viewDidAppear:animated];

    MFMessageComposeViewController *controller = 
    [[[MFMessageComposeViewController alloc] init] autorelease];

    if([MFMessageComposeViewController canSendText])
    { 
        NSString *str= @"Hello";
        controller.body = str;
        controller.recipients = [NSArray arrayWithObjects:
                                 @"", nil];
        controller.delegate = self;
        [self presentModalViewController:controller animated:YES];  
    }


}

- (void)messageComposeViewController:
(MFMessageComposeViewController *)controller
                 didFinishWithResult:(MessageComposeResult)result 
{
    switch (result)
    {
        case MessageComposeResultCancelled:  
            NSLog(@"Cancelled");    
            break; 
        case MessageComposeResultFailed:
            NSLog(@"Failed");
            break;   
        case MessageComposeResultSent:      
            break; 
        default:  
            break;  
    }  
    [self dismissModalViewControllerAnimated:YES]; 
}

이 링크를 참조하십시오 : blog.mugunthkumar.com/coding/… 도움이 될 것입니다
Banker Mittal

12

이 절차를 따르십시오

1. MessageUI.Framework프로젝트에 추가여기에 이미지 설명을 입력하십시오

2. 수입#import <MessageUI/MessageUI.h>.h 파일로 옵니다.

삼 . 메시지를 보내기 위해이 코드를 복사하십시오

 if ([MFMessageComposeViewController canSendText]) {
    MFMessageComposeViewController *messageComposer =
    [[MFMessageComposeViewController alloc] init];
    NSString *message = @"Message!!!";
    [messageComposer setBody:message];
    messageComposer.messageComposeDelegate = self;
    [self presentViewController:messageComposer animated:YES completion:nil];
}

4. delegate원하는 경우 방법을 구현하십시오 .

- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result{


   ///your stuff here 

    [self dismissViewControllerAnimated:YES completion:nil];
}

달리고 가자!


콜백 메소드 [self dismissViewControllerAnimated:YES completion:nil];내부 에서 실행하고 싶을 것입니다 messageComposeViewController: didFinishWithResult:. 그렇지 않으면 거기에 매달릴 것입니다.
SaltyNuts

5

iOS에서 SMS를 보내는 Swift 버전의 코드는 다음과 같습니다. 실제 장치에서만 작동합니다. iOS 7 이상에서 코드 테스트되었습니다. 자세한 내용은 여기를 참조 하십시오 .

1) MFMessageComposeViewControllerDelegate 및 NSObject를 상속하는 새 클래스를 작성하십시오.

import Foundation
import MessageUI

class MessageComposer: NSObject, MFMessageComposeViewControllerDelegate {
    // A wrapper function to indicate whether or not a text message can be sent from the user's device
    func canSendText() -> Bool {
        return MFMessageComposeViewController.canSendText()
    }

    // Configures and returns a MFMessageComposeViewController instance
    func configuredMessageComposeViewController(textMessageRecipients:[String] ,textBody body:String) -> MFMessageComposeViewController {
        let messageComposeVC = MFMessageComposeViewController()
        messageComposeVC.messageComposeDelegate = self  //  Make sure to set this property to self, so that the controller can be dismissed!
        messageComposeVC.recipients = textMessageRecipients
        messageComposeVC.body = body
        return messageComposeVC
    }

    // MFMessageComposeViewControllerDelegate callback - dismisses the view controller when the user is finished with it
    func messageComposeViewController(controller: MFMessageComposeViewController!, didFinishWithResult result: MessageComposeResult) {
        controller.dismissViewControllerAnimated(true, completion: nil)
        }
}

2)이 수업을 이용하는 방법 :

func openMessageComposerHelper(sender:AnyObject ,withIndexPath indexPath: NSIndexPath) {
    var recipients = [String]()

    //modify your recipients here

    if (messageComposer.canSendText()) {
        println("can send text")
        // Obtain a configured MFMessageComposeViewController
        let body = Utility.createInvitationMessageText()

        let messageComposeVC = messageComposer.configuredMessageComposeViewController(recipients, textBody: body)

        // Present the configured MFMessageComposeViewController instance
        // Note that the dismissal of the VC will be handled by the messageComposer instance,
        // since it implements the appropriate delegate call-back
        presentViewController(messageComposeVC, animated: true, completion: nil)
    } else {
        // Let the user know if his/her device isn't able to send text messages
        self.displayAlerViewWithTitle("Cannot Send Text Message", andMessage: "Your device is not able to send text messages.")
    }
}

3

iOS 4에는 응용 프로그램에서 본문 및 레시피가 포함 된 메시지 전송을 지원하는 클래스가 있습니다. 메일 발송과 동일하게 작동합니다. 여기에서 설명서를 찾을 수 있습니다 : 링크 텍스트


3
- (void)sendSMS:(NSString *)bodyOfMessage recipientList:(NSArray *)recipients
{
    UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
    UIImage *ui =resultimg.image;
    pasteboard.image = ui;
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"sms:"]];
}

4
매개 변수가 얼마나 유용한가요?
martinsurleweb

[[UIApplication sharedApplication] openURL : [NSURL URLWithString : @ "sms :"]];
Amr Angry

3

// 이름과 번호로 메소드를 호출합니다.

-(void)openMessageViewWithName:(NSString*)contactName withPhone:(NSString *)phone{

CTTelephonyNetworkInfo *networkInfo=[[CTTelephonyNetworkInfo alloc]init];

CTCarrier *carrier=networkInfo.subscriberCellularProvider;

NSString *Countrycode = carrier.isoCountryCode;

if ([Countrycode length]>0)     //Check If Sim Inserted
{

    [self sendSMS:msg recipientList:[NSMutableArray arrayWithObject:phone]];
}
else
{

    [AlertHelper showAlert:@"Message" withMessage:@"No sim card inserted"];
}

}

// 메시지를 보내는 방법

- (void)sendSMS:(NSString *)bodyOfMessage recipientList:(NSMutableArray *)recipients{  
 MFMessageComposeViewController *controller1 = [[MFMessageComposeViewController alloc] init] ;
 controller1 = [[MFMessageComposeViewController alloc] init] ;
 if([MFMessageComposeViewController canSendText])
{
    controller1.body = bodyOfMessage;
    controller1.recipients = recipients;
    controller1.messageComposeDelegate = self;
    [self presentViewController:controller1 animated:YES completion:Nil];
 }
}

2

원하는 경우 class CoreTelephony라는 개인 프레임 워크 를 사용할 수 있습니다 CTMessageCenter. SMS를 보내는 몇 가지 방법이 있습니다.


1
그는 공식 SDK를 사용하여 이것이 가능한지 구체적으로 물었다.
Quentamia

1
개인 API에 대한 자세한 정보를 제공 할 수 있습니까? App Store에 게시 할 필요가 없기 때문에 개인 프레임 워크를 사용하는 데 아무런 문제가 없습니다.
Bagusflyer

1

이것을 사용하십시오 :

- (void)showSMSPicker
{
    Class messageClass = (NSClassFromString(@"MFMessageComposeViewController"));

    if (messageClass != nil) {          
        // Check whether the current device is configured for sending SMS messages
        if ([messageClass canSendText]) {
           [self displaySMSComposerSheet];
        }   
    }
}

- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result
{       
    //feedbackMsg.hidden = NO;
    // Notifies users about errors associated with the interface
    switch (result)
    {
        case MessageComposeResultCancelled:
        {   
            UIAlertView *alert1 = [[UIAlertView alloc] initWithTitle:@"Message" message:@"SMS sending canceled!!!" delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
            [alert1 show];
            [alert1 release];
        }   

        // feedbackMsg.text = @"Result: SMS sending canceled";
        break;

        case MessageComposeResultSent:
        {
            UIAlertView *alert2 = [[UIAlertView alloc] initWithTitle:@"Message" message:@"SMS sent!!!" delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
            [alert2 show];
            [alert2 release];
        }   

        // feedbackMsg.text = @"Result: SMS sent";
        break;

        case MessageComposeResultFailed:
        {   
            UIAlertView *alert3 = [[UIAlertView alloc] initWithTitle:@"Message" message:@"SMS sending failed!!!" delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
            [alert3 show];
            [alert3 release];
        }   

        // feedbackMsg.text = @"Result: SMS sending failed";
        break;

        default:
        {   
            UIAlertView *alert4 = [[UIAlertView alloc] initWithTitle:@"Message" message:@"SMS not sent!!!" delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
            [alert4 show];
            [alert4 release];
        }   

        // feedbackMsg.text = @"Result: SMS not sent";
        break;
    }

    [self dismissModalViewControllerAnimated: YES];
}

1
[[UIApplication sharedApplication]openURL:[NSURL URLWithString:@"sms:number"]] 

이것은 최선의 짧은 방법입니다.


1

MFMessageComposeViewController를 제공하면 SMS를 보낼 수 있지만 사용자 프롬프트 (보내기 버튼을 탭함)로 표시 할 수 있습니다. 사용자의 허락 없이는 그렇게 할 수 없습니다. iOS 11에서는 수신 메일을 필터링하는 것과 같은 확장 기능을 사용하여 iOS에 스팸 여부를 알려줍니다. SMS로 더 이상 할 수없는 일


신선한 답변!
Fattie

0

MFMessageComposeViewController 를 사용해야합니다자신의 앱에서 메시지 작성 및 전송을 표시 .

그렇지 않으면 sharedApplication 메소드를 사용할 수 있습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.