发送短信一共5种
1.发送纯文本
2.发送本地图片+文本
3.发送网络图片+文本
4.发送本地视频+文本
5.发送网络视频+文本
#import "ViewController.h"
#import "HSDownloadManager.h"
#import <MessageUI/MessageUI.h>
NSString * const downloadUrl1 = @"https://download.91playmate.cn/5a2d71209c3250e5f073fcecbcbe7eab.mp4";
@interface ViewController ()<MFMessageComposeViewControllerDelegate>
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, 20, [UIScreen mainScreen].bounds.size.width-20, 42)];
label.text = @"手机号:136 发送内容:轻轻的我走了,正如我轻轻的来,不带走一片云彩";
label.numberOfLines = 2;
[self.view addSubview:label];
UIButton *btn1 = [[UIButton alloc] initWithFrame:CGRectMake(10, CGRectGetMaxY(label.frame)+20, 150, 30)];
btn1.backgroundColor = [UIColor blueColor];
[btn1 setTitle:@"纯文本" forState:UIControlStateNormal];
[self.view addSubview:btn1];
[btn1 addTarget:self action:@selector(sendTextAction) forControlEvents:UIControlEventTouchUpInside];
UIButton *btn2 = [[UIButton alloc] initWithFrame:CGRectMake(10, CGRectGetMaxY(btn1.frame)+20, 150, 30)];
btn2.backgroundColor = [UIColor blueColor];
[btn2 setTitle:@"本地文本+图片" forState:UIControlStateNormal];
[self.view addSubview:btn2];
[btn2 addTarget:self action:@selector(sendLocationTextImageAction) forControlEvents:UIControlEventTouchUpInside];
UIButton *btn3 = [[UIButton alloc] initWithFrame:CGRectMake(10, CGRectGetMaxY(btn2.frame)+20, 150, 30)];
btn3.backgroundColor = [UIColor blueColor];
[btn3 setTitle:@"本地文本+视频" forState:UIControlStateNormal];
[self.view addSubview:btn3];
[btn3 addTarget:self action:@selector(sendLocationTextVideoAction) forControlEvents:UIControlEventTouchUpInside];
UIButton *btn4 = [[UIButton alloc] initWithFrame:CGRectMake(10, CGRectGetMaxY(btn3.frame)+20, 150, 30)];
btn4.backgroundColor = [UIColor blueColor];
[btn4 setTitle:@"网上文本+图片" forState:UIControlStateNormal];
[self.view addSubview:btn4];
[btn4 addTarget:self action:@selector(sendInternetTextImageAction) forControlEvents:UIControlEventTouchUpInside];
UIButton *btn5 = [[UIButton alloc] initWithFrame:CGRectMake(10, CGRectGetMaxY(btn4.frame)+20, 150, 30)];
btn5.backgroundColor = [UIColor blueColor];
[btn5 setTitle:@"网上文本+视频" forState:UIControlStateNormal];
[self.view addSubview:btn5];
[btn5 addTarget:self action:@selector(sendInternetTextVideoAction) forControlEvents:UIControlEventTouchUpInside];
}
//发送纯文本
-(void)sendTextAction
{
if ([MFMessageComposeViewController canSendAttachments]) {
MFMessageComposeViewController * messageVC = [[MFMessageComposeViewController alloc]init];
//手机号
messageVC.recipients = @[@"136"];
//发送的内容
messageVC.body = @"轻轻的我走了,正如我轻轻的来,不带走一片云彩";
messageVC.messageComposeDelegate = self;
/** 取消按钮的颜色(附带,可不写) */
messageVC.navigationBar.tintColor = [UIColor redColor];
[self presentViewController:messageVC animated:YES completion:nil];
}else{
NSLog(@"模拟器不支持发送短信");
}
}
//发送本地图片+文本
-(void)sendLocationTextImageAction
{
if ([MFMessageComposeViewController canSendAttachments]) {
MFMessageComposeViewController * messageVC = [[MFMessageComposeViewController alloc]init];
//手机号
messageVC.recipients = @[@"136"];
//发送的内容
messageVC.body = @"轻轻的我走了,正如我轻轻的来,不带走一片云彩";
NSString *path = [[NSBundle mainBundle] pathForResource:@"rainy" ofType:@"jpg"];
if ([messageVC addAttachmentURL:[NSURL fileURLWithPath:path] withAlternateFilename:nil])
{
NSLog(@"添加成功");
}else{
NSLog(@"失败");
}
messageVC.messageComposeDelegate = self;
/** 取消按钮的颜色(附带,可不写) */
messageVC.navigationBar.tintColor = [UIColor redColor];
[self presentViewController:messageVC animated:YES completion:nil];
}else{
NSLog(@"模拟器不支持发送短信");
}
}
//发送本地视频+文本
-(void)sendLocationTextVideoAction
{
if ([MFMessageComposeViewController canSendAttachments]) {
MFMessageComposeViewController * messageVC = [[MFMessageComposeViewController alloc]init];
//手机号
messageVC.recipients = @[@"136"];
//发送的内容
messageVC.body = @"轻轻的我走了,正如我轻轻的来,不带走一片云彩";
NSString *path = [[NSBundle mainBundle] pathForResource:@"fangjian" ofType:@"mp4"];
if ([messageVC addAttachmentURL:[NSURL fileURLWithPath:path] withAlternateFilename:nil])
{
NSLog(@"添加成功");
}else{
NSLog(@"失败");
}
messageVC.messageComposeDelegate = self;
/** 取消按钮的颜色(附带,可不写) */
messageVC.navigationBar.tintColor = [UIColor redColor];
[self presentViewController:messageVC animated:YES completion:nil];
}else{
NSLog(@"模拟器不支持发送短信");
}
}
//发送网上文本+图片
-(void)sendInternetTextImageAction
{
//document路径
NSString * documentsDirectoryPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSLog(@"保存路径:%@",documentsDirectoryPath);
//Save Image to Directory
[self saveImage:[self getImageFromURL:@"http://pic37.nipic.com/20140113/8800276_184927469000_2.png"] withFileName:@"fangjian" ofType:@"png" inDirectory:documentsDirectoryPath];
if ([MFMessageComposeViewController canSendAttachments]) {
MFMessageComposeViewController * messageVC = [[MFMessageComposeViewController alloc]init];
//手机号
messageVC.recipients = @[@"136"];
//发送的内容
messageVC.body = @"轻轻的我走了,正如我轻轻的来,不带走一片云彩";
NSString * path = [documentsDirectoryPath stringByAppendingPathComponent:@"fangjian.png"];
if ([messageVC addAttachmentURL:[NSURL fileURLWithPath:path] withAlternateFilename:nil])
{
NSLog(@"添加成功");
}else{
NSLog(@"失败");
}
messageVC.messageComposeDelegate = self;
/** 取消按钮的颜色(附带,可不写) */
messageVC.navigationBar.tintColor = [UIColor redColor];
[self presentViewController:messageVC animated:YES completion:nil];
}else{
NSLog(@"模拟器不支持发送短信");
}
}
//发送网上文本+视频
-(void)sendInternetTextVideoAction
{
[[HSDownloadManager sharedInstance] download:downloadUrl1 progress:^(NSInteger receivedSize, NSInteger expectedSize, CGFloat progress) {
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"正在下载===%.f%%",progress * 100);
});
} state:^(DownloadState state) {
dispatch_async(dispatch_get_main_queue(), ^{
if (state == DownloadStateCompleted) {
[self mainSendInternetVideo];
}
});
}];
}
-(void)mainSendInternetVideo
{
if ([MFMessageComposeViewController canSendAttachments]) {
MFMessageComposeViewController * messageVC = [[MFMessageComposeViewController alloc]init];
messageVC.view.tag =500;
//手机号
messageVC.recipients = @[@"136"];
//发送的内容
messageVC.body = @"轻轻的我走了,正如我轻轻的来,不带走一片云彩";
// 获取Caches目录路径
NSString *cachesDir = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject];
NSString *path = [cachesDir stringByAppendingPathComponent:@"FangJian/xiaoshiping.mp4"];
if ([messageVC addAttachmentURL:[NSURL fileURLWithPath:path] withAlternateFilename:nil])
{
NSLog(@"添加成功");
}else{
NSLog(@"失败");
}
messageVC.messageComposeDelegate = self;
/** 取消按钮的颜色(附带,可不写) */
messageVC.navigationBar.tintColor = [UIColor redColor];
[self presentViewController:messageVC animated:YES completion:nil];
}else{
NSLog(@"模拟器不支持发送短信");
}
}
#pragma mark --------------下载图片到沙盒中------------------
-(UIImage *) getImageFromURL:(NSString *)fileURL {
UIImage * result;
NSData * data = [NSData dataWithContentsOfURL:[NSURL URLWithString:fileURL]];
result = [UIImage imageWithData:data];
return result;
}
-(void) saveImage:(UIImage *)image withFileName:(NSString *)imageName ofType:(NSString *)extension inDirectory:(NSString *)directoryPath {
//清空历史图片
NSFileManager *fileManager = [NSFileManager defaultManager];
if ([fileManager fileExistsAtPath:[directoryPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.%@", imageName, @"png"]]]) {
[fileManager removeItemAtPath:[directoryPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.%@", imageName, @"png"]] error:nil];
}
if ([[extension lowercaseString] isEqualToString:@"png"]) {
[UIImagePNGRepresentation(image) writeToFile:[directoryPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.%@", imageName, @"png"]] options:NSAtomicWrite error:nil];
} else if ([[extension lowercaseString] isEqualToString:@"jpg"] || [[extension lowercaseString] isEqualToString:@"jpeg"]) {
[UIImageJPEGRepresentation(image, 1.0) writeToFile:[directoryPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.%@", imageName, @"jpg"]] options:NSAtomicWrite error:nil];
} else {
//ALog(@"Image Save Failed\nExtension: (%@) is not recognized, use (PNG/JPG)", extension);
NSLog(@"文件后缀不认识");
}
}
#pragma mark - MFMessageComposeViewControllerDelegate
/**
* 协议方法,在信息界面处理完信息结果时调用(比如点击发送,取消发送,发送失败)
*
* @param controller 信息控制器
* @param result 返回的信息发送成功与否状态
*/
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result
{
/** 发送完信息就回到原程序*/
[self dismissViewControllerAnimated:YES completion:nil];
if (controller.view.tag ==500) {
//删除下载到沙盒中的视频
[[HSDownloadManager sharedInstance] deleteFile:downloadUrl1];
}
switch (result) {
case MessageComposeResultSent:
NSLog(@"发送成功");
break;
case MessageComposeResultFailed:
NSLog(@"发送失败");
break;
case MessageComposeResultCancelled:
NSLog(@"发送取消");
default:
break;
}
}