I have some sharing code that works fine for iOS 7, but as of iOS 8, no longer works.
@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. All other options work, Mail, Save to Video, AirDrop, etc all seem to work fine.
I've also tried passing the items as AVAssets:
let items = [movie].map { AVAsset.assetWithURL($0) }
and 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.
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. Once I use .mov video, it works for me.
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];
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With