Làm thế nào để lập trình gửi SMS trên iPhone?


526

Có ai biết nếu có thể, và làm thế nào, để lập trình gửi SMS từ iPhone, với SDK / Ca cao chính thức?


trong Ios 4 Bạn có thể gửi sms bằng mã nhưng vấn đề là ứng dụng của bạn sẽ bị đóng
Pankaj Kainthla

Nếu sử dụng SDK chính thức không phải là yêu cầu đối với người khác, tôi đã viết bài đăng này để cho biết cách thực hiện việc này bằng Twilio: twilio.com/blog/2016/11/ Kẻ
Megan Speir

bạn có thể tạo bảng tính google từ gmail của mình, tạo các trường bạn muốn, sau đó thực hiện tools->script editorvà trong yêu cầu POST, sử dụng MailApp.sendEmailapi để gửi email đến số điện thoại. att's is YOUNUMBER@mms.att.net, tmobile's là YOUNUMBER@tmomail.net Tôi nghĩ (TẤT CẢ MIỄN PHÍ)
Coty Embry

Câu trả lời:


404

Những hạn chế

Nếu bạn có thể gửi SMS trong một chương trình trên iPhone, bạn sẽ có thể viết các trò chơi spam mọi người trong nền. Tôi chắc chắn rằng bạn thực sự muốn có thư rác từ bạn bè của mình, "Hãy thử trò chơi mới này! Nó đánh lừa các võ sĩ của tôi, và bạn cũng sẽ như vậy! Roxxersboxxers.com !!!! Nếu bạn đăng ký ngay bây giờ, bạn sẽ nhận được 3.200 RB điểm !! "

Apple có các hạn chế đối với các hoạt động quay số và SMS tự động (hoặc thậm chí tự động một phần). (Hãy tưởng tượng nếu trò chơi thay vì quay số 911 vào một thời điểm cụ thể trong ngày)

Đặt cược tốt nhất của bạn là thiết lập một máy chủ trung gian trên internet sử dụng dịch vụ gửi SMS trực tuyến và gửi SMS qua tuyến đường đó nếu bạn cần tự động hóa hoàn toàn. (tức là chương trình của bạn trên iPhone sẽ gửi gói UDP đến máy chủ của bạn, nó sẽ gửi SMS thực sự)

Cập nhật iOS 4

Tuy nhiên, iOS 4 hiện cung cấp khả năng viewControllerbạn có thể nhập vào ứng dụng của mình. Bạn chuẩn bị trước các trường SMS, sau đó người dùng có thể bắt đầu gửi SMS trong bộ điều khiển. Không giống như sử dụng định dạng url "SMS: ...", điều này cho phép ứng dụng của bạn mở và cho phép bạn điền cả trường đến và trường cơ thể . Bạn thậm chí có thể chỉ định nhiều người nhận.

Điều này ngăn các ứng dụng gửi SMS tự động mà người dùng không biết rõ về nó. Bạn vẫn không thể gửi SMS hoàn toàn tự động từ chính iPhone, nó yêu cầu một số tương tác của người dùng. Nhưng điều này ít nhất cho phép bạn điền vào mọi thứ và tránh đóng ứng dụng.

Lớp MFMessageComposeViewControll được ghi chép tốt và các hướng dẫn cho thấy mức độ dễ thực hiện của nó.

Cập nhật iOS 5

iOS 5 bao gồm nhắn tin cho các thiết bị iPod touch và iPad, vì vậy trong khi tôi chưa tự mình kiểm tra điều này, có thể tất cả các thiết bị iOS sẽ có thể gửi SMS qua MFMessageComposeViewControll. Nếu đây là trường hợp, thì Apple đang chạy một máy chủ SMS gửi tin nhắn thay mặt cho các thiết bị không có modem di động.

Cập nhật iOS 6

Không có thay đổi đối với lớp học này.

Cập nhật iOS 7

Bây giờ bạn có thể kiểm tra xem liệu phương tiện tin nhắn bạn đang sử dụng có chấp nhận một chủ đề hoặc tệp đính kèm hay không và loại tệp đính kèm nào sẽ chấp nhận. Bạn có thể chỉnh sửa chủ đề và thêm tệp đính kèm vào tin nhắn, nơi phương tiện cho phép.

Cập nhật iOS 8

Không có thay đổi đối với lớp học này.

Cập nhật iOS 9

Không có thay đổi đối với lớp học này.

Cập nhật iOS 10

