Chia sẻ trên Android

Hướng dẫn này sẽ nêu chi tiết cách cho phép chia sẻ từ ứng dụng Android của bạn lên Facebook. Khi ai đó chia sẻ từ ứng dụng của bạn, nội dung sẽ xuất hiện trên Dòng thời gian của họ và có thể xuất hiện trên Bảng tin của bạn bè họ.

Mọi người cũng có thể chia sẻ nội dung từ ứng dụng của bạn lên Facebook Messenger.

Điều kiện tiên quyết

Trước khi có thể chia sẻ trên Facebook từ ứng dụng của mình, bạn phải liên kết hoặc tải SDK Chia sẻ trên Facebook dành cho Android.

SDK Chia sẻ dành cho Android là một thành phần của Facebook SDK dành cho Android. Để sử dụng SDK Chia sẻ trên Facebook trong dự án của bạn, hãy biến SDK này thành phần phụ thuộc trong Maven hoặc tải xuống. Chọn phương thức bạn thích bằng nút sau.

Liên kết SDK với Maven

  1. Trong dự án của bạn, hãy mở your_app | Gradle Scripts | build.gradle (Project) và thêm nguồn sau vào phần buildscript { repositories {}} để tải SDK xuống từ Kho lưu trữ trung tâm của Maven:
    mavenCentral() 
  2. Trong dự án của bạn, mở your_app | Gradle Scripts | build.gradle (Module: app) và thêm câu lệnh tổng hợp sau đây vào phần dependencies{} để tổng hợp phiên bản SDK mới nhất:
    compile 'com.facebook.android:facebook-share:[4,5)'
  3. Xây dựng dự án của bạn.

Tải SDK xuống

Để tải SDK xuống, hãy nhấp vào nút sau.

Tải xuống SDK

Khi bạn sử dụng SDK Chia sẻ trên Facebook, sự kiện trong ứng dụng sẽ tự động được ghi lại và thu thập cho Phân tích trên Facebook trừ khi bạn vô hiệu hóa tính năng ghi sự kiện tự động. Để biết thông tin chi tiết về loại thông tin được thu thập và cách vô hiệu hóa tính năng ghi sự kiện tự động, hãy xem Ghi sự kiện trong ứng dụng tự động.

Điều kiện tiên quyết khác

Bên cạnh đó, bạn cần thực hiện những việc sau:

Để biết chi tiết về những yêu cầu này, hãy xem Android - Bắt đầu.

Bạn cũng cần thiết lập ContentProvider trong AndroidManifest.xml của bạn, trong đó {APP_ID} là ID ứng dụng của bạn:

<provider android:authorities="com.facebook.app.FacebookContentProvider{APP_ID}"
          android:name="com.facebook.FacebookContentProvider"
          android:exported="true"/>

Khi triển khai chia sẻ, ứng dụng của bạn không được điền trước bất kỳ nội dung nào sẽ chia sẻ. Điều này không phù hợp với Chính sách nền tảng của Facebook, hãy xem Chính sách nền tảng của Facebook, 2.3.

Lập mô hình nội dung

Phiên bản 4.0 trở lên của Facebook SDK có các mô hình mới để chia sẻ nội dung. Mỗi loại nội dung mà mọi người muốn chia sẻ có một lớp mà bạn có thể sử dụng để thể hiện loại nội dung. Sau khi lập mô hình nội dung, hãy thêm giao diện chia sẻ vào ứng dụng của bạn.

Khi mọi người chia sẻ liên kết từ ứng dụng của bạn lên Facebook, nội dung đó bao gồm một contentURL kèm liên kết sẽ được chia sẻ. Tạo nội dung chia sẻ cho liên kết trong mô hình ShareLinkContent. Để biết danh sách tất cả các thuộc tính, hãy xem tài liệu tham khảo ShareLinkContent.

Kể từ 18/4/2017, API Đồ thị phiên bản 2.9 trở lên sẽ không còn hỗ trợ các thông số sau. Đối với phiên bản 2.8 trở xuống, các thông số sẽ tiếp tục hoạt động đến 17/7/2017.

  • contentTitle, thể hiện tiêu đề của nội dung trong liên kết
  • imageURL, URL của hình nhỏ xuất hiện trên bài viết
  • contentDescription của nội dung, thường từ 2 đến 4 câu

Dưới đây là ví dụ về cách bạn có thể kích hoạt chia sẻ:

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

Để xem trước nội dung chia sẻ liên kết với Google Play hoặc App Store, hãy nhập URL của bạn vào Trình gỡ lỗi chia sẻ.

Nếu nội dung chia sẻ ứng dụng của bạn chứa liên kết đến bất kỳ ứng dụng nào trên Google Play hoặc App Store, phần mô tả và hình ảnh nằm trong nội dung chia sẻ sẽ bị bỏ qua. Thay vào đó, chúng tôi sẽ trích xuất tiêu đề và hình ảnh của ứng dụng đó trực tiếp từ cửa hàng (và nếu không có hình ảnh, nội dung chia sẻ sẽ không bao gồm hình ảnh).

Ảnh

