iOS 打电话、发短信、发邮件


iPhone打电话功能:

方法一:直接拨打电话,但拨打完后不能反回到原应用界面

openURL用于打开资源,如:打电话、发短信、发邮件、跳转到其他应用、网页等

NSURL *url = [NSURL URLWithString:@"tel://123456"];
[[UIApplication sharedApplication] openURL:url];

方法二:拨打前会出现弹框提醒,拨打完后也可以反回应用界面,但这是苹果的私有API,上架软件不能使用此方法

NSURL *url = [NSURL URLWithString:@"telprompt://123456"];
[[UIApplication sharedApplication] openURL:url];

方法三:创建一个UIWebView来加载URL,拨打时有弹框提示,拨打完后能反回到拨打应用界面,推荐使用

注意:_webView不需要显示,即不需要写[self.view addSubview: _webView];否则会挡住其他界面

@property (nonatomic,  strong) UIWebView *webView;


if (_webView == nil) {
    _webView = [[UIWebView alloc] init];
}
[_webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"tel://123456"]]];


          iPhone发短信功能:

           方法一:跳至系统发短信页面,但同样发完短信不回反回原应用

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

[[UIApplication sharedApplication] openURL:url];

  方法二:弹出发短信页面,关闭后反回原应用,推荐使用

导入系统发短信框架:

#import

// 判断手机能否发短信,模拟器中不能,不写会崩溃
if (![MFMessageComposeViewController canSendText]) return;

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

message .body = @"你好,这是我要发的短信内容";
// 设置收件人列表
message .recipients = @[@"123456", @"7890-45678"];
// 设置代理
message .messageComposeDelegate = self;
//从当前控制器跳转显示发短信界面
[self presentViewController:message   animated:YES completion:nil];


当关闭短信页面后调用的代理方法:

- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult: (MessageComposeResult)result
{
    // 关闭短信界面,反回原应用
    [controller dismissViewControllerAnimated:YES completion:nil];
    //result反回发送状态
    if (result == MessageComposeResultCancelled) {
         NSLog(@"取消发送");
    } else if (result == MessageComposeResultSent) {
        NSLog(@"发送成功");
    } else {
          NSLog(@"发送失败");
    }
}


iPhone发邮件功能:(类似发短信)

方法一:

NSURL *url = [NSURL URLWithString:@"mailto://123456@qq.com"];
[[UIApplication sharedApplication] openURL:url];

方法二:

// 判断手机能否发邮件,模拟器中不能,不写会崩溃
if (![MFMailComposeViewController canSendMail]) return;

MFMailComposeViewController *email= [[MFMailComposeViewController alloc] init];


// 设置邮件主题
[email  setSubject:@"约会"];
// 设置邮件内容
[email  setMessageBody:@"明天在图书馆见" isHTML:NO];
// 设置收件人列表
[email  setToRecipients:@[@"[email protected]"]];
// 设置抄送人列表
[email  setCcRecipients:@[@"[email protected]"]];
// 设置密送人列表
[email  setBccRecipients:@[@"[email protected]"]];

// 发送图片附件
UIImage *image = [UIImage imageNamed:@"image.png"];
NSData *data = UIImageJPEGRepresentation(image, 0.4);
[vc addAttachmentData:data mimeType:@"image/png" fileName:@"image.png"];

//发送其他附件

//NSData *data = [NSData datawithContentsOfFile:@"file.doc"]
// 设置代理
email.mailComposeDelegate = self;
// 显示控制器
[self presentViewController:email  animated:YES completion:nil];


当关闭发邮件页面后调用的代理方法:

- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult: (MFMailComposeResult)result error:(NSError *)error
{

    // 关闭邮件界面
    [controller dismissViewControllerAnimated:YES completion:nil];
     //result 反回发送状态
    if (result == MFMailComposeResultCancelled) {
        NSLog(@"取消发送");
    } else if (result == MFMailComposeResultSent) {
               NSLog(@"发送成功");
   } else {
       NSLog(@"发送失败");
    }
   }


















你可能感兴趣的:(iOS基础)