Không có thay đổi đối với lớp học này.

Cập nhật iOS 11

Không có thay đổi đáng kể cho lớp này

Hạn chế đối với lớp học này

Hãy nhớ rằng điều này sẽ không hoạt động trên điện thoại không có iOS 4 và nó sẽ không hoạt động trên iPod touch hoặc iPad, ngoại trừ, có lẽ, trong iOS 5. Bạn phải phát hiện các giới hạn của thiết bị và iOS trước khi sử dụng bộ điều khiển hoặc có nguy cơ hạn chế ứng dụng của bạn đối với các thiết bị 3G, 3GS và 4 iPhone được nâng cấp gần đây.

Tuy nhiên, một máy chủ trung gian gửi SMS sẽ cho phép bất kỳ và tất cả các thiết bị iOS này gửi SMS miễn là chúng có quyền truy cập internet, vì vậy đây vẫn có thể là một giải pháp tốt hơn cho nhiều ứng dụng. Cách khác, sử dụng cả hai và chỉ quay lại dịch vụ SMS trực tuyến khi thiết bị không hỗ trợ.


12
Và nếu bạn mua tên miền đó, tôi sẽ không bao giờ có thể nhìn bạn như cũ nữa.
Adam Davis

79
Tôi nghĩ thật mỉa mai khi ai đó gắn cờ bài đăng này là thư rác. Đọc giữa dòng, dân tộc!
Randolpho

2
-1 vì điều này đọc là đầu cơ. Ngoài ra, hãy xem câu trả lời của Jus 'Wondrin' và rydgaze về cách gửi SMS trong ứng dụng.
Frank Shearar

8
@Frank - Cập nhật bài viết của tôi để phản ánh các tính năng mới của iOS 4. Loại bỏ từ ngữ mơ mộng-ướt át.
Adam Davis

13
Tôi thực sự đánh giá cao việc bạn giữ bài đăng này được cập nhật cho các phiên bản iOS mới. :)
Ciryon 14/03/2016

143

Đây là một hướng dẫn thực hiện chính xác những gì bạn đang tìm kiếm : MFMessageComposeViewController.

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

Bản chất:

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];
}

Và một liên kết đến các tài liệu.

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


Tuy nhiên, hình thức SMS phải bật lên. Bất kỳ cách nào để gửi trong nền?
Raptor

5
Bạn chắc chắn có thể gửi SMS dưới nền bằng cách sử dụng một dịch vụ như Twilio, nhưng nếu bạn muốn gửi nó từ số điện thoại của người dùng, họ phải phê duyệt tin nhắn qua phương thức trên.
Daniel Amitay

3
bất cứ ai sử dụng mã trên có thể muốn xem xét đưa vào MFMessageComposeViewController *controller = ...bên trong khối if. (phương thức lớp không cần phải có một cá thể để thực hiện kiểm tra)
không đồng bộ hóa

Liên kết http://blog.mugunthkumar.com/coding/iphone-tutorial-how-to-send-in-app-sms/nói "502 Bad Gateway" trên máy tính xách tay của tôi. Có thể liên kết bị hỏng.
Nikita Vlasenko

99
  1. Bạn phải thêm MessageUI.framework vào dự án Xcode của bạn
  2. Bao gồm một #import <MessageUI/MessageUI.h>trong tệp tiêu đề của bạn
  3. Thêm các đại biểu này vào tệp tiêu đề của bạn MFMessageComposeViewControllerDelegate &UINavigationControllerDelegate
  4. Trong IBActionphương thức của bạn khai báo thể hiện của MFMessageComposeViewControllersaymessageInstance
  5. Để kiểm tra xem thiết bị của bạn có thể gửi sử dụng văn bản [MFMessageComposeViewController canSendText]trong điều kiện if hay không, thiết bị sẽ trả về Có / Không
  6. Trong ifđiều kiện làm những điều này:

    1. Đầu tiên thiết lập cơ thể cho bạn messageInstancelà:

      messageInstance.body = @"Hello from Shah";
    2. Sau đó quyết định người nhận tin nhắn là:

      messageInstance.recipients = [NSArray arrayWithObjects:@"12345678", @"87654321",         nil];
    3. Đặt một đại biểu cho thông điệp của bạn là:

      messageInstance.messageComposeDelegate = self;
    4. Trong dòng cuối cùng làm điều này:

      [self presentModalViewController:messageInstance animated:YES];

