在 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 中以编程方式发送短信的主要内容,如果未能解决你的问题,请参考以下文章