短信功能,


有时候需要在app中添加一个分享的功能,这个功能可以让用户给自己的朋友发一个短信或者邮件。这里,我就只向大家介绍一下短信的功能。短信功能可以用两种方式来调用,一种是在程序外调用,一个是在程序内调用,在介绍之前需要提醒大家:短信功能在模拟器下是无法使用的,只能用真机来做调试。

1、程序外调用短信功能

  NSURL *numberURL = [NSURL URLWithString:[NSString stirngWithFormat:@”sms:%@”,@”18300185512”]]; // 定义打开短信的url,关键字:sms。用openURL来打开程序中的短信功能,需要用到关键字:“sms”,后面加上要发送的电话号码就可以了。

 

   if([[UIApplication sharedApplication] canOpenURL:numberURL]) {

   [[UIApplication sharedApplication] openURL:numberURL];

  } else {

     NSLog(@”无法打开短信功能”);

  } // 判断程序是否可以打开短信功能

 

在这里我们用到了UIApplication两个方法canOpenURL,openURL。openURL(开放链接)可以帮助我们实现很多功能,包括邮件或者是系统浏览器Safari。canOpenURL则是用来判断要执行的URL是否是可以执行的。用openURL来打开程序中的短信功能,需要用到关键字:“sms”,后面加上要发送的电话号码就可以了。但是这个方法虽然使用简单,却有两个不足之处:(1)这个方法会跳出我们正在运行的程序,打开系统的短信界面,但当用户关闭短信后,无法回到程序。(2)这个方法我们只能定义要发送的手机号,无法编辑发送的短信内容。为了解决这两个不足,我们下面为大家介绍第二中使用短信功能的方法。

2、程序内调用短信功能

  第一步,我们先要在程序中添加短信所需的框架:MessageUI.framework

  第二步,我们需要在类中引入框架的头文件:#import<MessageUI/MessageUI.h>

  第三步, 我们需要实现如下代码:

  BOOL canSendSMS = [MFMessageComposeViewController canSendText];

  if(canSendSMS) {
   MFMessageComposeViewController *picker = [[MFMessageComposeViewController alloc] init]; // 创建短信视图控制器

   picker.messageComposeDelegate = self; // 设置代理

   picker.body = @”新年快乐,万事大吉”; // 设置短信内容

   picker.recipients = [NSArray arrayWithObjects:@”18304235566”]; // 设置电话

   [self presentModalViewController:picker animated:YES]; // 打开短信功能

  [picker release];

}

 

   通过这个方法会在程序内打开一个短信界面,短信的电话,内容都是我们设置好的内容,同时,大家应该可以发现代码中短信设置电话参数所需的是个数组,因此我们就可以做到同时设置多个电话,实现群发的动能。

     为了监控发送短信的状态,我们需要用到MFMessageComposeViewController的代理方法。

     第四步,使用MFMessageComposeViewController 的代理方法

设置代理:<MFMessageComposeViewControllerDelegate>

代理方法:

-(void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result

{

   switch(result) {

              case MessageComposeResultCancelled:

                 NSLog(@”Reseult:canceled”); // 取 

                                      消发送短信功能

                 break;

               case MessageComposeResultSent:

                     NSLog(@”Result:Sent”); // 发

                                             送短信 

                  break;

                case MessageComposeResultFailed:

                     NSLog(@”Result:Failed”);  // 

                                        发送失败

                   break;

                 default:

                      break;

  }

[self dismissModalViewControllerAnimated:YES];

      } 

 

 

相关内容

    暂无相关文章