在 iOS 8 上将视频分享到 Facebook
Posted
技术标签:
【中文标题】在 iOS 8 上将视频分享到 Facebook【英文标题】:Sharing video to Facebook on iOS 8 【发布时间】:2014-09-15 19:57:58 【问题描述】:我有一些在 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)
正如我所说,这在 iOS 7 中运行良好,但在 iOS 8 中,当我选择分享到 Facebook 时,视频剪辑不再附加到帖子(或在分享面板中可见)。所有其他选项都有效,邮件、保存到视频、AirDrop 等似乎都可以正常工作。
我也尝试过将项目作为 AVAssets 传递:
let items = [movie].map AVAsset.assetWithURL($0)
和 NSData:
let items = [movie].map NSData(contentsOfURL: $0)
这两种方法都没有对问题产生任何影响。
如果我在 Objective-C 中使用道德等价物,也会出现问题,它与语言无关。
【问题讨论】:
【参考方案1】:我遇到了同样的问题,我发现关键点是文件类型。我试图分享一个 .mp4 视频,它不会将视频附加到帖子中。一旦我使用 .mov 视频,它就对我有用。
【讨论】:
@JamesWoolfenden 我对你的评论感到困惑。林海洋的回答怎么被认为不是问题的答案?问题是如何修复在 iOS8 中不起作用的 FB 共享。 Ocean Lin 的回答是看是否是因为共享不适用于 iOS8 中的 mp4 文件,而 is 却适用于 .mov 文件。这怎么没有帮助?【参考方案2】:好的,我尝试了一种解决方法,它对我有用。
我首先将视频数据保存到文档目录中的文件中,然后附加该文件。
//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];
【讨论】:
就我而言,它们已经是文件网址。我已经尝试将它们放在应用程序资源和文档目录中,没有区别。我看到的主要区别是我使用的是 mp4 而你使用的是 .mov以上是关于在 iOS 8 上将视频分享到 Facebook的主要内容,如果未能解决你的问题,请参考以下文章
通过 FB SDK for iOS 将视频分享到 facebook
如何在 iOS 6 上将多个 URL 共享到 Facebook