iOS利用系统分享实现分享视频功能

1. 先说说自己走的弯路

要使用系统分享,由于之前没接触过,上网发现UIActivityViewController可以实现原生分享。UIActivityViewController可以分享文本、图片、链接,

[objc]  view plain  copy
  1. NSString *textToShare = @"文本内容";  
  2. UIImage *imageToShare = [UIImage imageNamed:@"imagename"];  
  3. NSURL *urlToShare = [NSURL URLWithString:@"http:baidu.com"];  
  4. NSArray *activityItems = @[textToShare, imageToShare, urlToShare];  
  5.   
  6. UIActivityViewController *activityVC = [[UIActivityViewController alloc]initWithActivityItems:activityItems  
  7.                                                                         applicationActivities:nil];  
  8. //不出现在活动项目  
  9. activityVC.excludedActivityTypes = @[UIActivityTypePrint, UIActivityTypeCopyToPasteboard,UIActivityTypeAssignToContact,UIActivityTypeSaveToCameraRoll,UIActivityTypeAddToReadingList];  
  10.   
  11. //给activityVC的属性completionHandler写一个block。  
  12. //用以UIActivityViewController执行结束后,被调用,做一些后续处理。  
  13. UIActivityViewControllerCompletionWithItemsHandler myBlock = ^(UIActivityType activityType, BOOL completed, NSArray * returnedItems, NSError * activityError)  
  14. {  
  15.     LyLog(@"activityType :%@", activityType);  
  16.     if (completed)  
  17.     {  
  18.         LyLog(@"completed");  
  19.     }  
  20.     else  
  21.     {  
  22.         LyLog(@"cancel");  
  23.     }  
  24. };  
  25.   
  26. // 初始化completionHandler,当post结束之后(无论是done还是cancell)该blog都会被调用  
  27. activityVC.completionWithItemsHandler = myBlock;  
  28.   
  29. UIViewController * rootVc = [UIApplication sharedApplication].keyWindow.rootViewController;  
  30. [rootVc presentViewController:activityVC animated:TRUE completion:nil];  


具体使用方法可参考:http://www.jianshu.com/p/a1c9621a3f4e

本来以为UIActivityViewController 不能分享视频,经网友cys482提醒,说构建NSURL时采用 [NSURL fileURLWithPath:urlString];就可以分享视频

然后我试了下

[objc]  view plain  copy
  1. NSString *textToShare = @"文本内容";  
  2. UIImage *imageToShare = [UIImage imageNamed:@"test"];  
  3. NSURL*urlToShare=  [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"test" ofType:@"mp4"]];  
  4. NSArray *activityItems = @[textToShare,imageToShare,urlToShare];  
然后出现

然后修改activityItems 只包含url

[objc]  view plain  copy
  1. NSString *textToShare = @"文本内容";  
  2. UIImage *imageToShare = [UIImage imageNamed:@"test"];  
  3. NSURL*urlToShare=  [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"test" ofType:@"mp4"]];  
  4. NSArray *activityItems = @[urlToShare];  
bing~go ,分享成功!!!


2. UIDocumentInteractionController 具有预览和分享的功能

[objc]  view plain  copy
  1. NSURL * url = [NSURL fileURLWithPath:filePath];  
  2. _documentController = [UIDocumentInteractionController interactionControllerWithURL:url];  
  3. UIViewController * vc = [UIApplication sharedApplication].keyWindow.rootViewController;  
  4. [self.documentController presentOpenInMenuFromRect:[UIScreen mainScreen].bounds  inView:vc.view animated:YES];  
  5. self.documentController.delegate = self;  
其中filePath是视频文件地址

UIDocumentInteractionController的用法具体可参考:http://www.jianshu.com/p/3f03897cf98a

3.另外需要注意的地方

当弹出分享列表,但是点击第三方平台按钮没有响应是,去设置里面看下



点开添加账号信息




转载自:http://blog.csdn.net/liyun123gx/article/details/60875633

猜你喜欢

转载自blog.csdn.net/lxlzy/article/details/78826618