2
Phiên bản lưu ý: presentModalViewController:animated:không dùng nữa; sử dụng presentViewController:animated:completion:thay thế. Ngoài ra, hãy nhớ xác định phương thức ủy nhiệm - (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)resultnếu bạn muốn biết kết quả.
Raptor

Vui lòng đặt mã để kiểm tra. @Najeebullah Shah ở đây hoặc trong github.

50

Bạn có thể sử dụng sms:[target phone number]URL để mở ứng dụng SMS, nhưng không có chỉ dẫn nào về cách điền trước phần thân SMS bằng văn bản.


Reac -igen-Communications sử dụng tham số & body = để điền trước văn bản khi mở sms: targetphonenumber & body = textyouwanttoprefillwith cho iOS
Doug Voss

Tôi mới thử cái này trên iphone 8, và nó hoạt động rất tốt ... cảm ơn!
Brad

Tôi cần gửi một tin nhắn đến một số cụ thể nhưng với văn bản cơ thể được xác định trước (prefill). Văn bản cơ thể của Thos nên được lựa chọn thủ công từ 4 tùy chọn có thể. Ví dụ: Ứng dụng mở và cửa sổ bật lên "chọn lý do". Sau đó, 4 tùy chọn có sẵn. Tiếp theo, người dùng chọn một trong 4 tùy chọn này và sau đó SMS tự động được gửi có nội dung là lựa chọn của người dùng. mẹo nào?
seralouk

25

Một trong những hệ thống giao tiếp giữa các quá trình trong MacOS là XPC. Lớp hệ thống này đã được phát triển để liên lạc giữa các quá trình dựa trên việc chuyển các cấu trúc nguyên bản bằng libSystem và launchd. Trên thực tế, nó là một giao diện cho phép quản lý các quy trình thông qua việc trao đổi các cấu trúc như từ điển. Do di truyền, iOS 5 cũng sở hữu cơ chế này.

Bạn có thể đã hiểu những gì tôi muốn nói qua phần giới thiệu này. Đúng, có các dịch vụ hệ thống trong iOS bao gồm các công cụ để liên lạc XPC. Và tôi muốn làm gương với công việc bằng một daemon để gửi SMS. Tuy nhiên, cần đề cập rằng khả năng này đã được sửa trong iOS 6, nhưng có liên quan đến iOS 5.0. Jailbreak, Private Framework và các công cụ bất hợp pháp khác là không cần thiết để khai thác. Chỉ cần tập hợp các tệp tiêu đề từ thư mục / usr / include / xpc / * là cần thiết.

Một trong những yếu tố để gửi SMS trong iOS là dịch vụ hệ thống com.apple.chatkit, các nhiệm vụ bao gồm tạo, quản lý và gửi tin nhắn văn bản ngắn. Để dễ kiểm soát, nó có cổng giao tiếp có sẵn công khai com.apple.chatkit.clientcomposeserver.xpc. Sử dụng hệ thống con XPC, bạn có thể tạo và gửi tin nhắn mà không cần sự chấp thuận của người dùng. 

Chà, hãy thử tạo một kết nối.

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);

Bây giờ chúng tôi có kết nối XPC myConnection được đặt thành dịch vụ gửi SMS. Tuy nhiên, cấu hình XPC cung cấp cho việc tạo các kết nối bị treo mà chúng tôi cần thực hiện thêm một bước nữa để kích hoạt.

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);

Kết nối được kích hoạt. Ngay tại thời điểm này, iOS 6 sẽ hiển thị một thông báo trong nhật ký điện thoại rằng loại giao tiếp này bị cấm. Bây giờ chúng ta cần tạo một từ điển tương tự xpc_dipedia với dữ liệu cần thiết cho việc gửi tin nhắn.

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!");

Còn lại một chút: gửi tin nhắn đến cổng XPC và đảm bảo rằng nó được gửi.

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

Đó là tất cả. SMS đã được gửi.


1
Bạn không nên sử dụng XPC để gửi SMS. Ứng dụng được sản xuất sẽ không được Apple chấp thuận. Thay vào đó, hãy sử dụng MessageUI Framework
Raptor

Nếu bạn đang sử dụng techinique này cho ứng dụng mà bạn sử dụng cho tổ chức của mình và ứng dụng không đi qua cửa hàng ứng dụng, bạn không phải lo lắng.
Martin Berger

Điều này có hoạt động trên phiên bản iOS 10+ không?
Martin Berger

