[英]Sharing video to Facebook on iOS 8
我有一些適用於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中使用道德等價物,那么問題也會發生,它與語言無關。
我遇到了同樣的問題,我發現關鍵點是文件類型。 我曾試圖分享.mp4視頻,它不會將視頻附加到帖子中。 一旦我使用.mov視頻,它對我有用。
好的,我嘗試了一種解決方法,它對我有用。
我有視頻數據,我首先保存到文檔目錄中的文件,然后我附加了該文件。
//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.