发送短信功能使用MFMessageComposeViewController来显示图形界面。
iOS4.0及以上版本才支持发送短信功能。若在iOS3.0上运行的话,会提示dyld: Symbol not found: _OBJC_CLASS_$_MFMessageComposeViewController .解决方案:
MessageUI.framework的引入类型应选择weak(在target -> Get Info -> General -> Linked Libraries -> MessageUI.framework -> Type 里修改)
1、添加框架、导入头文件及设置代理
1-1、MessageUI.Framework
1-2、#import <MessageUI/MessageUI.h>
1-3、MFMessageComposeViewControllerDelegate
2、发送短信
- (void)showSMSPicker:(id)sender
{
Class messageClass = (NSClassFromString(@”MFMessageComposeViewController”));
if (messageClass)
{
if ([messageClass canSendText])
{
[self displaySMSComposerSheet];
}
else
{
NSLog(@"设备没有短信功能");
}
}
else
{
NSLog(@"iOS版本过低,iOS4.0以上才支持程序内发送短信");
}
}
- (void)displaySMSComposerSheet
{
MFMessageComposeViewController *picker = [[MFMessageComposeViewController alloc] init];
picker.messageComposeDelegate = self;
NSMutableString* absUrl = [[NSMutableString alloc] initWithString:web.request.URL.absoluteString];
[absUrl replaceOccurrencesOfString:@"http://i.aizheke.com" withString:@"http://m.aizheke.com" options:NSCaseInsensitiveSearch range:NSMakeRange(0, [absUrl length])];
picker.body = [NSString stringWithFormat:@"我在爱折客上看到:%@ 可能对你有用,推荐给你!link:%@"
,[web stringByEvaluatingJavaScriptFromString:@"document.title"]
,absUrl];
[self presentModalViewController:picker animated:YES];
}
3、代理回调方法
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller
didFinishWithResult:(MessageComposeResult)result
{
switch (result)
{
case MessageComposeResultCancelled:NSLog(@”Result: SMS sending canceled”);break;
case MessageComposeResultSent:NSLog(@”Result: SMS sent”);break;
case MessageComposeResultFailed:NSLog(@"短信发送失败");break;
default:NSLog(@”Result: SMS not sent”);break;
}
[self dismissModalViewControllerAnimated:YES];
}