Mọi người có thể chia sẻ ảnh từ ứng dụng của bạn lên Facebook bằng hộp thoại Chia sẻ hoặc giao diện tùy chỉnh.

  • Ảnh phải có kích thước dưới 12MB
  • Mọi người cần cài đặt ứng dụng Facebook gốc dành cho Android, phiên bản 7.0 trở lên

Tạo nội dung chia sẻ cho ảnh trong mô hình SharePhotoContent. Để biết danh sách tất cả các thuộc tính, hãy xem tài liệu tham khảo SharePhotoContent.

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

Video

Mọi người sử dụng ứng dụng của bạn có thể chia sẻ video lên Facebook bằng hộp thoại Chia sẻ hoặc giao diện tùy chỉnh của riêng bạn.

Video phải có kích thước dưới 12MB.

Tạo nội dung chia sẻ cho video trong mô hình ShareVideoContent. Để biết danh sách tất cả các thuộc tính, hãy xem tài liệu tham khảo ShareVideoContent.

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

Đa phương tiện

Mọi người có thể chia sẻ kết hợp ảnh và video từ ứng dụng của bạn lên Facebook bằng hộp thoại Chia sẻ. Lưu ý những điểm sau:

  • Mọi người cần cài đặt ứng dụng Facebook gốc dành cho Android, phiên bản 71 trở lên.
  • Ảnh phải có kích thước dưới 12MB.
  • Video phải có kích thước dưới 12MB.
  • Mọi người có thể chia sẻ tối đa 6 ảnh và video cùng lúc.

Tạo nội dung chia sẻ đa phương tiện của bạn bằng mô hình ShareMediaContent. Để biết danh sách tất cả các thuộc tính, hãy xem tài liệu tham khảo 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);

Thêm giao diện chia sẻ

Sau khi xử lý nội dung bằng cách xây dựng mô hình, bạn có thể kích hoạt giao diện chia sẻ của Facebook hoặc xây dựng giao diện của riêng bạn để gọi API Đồ thị.

Nút

Facebook cung cấp các nút gốc dành cho Android để kích hoạt chia sẻ.


Với bản phát hành phiên bản 4.28.0 của Facebook SDK dành cho Android, nút Thích dành cho Android sẽ không được dùng nữa. Tính năng này sẽ được hỗ trợ đến ngày 5/2/2018.

Nút Thích

Nút Thích là một cách nhanh chóng để mọi người chia sẻ nội dung với bạn bè. Một lần nhấn vào nút Thích sẽ 'thích' đoạn nội dung từ ứng dụng của bạn và chia sẻ chúng trên Facebook. Nút Thích có thể được sử dụng để thích Trang Facebook hoặc bất kỳ đối tượng nào trong Open Graph và có thể được URL hoặc ID tham chiếu. Để thêm nút Thích, hãy thêm đoạn mã sau vào chế độ xem của bạn:

LikeView likeView = (LikeView) findViewById(R.id.like_view);
likeView.setObjectIdAndType(
    "https://www.facebook.com/FacebookDevelopers",
    LikeView.ObjectType.PAGE);

Nút Chia sẻ

Nút Chia sẻ sẽ gọi hộp thoại Chia sẻ. Để thêm nút Chia sẻ, hãy thêm đoạn mã sau vào chế độ xem của bạn:

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

Với bản phát hành Facebook SDK phiên bản 4.28.0, nút Gửi sẽ không được dùng nữa. Tính năng này sẽ được hỗ trợ đến ngày 5/2/2018.

Nút Gửi

Nút Gửi cho phép mọi người gửi riêng tư ảnh, video và liên kết đến bạn bè và liên hệ của mình bằng cách sử dụng Facebook Messenger. Nút Gửi sẽ gọi hộp thoại Nhắn tin. Để thêm nút Gửi vào chế độ xem, hãy thêm đoạn mã sau vào chế độ xem của bạn:

SendButton sendButton = (SendButton)findViewById(R.id.fb_send_button);
sendButton.setShareContent(shareContent);
sendButton.registerCallback(callbackManager, new FacebookCallback<Sharer.Result>() { ... });

Hộp thoại Chia sẻ

Hộp thoại Chia sẻ sẽ chuyển sang ứng dụng Facebook gốc dành cho Android, sau đó trả quyền kiểm soát về ứng dụng của bạn sau khi bài viết được đăng. Tùy thuộc vào SDK bạn đang sử dụng, mọi người có thể cần nhấn vào biểu tượng mũi tên quay lại để quay lại ứng dụng của bạn. Nếu ứng dụng Facebook chưa được cài đặt, hộp thoại Chia sẻ sẽ tự động chuyển về hộp thoại dựa trên web.

ShareDialog.show(activityOrFragment, content);

Ví dụ: để hiển thị ShareDialog cho một liên kết trong hoạt động của bạn, hãy tạo phiên bản ShareDialog trong phương thức onCreate:

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>() { ... });
    }

Sau đó, hiển thị ShareDialog:

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

Cuối cùng, gọi callbackManager của SDK trong onActivityResult của bạn để xử lý phản hồi:

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

Hộp thoại Nhắn tin

