2014-09-15 1 views
6

iOS 7에서는 잘 작동하지만 iOS 8에서는 더 이상 작동하지 않는 공유 코드가 있습니다. 내가 페이스 북에 공유하도록 선택할 때 iOS 8에서 Facebook으로 비디오 공유

@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) 
} 

내가 언급 한 바와 같이

, 이것은 아이폰 OS 7에서 잘 작동하지 않지만 아이폰 OS 8로, 비디오 클립 (공유 패널 또는 표시) 포스트에 부착 더 이상 . 다른 모든 옵션이 작동합니다. Mail, Save to Video, 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

내 경우에는 이미 파일 URL입니다. 나는 그것들을 응용 프로그램 자원과 문서 디렉토리에 위치 시키려고했지만 아무런 차이가 없다. 내가 보는 가장 큰 차이점은 mp4를 사용하고 .mov를 사용한다는 것입니다. –

+0

Facebook을 제외한 모든 예상 옵션이 작동한다는 점에 유의하십시오. –

4

나는 동일한 문제가있어 핵심 포인트가 파일 유형이라는 것을 알았습니다. 나는 .mp4 비디오를 공유하려고 시도했지만, 비디오를 포스트에 첨부하지는 않습니다. .mov 비디오를 사용하면 나에게 적합합니다.

+1

@JamesWoolfenden 귀하의 의견에 혼란스러워합니다. 오션 린 (Ocean Lin)의 대답은이 질문에 대한 답이 아닌가? 문제는 iOS8에서 작동하지 않는 FB 공유를 수정하는 방법이었습니다. 오션 린 (Ocean Lin)의 대답은 iOS8에서 mp4 파일에 대한 공유가 작동하지 않기 때문인지 여부를 확인하는 것입니다. *는 .mov 파일에서 작동합니다. 어떻게 도움이되지 않습니까? – Praxiteles