APP发送短信的几种场景
APP发送短信的几种场景
前言
目前正在做的项目中已经存在发送短信的功能,现在业务需要监听APP工作人员是否真的发送了短信。这涉及到短信发送状态的监听,官方SDK是可以做到的。但是项目经理还需要获取到用户发送的短信内容,这个官方SDK是行不通了。下面就整理一下。
- 应用外发送短信
- 优点:
- 简单
- 缺点:
- 不能指定短信接收人、短信内容
- 不能自动回到原应用
NSURL *url = [NSURL URLWithString:@"sms://10086"];
[[UIApplication sharedApplication] openURL:url];
- 应用内发送短信
- 优点:
- 能指定短信接收人、短信内容
- 能发送给多人
- 能自动回到原应用
- 能监听短信发送的状态
/**
注意:
1.使用真机调试
2.若测试机未安装SIM卡,代理返回的依然是 MessageComposeResultSent(已发送)
*/
- (IBAction)sendSMSInside {
// 实例化MFMessageComposeViewController,并设置委托
MFMessageComposeViewController *messageController = [[MFMessageComposeViewController alloc] init];
messageController.messageComposeDelegate = self;
// 拼接并设置短信内容
NSString *messageContent = [NSString stringWithFormat:@"发送短信测试内容"];
messageController.body = messageContent;
// 设置发送给谁
messageController.recipients = @[@"10086", @"10010"];
// 推到发送试图控制器
[self presentViewController:messageController animated:YES completion:nil];
}
#pragma mark - MFMessageComposeViewControllerDelegate
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result {
[controller dismissViewControllerAnimated:YES completion:nil];
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];
}
- 直接发送短信
描述:
官方SDK不存在这样的直接发送短信的方式
间接的解决办法是:利用自己的网关服务器或者第三方短信网关服务器,即把要发送的号码和信息传送到服务器,由服务器去发送。
demo地址:
最后
如果对大家有帮助,请github上follow和star,本文发布在戴超的技术博客,转载请注明出处