iOS에서 공유

이 가이드에서는 iOS 앱을 통해 Facebook에 공유할 수 있는 방법을 자세히 설명합니다. 누군가 앱에서 콘텐츠를 공유하면 해당 콘텐츠가 자신의 타임라인과 친구의 뉴스피드에 표시됩니다.

iOS SDK의 공유 메시지 대화 상자 또는 Messenger Expression Platform을 사용하여 앱에서 Facebook Messenger로 콘텐츠를 공유할 수도 있습니다.

iOS용 Messenger SDK메시지 대화 상자

필수 조건

앱에 공유를 추가하기 전에 다음을 수행해야 합니다.

  • 모바일 개발 환경에 iOS용 Facebook SDK 추가
  • Facebook 앱 ID 구성 및 연결
  • 앱의 .plist 파일에 앱 ID, 표시 이름, 사진 액세스의 읽을 수 있는 이유 추가
  • 프로젝트에 FBSDKShareKit.framework 연결

앱에서 공유할 콘텐츠에 미리 내용을 채우지 마세요. 채울 경우 Facebook 플랫폼 정책에 위배됩니다. Facebook 플랫폼 정책, 2.3을 참조하세요.

iOS SDK 시작하기

콘텐츠 모델링

Facebook SDK 4.0 및 이후 버전에는 콘텐츠를 공유하는 새로운 모델이 있습니다. 각 콘텐츠 유형에는 <FBSDKSharingContent>를 준수하는 유형을 표시하는 데 사용할 수 있는 인터페이스가 있습니다. 콘텐츠를 모델링한 다음 <FBSDKSharing>을 따르는 공유 인터페이스(예: FBSDKShareDialog)를 앱에 추가합니다.

앱에서 Facebook으로 링크를 공유하면 contentURL이 공유할 링크와 함께 포함됩니다. FBSDKShareLinkContent 모델을 사용하여 링크의 공유 콘텐츠를 빌드합니다. 모든 속성 리스트는 FBSDKShareLinkContent 참조를 확인하세요.

2017년 4월 18일부터 다음 매개변수는 그래프 API 2.9 이후 버전에서 더 이상 지원되지 않습니다. 2.8 이전 버전의 경우에는 2017년 7월 17일까지 계속 작동합니다.

  • contentTitle - 링크의 콘텐츠 제목을 표시
  • imageURL - 게시물에 표시되는 썸네일 이미지의 URL
  • contentDescription - 일반적으로 2~4개의 문장으로 구성되는 콘텐츠의 설명

다음은 공유를 트리거할 수 있는 방법의 예입니다.

FBSDKShareLinkContent *content = [[FBSDKShareLinkContent alloc] init];
content.contentURL = [NSURL URLWithString:@"https://developers.facebook.com"];

참고: 앱에서 iTunes나 Google Play 스토어의 링크를 공유하는 경우 공유된 콘텐츠에 지정하는 설명이나 이미지는 게시하지 않습니다. 대신 Webcrawler를 사용하여 앱 스토어에서 직접 스크랩하는 앱 정보를 게시합니다. 이미지는 포함되지 않을 수도 있습니다. iTunes나 Google Play에 대한 링크 공유를 미리 보려면 공유 디버거에 해당 URL을 입력합니다.

사진

공유 대화 상자 또는 맞춤 인터페이스를 사용하여 앱에서 Facebook으로 사진을 공유할 수 있습니다.

  • 사진의 크기는 12MB 미만이어야 합니다.
  • iOS용 기본 Facebook 앱 7.0 또는 이후 버전이 설치되어 있어야 합니다.

FBSDKSharePhotoContent 모델을 사용하여 사진의 공유 콘텐츠를 빌드합니다. 모든 속성 리스트는 FBSDKSharePhotoContent 참조를 확인하세요.

