iOS应用调用系统打电话、发短信和发邮件功能

时间:2022-11-10 14:15:40

摘要:

在应用程序内,调用系统的功能来实现打电话、发短信和发邮件,通过电话号码或者邮箱,直接跳转到系统的功能界面。


PS:调试好像只能真机调试,模拟器没有反应,真机就可以跳转,不知道是不是必须真机,但方法肯定是可行的。


1、打电话

应用内调用系统打电话有两种方式:


1)WebView方式

使用WebView来跳转,把电话号码通过URL传递给WebView,这种方式会弹出是否要拨打的提示,可以选择拨打或者不拨打,打完也会自动回到应用界面,推荐

UIWebView *callWebview =[[UIWebView alloc] init];
NSURL *telURL =[NSURL URLWithString:[NSString stringWithFormat:@"tel:%@",self.phoneNumber.text]];
[callWebview loadRequest:[NSURLRequest requestWithURL:telURL]];
[self.view addSubview:callWebview];

URL中加入“tel:”开头,后接电话号码,系统就会识别为调用拨号器了。


2)UIApplication方式

使用UIApplication来跳转,同样传递和上一种方式同样的URL,这种方式不会弹出提示问你确认拨打与否,而是直接拨打,打完也会停在通讯录那,不会回到应用,不推荐。

NSURL *telURL =[NSURL URLWithString:[NSString stringWithFormat:@"tel:%@",self.phoneNumber.text]];
[[UIApplication sharedApplication] openURL:telURL];


2、发短信

应用内调用系统发短信也有两种方式,与打电话是一样的,唯一的不同是URL中要以“sms:”开头,这样就可以告诉系统要调用的是发短信功能:


1)WebView方式

使用WebView来跳转,把电话号码通过URL传递给WebView,这种方式会跳到短信界面发送,推荐

UIWebView *smsWebview =[[UIWebView alloc] init];
NSURL *telURL =[NSURL URLWithString:[NSString stringWithFormat:@"sms:%@",self.phoneNumber.text]];
[smsWebview loadRequest:[NSURLRequest requestWithURL:telURL]];
[self.view addSubview:smsWebview];

2)UIApplication方式

使用UIApplication来跳转,这种方式会在后台直接发送,不推荐。

NSURL *telURL =[NSURL URLWithString:[NSString stringWithFormat:@"sms:%@",self.phoneNumber.text]];
[[UIApplication sharedApplication] openURL:telURL];


3、发邮件

发邮件还是一样使用WebView的方式,与打电话、发短信都是一样的,要改的也是URL中要以“mailto:”开头,后接邮箱地址:

UIWebView *emailWebview =[[UIWebView alloc] init];
NSURL *emailURL =[NSURL URLWithString:[NSString stringWithFormat:@"mailto:%@",self.email.text]];
[emailWebview loadRequest:[NSURLRequest requestWithURL:emailURL]];
[self.view addSubview:emailWebview];

这样会跳转到系统自带的邮箱应用去。


在使用这些功能时,应该注意正则表达式检测手机号码、邮箱的格式等。

在这里可以下载我的示例工程:https://github.com/Cloudox/TelTest


转载请注明出处,谢谢