iOS利用系統分享實現分享視訊功能
阿新 • • 發佈:2019-01-24
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];
本來以為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是視訊檔案地址
3.另外需要注意的地方
當彈出分享列表,但是點選第三方平臺按鈕沒有響應是,去設定裡面看下
點開新增賬號資訊