Hộp thoại Nhắn tin sẽ chuyển sang ứng dụng Messenger gốc dành cho Android, sau đó trả quyền kiểm soát về ứng dụng của bạn sau khi bài viết được đăng. Tùy thuộc vào SDK bạn đang sử dụng, mọi người có thể cần nhấn vào biểu tượng mũi tên quay lại để quay lại ứng dụng của bạn.

MessageDialog.show(activityOrFragment, content);

Tính năng bổ sung

Khi sử dụng hộp thoại chia sẻ của Facebook, bạn có thêm các tùy chọn không có sẵn khi bạn chia sẻ bằng API.

Hashtag

Bạn có thể chỉ định một hashtag duy nhất để xuất hiện cùng với ảnh, liên kết hoặc video được chia sẻ. Hashtag này cũng sẽ xuất hiện trong hộp thoại Chia sẻ và mọi người có cơ hội xóa hộp thoại này trước khi đăng.

Sau đây là ví dụ về cách thêm hashtag vào chia sẻ liên kết.

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

Chia sẻ trích dẫn

Bạn có thể cho phép mọi người đánh dấu văn bản xuất hiện dưới dạng trích dẫn bằng liên kết được chia sẻ. Ngoài ra, bạn có thể định sẵn trích dẫn, ví dụ như một đoạn trích trong bài viết xuất hiện kèm theo liên kết được chia sẻ. Trong cả hai trường hợp, trích dẫn sẽ xuất hiện trong trường riêng, tách biệt với bình luận của người dùng.

ShareLinkContent content = new ShareLinkContent.Builder()
        .setContentUrl(Uri.parse("https://developers.facebook.com"))
        .setQuote("Connect on a global scale.")
        .build();

Chủ đề nâng cao

Dự phòng chia sẻ tích hợp

Trong các phiên bản trước của SDK dành cho Android, ứng dụng của bạn phải kiểm tra ứng dụng Facebook gốc, đã cài đặt trước khi có thể mở hộp thoại Chia sẻ. Nếu một người chưa cài đặt ứng dụng, bạn phải cung cấp mã của chính mình để gọi hộp thoại dự phòng.

Giờ đây, SDK sẽ tự động kiểm tra ứng dụng Facebook gốc. Nếu ứng dụng chưa được cài đặt, SDK sẽ chuyển mọi người đến trình duyệt mặc định và mở hộp thoại Nguồn cấp. Nếu ai đó muốn chia sẻ tin đăng bằng Open Graph, SDK sẽ mở hộp thoại Chia sẻ trên web.

Với Liên kết ứng dụng, bạn sẽ liên kết trở lại ứng dụng từ bài viết trên Facebook được đăng từ ứng dụng của bạn. Khi mọi người nhấp vào bài viết trên Facebook được đăng từ ứng dụng của bạn, thao tác này sẽ mở ứng dụng của bạn và bạn thậm chí có thể liên kết đến nội dung cụ thể trong ứng dụng.

Giao diện tùy chỉnh

Nếu muốn sử dụng giao diện của riêng mình để chia sẻ, bạn cần:

  • Xây dựng giao diện tùy chỉnh sẽ đăng lên điểm cuối API Đồ thị /me/feed
  • Triển khai Đăng nhập Facebook trong ứng dụng của bạn
  • Yêu cầu quyền publish_actions khi mọi người đăng nhập ứng dụng của bạn

Dưới đây là mã để đăng liên kết lên Facebook từ giao diện của riêng bạn:

ShareApi.share(content, null);

Chia sẻ tin đăng bằng Open Graph

Tin đăng bằng Open Graph cho phép mọi người chia sẻ tin đa dạng, có cấu trúc thông qua API được định kiểu rõ được xác định bởi hành động và đối tượng trong Open Graph. Những bài viết này sẽ liên kết trở lại ứng dụng của bạn hoặc với trang App Store của ứng dụng.

Để tìm hiểu thêm về cách cấu hình tin đăng bằng Open Graph, hãy xem Tin đăng bằng Open Graph trong Android.

Tạo nội dung chia sẻ cho hành động trong Open Graph trong mô hình ShareOpenGraphContent. Để biết danh sách tất cả các thuộc tính, hãy xem tài liệu tham khảo ShareOpenGraphContent.

ShareOpenGraphObject object = new ShareOpenGraphObject.Builder()
        .putString("og:type", "fitness.course")
        .putString("og:title", "Sample Course")
        .putString("og:description", "This is a sample course.")
        .putInt("fitness:duration:value", 100)
        .putString("fitness:duration:units", "s")
        .putInt("fitness:distance:value", 12)
        .putString("fitness:distance:units", "km")
        .putInt("fitness:speed:value", 5)
        .putString("fitness:speed:units", "m/s")
        .build();
ShareOpenGraphAction action = new ShareOpenGraphAction.Builder()
        .setActionType("fitness.runs")
        .putObject("fitness:course", object)
        .build();
ShareOpenGraphContent content = new ShareOpenGraphContent.Builder()
        .setPreviewPropertyName("fitness:course")
        .setAction(action)
        .build();