iOS学习笔记28-系统服务(一)短信和邮件

2020-04-27 作者:编程知识要点   |   浏览(126)

在iOS开发中,有时候我们需要使用到发送邮件的功能,比如说接收用户的反馈信息、APP的崩溃情况的通知等等。

iOS学习笔记28-系统服务(一)短信和邮件

iOS系统提供了两种原生方式已供开发者发送邮件:1)openURL

一、系统应用

在开发某些应用时,我们可能希望能够调用iOS系统内置的电话、短信、邮件、浏览器应用,或者直接调用安装的第三方应用,这个要怎么实现呢?

——用户体验较差,程序会进入后台,跳转至邮件发送界面。

这里统一使用UIApplication的一个对象方法来实现:
//打开不同的系统应用
- (void)openUrl:(NSURL *)url;

那怎么区分我是要打电话还是发短信等等呢?
之前我们学习网络的时候,是不是URL最前面使用的是http://,使用本地文件是不是前面就变成file://了,这就是URL的协议,我们就是控制URL的协议,来打开不同应用。

2)MFMailComposeViewController

下面列出了一些系统应用URL协议:

tel://tel:打电话,没有提示直接拨打 telprompt://telprompt:打电话,拨打电话前有提示用户是否拨打电话 sms://sms:发短信 mailto://mailto:发邮件 http://http:打开浏览器

——不会进入后台,使用模态弹出邮件发送视图。

下面就是具体实例演示:

使用到的库:SKPSMTPMessage下载地址:

1. 有提示的打电话
//打电话
- (void)telpromptTest{
    //电话号码
    NSString *phoneNumber = @"18500138888";
    //1.创建打电话URL路径,这种方式会提示用户确认是否拨打电话
    NSString *urlStr = [NSString stringWithFormat:@"telprompt://%@",phoneNumber];
    //2.生成URL
    NSURL *url = [NSURL URLWithString:urlStr];
    //3.打开系统应用
    UIApplication *application = [UIApplication sharedApplication];
    [application openURL:url];
}

—— 你可以不需要告知用户将要进行邮件发送的事情,我在想这个是不是不符合苹果的理论。当然你也可以在发送之前弄个弹出框告知用户,并让用户选择是否发送。

2. 发短信
//发送短信
- (void)sendMessageTest{
    //电话号码
    NSString *phoneNumber = @"18500138888";
    //1.创建发短信URL路径
    NSString *urlStr = [NSString stringWithFormat:@"sms://%@",phoneNumber];
    //2.生成URL
    NSURL *url = [NSURL URLWithString:urlStr];
    //3.打开系统应用
    UIApplication *application = [UIApplication sharedApplication];
    [application openURL:url];
}

小主在Xcode 8.1,真机(iOS 10.2.1)环境下亲测通过,这里就如何使用该库做一下说明,希望对其他有需要的同学有帮助。

3. 发邮件
//发送邮件
- (void)sendEmailTest {
    NSString *mailAddress = @"[email protected]";
    //1.创建发邮件URL路径
    NSString *urlStr = [NSString stringWithFormat:@"mailto://%@",mailAddress];
    //2.生成URL
    NSURL *url = [NSURL URLWithString:urlStr];
    //3.打开系统应用
    UIApplication *application = [UIApplication sharedApplication];
    [application openURL:url];
}

1、工程配置

我是手动导进工程里,因为该库是使用MRC开发的,所以就要设置进行相应的设置。在项目的build phrases->compile source->找到SKPSMTPMessage.m,NSStream+SKPSMTPExtensions.m这两个文件,双击后再弹框中添加-fno-objc-arc。可见图例:

图片 1工程配置.png

4. 打开浏览器
//浏览网页
- (void)browserTest {
    //1.创建打开浏览器URL路径
    NSString *urlStr = @"http://www.baidu.com";
    //2.生成URL
    NSURL *url = [NSURL URLWithString:urlStr];
    //3.打开系统应用
    UIApplication *application = [UIApplication sharedApplication];
    [application openURL:url];
}

上面打开的是系统应用,实际上openUrl的功能是只要是系统安装了的应用程序,都可以打开,比如假设你现在开发了一个应用A,如果用户机器上已经安装了此应用,并且在应用B中希望能够直接打开A,也是可以用openUrl实现,不过要进行一些配置。

本文由永利官网发布于编程知识要点,转载请注明出处:iOS学习笔记28-系统服务(一)短信和邮件

关键词: