2014-09-15 15 views
6

Ho un codice di condivisione che funziona bene per iOS 7, ma a partire da iOS 8, non funziona più.Condivisione di video su Facebook su 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) 
} 

Come ho detto, questo sta lavorando bene in iOS 7, ma a partire da iOS 8, il clip video non è più attaccato al palo (o visibile nel pannello di azione) quando scelgo di condividere su Facebook . Tutte le altre opzioni funzionano, Mail, Salva su video, AirDrop, ecc. Sembrano funzionare tutte bene.

Ho anche provato passando gli elementi come AVAssets:

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

e NSData:

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

Nessuno dei quali ha avuto alcun effetto sul problema.

Il problema si verifica anche se io uso l'equivalente morale in Objective-C, è agnostico del linguaggio.

risposta

1

OK, ho provato una soluzione e ha funzionato per me.

I dati video sono stati salvati in un file nella directory dei documenti e quindi ho allegato il 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]; 
} 
+0

Nel mio caso sono già file URL. L'ho provato con loro situati sia nelle risorse dell'applicazione che nella directory dei documenti, non fa differenza. La differenza principale che vedo è che sto usando un mp4 e stai usando un .mov –

+0

Nota tutte le opzioni previste funzionano tranne Facebook. –

4

Ho avuto lo stesso problema e ho trovato il punto chiave è il tipo di file. Ho provato a condividere un video .mp4, non collegherà il video al post. Una volta che uso .mov video, funziona per me.

+1

@JamesWoolfenden Sono confuso dal tuo commento. In che modo la risposta di Ocean Lin non è considerata una risposta alla domanda? La domanda era come risolvere la condivisione di FB che non funziona in iOS8. La risposta di Ocean Lin è di verificare se è perché la condivisione non funziona per i file mp4 in iOS8 ma * è * funziona per i file .mov. Come non è utile? – Praxiteles

Problemi correlati