Chia sẻ trên Android

Sau khi bạn tích hợp phương thức Đăng nhập bằng Facebook, tính năng Chia sẻ lên Facebook hoặc Facebook Gaming, hệ thống sẽ tự động ghi và thu thập một số Sự kiện trong ứng dụng cho Trình quản lý sự kiện, trừ khi bạn tắt tính năng Tự động ghi sự kiện trong ứng dụng. Tất cả những nhà phát triển ứng dụng dùng phương thức Đăng nhập bằng Facebook, tính năng Chia sẻ lên Facebook hoặc Facebook Gaming nên nắm rõ cách hoạt động của chức năng này. Để biết chi tiết về loại thông tin được thu thập và cách tắt tính năng Tự động ghi sự kiện trong ứng dụng, hãy xem bài viết Tự động ghi sự kiện trong ứng dụng.

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

Khi bạn triển khai tính năng chia sẻ, ứng dụng của bạn không nên điền sẵn bất kỳ nội dung nào cần chia sẻ. Việc điền sẵn nội dung là không nhất quán với Chính sách dành cho nhà phát triển.

Dưới đây là ảnh ví dụ về hộp thoại chia sẻ trong ứng dụng của bạn (ảnh bên trái) và bài viết hiển thị trên ứng dụng Facebook (ảnh bên phải).

Bắt đầu sử dụng tính năng chia sẻ

SDK Chia sẻ dành cho Android là một thành phần của Facebook SDK dành cho Android.

Nếu bạn muốn sử dụng SDK Chia sẻ lên Facebook trong dự án của mình, hãy biến SDK này thành một phần phụ thuộc trong Maven.

  1. Trong dự án của bạn, hãy mở your_app | Gradle Scripts | build.gradle (Project) và thêm kho lưu trữ sau vào phần buildscript { repositories {}}:

    mavenCentral() 
    
  2. Trong dự án của bạn, hãy mở your_app | Gradle Scripts | build.gradle (Module: app) và thêm câu lệnh tổng hợp sau vào phần dependencies{}:

    compile 'com.facebook.android:facebook-share:latest.release'
    
  3. Tạo dự án.

  4. Lấy ID ứng dụng trên Facebook có cấu hình phù hợp và đã liên kết với ứng dụng Android của bạn.

  5. Tạo một hash khóa phát triển dành cho Android và thêm hash đó vào trang Ứng dụng mẫu trong phần cài đặt cho nhà phát triển. Hãy xem phần Tạo hash khóa phát triểnChạy ứng dụng mẫu để biết chi tiết.

  6. Thêm ContentProvider vào file AndroidManifest.xml và đặt {APP_ID} thành 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"/>
    
  7. Nếu ứng dụng của bạn nhắm mục tiêu đến Android 11 trở lên, hãy thêm khối truy vấn sau vào file AndroidManifest.xml để Ứng dụng Facebook có thể hiển thị với Ứng dụng của bạn:

    <queries><provider android:authorities="com.facebook.katana.provider.PlatformProvider" /></queries>
  8. Thêm Facebook Activity vào dự án của bạn và đưa nó vào file AndroidManifest.xml.

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ẻ đều có một lớp mà bạn có thể dùng để biểu thị 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 chia sẻ sẽ bao gồm contentURL kèm liên kết được chia sẻ. Hãy 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ả thuộc tính, hãy xem tài liệu tham khảo về ShareLinkContent.

Dưới đây là ví dụ về cách bạn có thể kích hoạt tính năng 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 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 trong nội dung chia sẻ này sẽ được 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ẻ này 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ẻ. Để chia sẻ, họ phải cài đặt ứng dụng gốc Facebook dành cho Android, phiên bản 7.0 trở lên.

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

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

Video

Những 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ẻ.

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

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

Nội dung đ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ẻ. Hãy lưu ý những điểm sau:

  • Mọi người cần cài đặt ứng dụng gốc Facebook dành cho Android, phiên bản 71 trở lên.
  • Mọi người có thể chia sẻ tối đa 6 ảnh và video mỗi lúc.

Hãy tạo nội dung chia sẻ đa phương tiện bằng mô hình ShareMediaContent. Để biết danh sách tất cả thuộc tính, hãy xem tài liệu tham khảo về 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 bạn xử lý nội dung bằng cách tạo mô hình, hãy kích hoạt một giao diện chia sẻ lên Facebook.

Nút

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


Nút Chia sẻ

Nút Chia sẻ sẽ gọi hộp thoại Chia sẻ. Nếu bạn muốn bổ sung 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);

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 một 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 bạn chưa cài đặt ứng dụng Facebook, 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 để 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);
}

Nếu đang sử dụng các hoạt động hoặc phân đoạn của AndroidX, bạn không cần phải ghi đè onActivityResult.

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 một 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);

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ó thể gỡ hộp thoại này trước khi đăng.

Sau đây là ví dụ về cách thêm hashtag vào nội dung 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();

Chủ đề nâng cao

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

Trong các phiên bản trước của Facebook SDK dành cho Android, ứng dụng của bạn phải kiểm tra xem một ứng dụng Facebook gốc đã được cài đặt hay chưa thì mới có thể mở Hộp thoại Chia sẻ. Nếu người dùng 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 này sẽ chuyển mọi người đến trình duyệt mặc định của họ và mở Hộp thoại Nguồn cấp dữ liệu.

Với Liên kết ứng dụng, bạn có thể 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 một 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 đó và thậm chí bạn có thể liên kết đến nội dung cụ thể trong ứng dụng.