Nhận "Lỗi kết nối hộp cát XPC: Kết nối không hợp lệ" trên iOS 12
Martin Berger

23

Thêm MessageUI.Framework và sử dụng mã sau đây

#import <MessageUI/MessageUI.h> 

Và sau đó:

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];
}

và phương thức đại biểu -

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

này thật tuyệt, nhưng chúng ta có thể làm chức năng này từ nền không?
Raj

3
Apple sẽ không cho phép bạn gửi tin nhắn mà không có sự chấp thuận của người dùng. Anh ta phải gửi tin nhắn / mail bằng cách nhấn nút thủ công. Ngoài ra, bạn có thể sử dụng một dịch vụ tùy chỉnh bằng cách gửi email / số đến phần phụ trợ của bạn và sau đó gửi. Mặc dù bạn không thể làm điều này trực tiếp trên iPhone
Bharat Gulati

21

Bạn có thể sử dụng phương pháp này:

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


iOS sẽ tự động điều hướng từ ứng dụng của bạn đến trang soạn tin nhắn của ứng dụng tin nhắn. Vì lược đồ của URL bắt đầu bằng sms:, đây được xác định là một loại được ứng dụng tin nhắn nhận ra và khởi chạy nó.


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]; 
}

bạn sẽ thấy liên kết này: blog.mugunthkumar.com/coding/, nó sẽ giúp bạn
Banker Găngal

12

Làm theo thủ tục này

1.Thêm MessageUI.Frameworkdự ánnhập mô tả hình ảnh ở đây

2. Nhập khẩu#import <MessageUI/MessageUI.h> vào tệp .h.

3. Sao chép mã này để gửi tin nhắn

 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 . Thực hiện delegatephương pháp nếu bạn muốn.

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


   ///your stuff here 

    [self dismissViewControllerAnimated:YES completion:nil];
}

Chạy và đi!


đáng nói là có lẽ bạn sẽ muốn chạy [self dismissViewControllerAnimated:YES completion:nil];bên trong messageComposeViewController: didFinishWithResult:phương thức gọi lại. Khác nó sẽ chỉ treo ở đó.
SaltyNuts

5

Đây là phiên bản mã Swift để gửi SMS trong iOS. Xin lưu ý rằng nó chỉ hoạt động trong các thiết bị thực. Mã được thử nghiệm trong iOS 7+. Bạn có thể đọc thêm ở đây .

1) Tạo một Class mới kế thừa MFMessageComposeViewControllDelegate và 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) Cách sử dụng lớp này:

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

Có một lớp trong iOS 4 hỗ trợ gửi tin nhắn với cơ thể và người nhận từ ứng dụng của bạn. Nó hoạt động tương tự như gửi thư. Bạn có thể tìm tài liệu ở đây: liên kết văn bản


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
thông số của bạn hữu ích như thế nào?
martinsurleweb

[[UIApplication sharedApplication] openURL: [NSURL URLWithString: @ "sms:"]];
Amr tức giận

3

// gọi phương thức với tên và số.

-(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"];
}

}

// Phương thức gửi tin nhắn

- (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

Nếu bạn muốn, bạn có thể sử dụng khung riêng CoreTelephonygọi là CTMessageCenterlớp. Có một vài phương thức để gửi sms.


1
Ông đặc biệt hỏi liệu điều này có thể sử dụng SDK chính thức không.
Quentamia

1
Bạn có thể cung cấp thêm thông tin về api tư nhân? Tôi không có vấn đề gì khi sử dụng khung riêng tư vì tôi không cần phải xuất bản nó lên App Store.
Bagusflyer

1

Dùng cái này:

- (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"]] 

Đây sẽ là cách tốt nhất và ngắn để làm điều đó.


1

Bạn có thể trình bày MFMessageComposeViewControll, có thể gửi SMS, nhưng với lời nhắc của người dùng (anh ta nhấn nút gửi). Không có cách nào để làm điều đó mà không có sự cho phép của người dùng. Trên iOS 11, bạn có thể tạo tiện ích mở rộng, có thể giống như bộ lọc cho các tin nhắn đến, báo cho iOS biết có phải spam hay không. Không có gì hơn với SMS không thể được thực hiện


Câu trả lời mới!
Fattie

0

Bạn cần sử dụng MFMessageComposeViewControll nếu bạn muốn hiển thị việc tạo và gửi tin nhắn trong ứng dụng của riêng bạn.

Nếu không, bạn có thể sử dụng phương thức sharedApplication .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.