1. 程式人生 > >iOS利用系統分享實現分享視訊功能

iOS利用系統分享實現分享視訊功能

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.另外需要注意的地方

當彈出分享列表,但是點選第三方平臺按鈕沒有響應是,去設定裡面看下


點開新增賬號資訊