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

2021-11-23 11:04:38 浏览数 (1)

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

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

1、打电话

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

1)WebView方式

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

代码语言:javascript复制
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,这种方式不会弹出提示问你确认拨打与否,而是直接拨打,打完也会停在通讯录那,不会回到应用,不推荐。

代码语言:javascript复制
NSURL *telURL =[NSURL URLWithString:[NSString stringWithFormat:@"tel:%@",self.phoneNumber.text]];  
[[UIApplication sharedApplication] openURL:telURL];  

2、发短信

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

1)WebView方式

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

代码语言:javascript复制
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来跳转,这种方式会在后台直接发送,不推荐。

代码语言:javascript复制
NSURL *telURL =[NSURL URLWithString:[NSString stringWithFormat:@"sms:%@",self.phoneNumber.text]];  
[[UIApplication sharedApplication] openURL:telURL];  

3、发邮件

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

代码语言:javascript复制
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

0 人点赞