Android에서 공유

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

본 가이드에서는 Android 앱 사용자가 앱에서 Facebook으로 콘텐츠를 공유하는 방법을 설명합니다. 누군가 앱에서 콘텐츠를 공유하면 해당 콘텐츠가 자신의 타임라인에 표시됩니다. 사용자가 타임라인에 공유하는 콘텐츠는 친구의 피드에도 표시될 수 있습니다. 사용자는 또한 앱에서 Facebook Messenger로 콘텐츠를 공유할 수 있습니다.

앱에서 공유 기능을 구현할 때 공유할 콘텐츠를 미리 채우지 않아야 합니다. 콘텐츠를 미리 채우면 개발자 정책을 위반하게 됩니다.

다음은 왼쪽에 앱의 공유 대화 상자가 나와 있고 오른쪽에 Facebook 앱의 최종 게시물이 나와 있는 예시 사진입니다.

공유 시작하기

Android용 공유 SDK는 Android용 Facebook SDK의 구성 요소입니다.

프로젝트에서 Facebook 공유 SDK를 사용하려면 Maven에 종속되도록 하세요.

  1. 프로젝트에서 your_app | Gradle Scripts | build.gradle (Project)을 연 후 buildscript { repositories {}} 섹션에 다음 저장소를 추가합니다.

    mavenCentral() 
    
  2. 프로젝트에서 your_app | Gradle Scripts | build.gradle (Module: app)을 연 후 dependencies{} 섹션에 다음 컴파일 문을 추가합니다.

    compile 'com.facebook.android:facebook-share:latest.release'
    
  3. 프로젝트를 빌드합니다.

  4. 적절하게 구성되어 Android 앱에 링크된 Facebook 앱 ID를 가져옵니다.

  5. Android 개발 키 해시를 생성하고 개발자 설정샘플 앱 페이지에 추가합니다. 자세한 내용은 개발 키 해시 만들기샘플 앱 실행을 참조하세요.

  6. ContentProviderAndroidManifest.xml 파일에 추가하고 {APP_ID}를 앱 ID에 설정합니다.

    <provider android:authorities="com.facebook.app.FacebookContentProvider{APP_ID}"
    android:name="com.facebook.FacebookContentProvider"
    android:exported="true"/>
    
  7. 앱이 Android 11 이상을 타게팅할 경우 다음 쿼리 블록을 AndroidManifest.xml 파일에 추가하여 Facebook 앱을 앱에 표시합니다.

    <queries><provider android:authorities="com.facebook.katana.provider.PlatformProvider" /></queries>
  8. Facebook Activity를 프로젝트에 추가하고 AndroidManifest.xml 파일에 포함합니다.

콘텐츠 모델링

Facebook SDK 4.0 이상 버전에는 콘텐츠를 공유하는 새로운 모델이 있습니다. 공유할 콘텐츠 유형마다 해당 유형을 표시하는 데 사용할 클래스가 있습니다. 콘텐츠를 모델링한 후에 앱에 공유 인터페이스를 추가하세요.

사람들이 앱의 링크를 Facebook에서 공유할 때면 공유할 링크에 contentURL이 포함됩니다. 링크의 공유 콘텐츠를 ShareLinkContent 모델에 빌드합니다. 모든 속성 리스트는 ShareLinkContent 참고 자료를 참조하세요.

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

ShareLinkContent content = new ShareLinkContent.Builder()
        .setContentUrl(Uri.parse("https://developers.facebook.com"))
        .build();

Google Play나 App Store에 대한 링크 공유를 미리 보려면 공유 디버거에 해당 URL을 입력합니다.

앱 공유에 Google Play 또는 App Store에 있는 앱 링크가 포함된 경우 공유에 포함된 설명과 이미지가 무시됩니다. 대신 스토어에 있는 해당 앱의 제목과 이미지를 직접 스크래핑합니다(이미지가 없는 경우 공유에 포함되지 않음).

사진

공유 대화 상자를 사용하면 앱의 사진을 Facebook에서 공유할 수 있습니다. 공유하려면 Android용 네이티브 Facebook 앱(버전 7.0 이상)이 설치되어 있어야 합니다.

사진의 공유 콘텐츠를 SharePhotoContent 모델에 빌드합니다. 모든 속성 리스트는 SharePhotoContent 참고 자료를 참조하세요.

Bitmap image = ...
SharePhoto photo = new SharePhoto.Builder()
        .setBitmap(image)
        .build();
SharePhotoContent content = new SharePhotoContent.Builder()
        .addPhoto(photo)
        .build();

동영상

