swift UI专项训练40 用swift实现打电话和发短信功能

简介:    今天来讲一下如何让我们的APP可以访问系统的短信和电话功能。首先来说短信功能,比较简单,跟之前的做法差别不大,要使用UIApplication,它是一个单例。

   今天来讲一下如何让我们的APP可以访问系统的短信和电话功能。首先来说短信功能,比较简单,跟之前的做法差别不大,要使用UIApplication,它是一个单例。我们的功能是点击一个按钮,然后拨通一个内置的电话,需要在button的action中加入如下语句:

   @IBAction func phoneBtn(sender:UIButton){
       // var url1 = NSURL(string: "tel://"+canguanArray[0].tel)
        var url1 = NSURL(string: "tel://10086")
        UIApplication.sharedApplication().openURL(url1!)
    }

tel关键字代表电话,跟之前oc上的做法差不多,如果要拨打的电话是传值获得的,参考注释中的写法。除了tel关键字,还有sms关键字:

        var url1 = NSURL(string: "sms://10086")

这样的话是打开了10086的短信界面,如果我们要打开一个浏览器界面,使用下面代码:

 var url1 = NSURL(string: "http://blog.csdn.net/cg1991130")

不过使用这种方法发短信不能设置短信的内容,只能设置收信人。如果我们想要自定义发短信的内容的话,使用下面的方法:

首先在vc中导入头文件:

import MessageUI

之后让vc继承MFMessageCompose的代理:

class CaipinDetailViewController: UIViewController,MFMessageComposeViewControllerDelegate 
func canSendText() -> Bool{
    return MFMessageComposeViewController.canSendText()
    }//用来指示一条消息能否从用户处发送
    func configuredMessageComposeViewController() -> MFMessageComposeViewController{
    let messageComposeVC = MFMessageComposeViewController()
        messageComposeVC.messageComposeDelegate = self
        messageComposeVC.body = "HI! \(caipinArray[0].rest) 的 \(caipinArray[0].name) 味道很不错,邀你共享 -来自SoFun的邀请"
        return messageComposeVC
        
    }
     func messageComposeViewController(controller: MFMessageComposeViewController!, didFinishWithResult result: MessageComposeResult) {
        controller.dismissViewControllerAnimated(true, completion: nil)
    }

然后在按钮的action方法中加入以下代码:

   @IBAction func share(sender: UIButton) {
        let shareView = ShareViewController()
        self.presentViewController(shareView, animated: true, completion: nil)
    }
    @IBAction func message(sender: UIButton) {
        if self.canSendText(){
        let messageVC = self.configuredMessageComposeViewController()
          presentViewController(messageVC, animated: true, completion: nil)
        } else {
        let errorAlert = UIAlertView(title: "不能发送", message: "你的设备没有短信功能", delegate: self, cancelButtonTitle: "取消")
        }

        
    }

我们在真机上测试一下,效果图:




目录
相关文章
|
7月前
|
前端开发
使用element-ui中的table时,当有多选又有翻页功能时,点击翻页后之前选中的数据丢失
使用element-ui中的table时,当有多选又有翻页功能时,点击翻页后之前选中的数据丢失
202 0
|
16天前
「Mac畅玩鸿蒙与硬件26」UI互动应用篇3 - 倒计时和提醒功能实现
本篇将带领你实现一个倒计时和提醒功能的应用,用户可以设置倒计时时间并开始计时。当倒计时结束时,应用会显示提醒。该项目涉及时间控制、状态管理和用户交互,是学习鸿蒙应用开发的绝佳实践项目。
58 2
「Mac畅玩鸿蒙与硬件26」UI互动应用篇3 - 倒计时和提醒功能实现
|
3月前
|
搜索推荐 前端开发 C#
推荐7款美观且功能强大的WPF UI库
推荐7款美观且功能强大的WPF UI库
130 2
|
4月前
|
测试技术 Swift iOS开发
探索iOS自动化测试:使用Swift编写UI测试
【8月更文挑战第31天】在软件开发的海洋中,自动化测试是保证船只不偏离航线的灯塔。本文将带领读者启航,深入探索iOS应用的自动化UI测试。我们将通过Swift语言,点亮代码的灯塔,照亮测试的道路。文章不仅会展示如何搭建测试环境,还会提供实用的代码示例,让理论知识在实践中生根发芽。无论你是新手还是有经验的开发者,这篇文章都将是你技能提升之旅的宝贵指南。
|
4月前
|
图形学
小功能⭐️Unity获取点击到的UI
小功能⭐️Unity获取点击到的UI
|
4月前
|
图形学
小功能⭐️Unity判断是否单击到了UI
小功能⭐️Unity判断是否单击到了UI
|
4月前
|
图形学
小功能⭐️不用传参,Unity获得鼠标悬浮处的物体、UI!
小功能⭐️不用传参,Unity获得鼠标悬浮处的物体、UI!
|
4月前
|
图形学
小功能⭐️解决Unity 3D UI遮挡穿透问题
小功能⭐️解决Unity 3D UI遮挡穿透问题
|
4月前
|
JavaScript 前端开发 Shell
Element-ui Table表格导出功能的实现
Element-ui Table表格导出功能的实现
73 0
|
JavaScript
vue + element-ui + vue-clipboard2 实现文字复制粘贴功能与提示
1、在所在项目下安装插件 ```js npm install vue-clipboard2 --save ``` 2、在所在项目的index.js注入vue-clipboard2 ```js import VueClipboard from 'vue-clipboard2' Vue.use(VueClipboard) ``` 3、使用 ```html <div> <el-button size="mini" type="primary" icon="el-icon-copy-document" round class="copy-btn" v-clipboard:copy="要
194 2