Chia sẻ trên iOS

Hướng dẫn này sẽ nêu chi tiết cách cho phép chia sẻ từ ứng dụng của bạn trên iOS 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è của 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 bằng Nền tảng Messenger Expression hoặc từ hộp thoại Tin nhắn của tính năng Chia sẻ trong SDK iOS.

SDK Messenger dành cho iOSHộp thoại Nhắn tin

Đ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 SDK Facebook dành cho iOS vào môi trường phát triển di động của bạn
  • Cấu hình và liên kết ID ứng dụng trên Facebook
  • Thêm ID ứng dụng, tên hiển thị và lý do phù hợp về quyền truy cập ảnh cho tệp .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 đượ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.

Bắt đầu SDK iOS

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

Phiên bản 4.0 trở lên của SDK Facebook có các mô hình mới để chia sẻ nội dung. Mỗi loại nội dung có một giao diện mà bạn có thể sử dụng để biểu thị loại nội dung phù hợp với <FBSDKSharingContent>. 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, ứng dụng phù hợp với <FBSDKSharing> chẳng hạn như FBSDKShareDialog.

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ẻ. Xây dựng nội dung chia sẻ cho liên kết bằng mô hình FBSDKShareLinkContent. Để biết danh sách tất cả các thuộc tính, hãy xem tài liệu tham khảo FBSDKShareLinkContent.

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ẻ:

FBSDKShareLinkContent *content = [[FBSDKShareLinkContent alloc] init];
content.contentURL = [NSURL URLWithString:@"https://developers.facebook.com"];

Lưu ý: Nếu nội dung chia sẻ ứng dụng của bạn liên kết đến cửa hàng Google Play hoặc iTunes, chúng tôi không đăng bất kỳ hình ảnh hoặc mô tả nào mà bạn chỉ định trong nội dung chia sẻ. Thay vào đó, chúng tôi đăng một số thông tin ứng dụng mà chúng tôi trích xuất 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. Để 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 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 iOS, phiên bản 7.0 trở lên

Xây dựng nội dung chia sẻ cho ảnh bằng mô hình FBSDKSharePhotoContent. Để biết danh sách tất cả các thuộc tính, hãy xem tài liệu tham khảo FBSDKSharePhotoContent.