공유 대화 상자를 사용하면 앱을 사용하는 사람들끼리 동영상을 Facebook에서 공유할 수 있습니다.

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

Uri videoFileUri = ...
ShareVideo = new ShareVideo.Builder()
        .setLocalUrl(videoUrl)
        .build();
ShareVideoContent content = new ShareVideoContent.Builder()
        .setVideo(video)
        .build();

멀티미디어

공유 대화 상자를 사용하여 앱에 있는 사진과 동영상을 포함하는 콘텐츠를 Facebook에 공유할 수 있습니다. 유의 사항은 다음과 같습니다.

  • Android용 네이티브 Facebook 앱 7.1 이상 버전이 설치되어 있어야 합니다.
  • 한 번에 최대 6개의 사진과 동영상을 공유할 수 있습니다.

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

SharePhoto sharePhoto1 = new SharePhoto.Builder()
    .setBitmap(...)
    .build();
SharePhoto sharePhoto2 = new SharePhoto.Builder()
    .setBitmap(...)
    .build();
ShareVideo shareVideo1 = new ShareVideo.Builder()
    .setLocalUrl(...)
    .build();
ShareVideo shareVideo2 = new ShareVideo.Builder()
    .setLocalUrl(...)
    .build();

ShareContent shareContent = new ShareMediaContent.Builder()
    .addMedium(sharePhoto1)
    .addMedium(sharePhoto2)
    .addMedium(shareVideo1)
    .addMedium(shareVideo2)
    .build();

ShareDialog shareDialog = new ShareDialog(...);
shareDialog.show(shareContent, Mode.AUTOMATIC);

공유 인터페이스 추가

모델을 빌드하여 콘텐츠를 처리한 다음, Facebook 공유 인터페이스를 트리거합니다.

버튼

Facebook에서는 공유를 트리거하기 위해 Android용 네이티브 버튼을 제공합니다.


공유하기 버튼

공유하기 버튼에서 공유 대화 상자를 호출합니다. 공유하기 버튼을 추가하려면 다음 픽셀 코드를 보기에 추가합니다.

ShareButton shareButton = (ShareButton)findViewById(R.id.fb_share_button);
shareButton.setShareContent(content);

공유 대화 상자

공유 대화 상자가 Android용 네이티브 Facebook 앱으로 전환하고 나면 게시물이 올라간 후에 앱에 제어 기능을 반환합니다. 사용 중인 SDK에 따라 앱으로 돌아오려면 뒤로 화살표 아이콘을 눌러야 할 수도 있습니다. Facebook 앱이 설치되지 않은 경우 공유 대화 상자가 웹 기반 대화 상자로 자동 폴백됩니다.

ShareDialog.show(activityOrFragment, content);

예를 들어 활동의 링크에 대하여 ShareDialog를 표시하려면 onCreate 메서드에 ShareDialog 인스턴스를 만듭니다.

public class MainActivity extends FragmentActivity {
    CallbackManager callbackManager;
    ShareDialog shareDialog;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        callbackManager = CallbackManager.Factory.create();
        shareDialog = new ShareDialog(this);
        // this part is optional
        shareDialog.registerCallback(callbackManager, new FacebookCallback<Sharer.Result>() { ... });
    }

그런 다음 ShareDialog를 표시합니다.

if (ShareDialog.canShow(ShareLinkContent.class)) {
    ShareLinkContent linkContent = new ShareLinkContent.Builder()
            .setContentUrl(Uri.parse("http://developers.facebook.com/android"))
            .build();
    shareDialog.show(linkContent);
}

마지막으로 onActivityResult에서 SDK의 callbackManager를 호출하여 응답을 처리하게 합니다.

@Override
protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    callbackManager.onActivityResult(requestCode, resultCode, data);
}

AndroidX 액티비티 또는 프래그먼트를 사용하는 경우 onActivityResult를 다시 정의할 필요가 없습니다.

메시지 대화 상자

메시지 대화 상자가 Android용 네이티브 Messenger 앱으로 전환하고 나면 게시물이 올라간 후에 앱에 제어 기능을 반환합니다. 사용 중인 SDK에 따라 앱으로 돌아오려면 뒤로 화살표 아이콘을 눌러야 할 수도 있습니다.

MessageDialog.show(activityOrFragment, content);

해시태그

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

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

ShareLinkContent content = new ShareLinkContent.Builder()
        .setContentUrl(Uri.parse("https://developers.facebook.com"))
        .setShareHashtag(new ShareHashtag.Builder()
                .setHashtag("#ConnectTheWorld")
                .build());
        .build();

고급 주제

기본 제공 공유 폴백

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

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

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