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,本文发布在戴超的技术博客,转载请注明出处

Loading Disqus comments...
Table of Contents