iOS中发送短信的方法(如通讯录列表,邀请注册等)

在iOS开发过程中,我们可能会遇到这样的一个需求,需要调用原生的发送短信,用于自己的一些业务处理

首先,很简单的一个方法就是使用OpenURL的方式,如下

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"sms://需要发送的号码"]];

这个是最基础的调用原生组件的操作,比如打电话、打开网页、调用原生地图导航等等都可以使用openURL的方式

但是这个的一个明显缺点就是需要跳出当前程序,如果遇到需要监听用户操作,并且在程序内操作呢?其实苹果也帮我们想好了。

首先需要导入头文件

1.#import < MessageUI/MessageUI.h>

2.在需要调用发送短信的地方写上

if ([MFMessageComposeViewController canSendText]) {
        //  判断一下是否支持发送短信,比如模拟器
        MFMessageComposeViewController *messageVC = [[MFMessageComposeViewController alloc] init];
        messageVC.recipients = @[@"10086"]; //需要发送的手机号数组
        messageVC.body = @"发送的内容";
        messageVC.messageComposeDelegate = self; //指定代理
        [self presentViewController:messageVC animated:YES completion:nil];
    } else {
        [SVProgressHUD showErrorWithStatus:@"设备不支持短信功能"];
    }

3.当前控制器遵从代理方法 MFMessageComposeViewControllerDelegate

这里可以看到代理方法只有一个

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

简单理解的话,就是调用发送结束后对其中操作结果的回调处理

typedef NS_ENUM(NSInteger, MessageComposeResult) {
    MessageComposeResultCancelled,
    MessageComposeResultSent,
    MessageComposeResultFailed
} API_AVAILABLE(ios(4.0));


枚举MessageComposeResult,也只有三个结果:取消、点击了发送(并不一定发送成功)、失败

具体处理如下

#pragma mark MFmessageComposeViewControllerDelegate
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result {
    if (result == MessageComposeResultCancelled) {
        [controller dismissViewControllerAnimated:YES completion:nil];
    } else if (result == MessageComposeResultFailed) {
        [controller dismissViewControllerAnimated:YES completion:^{
            [SVProgressHUD showErrorWithStatus:@"邀请发送失败,请稍后重试"];
        }];
    } else {
        [controller dismissViewControllerAnimated:YES completion:^{
            [SVProgressHUD showErrorWithStatus:@"邀请发送成功"];
        }];
    }
}

由此也就完成了发送短信的需求,如果是选择联系人呢?其实苹果也处理好了,东西在下面的头文件里面,如果需要的,也可以查看一下,用法相似

#import 
#import 

你可能感兴趣的:(iOS中发送短信的方法(如通讯录列表,邀请注册等))