iOS:电话分享、短信分享和邮件分享

在很多App里面我们都会看到分享给朋友的选项,一般是电话分享、短信分享和邮件分享.

电话分享:

第一反应肯定是调用Application的openURL:方法,但是这种方法是有问题的.
并且这个方法在iOS10里面也已经过期了,改用openURL: options: completionHandler方法.
<span style="font-size:18px;">    NSURL *url = [NSURL URLWithString:@"tel://10010"];
    [[UIApplication sharedApplication] openURL:url options:@{} completionHandler:^(BOOL success) {
        
    }];</span>
这种方法的问题就是没有提示电话就直接打过去了,有时候用户会不小心按错所以不是很好.

openURL: options: completionHandler方法的options是一个字典,这里传一个空字典也是可以正常运行的,其实在UIApplication类中这个字典有一个名为UIApplicationOpenURLOptionUniversalLinksOnly的键,值为@YES代表通过URL代表的应用来打开,值为@NO代表通过safari来打开.

文档中是这样描述的:


还可以将URL写成telprompt这种形式但是在程序上架的时候会遇到问题,所以也是不可取的.

<span style="font-size:14px;">    </span><span style="font-size:18px;">NSURL *url = [NSURL URLWithString:@"telprompt://10010"];
    [[UIApplication sharedApplication] openURL:url options:@{UIApplicationOpenURLOptionUniversalLinksOnly:@NO} completionHandler:^(BOOL success) {
        
    }];</span>

下面介绍一种可行的方法,就是让webView来加载URLRequest的方式来执行.

   <span style="font-size:18px;"> //不设置webView的frame,所以webView就不显示
    UIWebView *webView = [[UIWebView alloc]init];
    [self.view addSubview:webView];
    NSURL *url = [NSURL URLWithString:@"tel://10010"];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    [webView loadRequest:request];</span>
这种方法有提示在上架的时候也不会出现问题.


短信分享:

如果还是用openURL方法的话是能跳转到短信界面的,但是什么内容都没有.

用户在分享的时候不可能自己去写短信,所以这种方法是没有意义的.

如果要实现跳转到发短信界面并且填好里面内容的话需要导入UIMessageUI框架,这个框架中的MFMessageComposeViewController可以实现短信分享效果.

<span style="font-size:14px;">   </span><span style="font-size:18px;"> if (![MFMessageComposeViewController canSendText]) {
        return;
    }
    MFMessageComposeViewController *messageVC = [[MFMessageComposeViewController alloc]init];
    //短信内容
    messageVC.body = @"跟你分享一个超赞的App";
    //短信收件人
    messageVC.recipients = @[@"10086",@"10010"];
    //MFMessageComposeViewConreoller的代理
    messageVC.messageComposeDelegate = self;
    [self presentViewController:messageVC animated:YES completion:nil];</span>

<span style="font-size:18px;">//MFMessageComposeViewConreoller的代理方法 点击取消按钮回到原来的应用
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result{
    [self dismissViewControllerAnimated:YES completion:nil];
}</span>


邮件分享:

邮件分享与短信分享类似,都是需要导入MessageUI框架,实现邮件分享的控制器是MFMailComposeViewController
 <span style="font-size:18px;">   //如果不能发送邮件就返回
    if (![MFMailComposeViewController canSendMail]) {
        return;
    }
    MFMailComposeViewController *mailVC = [[MFMailComposeViewController alloc]init];
    //收件人列表
    [mailVC setToRecipients:@[@"drenhart@163.com",@"12222@163.com"]];
    //抄送
    [mailVC setCcRecipients:@[@"123144@163.com"]];
    //密送
    [mailVC setBccRecipients:@[@"987676@163.com"]];
    //主题
    [mailVC setSubject:@"跟你分享一个超赞的App"];
    //内容
    [mailVC setMessageBody:@"推荐使用xxx应用 wwww.aaaaa.com" isHTML:NO];
    //附件
    UIImage *img = [UIImage imageNamed:@"rockstar programmer"];
    NSData *data = UIImagePNGRepresentation(img);
    [mailVC addAttachmentData:data mimeType:@"image/jpg" fileName:@"rockstar programmer.jpg"];
    //MFMailComposeViewConreoller的代理
    mailVC.mailComposeDelegate = self;
    [self presentViewController:mailVC animated:YES completion:nil];</span>

<span style="font-size:18px;">//MFMailComposeViewConreoller的代理方法 点击取消或者发送按钮回到原来的应用
- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error{
    [self dismissViewControllerAnimated:YES completion:nil];
}</span>






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值