如何以编程方式向 iPhone 联系人列表中选定的特定号码发送 SMS?
问问题
4081 次
2 回答
4
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
这是目前从您的应用程序发送短信的唯一方式。除非你只想打开短信应用。如果您不担心消息的正文,可以这样做:
NSString *smsURL = @"sms:12345678";
NSURL *url = [NSURL URLWithString:smsURL];
[[UIApplication sharedApplication] openURL:url];
于 2011-02-01T06:03:15.793 回答
1
呃......我认为在这里进行一些讨论会有所帮助。我(可能是错误地)接受了这个问题,“......以编程方式发送短信......”意味着在幕后发送短信,MFMessageComposeViewController 弹出。
如果这是问题,则上述答案的绿色复选标记不正确。我将假设这就是问题所在(我敢打赌我不是唯一一个),并提供一些子弹来节省其他人我在这里所花费的时间。
- 堆栈中有一些安静的讨论,这不能在 iOS 中完成。在这里
- 适用于 Android的 cordova 插件做得很好
- iOS的cordova插件没有(暗示它不能完成。)
- 上面的代码无法运行。它是一种伪代码。presentModalViewController 上的动画:NO 阻止了 vc 弹出,但我总是以带有 MessageCancelled 的 didFinishWithResult 结束。
- 苹果阻止这种情况的性质是正确的。
于 2012-12-27T10:48:07.380 回答