iOS开发之调用系统打电话发短信接口以及程序内发短信

  在本篇博客开头呢,先说一下写本篇的博客的原因吧。目前在做一个小项目,要用到在本应用程序内发验证码给其他用户,怎么在应用内发送短信的具体细节想不大起来了,于是就百度了一下,发现也有关于这方面的博客,点进去看了看,个人感到有点小失望,写的太不详细,只是简单的代码罗列,而且代码也没注释,大概是因为太简单了吧。今天在做完项目的发短信功能后感觉有必要把这部分内容整理一下,做个纪念也是好的不是吗。废话少说,切入今天的正题。下面的发短信,打电话当然需要真机测试了。

  一、调用系统功能

    在iOS中打开系统本身的打电话和发短信功能还是比较简单的,之前在SSO中也提了一嘴,iOS中可以由一个应用打开另一个应用,只需要一行代码,打电话,发短信,发email,开网页也是一样的 ,只是用的协议不一样。

    1.打电话

      这个还是比较简单的,下面是打电话的代码:%@的内容是手机号self.myApplication是Application的单例。

 

    2.发短信

      发送短信只是和打电话用的协议不一样改一下协议就可以打电话了

 

    3、发email

      也是换一下协议即可

    

    4.打开网址

 

  二、在本应用中打开

    上面的方法都是打开相应的应用程序,然后做相应的事情,那么我们如何在本应用中就可以给我们的用户发送短信呢?下面就让我们来实现这个功能

    1.引入我们要用的framework(其实在应用程序内发送短信和ImagePickerViewController的用法极为的相似,没有什么困难的地方),我们需要引入MessageUI.framework,入下图

 

    2.在pch文件导入相应头文件

    3.下面是实现发送短信的核心代码

      (1)判断设备是否有发送短信的功能代码如下:

//发送短信的方法
-(void)sendMessage
{
    //用于判断是否有发送短信的功能(模拟器上就没有短信功能)
    Class messageClass = (NSClassFromString(@"MFMessageComposeViewController"));

    //判断是否有短信功能
    if (messageClass != nil) {
          //有发送功能要做的事情
    }
    else
    {

         UIAlertView *alterView = [[UIAlertView alloc] initWithTitle:@"提示" message:@"iOS版本过低(iOS4.0以后)" delegate:nil cancelButtonTitle:@"取消" otherButtonTitles:nil];

        [alterView show];
    }

}

  

    (2).如果有发送短信功能的话,就得判断iOS版本释放支持"MFMessageComposeViewController". iOS4.0之后支持

//有短信功能
        if ([messageClass canSendText]) {
              //发送短信
        }
        else
        {
            UIAlertView *alterView = [[UIAlertView alloc] initWithTitle:@"提示" message:@"该设备没有发送短信的功能~" delegate:nil cancelButtonTitle:@"取消" otherButtonTitles:nil];

            [alterView show];
        }

    (3)、经过各种验证后确定设备可以使用MFMessageComposeViewController,我们就开始用了

//实例化MFMessageComposeViewController,并设置委托
            MFMessageComposeViewController *messageController = [[MFMessageComposeViewController alloc] init];
            messageController.delegate = self;

            //拼接并设置短信内容
            NSString *messageContent = [NSString stringWithFormat:@"亲爱的,这个是专属属你我应用的邀请码:%@",self.authCodeLabel.text];
            messageController.body = messageContent;

            //设置发送给谁
            messageController.recipients = @[self.phoneNumberTextField.text];

            //推到发送试图控制器
            [self presentViewController:messageController animated:YES completion:^{

            }];

    (4),差点给忘了,实现相应的委托回调协议是少不了的~要实现MFMessageComposeViewControllerDelegate,UINavigationControllerDelegate这两个协议。发送后的回调如下:

//发送短信后回调的方法
-(void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result
{
    NSString *tipContent;
    switch (result) {
        case MessageComposeResultCancelled:
            tipContent = @"发送短信已";
            break;

        case MessageComposeResultFailed:
            tipContent = @"发送短信失败";
            break;

        case MessageComposeResultSent:
            tipContent = @"发送成功";
            break;

        default:
            break;
    }

    UIAlertView *alterView = [[UIAlertView alloc] initWithTitle:@"提示" message:tipContent delegate:nil cancelButtonTitle:@"取消" otherButtonTitles:nil];
    [alterView show];
}

 

  到此就可以发送短信了,本篇博客先就到这儿吧~

时间: 2016-04-12

iOS开发之调用系统打电话发短信接口以及程序内发短信的相关文章

android-安卓开发关于调用系统自带的分享功能

问题描述 安卓开发关于调用系统自带的分享功能 刚刚做了个调用系统分享功能的事件,点击按钮,进入图库,选择图片时调用系统的分享功能,出现个问题,直接进入qq界面分享到QQ,微信,微博其他的都没出来,求解,下面是代码 //调用图库 public void Getpic(){ Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("image/*"); intent.putExtra("crop&

Android开发中调用系统相册上传图片到服务器OPPO等部分手机上出现短暂的显示桌面问题的解决方法

要原因是主体样式设置的问题:这里把appTheme设置一个style即可: <item name="android:windowBackground">@color/white</item> <!--下面这个属性很重要,有时候会出现某些机型在调用系统相册的时候,短暂的出现手机桌面现象--> <item name="android:windowIsTranslucent">false</item> <i

android开发-关于调用系统分享功能问题

问题描述 关于调用系统分享功能问题 //调用图库public void Getpic(){Intent intent = new Intent(Intent.ACTION_GET_CONTENT);intent.setType(""image/*"");intent.putExtra(""crop"" true);intent.putExtra(""return-data"" true)

安卓开发之调用系统照相机拍照并剪辑

调用系统照相机拍照并剪辑 在Android开发过程中,很多时候我们都需要调用照相机拍照,尤其在发布微博的时候. 自己继承Camera类写一个拍照功能显然不是最好的方案,因为我们不能考虑的非常全面. 这个时候,调用系统的照相机无疑是一个很好的解决方法. 下面,我们就写一个调用系统照相机拍照并对照片进行剪辑.    代码如下 复制代码  Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);  intent.putExtra(Medi

ios开发-如何用从服务器获取的时间来对程序中的时间进行同步。

问题描述 如何用从服务器获取的时间来对程序中的时间进行同步. 在IOS开发中,如何用从服务器获取的时间来对程序中的时间进行同步. 解决方案 使程序调用服务器时间调用服务器时间的倒计时程序获取数据库服务器时间

iOS开发之获取系统相册中的图片与视频教程(内带url转换)_IOS

好些天没写点东西了,最近公司要做新项目,有点小忙.不想我的坚持就此中断,我把我前些天研究的东西拿出来给大家看看. 这次整理的是AssetsLibrary和PhotoKit的使用.本人处女座,有点强迫症,之前写的项目里用的是AssetsLibrary写的调取相册内的媒体文件,但是Xcode总是报警告错误,虽然能够编译并展示效果,但是十几个警告错误挂在那,心里总不是滋味,所以我就研究了一下AssetLibrary和PhotoKit. 在 iOS 8 出现之前,开发者只能使用 AssetsLibrar

iOS开发之判断系统版本

if([[UIDevice currentDevice].systemVersion doubleValue]>=7.0) {   //是IOS7至以上版本 }else{   //IOS7以下版本 }

《iOS 8应用开发入门经典(第6版)》——第1章,第1.2节成为iOS开发人员

1.2 成为iOS开发人员iOS 8应用开发入门经典(第6版)要成为iOS开发人员,并非只需坐下来编写程序即可.您需要一台较新的 Intel Macintosh台式机或笔记本电脑,它运行Mavericks或Yosemite,硬盘至少有6GB的可用空间.开发系统的屏幕空间越大,就越容易营造高效的工作空间.您甚至可将Xcode切换到全屏模式,将分散注意力的元素都隐藏起来.虽然如此,我在13英寸MacBook Air中开发时也相当舒服,因此并非一定要使用多显示器系统. 假设您有Mac,还需要什么呢?好

asp怎么访问java的短信接口

 asp 如何访问java的短信接口 对方程序是java做的,提供了一个地址,还有用户名,密码 说往这里传参数就可以发短信,我用ie直接访问此地址,看到的是一个xml文件asp这边需要如何传递短信的一些参数还有用户名密码给对方呢希望别贴教程,点拨一下最好,因为我从网上找了一些范例,但总是只返回状态200 ok 没有任何返回值,也没有发送成短信,所以不知道为什么了用户名密码是用来识别是谁要调用此接口发短信对方提供的url地址 http://10.13.255.196/SmsDownlinkRece