1. 先說說自己走的彎路
要使用系統分享,由於之前沒接觸過,上網發現UIActivityViewController可以實現原生分享。UIActivityViewController可以分享文本、圖片、鏈接,
NSString *textToShare = @"文本內容";
UIImage *imageToShare = [UIImage imageNamed:@"imagename"];
NSURL *urlToShare = [NSURL URLWithString:@"http:baidu.com"];
NSArray *activityItems = @[textToShare, imageToShare, urlToShare];
UIActivityViewController *activityVC = [[UIActivityViewController alloc]initWithActivityItems:activityItems
applicationActivities:nil];
//不出現在活動項目
activityVC.excludedActivityTypes = @[UIActivityTypePrint, UIActivityTypeCopyToPasteboard,UIActivityTypeAssignToContact,UIActivityTypeSaveToCameraRoll,UIActivityTypeAddToReadingList];
//給activityVC的屬性completionHandler寫一個block。
//用以UIActivityViewController執行結束後,被調用,做一些後續處理。
UIActivityViewControllerCompletionWithItemsHandler myBlock = ^(UIActivityType activityType, BOOL completed, NSArray * returnedItems, NSError * activityError)
{
LyLog(@"activityType :%@", activityType);
if (completed)
{
LyLog(@"completed");
}
else
{
LyLog(@"cancel");
}
};
// 初始化completionHandler,當post結束之後(無論是done還是cancell)該blog都會被調用
activityVC.completionWithItemsHandler = myBlock;
UIViewController * rootVc = [UIApplication sharedApplication].keyWindow.rootViewController;
[rootVc presentViewController:activityVC animated:TRUE completion:nil];
具體使用方法可參考:http://www.jianshu.com/p/a1c9621a3f4e
本來以爲UIActivityViewController 不能分享視頻,經網友cys482提醒,說構建NSURL時採用 [NSURL fileURLWithPath:urlString];就可以分享視頻
然後我試了下
NSString *textToShare = @"文本內容";
UIImage *imageToShare = [UIImage imageNamed:@"test"];
NSURL*urlToShare= [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"test" ofType:@"mp4"]];
NSArray *activityItems = @[textToShare,imageToShare,urlToShare];
然後出現然後修改activityItems 只包含url
NSString *textToShare = @"文本內容";
UIImage *imageToShare = [UIImage imageNamed:@"test"];
NSURL*urlToShare= [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"test" ofType:@"mp4"]];
NSArray *activityItems = @[urlToShare];
bing~go ,分享成功!!!
2. UIDocumentInteractionController 具有預覽和分享的功能
NSURL * url = [NSURL fileURLWithPath:filePath];
_documentController = [UIDocumentInteractionController interactionControllerWithURL:url];
UIViewController * vc = [UIApplication sharedApplication].keyWindow.rootViewController;
[self.documentController presentOpenInMenuFromRect:[UIScreen mainScreen].bounds inView:vc.view animated:YES];
self.documentController.delegate = self;
其中filePath是視頻文件地址
UIDocumentInteractionController的用法具體可參考:http://www.jianshu.com/p/3f03897cf98a
3.另外需要注意的地方
當彈出分享列表,但是點擊第三方平臺按鈕沒有響應是,去設置裏面看下
點開添加賬號信息