iOS에서 공유

Facebook 로그인, Facebook 공유 또는 Facebook Gaming을 통합하고 나서 특정 앱 이벤트가 이벤트 관리자에 대해 자동으로 로깅 및 수집됩니다. 단, 자동 앱 이벤트 로깅을 비활성화하는 경우는 예외입니다. Facebook 로그인, Facebook 공유 또는 Facebook Gaming을 사용하는 모든 개발자 여러분께서는 이 기능의 작동 방법을 숙지하시기 바랍니다. 수집되는 정보 및 자동 앱 이벤트 로깅을 비활성화하는 방법에 대한 자세한 내용은 자동 앱 이벤트 로깅을 참조하세요.

FB iOS SDK에 대한 자세한 내용은 여기를 참조하세요.

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

필수 조건

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

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

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

iOS SDK 시작하기

콘텐츠 모델링

각 콘텐츠 유형에는 SharingContent를 준수하는 유형을 표시하는 데 사용할 수 있는 인터페이스가 있습니다. 콘텐츠를 모델링한 후 Sharing을 따르는 공유 인터페이스를 앱에 추가하거나 제공된 ShareDialog 클래스를 사용합니다.

앱에서 Facebook으로 링크를 공유하면 공유할 링크와 함께 contentURL이 포함됩니다. ShareLinkContent 모델을 사용하여 링크의 공유 콘텐츠를 빌드합니다.

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

guard let url = URL(string: "https://developers.facebook.com") else {
    // handle and return
}

let content = ShareLinkContent()
content.contentURL = url

let dialog = ShareDialog(
    viewController: self,
    content: content,
    delegate: self
)
dialog.show()

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

사진

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

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

FBSDKSharePhotoContent 모델을 사용하여 사진의 공유 콘텐츠를 빌드합니다.

func imagePickerController(
    _ picker: UIImagePickerController, 
    didFinishPickingMediaWithInfo 
    info: [UIImagePickerController.InfoKey : Any]
) {
    guard let image = info[.originalImage] as? UIImage else {
        // handle and return
        return
    }
    let photo = SharePhoto(
        image: image,
        userGenerated: true
    )
    var content = SharePhotoContent()
    content.photos = [photo]
    // use the content
}

동영상

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

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

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

func imagePickerController(
    _ picker: UIImagePickerController,
    didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]
) {
    let video: ShareVideo

    if #available(iOS 11, *) {
        guard let videoAsset = info[.phAsset] as? PHAsset else {
            return
        }
        video = ShareVideo(videoAsset: videoAsset)
    } else {
        guard let url = info[.referenceURL] as? URL else {
            return
        }
        video = ShareVideo(videoURL: url)
    }
}

멀티미디어

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

  • 공유하는 사용자의 경우 iOS용 Facebook 클라이언트가 설치되어 있어야 합니다.
  • 사진의 크기는 12MB 미만, 동영상의 크기는 50MB 미만이어야 합니다.
  • 하나의 동영상과 최대 29~30장의 사진을 공유할 수 있습니다.

ShareMediaContent 모델로 멀티미디어 공유 콘텐츠를 빌드합니다.

let photo = SharePhoto(...)
let video = ShareVideo(...)

var content = ShareMediaContent()
content.media = [photo, video]

공유 방법

모델을 빌드하여 콘텐츠를 처리한 후 공유 또는 메시지 대화 상자를 트리거할 수 있습니다.

버튼

iOS용 Facebook에는 공유를 트리거하는 네이티브 버튼이 있습니다.


공유하기 버튼

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

var button = FBShareButton()
button.shareContent = content
// Add button to view

보내기 버튼

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

var button = SendButton()
button.shareContent = content
// Add button to view

Messenger 앱이 설치되어 있지 않으면 보내기 버튼이 흐리게 표시됩니다. 현재 기기에서 보내기 버튼을 사용할 수 있는지 검사하려면 SendButton 속성 isImplicitlyDisabled를 사용하세요.

공유 대화 상자

Facebook에서 빌드한 공유 경험을 사용하려면 위의 콘텐츠 모델링 섹션에서와 같이 콘텐츠를 정의한 다음 공유 대화 상자를 호출합니다. 예를 들어 공유 대화 상자가 포함된 링크를 공유하는 방법은 다음과 같습니다.

guard let url = URL(string: "https://developers.facebook.com") else {
    // handle and return
}

let content = ShareLinkContent()
content.contentURL = url

let dialog = ShareDialog(
    viewController: self,
    content: content,
    delegate: self
)
dialog.show()

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

이제 SDK에서 기본 Facebook 앱을 자동으로 확인합니다. 설치되지 않은 경우 SDK에서 기본 브라우저로 전환하여 피드 대화 상자를 엽니다.

네이티브 Facebook 앱이 설치된 경우, iOS용 네이티브 Facebook 앱으로 전환되지 않고 iOS 공유 시트가 표시됩니다.

메시지 대화 상자

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

MessageDialog(content: content, delegate: delegate).show()

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

iOS 통합

iOS에는 사용자가 상태 업데이트, 사진, 동영상 및 Facebook 링크를 게시할 수 있는 네이티브 공유 시트가 포함되어 있으며, 게시물의 공개 대상을 설정하고 위치와 함께 게시물에 태그를 지정하도록 지원합니다. Facebook SDK에서는 이 네이티브 컨트롤러를 사용할 수 있습니다. Facebook 공유 대화 상자를 호출할 때 대부분 해당 내용을 확인할 수 있습니다.

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

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

let dialog = ShareDialog(
    viewController: self,
    content: content,
    delegate: nil
)
dialog.mode = .shareSheet
dialog.show()

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

해시태그

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

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

let content = ShareLinkContent()
guard let url = URL(string: "https://developers.facebook.com") else { return }

content.contentURL = url
content.hashtag = Hashtag("#MadeWithHackbook")

고급 주제

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

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

iOS 시뮬레이터 및 테스팅

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

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