在 iphone 中以编程方式发送短信

Posted

技术标签:

【中文标题】在 iphone 中以编程方式发送短信【英文标题】:sending sms programmatically in iphone 【发布时间】:2011-02-01 05:23:09 【问题描述】:

如何以编程方式向 iPhone 联系人列表中选定的特定号码发送 SMS?

【问题讨论】:

[iphone 4.0 以编程方式发送短信](***.com/questions/3758664/…)的可能副本 【参考方案1】:

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

这是目前从您的应用发送短信的唯一方式。除非你只想打开短信应用。如果您不担心邮件正文,可以这样做:

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

【讨论】:

不是messageComposeDelegate 而不是delegate 吗?【参考方案2】:

呃...我认为在这里进行一些讨论会有所帮助。 我(可能是错误地)接受了这个问题,“......以编程方式发送短信......”意味着在幕后发送短信,没有 MFMessageComposeViewController 弹出。

如果这是问题,则上述答案的绿色复选标记不正确。我将假设这就是问题所在(我敢打赌我不是唯一一个),并提供一些子弹来节省其他人我在这里所花费的时间。

    堆栈中有一点discussion,这在ios 中是无法完成的。和here cordova 插件for android 做得很好 cordova 插件for iOS 没有(暗示无法完成。) 上面的代码无法运行。它是一种伪代码。 presentModalViewController 上的动画:NO 阻止了 vc 弹出,但我总是以带有 MessageCancelled 的 didFinishWithResult 结束。 Apple 有权阻止这种情况。

【讨论】:

以上是关于在 iphone 中以编程方式发送短信的主要内容,如果未能解决你的问题,请参考以下文章

iPhone通过蓝牙发送短信

如何在android中以编程方式从收件箱中删除所有短信?

如何使用 Apex 在 SalesForce 中以编程方式访问报告

以编程方式停止向iPhone发送消息

如何在不使用移动网络的情况下向自己发送假短信?

在 Sprite Kit 中以编程方式发送邮件