- (void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info
{
  UIImage *image = info[UIImagePickerControllerOriginalImage];

  FBSDKSharePhoto *photo = [[FBSDKSharePhoto alloc] init];
  photo.image = image;
  photo.userGenerated = YES;
  FBSDKSharePhotoContent *content = [[FBSDKSharePhotoContent alloc] init];
  content.photos = @[photo];
  ...
}

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.
  • 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.

Xây dựng nội dung chia sẻ cho video bằng mô hình FBSDKShareVideoContent. Để biết danh sách tất cả các thuộc tính, hãy xem tài liệu tham khảo FBSDKShareVideoContent.

- (void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info
{
  NSURL *videoURL = [info objectForKey:UIImagePickerControllerReferenceURL];

  FBSDKShareVideo *video = [[FBSDKShareVideo alloc] init];
  video.videoURL = videoURL;
  FBSDKShareVideoContent *content = [[FBSDKShareVideoContent alloc] init];
  content.video = video;
  ...
}

URL video videoURL phải là một URL tài sản. Ví dụ: bạn có thể nhận URL tài sản của video từ UIImagePickerController.

Đ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:

  • Mọi người cần có phiên bản iOS 7.0 trở lên.
  • Những người chia sẻ cần cài đặt ứng dụng Facebook dành cho iOS, phiên bản 52.0 trở lên.
  • Mỗi ảnh và video phải có kích thước dưới 12MB.
  • Mọi người có thể chia sẻ tối đa 1 video cùng với tối đa 29 ảnh hoặc 30 ảnh.

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

FBSDKSharePhoto *photo = [FBSDKSharePhoto photoWith...
FBSDKShareVideo *video = [FBSDKShareVideo videoWith...
FBSDKShareMediaContent *content = [FBSDKShareMediaContent new];
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 Tin nhắn hay giao diện tùy chỉnh của riêng bạn để chia sẻ.

Nút

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


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. Để thêm nút Thích vào chế độ xem, hãy thêm đoạn mã sau vào chế độ xem của bạn:

FBSDKLikeControl *button = [[FBSDKLikeControl alloc] init];
button.objectID = @"https://www.facebook.com/FacebookDevelopers";
[self.view addSubview:button];

Nút Chia sẻ

Với nút Chia sẻ, bạn sẽ cho phép mọi người chia sẻ nội dung lên dòng thời gian trên Facebook của họ, lên 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:

FBSDKShareButton *button = [[FBSDKShareButton alloc] init];
button.shareContent = content;  
[self.view addSubview:button];

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 Tin nhắn. Để 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:

FBSDKSendButton *button = [[FBSDKSendButton alloc] init];
button.shareContent = content; 
[self.view addSubview:button];

Nếu ứng dụng Messenger không được cài đặt, nút Gửi sẽ bị ẩn. Đảm bảo rằng bố cục ứng dụng của bạn phù hợp khi nút này bị ẩn. Để kiểm tra xem nút Gửi có thể được hiển thị trên thiết bị hiện tại hay không, hãy sử dụng thuộc tính FBSDKSendButtonisHidden:

if (button.isHidden) {
  NSLog(@"Is hidden");
} else {
  [self.view addSubview:button];
}

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 bên 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ẻ:

FBSDKShareLinkContent *content = [[FBSDKShareLinkContent alloc] init];
content.contentURL = [NSURL URLWithString:@"http://developers.facebook.com"];
[FBSDKShareDialog showFromViewController:self
                              withContent:content
                                 delegate:nil];

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 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.

Nếu ứng dụng Facebook gốc được cài đặt, V4.0-V4.4 của SDK sẽ chuyển sang ứng dụng Facebook gốc 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. Nếu bạn đang sử dụng phiên bản 4.5 trở lên của SDK, mọi người sẽ nhìn thấy Trang tính chia sẻ của iOS thay vì được chuyển sang ứng dụng Facebook gốc dành cho iOS, trừ khi nội dung chia sẻ là tin đăng bằng Open Graph.

Hộp thoại Nhắn tin

Hộp thoại Tin nhắn sẽ chuyển sang ứng dụng Messenger gốc 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.

[FBSDKMessageDialog showWithContent:content delegate:nil];

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

Tích hợp iOS

iOS 6 trở lên cung cấp trang tính chia sẻ gốc, cho phép 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 cung cấp 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í. Bạn không thể chia sẻ Tin đăng bằng Open Graph bằng trang tính chia sẻ. SDK Facebook hỗ trợ việc sử dụng trình điều khiển gốc này; bắt đầu từ phiên bản 4.5 của SDK Facebook, trải nghiệm này 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ẻ trên Facebook.

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

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

// Example content. Replace with content from your app.
FBSDKShareLinkContent *content = [[FBSDKShareLinkContent alloc] init];
content.contentURL = [NSURL URLWithString:@"https://developers.facebook.com"];

FBSDKShareDialog *dialog = [[FBSDKShareDialog alloc] init];
dialog.fromViewController = self;
dialog.content = content;
dialog.mode = FBSDKShareDialogModeShareSheet;
[dialog show];

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

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.

FBSDKShareLinkContent *content = [[FBSDKShareLinkContent alloc] init];
content.contentURL = [NSURL URLWithString:@"https://developers.facebook.com"];
content.hashtag = [FBSDKHashtag hashtagWithString:@"#MadeWithHackbook"];

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.

FBSDKShareLinkContent *content = [[FBSDKShareLinkContent alloc] init];
content.contentURL = [@"https://developers.facebook.com/products/sharing"];
content.quote = @"Learn quick and simple ways for people to share content from your app or website to Facebook.";

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

Để sử dụng giao diện riêng để 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
  • Thêm Đăng nhập Facebook vào ứng dụng của bạn
  • Yêu cầu quyền publish_actions

Dưới đây là lệnh gọi API Đồ thị để đăng liên kết lên Facebook:

[FBSDKShareAPI shareWithContent:content delegate:nil];

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

Với Tin đăng bằng Open Graph, mọi người có thể chia sẻ nội dung đa dạng, có cấu trúc, thông qua API được định kiểu rõ, do các hành động và đối tượng Open Graph xác định.

Tin đã chia sẻ liên kết trở lại ứng dụng của bạn hoặc trang App Store của ứng dụng của bạn.

Để tìm hiểu thêm về cách thêm tin tùy chỉnh vào ứng dụng của bạn, hãy xem Tin đăng bằng Open Graph trong iOS.

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

NSDictionary *properties = @{
  @"og:type": @"fitness.course",
  @"og:title": @"Sample Course",
  @"og:description": @"This is a sample course.",
  @"fitness:duration:value": @100,
  @"fitness:duration:units": @"s",
  @"fitness:distance:value": @12,
  @"fitness:distance:units": @"km",
  @"fitness:speed:value": @5,
  @"fitness:speed:units": @"m/s",
};
FBSDKShareOpenGraphObject *object = [FBSDKShareOpenGraphObject objectWithProperties:properties];
FBSDKShareOpenGraphAction *action = [[FBSDKShareOpenGraphAction alloc] init];
action.actionType = @"fitness.runs";
[action setObject:object forKey:@"fitness:course"];
FBSDKShareOpenGraphContent *content = [[FBSDKShareOpenGraphContent alloc] init];
content.action = action;
content.previewPropertyName = @"fitness:course";

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

Nếu bạn đang sử dụng Trình mô phỏng để thử nghiệm chia sẻ trong ứng dụng của mình, bạn sẽ gặp lỗi khi cố gắng chia sẻ video, Ảnh hoặc Hành động trong Open Graph. Điều này là do bạn cần cài đặt ứng dụng Facebook dành cho iOS, ứng dụng này cung cấp 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 cài đặt Facebook dành cho iOS.