简体   繁体   English

在iOS 8上将视频分享到Facebook

[英]Sharing video to Facebook on iOS 8

I have some sharing code that works fine for iOS 7, but as of iOS 8, no longer works. 我有一些适用于iOS 7的共享代码,但从iOS 8开始,不再有效。

@IBAction func onShareButton(sender: UIButton) {
    let movie = NSBundle.mainBundle().URLForResource("IMG_0564", withExtension: "mp4")!
    let items = [movie]
    let activity = UIActivityViewController(activityItems: items, applicationActivities: nil)
    if activity.respondsToSelector("popoverPresentationController") {
        activity.popoverPresentationController?.sourceView = sender
    }
    self.presentViewController(activity, animated: true, completion: nil)
}

As I stated, this is working fine in iOS 7, but as of iOS 8, the video clip is no longer attached to the post (or visible in the share panel) when I choose to share to Facebook. 正如我所说,这在iOS 7中运行良好,但是从iOS 8开始,当我选择分享到Facebook时,视频剪辑不再附加到帖子(或在共享面板中可见)。 All other options work, Mail, Save to Video, AirDrop, etc all seem to work fine. 所有其他选项工作,邮件,保存到视频,AirDrop等都似乎工作正常。

I've also tried passing the items as AVAssets: 我也尝试将这些项目作为AVAssets传递:

    let items = [movie].map { AVAsset.assetWithURL($0) }

and NSData: 和NSData:

    let items = [movie].map { NSData(contentsOfURL: $0) }

Neither of which had any effect on the problem. 这两者都没有对这个问题产生任何影响。

The problem also occurs if I use the moral equivalent in Objective-C, it's language agnostic. 如果我在Objective-C中使用道德等价物,那么问题也会发生,它与语言无关。

I got the same problem and I found the key point is the file type. 我遇到了同样的问题,我发现关键点是文件类型。 I have tried to share a .mp4 video, it won't attach video to the post. 我曾试图分享.mp4视频,它不会将视频附加到帖子中。 Once I use .mov video, it works for me. 一旦我使用.mov视频,它对我有用。

OK, I tried a workaround and it worked for me. 好的,我尝试了一种解决方法,它对我有用。

I had video data that I first saved to a file in documents directory and then I attached that file. 我有视频数据,我首先保存到文档目录中的文件,然后我附加了该文件。

//write to a file
[videoData writeToFile:[NSHomeDirectory() stringByAppendingPathComponent:@"Documents/image.mov"] atomically:YES];

- (IBAction)ShareVideoWihFacebook:(id)sender
{

    //get the file url
    NSString* path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/image.mov"];

    NSURL *videoURL = [NSURL fileURLWithPath:path];

    UIActivityViewController * activityVC = [[UIActivityViewController alloc] initWithActivityItems:@[videoURL,@"Created by ..."] applicationActivities:NULL];


    [activityVC setExcludedActivityTypes:@[ UIActivityTypeMail,UIActivityTypeAssignToContact, UIActivityTypeCopyToPasteboard, UIActivityTypePrint, UIActivityTypePostToWeibo,UIActivityTypeMessage,UIActivityTypeAirDrop,UIActivityTypeSaveToCameraRoll]];

    [activityVC setValue:@"My Video" forKey:@"subject"];

    [activityVC setCompletionHandler:^(NSString *activityType, BOOL completed) {
        //NSLog(@"completed dialog - activity: %@ - finished flag: %d", activityType, completed);
    }];

    [self presentViewController:activityVC animated:TRUE completion:nil];
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM