2014-09-15 12 views
6

Mam pewien kod udostępniania, który działa dobrze na iOS 7, ale od wersji iOS 8 już nie działa.Udostępnianie wideo na Facebooku na 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) 
} 

Jak już wspomniano, to działa poprawnie w iOS 7, ale jak iOS 8, klip wideo nie jest już przywiązany do słupka (lub widoczne w panelu zakładowym), gdy wybiorę dzielić się z Facebookiem . Wszystkie inne opcje działają, Mail, Save to Video, AirDrop itp. Wszystko wydaje się działać dobrze.

Próbowałem zostały również przechodzącej elementy jak AVAssets:

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

i NSData:

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

z których żaden nie miał żadnego wpływu na ten problem.

Problem pojawia się również, gdy używam moralnego odpowiednika w Objective-C, jest to agnostyka języka.

Odpowiedz

1

OK, próbowałem obejść i zadziałało dla mnie.

Posiadałem dane wideo, które po raz pierwszy zapisałem w pliku w katalogu dokumentów, a następnie dołączyłem ten plik.

//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

W moim przypadku są to już adresy URL plików. Próbowałem już z nimi zlokalizowanymi zarówno w zasobach aplikacji, jak iw katalogu dokumentów, nie ma to znaczenia. Główną różnicą, którą widzę jest to, że używam mp4 i używasz .mov –

+0

Uwaga wszystkie oczekiwane opcje działają z wyjątkiem Facebooka. –

4

Mam ten sam problem i znalazłem kluczowy punkt to typ pliku. Próbowałem udostępnić film w .mp4, ale nie dołączę filmu do tego wpisu. Kiedy używam wideo .mov, działa to dla mnie.

+1

@JamesWoolfenden Jestem zdezorientowany twoim komentarzem. Jak odpowiedź Ocean Lin nie jest odpowiedzią na pytanie? Pytanie brzmiało, jak naprawić udostępnianie FB, które nie działa w systemie iOS8. Odpowiedź Ocean Lin polega na sprawdzeniu, czy tak jest, ponieważ udostępnianie nie działa dla plików MP4 w systemie iOS8, ale * działa * dla plików .mov. Jak to nie pomaga? – Praxiteles