发短信

#pragma mark - 发短信(调用系统短信程序)

/**

 *  这种方式的缺点是没办法从系统短信回到自己的应用程序

 *  首先通过[[UIApplication sharedApplication]canOpenURL:[NSURL URLWithString:@"sms://"]]来判断当前的设备是否能跳转到系统的短信程序,如果能的话直接通过openUrl跳转到系统的短信发送界面来发送短信,如果不能跳转,提醒用户当前设备不能发送短信

 *

 *  模拟器不能发送短信

 */

- (IBAction)sendMessage:(id)sender

{

    NSURL *url = [NSURL URLWithString:@"sms:10086"];

    if ([[UIApplication sharedApplication] canOpenURL:url]) {

        [[UIApplication sharedApplication] openURL:url];// 通过openUrl:可以实现调用系统电话 短信 邮件 浏览器 地图和手机内的第三方程序等功能,sms:// 后面跟的是要发送短信的人的号码

    }else{

        UIAlertView *alterView = [[UIAlertView alloc] initWithTitle:@"该设备不能发送短信" message:nil delegate:self cancelButtonTitle:@"关闭" otherButtonTitles: nil];

        [alterView show];

    }

}

#pragma mark - 打电话

- (IBAction)takePhone:(id)sender

{

    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://10086"]];

    

}

#pragma mark - 发邮件

- (IBAction)sendEmail:(id)sender

{

    if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"mailto://***@email.com"]]) {

        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"mailto://***@email.com"]];

    }


}

#pragma mark - 在程序内直接发送短信

- (IBAction)sendMessageInApp:(id)sender {

    /**

     *  这种方法的优点是不用跳出程序,直接在当前程序完成短信发送功能

     *  iOS4.0提供了MFMessageComposeViewControllerMFMessageComposeViewControllerDelegate来进行短信发送,可以不用跳出程序外

     *  如果直接在程序内发短信的话,使用MFMessageComposeViewController,需要导入UIMessageUI.framework

     *  在使用之前必须检查canSendText方法,若返回NO则不应该将MFMessageComposeViewController展现出来,而应该提示用户当前设备不支持发送短信功能

     *  要发送的短信内容和收件人在展示MFMessageComposeViewController之前需要初始化好,展现之后的短信内容不能通过程序来进行修改,不过用户仍然可以手动修改短信内容和选择收件人

     *  如果用户点了发送或者取消,或者发送失败时,MFMessageComposeViewControllermessageComposeViewController:didFinishWithResult:方法都能得到通知,在这里进行相应的处理

     */

    Class messageClass = (NSClassFromString(@"MFMessageComposeViewController"));

    if (messageClass != nil) {

        // 首先检查当前设备支持短信发送功能

        if ([messageClass canSendText]) {

            [self displaySMSComposerSheet];

        }else{

            UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"当前设备不支持发送短信" message:nil delegate:nil cancelButtonTitle:@"关闭" otherButtonTitles: nil];

            [alertView show];

        }

    }

    

}

#pragma mark - 发送短信

- (void)displaySMSComposerSheet

{

    MFMessageComposeViewController *messagePicker = [[MFMessageComposeViewController alloc] init];

    messagePicker.messageComposeDelegate = self; // 设置messagePickerself,用来监控短信发送状态

    NSMutableString *stringUrl = [[NSMutableString alloc] initWithString:@"要发送的内容写在这里,展示以后不能被修改了"]; // 要发送的短信内容和收件人在展示MFMessageComposeViewController之前需要初始化好,展现之后的短信内容不能通过程序来进行修改,不过用户仍然可以手动修改短信内容和选择收件人

    messagePicker.body = [NSString stringWithFormat:@"%@",stringUrl];

    [self presentViewController:messagePicker animated:YES completion:^{

        

    }];

    

}

#pragma mark - MFMessageComposeViewControllerDelegate

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

{

    switch (result) {

        case MessageComposeResultCancelled:

        {

            NSLog(@"取消发送信息");

            break;

        }

        case MessageComposeResultSent:

        {

            NSLog(@"短信发送成功");

            break;

        }

        case MessageComposeResultFailed:

        {

            NSLog(@"短信发送失败");

            break;

        }


        default:

        {

            NSLog(@"信息未发送");

            break;

        }

    }

    [self dismissViewControllerAnimated:YES completion:^{

        

    }];

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值