- (void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info
{
  UIImage *image = info[UIImagePickerControllerOriginalImage];

  FBSDKSharePhoto *photo = [[FBSDKSharePhoto alloc] init];
  photo.image = image;
  photo.userGenerated = YES;
  FBSDKSharePhotoContent *content = [[FBSDKSharePhotoContent alloc] init];
  content.photos = @[photo];
  ...
}

동영상

앱 사용자가 공유 대화 상자 또는 고유 맞춤 인터페이스를 통해 Facebook에 동영상을 공유할 수 있습니다.

  • 동영상의 크기는 12MB 미만이어야 합니다.
  • 공유하는 사용자는 iOS용 Facebook 클라이언트 26.0 또는 이후 버전이 설치되어 있어야 합니다.

FBSDKShareVideoContent 모델을 사용하여 동영상의 공유 콘텐츠를 빌드합니다. 모든 속성 리스트는 FBSDKShareVideoContent 참조를 확인하세요.

- (void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info
{
  NSURL *videoURL = [info objectForKey:UIImagePickerControllerReferenceURL];

  FBSDKShareVideo *video = [[FBSDKShareVideo alloc] init];
  video.videoURL = videoURL;
  FBSDKShareVideoContent *content = [[FBSDKShareVideoContent alloc] init];
  content.video = video;
  ...
}

동영상 URL videoURL은 자산 URL이어야 합니다. 예를 들어 UIImagePickerController에서 동영상 자산 URL을 얻을 수 있습니다.

멀티미디어

앱 사용자가 공유 대화 상자를 사용하여 사진과 동영상으로 구성된 게시물을 Facebook에 공유할 수 있습니다. 유의 사항

  • iOS 7.0 버전 또는 이후 버전을 사용해야 합니다.
  • 공유하는 사용자는 iOS용 Facebook 클라이언트 52.0 또는 이후 버전이 설치되어 있어야 합니다.
  • 각 사진과 동영상의 크기는 12MB 미만이어야 합니다.
  • 동영상 1개와 사진 최대 29장 또는 30장의 사진을 공유할 수 있습니다.

FBSDKShareMediaContent 모델로 멀티미디어 공유 콘텐츠를 빌드합니다. 모든 속성 리스트는 FBSDKShareMediaContent 참조를 확인하세요.

FBSDKSharePhoto *photo = [FBSDKSharePhoto photoWith...
FBSDKShareVideo *video = [FBSDKShareVideo videoWith...
FBSDKShareMediaContent *content = [FBSDKShareMediaContent new];
content.media = @[photo, video];
}

공유 방법

모델을 빌드하여 콘텐츠를 처리한 다음 공유할 고유 맞춤 인터페이스나 공유 또는 메시지 대화 상자를 트리거할 수 있습니다.

버튼

iOS의 Facebook에는 공유를 트리거할 기본 버튼이 있습니다.


좋아요 버튼

좋아요 버튼을 사용하면 친구와 콘텐츠를 신속하게 공유할 수 있습니다. 좋아요 버튼을 누르면 앱에서 콘텐츠가 '좋아요'로 표시되고 Facebook에 게시물이 공유됩니다. 보기에 좋아요 버튼을 추가하려면 다음 픽셀 코드를 뷰에 추가합니다.

FBSDKLikeControl *button = [[FBSDKLikeControl alloc] init];
button.objectID = @"https://www.facebook.com/FacebookDevelopers";
[self.view addSubview:button];

공유하기 버튼

공유하기 버튼을 사용하면 Facebook 타임라인, 친구의 타임라인 또는 그룹에서 콘텐츠를 공유할 수 있습니다. 공유하기 버튼에서 공유 대화 상자를 호출합니다. 보기에 공유하기 버튼을 추가하려면 다음 픽셀 코드를 뷰에 추가합니다.

FBSDKShareButton *button = [[FBSDKShareButton alloc] init];
button.shareContent = content;  
[self.view addSubview:button];

보내기 버튼

보내기 버튼을 사용하면 Facebook Messenger를 통해 친구와 연락처에 있는 사람들에게 사진, 동영상 및 링크를 비공개로 보낼 수 있습니다. 보내기 버튼에서 메시지 대화 상자를 호출합니다. 보기에 보내기 버튼을 추가하려면 다음 픽셀 코드를 보기에 추가합니다.

FBSDKSendButton *button = [[FBSDKSendButton alloc] init];
button.shareContent = content; 
[self.view addSubview:button];

Messenger 앱이 설치되지 않으면 보내기 버튼이 숨겨집니다. 이 버튼이 숨겨진 경우 앱 레이아웃이 적절한지 확인하세요. 현재 기기에서 보내기 버튼을 표시할 수 있는지 검사하려면 다음과 같이 FBSDKSendButton 속성 isHidden을 사용하세요.

if (button.isHidden) {
  NSLog(@"Is hidden");
} else {
  [self.view addSubview:button];
}

공유 대화 상자

Facebook에서 빌드한 공유 환경을 사용하려면 위의 콘텐츠 모델링 섹션에서와 같이 콘텐츠를 정의한 다음 공유 대화 상자를 호출합니다. 예를 들어, 공유 대화 상자와 링크를 공유하려면 다음을 수행합니다.

FBSDKShareLinkContent *content = [[FBSDKShareLinkContent alloc] init];
content.contentURL = [NSURL URLWithString:@"http://developers.facebook.com"];
[FBSDKShareDialog showFromViewController:self
                              withContent:content
                                 delegate:nil];

이전 버전의 iOS용 SDK에서는 앱에서 기본 Facebook 앱이 설치되었는지 확인해야 공유 대화 상자를 열 수 있습니다. 앱이 설치되지 않은 경우 폴백 대화 상자를 호출하는 고유 코드를 제공해야 합니다.

이제 SDK에서 기본 Facebook 앱을 자동으로 확인합니다. 설치되지 않은 경우 SDK에서 기본 브라우저로 전환하여 피드 대화 상자를 엽니다. 오픈 그래프 소식을 공유하려는 경우 SDK에서 웹 공유 대화 상자를 엽니다.

기본 Facebook 앱이 설치된 경우, SDK 4.0~4.4 버전이 기본 iOS용 Facebook 앱으로 전환하고 나면 게시물이 올라간 후 앱에 제어 기능을 반환합니다. SDK 4.5 및 이후 버전을 사용 중인 경우, 오픈 그래프 소식을 공유하는 경우가 아니면 기본 iOS용 Facebook 앱으로 전환하지 않고 iOS 공유 시트가 표시됩니다.

메시지 대화 상자

메시지 대화 상자가 iOS용 기본 Messenger 앱으로 전환하고 나면 게시물이 올라간 후에 앱에 제어 기능을 반환합니다.

[FBSDKMessageDialog showWithContent:content delegate:nil];

참고: 현재 iPad에서는 메시지 대화 상자가 지원되지 않습니다.

iOS 통합

iOS 6 및 이후 버전에는 사용자가 상태 업데이트, 사진, 동영상 및 Facebook에 대한 링크를 게시할 수 있는 기본 공유 시트가 포함되어 있으며, 게시물의 공개 대상을 설정하고 위치와 함께 게시물에 태그를 지정하도록 지원합니다. 공유 시트와 오픈 그래프 소식을 공유할 수 없습니다. Facebook SDK에서는 이 네이티브 컨트롤러 사용을 지원합니다. Facebook SDK 4.5 버전부터는 Facebook 공유 대화 상자를 호출할 때 대부분 이 환경이 표시됩니다.

iOS 공유 시트는 앱에서 공유 시트의 컨텍스트를 미리 채울 수 없음을 명시하는 2.3 섹션 등 Facebook 플랫폼 정책에 따라 사용이 달라집니다. 즉 앱에서 공유 시트의 initialText 필드를 앱의 사용자가 입력하지 않은 콘텐츠로 미리 채울 수 없습니다.

이 API에서는 Facebook SDK의 다른 부분과 동일한 스타일 블록도 사용합니다. iOS용 기본 공유 대화 상자를 표시하려면 다음을 사용합니다.

// Example content. Replace with content from your app.
FBSDKShareLinkContent *content = [[FBSDKShareLinkContent alloc] init];
content.contentURL = [NSURL URLWithString:@"https://developers.facebook.com"];

FBSDKShareDialog *dialog = [[FBSDKShareDialog alloc] init];
dialog.fromViewController = self;
dialog.content = content;
dialog.mode = FBSDKShareDialogModeShareSheet;
[dialog show];

공유 시트를 표시하려면 .fromViewController가 필요합니다.

추가 기능

Facebook 공유 대화 상자를 사용하면, API를 통해 공유할 때는 사용할 수 없는 추가 옵션이 있습니다.

해시태그

공유된 사진, 링크 또는 동영상과 함께 표시될 단일 해시태그를 지정할 수 있습니다. 이 해시태그는 공유 대화 상자에도 표시되며, 게시하기 전에 이 태그를 삭제할 수 있습니다.

다음은 링크 공유에 해시태그를 추가하는 예시입니다.

FBSDKShareLinkContent *content = [[FBSDKShareLinkContent alloc] init];
content.contentURL = [NSURL URLWithString:@"https://developers.facebook.com"];
content.hashtag = [FBSDKHashtag hashtagWithString:@"#MadeWithHackbook"];

인용문 공유

공유 링크가 있는 인용문으로 표시되도록 텍스트를 강조 표시할 수 있습니다. 또는 공유 링크와 함께 표시되도록 아티클의 요약 인용문과 같은 인용문을 미리 정의할 수 있습니다. 두 경우 모두 사용자 댓글과 별도로 고유 필드에 인용문이 표시됩니다.

FBSDKShareLinkContent *content = [[FBSDKShareLinkContent alloc] init];
content.contentURL = [@"https://developers.facebook.com/products/sharing"];
content.quote = @"Learn quick and simple ways for people to share content from your app or website to Facebook.";

고급 주제

앱 링크를 사용하여 앱에서 게시한 Facebook 게시물에서 앱으로 다시 링크할 수 있습니다.

앱에서 게시한 Facebook 게시물을 클릭하면 앱이 열리며, 앱 내에 있는 특정 콘텐츠로 링크할 수도 있습니다.

맞춤 인터페이스

공유하는 데 자체 인터페이스를 사용하려면 다음을 수행해야 합니다.

다음은 Facebook에 링크를 게시하기 위한 그래프 API 호출입니다.

[FBSDKShareAPI shareWithContent:content delegate:nil];

오픈 그래프 소식 공유

오픈 그래프 소식을 사용하면 오픈 그래프 액션과 개체로 정의되는 강력한 형식의 API를 통해 구조화된 풍부한 콘텐츠를 공유할 수 있습니다.

공유 소식이 앱 또는 앱의 App Store 페이지로 다시 링크됩니다.

앱에 맞춤 소식을 추가하는 방법에 대해 더 알아보려면 iOS의 오픈 그래프 소식을 참조하세요.

FBSDKShareOpenGraphContent 모델을 사용하여 오픈 그래프 액션의 공유 콘텐츠를 빌드합니다. 모든 속성 리스트는 FBSDKShareOpenGraphContent 참조를 확인하세요.

NSDictionary *properties = @{
  @"og:type": @"fitness.course",
  @"og:title": @"Sample Course",
  @"og:description": @"This is a sample course.",
  @"fitness:duration:value": @100,
  @"fitness:duration:units": @"s",
  @"fitness:distance:value": @12,
  @"fitness:distance:units": @"km",
  @"fitness:speed:value": @5,
  @"fitness:speed:units": @"m/s",
};
FBSDKShareOpenGraphObject *object = [FBSDKShareOpenGraphObject objectWithProperties:properties];
FBSDKShareOpenGraphAction *action = [[FBSDKShareOpenGraphAction alloc] init];
action.actionType = @"fitness.runs";
[action setObject:object forKey:@"fitness:course"];
FBSDKShareOpenGraphContent *content = [[FBSDKShareOpenGraphContent alloc] init];
content.action = action;
content.previewPropertyName = @"fitness:course";

iOS 시뮬레이터 및 테스팅

시뮬레이터를 사용하여 앱에서 공유를 테스트하는 경우 동영상, 사진 또는 오픈 그래프 액션을 공유하려고 하면 오류가 표시됩니다. 공유 대화 상자를 제공하는 iOS용 Facebook이 설치되어 있어야 하기 때문입니다. 시뮬레이터용으로는 지원하지 않습니다.

링크 공유의 경우 iOS용 Facebook이 설치되어 있지 않아도 되므로 이 테스트 사례는 사용 가능합니다. 기타 공유 시나리오를 테스트하려면 iOS용 Facebook이 설치된 실제 테스트 기기를 설정하세요.