iOS 通过邮件分享app生成的视频

最近在研究app内的视频 分享出去,最好能分享到其他第三方应用如twitter,Facebook,微信,微博等,网上全是一些什么SDK,都是只能分享图片,url等,并不是我想要的,最后实在没办法了,只能用分享邮件的方式,把视频分享出去。好了下面开始分享代码!

.h里面

#import <UIKit/UIKit.h>
#import <MessageUI/MFMailComposeViewController.h>
#import <MessageUI/MessageUI.h>
@interface ViewController : UIViewController<MFMailComposeViewControllerDelegate>
- (IBAction)SendMail:(id)sender;
@end

.m文件里面实现为

- (IBAction)SendMail:(id)sender {
    
        MFMailComposeViewController *mailCompose = [[MFMailComposeViewController alloc] init];
        if(mailCompose)
        {
            //设置代理
            [mailCompose setMailComposeDelegate:self];
            
            NSArray *toAddress = [NSArray arrayWithObject:@"Pleaseset@ToRecipients.com"];
            NSArray *ccAddress = [NSArray arrayWithObject:@"Pleaseset@ccAddress.com"];
            NSString *emailBody = @"The body of mail!";
            
            //设置收件人
            [mailCompose setToRecipients:toAddress];
            //设置抄送人
            [mailCompose setCcRecipients:ccAddress];
            //设置邮件内容
            [mailCompose setMessageBody:emailBody isHTML:YES];
            //设置邮件主题
            [mailCompose setSubject:@"The body of mail!"];
            NSString *videoPath = [[NSBundle mainBundle] pathForResource:@"testAVI" ofType:@".avi"];
            NSArray *strArr = [videoPath componentsSeparatedByString:@"/"];
            int temp=0;
            for (NSArray *secKey in strArr){
                temp++;
            }
            NSString *Name = [NSString stringWithFormat:@"%@", [strArr objectAtIndex:temp-1]];
            NSData *videoData = [NSData dataWithContentsOfFile: videoPath];
            [mailCompose addAttachmentData:videoData mimeType:@"application/avi" fileName:Name];
            //设置邮件视图在当前视图上显示方式
            [self presentModalViewController:mailCompose animated:YES];
        }
        return;
}


这样就可以发送视频到邮件了,但是还需要一个代理,发送完退出present的邮件窗口;


- (void)alertWithTitle:(NSString *)title  msg:(NSString *)msg
{
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title
                                                    message:msg
                                                   delegate:nil
                                          cancelButtonTitle:@"OK"
                                          otherButtonTitles:nil];
    [alert show];
}
- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error
{
    
    NSString *msg;
    
    switch (result)
    {
        case MFMailComposeResultCancelled:
            msg = NSLocalizedString(@"Sent cancel", @"");
            break;
        case MFMailComposeResultSaved:
            msg = NSLocalizedString(@"Save Successfull!", @"");
            [self alertWithTitle:nil msg:msg];
            break;
        case MFMailComposeResultSent:
            msg = NSLocalizedString(@"Sent Successfull!", @"");
            [self alertWithTitle:nil msg:msg];
            break;
        case MFMailComposeResultFailed:
            msg = NSLocalizedString(@"Sent Fail!", @"");
            [self alertWithTitle:nil msg:msg];
            break;
        default:
            break;
    }
    [self dismissModalViewControllerAnimated:YES];
}

邮件分享是无法在模拟器上运行的,必须要真机,上面的代码,地址取的是外面拖进project的名字自动取得的,但是在app里面,我们如何取得app自己生成的地址呢?

这就需要 enumeratorAtPath 来遍历app中的视频

详细可见这篇博客

http://blog.csdn.net/p2game/article/details/17766427

由于本人技术有限,如有写的不科学的地方,还请指出来,大家一起交流!

如果大家有分享视频的好方法,也希望与博主分享一下,共同进步!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值