【问题标题】:Sharing video to Facebook on iOS 8在 iOS 8 上将视频分享到 Facebook
【发布时间】: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 中使用道德等价物,也会出现问题,它与语言无关。

【问题讨论】:

    标签: ios facebook ios8 uiactivityviewcontroller


    【解决方案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
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-26
    • 2015-10-18
    • 2012-06-23
    • 1970-01-01
    相关资源
    最近更新 更多