Chia sẻ trên iOS

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.

Bạn có thể tham khảo thêm thông tin chi tiết về Facebook SDK dành cho iOS tại đây.

Hướng dẫn này sẽ nêu chi tiết cách cho phép chia sẻ từ ứng dụng iOS 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à trên Bảng tin của bạn bè họ.

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

Trước khi thêm tính năng chia sẻ vào ứng dụng, bạn cần:

  • Thêm Facebook SDK dành cho iOS vào môi trường phát triển di động của bạn
  • Đặt cấu hình và liên kết ID ứng dụng Facebook
  • Thêm ID ứng dụng, tên hiển thị và lý do ở định dang con người đọc được về quyền truy cập ảnh cho file .plist của ứng dụng.
  • Liên kết FBSDKShareKit.framework với dự án của bạn.

Ứng dụng của bạn không nên điền sẵn bất kỳ nội dung nào sẽ được 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 dành cho nhà phát triển.

Bắt đầu sử dụng SDK dành cho iOS

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

Mỗi loại nội dung có một giao diện mà bạn có thể dùng để biểu thị loại nội dung phù hợp với SharingContent. Sau khi bạn 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 sao cho phù hợp với Sharing hoặc sử dụng lớp ShareDialog được cung cấp.

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 bằng mô hình ShareLinkContent.

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

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()

Lưu ý: Nếu nội dung chia sẻ ứng dụng của bạn liên kết đến iTunes hoặc cửa hàng Google Play, chúng tôi sẽ không đăng bất kỳ hình ảnh hoặc nội dung mô tả nào mà bạn chỉ định trong nội dung chia sẻ. Thay vào đó, chúng tôi sẽ đăng một số thông tin ứng dụng mà chúng tôi thu thập trực tiếp từ cửa hàng ứng dụng bằng Webcrawler. Thông tin này có thể không bao gồm hình ảnh. Nếu muốn xem trước nội dung chia sẻ liên kết với iTunes hoặc Google Play, hãy nhập URL của bạn vào Trình gỡ lỗi chia sẻ.

Ả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 qua một 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 gốc Facebook dành cho iOS, phiên bản 7.0 trở lên

Hãy tạo nội dung chia sẻ cho ảnh bằng mô hình SharePhotoContent.

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
}

Video

Những người 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 bằng giao diện tùy chỉnh của riêng bạn:

  • Video phải có kích thước dưới 50MB.
  • Những người chia sẻ cần cài đặt ứng dụng Facebook dành cho iOS, phiên bản 26.0 trở lên.

Hãy tạo nội dung chia sẻ cho video bằng mô hình FBSDKShareVideoContent. Để biết danh sách tất cả thuộc tính, hãy xem tài liệu tham khảo về 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)
    }
}

Nội dung đa phương tiện

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

  • Những người chia sẻ cần cài đặt ứng dụng Facebook dành cho iOS.
  • Ảnh phải có kích thước dưới 12MB và video phải có kích thước dưới 50MB.
  • Mọi người có thể chia sẻ tối đa 1 video cùng với 29 hoặc 30 ảnh.

Hãy tạo nội dung chia sẻ đa phương tiện bằng mô hình ShareMediaContent.

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

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

Phương thức 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 hộp thoại Chia sẻ hoặc Nhắn tin.

Nút

Trên iOS, Facebook có các nút riêng để kích hoạt quá trình chia sẻ.


Nút Chia sẻ

Với Nút Chia sẻ, mọi người có thể chia sẻ nội dung lên dòng thời gian của mình trên Facebook, dòng thời gian của bạn bè hoặc trong một nhóm. Nút Chia sẻ sẽ gọi hộp thoại Chia sẻ. Để thêm nút Chia sẻ vào chế độ xem, hãy thêm đoạn mã sau vào chế độ xem của bạn:

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

Nút Gửi

Với nút Gửi, mọi người có thể gửi riêng ảnh, video và liên kết cho bạn bè và người liên hệ của mình qua ứng 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:

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

Nếu bạn không cài đặt ứng dụng Messenger, nút Gửi sẽ bị mờ. Để kiểm tra xem có thể sử dụng nút Gửi trên thiết bị hiện tại hay không, hãy sử dụng thuộc tính SendButtonisImplicitlyDisabled:

Hộp thoại Chia sẻ

Để sử dụng trải nghiệm chia sẻ do Facebook xây dựng, bạn cần xác định nội dung của mình như trong phần lập mô hình nội dung nêu trên, sau đó gọi Hộp thoại Chia sẻ. Ví dụ: để chia sẻ liên kết bằng Hộp thoại Chia sẻ:

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()

Trong các phiên bản trước của SDK dành cho iOS, ứng dụng của bạn phải kiểm tra ứng dụng Facebook gốc, đã cài đặt thì mới 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 chưa cài đặt ứng dụng, 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 dữ liệu.

Nếu bạn đã cài đặt ứng dụng Facebook gốc, mọi người sẽ nhìn thấy Trang tính chia sẻ của iOS thay vì chuyển sang ứng dụng gốc Facebook dành cho iOS.

Hộp thoại Nhắn tin

Hộp thoại Nhắn tin sẽ chuyển sang ứng dụng gốc Messenger dành cho iOS, sau đó trả quyền kiểm soát về ứng dụng của bạn sau khi bài viết được đăng.

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

Lưu ý: Hiện tại, Hộp thoại Nhắn tin không được hỗ trợ trên iPad.

Tích hợp iOS

iOS cung cấp trang tính chia sẻ gốc để mọi người đăng cập nhật trạng thái, ảnh, video và liên kết lên Facebook, đồng thời hỗ trợ đặt đối tượng cho bài viết và gắn thẻ bài viết với một vị trí. Facebook SDK hỗ trợ việc sử dụng bộ điều khiển gốc này. Trải nghiệm này chính là những gì mà mọi người sẽ nhìn thấy trong hầu hết các trường hợp khi bạn gọi Hộp thoại Chia sẻ lên Facebook.

Việc sử dụng trang tính chia sẻ của iOS phải tuân theo Chính sách dành cho nhà phát triển, bao gồm mục 2.3 nêu rõ rằng ứng dụng không được điền sẵn trong trường hợp có trang tính chia sẻ. Nghĩa là ứng dụng không được điền sẵn nội dung không do người dùng ứng dụng nhập vào trường initialText của trang tính chia sẻ.

API này cũng sử dụng khối kiểu giống như các phần khác của Facebook SDK. Để hiển thị hộp thoại chia sẻ gốc trên iOS, hãy sử dụng:

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

Lưu ý rằng bạn cần có đối số viewController để trang tính chia sẻ hiển thị.

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.

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

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

Chủ đề nâng cao

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 mình.

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

Trình mô phỏng iOS và thử nghiệm

Nếu đang sử dụng Trình mô phỏng để thử nghiệm tính năng chia sẻ trong ứng dụng, bạn sẽ gặp lỗi khi cố gắng chia sẻ video hoặc Ảnh. Điều này là do bạn cần cài đặt ứng dụng Facebook dành cho iOS có chứa Hộp thoại Chia sẻ. Chúng tôi không hỗ trợ ứng dụng này cho Trình mô phỏng.

Trong trường hợp chia sẻ liên kết, bạn không cần cài đặt ứng dụng Facebook dành cho iOS để có thể thực hiện thử nghiệm này. Để thử nghiệm các tình huống Chia sẻ khác, hãy thiết lập một thiết bị thử nghiệm thực đã cài đặt Facebook dành cho iOS.