2014-09-15 1 views
6

У меня есть код обмена, который отлично подходит для iOS 7, но с iOS 8 больше не работает.Обмен видео в Facebook на 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) 
} 

Как я говорил, это не работает нормально в прошивке 7, но на прошивке 8, ролик больше не прикреплен к сообщению (или видимый на панели доли), когда я выбираю делиться Facebook , Все остальные варианты работы, Почта, Сохранить в Видео, AirDrop и т. Д., Похоже, работают нормально.

Я также попытался прохождения детали как AVAssets:

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

и NSData:

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

Ни один из которых имел никакого влияния на эту проблему.

Проблема также возникает, если я использую моральный эквивалент в Objective-C, это язык агностик.

ответ

1

ОК, я пробовал обходное решение, и это сработало для меня.

У меня были видеоданные, которые я сначала сохранил в файле в каталоге документов, а затем я прикрепил этот файл.

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

В моем случае они уже являются файловыми адресами. Я пробовал это с ними, как в ресурсах приложений, так и в каталоге документов, это не имеет никакого значения. Основное различие, которое я вижу, это то, что я использую mp4, и вы используете .mov –

+0

Обратите внимание, что все ожидаемые функции работают, за исключением Facebook. –

4

У меня такая же проблема, и я нашел ключевой момент - это тип файла. Я попытался поделиться видео .mp4, он не будет прикреплять видео к сообщению. Как только я использую видео .mov, он работает для меня.

+1

@JamesWoolfenden Я смущен вашим комментарием. Как ответ Оушен Линь считается не ответом на вопрос? Вопрос заключается в том, как исправить совместное использование FB, которое не работает в iOS8. Ответ Ocean Lin заключается в том, чтобы посмотреть, связано ли это с тем, что обмен файлами mp4 в iOS8 не работает, но * работает * для файлов .mov. Как это не полезно? – Praxiteles