2014-09-15 7 views
6

Ich habe einen Freigabekode, der für iOS 7 funktioniert, aber ab iOS 8 nicht mehr funktioniert.Freigeben von Video an Facebook auf 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) 
} 

Wie ich bereits sagte, dies funktioniert gut in iOS 7, aber wie von iOS 8 wird der Videoclip nicht mehr an die Post (oder sichtbar im Aktie Panel), wenn ich wähle, um Facebook zu teilen . Alle anderen Optionen funktionieren, Mail, Save to Video, AirDrop, usw. scheinen alle gut zu funktionieren.

ich auch habe versucht, die Einzelteile als AVAssets vorbei:

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

und NSData:

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

Keiner von denen das Problem keine Auswirkungen hatte.

Das Problem tritt auch auf, wenn ich das moralische Äquivalent in Objective-C verwende, es ist sprachunabhängig.

Antwort

1

OK, ich habe versucht, einen Workaround und es funktionierte für mich.

Ich hatte Videodaten, die ich zuerst in einer Datei im Dokumentenverzeichnis gespeichert habe und dann habe ich diese Datei angehängt.

//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]; 
} 
+0

In meinem Fall sind sie bereits Datei-URLs. Ich habe es mit ihnen in den Anwendungsressourcen und im Dokumentenverzeichnis versucht, es macht keinen Unterschied. Der Hauptunterschied, den ich sehe, ist, dass ich einen mp4 benutze und Sie eine .mov –

+0

Notiz verwenden, die alle erwarteten Optionen funktionieren außer Facebook. –

4

bekam ich das gleiche Problem und ich fand der entscheidende Punkt der Dateityp ist. Ich habe versucht, ein .mp4-Video zu teilen, es wird kein Video an den Post angehängt. Sobald ich .mov Video verwende, funktioniert es für mich.

+1

@JamesWoolfenden Ich bin verwirrt von Ihrem Kommentar. Wie wird die Antwort von Ocean Lin nicht als Antwort auf die Frage betrachtet? Die Frage war, wie die FB-Freigabe repariert werden kann, die in iOS8 nicht funktioniert. Die Antwort von Ocean Lin ist, ob es daran liegt, dass Sharing nicht für MP4-Dateien in iOS8 funktioniert, sondern * für * .mov-Dateien funktioniert. Wie ist das nicht hilfreich? – Praxiteles