iOS开发调用短信、邮件、通讯录等应用

本文介绍了在iOS开发中如何调用系统应用,如拨打电话、发送短信和邮件,以及如何访问和操作通讯录。通过UIApplication的OpenURL方法和MessageUI框架,可以方便地实现这些功能。同时,文章提到了MFMessageComposeViewController和MFMailComposeViewController的使用,以及AddressBook.framework在通讯录操作中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

iOS开发调用系统应用

调用系统的拨打电话、短信、邮件、浏览器应用

在开发某些应用时可能希望能够调用iOS系统内置的电话、短信、邮件、浏览器应用,此时你可以直接使用UIApplication的OpenURL:方法指定特定的协议来打开不同的系统应用。常用的协议如下:
- 打电话:tel:或者tel://、telprompt:或telprompt://(拨打电话前有提示)
- 发短信:sms:或者sms://
- 发送邮件:mailto:或者mailto://
- 启动浏览器:http:或者http://


下面以一个简单的demo演示如何调用上面几种系统应用:

#import "MainViewController.h"

@interface MainViewController ()

@end

@implementation MainViewController

-(void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    UIButton *call = [UIButton buttonWithType:UIButtonTypeSystem];
    call.frame = CGRectMake(100, 100, 100, 30);
    [self.view addSubview:call];
    [call setTitle:@"call" forState:UIControlStateNormal];
    [call addTarget:self action:@selector(callClick:) forControlEvents:UIControlEventTouchUpInside];

    UIButton *message = [UIButton buttonWithType:UIButtonTypeSystem];
    message.frame = CGRectMake(100, 150, 100, 30);
    [self.view addSubview:message];
    [message setTitle:@"message" forState:UIControlStateNormal];
    [message addTarget:self action:@selector(sendMessageClick:) forControlEvents:UIControlEventTouchUpInside];


    UIButton *email = [UIButton buttonWithType:UIButtonTypeSystem];
    email.frame = CGRectMake(100, 200, 100, 30);
    [self.view addSubview:email];
    [email setTitle:@"email" forState:UIControlStateNormal];
    [email addTarget:self action:@selector(sendEmailClick:) forControlEvents:UIControlEventTouchUpInside];

    UIButton *browser = [UIButton buttonWithType:UIButtonTypeSystem];
    browser.frame = CGRectMake(100, 250, 100, 30);
    [self.view addSubview:browser];
    [browser setTitle:@"browser" forState:UIControlStateNormal];
    [browser addTarget:self action:@selector(browseClick:) forControlEvents:UIControlEventTouchUpInside];

    UIButton *thirdParty = [UIButton buttonWithType:UIButtonTypeSystem];
    thirdParty.frame = CGRectMake(100, 300, 100, 30);
    [self.view addSubview:thirdParty];
    [thirdParty setTitle:@"thirdParty" forState:UIControlStateNormal];
    [thirdParty addTarget:self action:@selector(thirdPartyApplicationClick:) forControlEvents:UIControlEventTouchUpInside];



}

#pragma  mark ** UI事件
//打电话
- (IBAction)callClick:(id)sender
{
    NSString *phoneNumber = @"13956856323";
//    NSString *url = [NSString stringWithFormat:@"tel://%@",phoneNumber];//这种方式会直接拨打电话
    NSString *url = [NSString stringWithFormat:@"telprompt://%@",phoneNumber];//这种方式会提示用户是否拨打电话
    [self openUrl:url];

}

//发送短信
- (IBAction)sendMessageClick:(id)sender
{
    NSString *phoneNumber = @"13956856323";
    NSString *url = [NSString stringWithFormat:@"sms://%@",phoneNumber];
    [self openUrl:url];
}

//发送邮件
- (IBAction)sendEmailClick:(id)sender
{
    NSString *mailAddress = @"[email protected]";
    NSString *url = [NSString stringWithFormat:@"mailto://%@",mailAddress];
    [self openUrl:url];
}

//浏览网页
- (IBAction)browseClick:(id)sender
{
    NSString *url = @"http://www.baidu.com";
    [self openUrl:url];
}

#pragma  mark ** 私有方法
- (void)openUrl:(NSString *)urlStr
{
    //注意url中包括协议名称,iOS根据协议确定调用哪个应用,例如发送短信是"sms://"其中"//"可以省略写成"sms:"(其他协议也是如此)
    NSURL *url = [NSURL URLWithString:urlStr];
    UIApplication *application = [UIApplication sharedApplication];
    if (![application canOpenURL:url]) {
        NSLog(@"无法打开\"%@\",请确保此应用已经正确安装.",url);
        return;
    }
    [application openURL:url];
}

@end

系统服务

短信与邮件

调用系统内置的应用来发送短信、邮件相当简单,但是这么操作也存在着一些弊端:当

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值