หลังจากใช้การเข้าสู่ระบบด้วย Facebook, การแชร์ผ่าน Facebook หรือ Facebook Gaming เหตุการณ์บางอย่างในแอพของคุณจะได้รับการลงบันทึกและเก็บรวบรวมไว้สำหรับตัวจัดการเหตุการณ์โดยอัตโนมัติ เว้นแต่คุณจะปิดใช้งานการลงบันทึกเหตุการณ์อัตโนมัติ เราขอแนะนำให้ผู้พัฒนาแอพทั้งหมดที่ใช้การเข้าสู่ระบบด้วย Facebook, การแชร์ผ่าน Facebook หรือ Facebook Gaming ทำความเข้าใจวิธีการทำงานของฟังก์ชันนี้ สำหรับรายละเอียดเกี่ยวกับข้อมูลที่ถูกรวบรวมและวิธีปิดใช้การลงบันทึกเหตุการณ์ในแอพอัตโนมัติ โปรดดูการลงบันทึกเหตุการณ์ในแอพอัตโนมัติ
ดูรายละเอียดเพิ่มเติมเกี่ยวกับ FB iOS SDK ได้ที่นี่
คู่มือฉบับนี้อธิบายรายละเอียดวิธีเปิดใช้งานการแชร์จากแอพ iOS ของคุณไปยัง Facebook เมื่อมีคนแชร์เนื้อหาจากแอพของคุณ เนื้อหานั้นจะปรากฏบนไทม์ไลน์ของบุคคลนั้นและในฟีดของเพื่อนบุคคลนั้นด้วย
ก่อนที่คุณจะเพิ่มการแชร์ไปยังแอพของคุณ คุณจำเป็นต้องดำเนินการต่อไปนี้:
.plist
ของแอพของคุณFBSDKShareKit.framework
กับโปรเจ็กต์ของคุณแอพของคุณไม่ควรป้อนข้อมูลเนื้อหาใดๆ ล่วงหน้าเอาไว้เพื่อที่จะแชร์ เนื่องจากขัดกับนโยบายแพลตฟอร์ม Facebook โปรดดูนโยบายผู้พัฒนา
การเริ่มต้นใช้งาน SDK สำหรับ iOSเนื้อหาแต่ละประเภทมีอินเทอร์เฟซที่คุณสามารถใช้แสดงได้ซึ่งเป็นไปตาม SharingContent
หลังจากจัดรูปแบบเนื้อหาแล้ว ให้เพิ่มอินเทอร์เฟซการแชร์ลงในแอพซึ่งเป็นไปตาม Sharing
หรือใช้ประเภท ShareDialog
ที่มีให้
เมื่อผู้ใช้แชร์ลิงก์จากแอพของคุณไปยัง Facebook ลิงก์นั้นจะรวม contentURL
กับลิงก์ที่จะแชร์ด้วย สร้างเนื้อหาการแชร์สำหรับลิงก์ของคุณด้วยรูปแบบ ShareLinkContent
ต่อไปนี้เป็นตัวอย่างวิธีในการทริกเกอร์การแชร์
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()
หมายเหตุ: หากแอพของคุณแชร์ลิงก์ไปยังร้านค้า iTunes หรือ Google Play เราจะไม่โพสต์รูปภาพหรือคำอธิบายที่คุณระบุในการแชร์นั้น แต่จะโพสต์ข้อมูลแอพบางส่วนที่นำมาจากร้านค้าแอพโดยตรงกับ Webcrawler ซึ่งอาจไม่มีรูปภาพรวมอยู่ด้วย หากต้องการดูตัวอย่างการแชร์ลิงก์ไปยัง iTunes หรือ Google Play ให้ป้อน URL ของคุณในตัวแก้ไขจุดบกพร่องการแชร์
ผู้ใช้สามารถแชร์รูปภาพจากแอพของคุณไปยัง Facebook ได้โดยใช้กล่องการแชร์หรืออินเทอร์เฟซแบบกำหนดเอง โดยมีรายละเอียดดังนี้:
สร้างเนื้อหาการแชร์สำหรับรูปภาพของคุณด้วยรูปแบบ 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 }
ผู้ที่ใช้แอพของคุณสามารถแชร์วิดีโอไปยัง Facebook โดยใช้กล่องการแชร์หรืออินเทอร์เฟซแบบกำหนดเองของคุณ โดยมีรายละเอียดดังนี้:
สร้างเนื้อหาการแชร์สำหรับวิดีโอของคุณด้วยรูปแบบ FBSDKShareVideoContent
คุณสามารถดูรายการแอตทริบิวต์ทั้งหมดได้ที่ข้อมูลอ้างอิงเกี่ยวกับ 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) } }
ผู้ที่ใช้แอพของคุณสามารถแชร์รายการที่มีทั้งรูปภาพและวิดีโอไปยัง Facebook โดยใช้กล่องการแชร์ได้ ซึ่งต้องคำนึงถึงสิ่งต่อไปนี้:
สร้างเนื้อหาการแชร์มัลติมีเดียของคุณด้วยรูปแบบ ShareMediaContent
let photo = SharePhoto(...) let video = ShareVideo(...) var content = ShareMediaContent() content.media = [photo, video]
หลังจากจัดการเนื้อหาโดยสร้างรูปแบบแล้ว คุณสามารถทริกเกอร์กล่องการแชร์หรือกล่องการส่งข้อความได้
Facebook ใน iOS มีปุ่มเนทีฟที่ทริกเกอร์การแชร์ได้
คุณสามารถใช้ปุ่มแชร์เพื่อให้ผู้ใช้แชร์เนื้อหาลงในไทม์ไลน์ Facebook ของตนเอง รวมถึงไทม์ไลน์ของเพื่อนหรือในกลุ่มได้ ปุ่มแชร์จะเรียกใช้กล่องการแชร์ หากต้องการเพิ่มปุ่มแชร์ลงในมุมมองของคุณ ให้ใส่ส่วนย่อยของโค้ดต่อไปนี้ลงในมุมมองของคุณ:
var button = FBShareButton() button.shareContent = content // Add button to view
ปุ่มส่งช่วยให้ผู้ใช้ส่งรูปภาพ วิดีโอ และลิงก์ให้กับเพื่อนและผู้ติดต่อของตนได้แบบส่วนตัวโดยใช้แอพ Facebook Messenger ปุ่มส่งจะเรียกใช้กล่องการส่งข้อความ หากต้องการเพิ่มปุ่มส่งลงในมุมมองของคุณ ให้ใส่ส่วนย่อยของโค้ดต่อไปนี้ลงในมุมมองของคุณ:
var button = SendButton() button.shareContent = content // Add button to view
หากยังไม่ได้ติดตั้งแอพ Messenger ไว้ ปุ่มส่งจะซ่อนอยู่ หากต้องการตรวจสอบว่าปุ่มส่งสามารถใช้ในอุปกรณ์ปัจจุบันได้หรือไม่ ให้ใช้คุณสมบัติ SendButton
เป็น isImplicitlyDisabled
:
หากต้องการใช้ประสบการณ์การแชร์ที่ Facebook สร้าง คุณต้องกำหนดเนื้อหาในส่วนการจัดรูปแบบเนื้อหาข้างต้น แล้วเรียกใช้กล่องการแชร์ ตัวอย่างเช่น หากต้องการแชร์ลิงก์ด้วยกล่องการแชร์ ให้ทำดังนี้
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()
ใน SDK สำหรับ iOS เวอร์ชั่นที่ผ่านมา แอพของคุณต้องตรวจสอบแอพ Facebook แบบเนทีฟที่ติดตั้งไว้ก่อนที่จะเปิดกล่องการแชร์ได้ หากผู้ใช้ไม่ได้ติดตั้งแอพไว้ คุณต้องระบุโค้ดของคุณเองเพื่อเรียกใช้กล่องโต้ตอบสำรอง
แต่ตอนนี้ SDK จะตรวจสอบแอพ Facebook แบบเนทีฟให้โดยอัตโนมัติ หากไม่ได้ติดตั้งแอพ SDK จะเปลี่ยนเส้นทางให้ผู้ใช้ไปยังเบราว์เซอร์เริ่มต้นและเปิดกล่องการแชร์บนฟีด
ถ้าติดตั้งแอพ Facebook แบบเนทีฟไว้แล้ว ผู้ใช้จะเห็นแผ่นงานการแชร์ของ iOS แทนที่จะสลับไปยังแอพ Facebook สำหรับ iOS แบบเนทีฟ
กล่องการส่งข้อความจะสลับเป็นแอพ Messenger สำหรับ iOS แบบเนทีฟ และจะคืนการควบคุมให้แอพหลังจากเผยแพร่โพสต์แล้ว
MessageDialog(content: content, delegate: delegate).show()
หมายเหตุ: ขณะนี้ระบบยังไม่รองรับกล่องการส่งข้อความบน iPad
iOS มีแผ่นงานการแชร์แบบเนทีฟที่ให้ผู้ใช้สามารถโพสต์การอัพเดตสถานะ รูปภาพ วิดีโอ และลิงก์ไปยัง Facebook ได้ รวมถึงการสนับสนุนการตั้งกลุ่มเป้าหมายให้โพสต์และการแท็กตำแหน่งในโพสต์ แอพ Facebook SDK รองรับการใช้งานคอนโทรลเลอร์เนทีฟนี้ ซึ่งจะเป็นประสบการณ์ที่ผู้คนจะเห็นในกรณีส่วนมากเมื่อเรียกใช้กล่องการแชร์ของ Facebook
การใช้แผ่นงานการแชร์ของ iOS จะต้องเป็นไปตามนโยบายผู้พัฒนาซึ่งรวมถึงหัวข้อที่ 2.3 ที่ระบุว่าแอพจะต้องไม่กรอกข้อมูลล่วงหน้าในส่วนของแผ่นงานการแชร์ นั่นหมายความว่าแอพจะต้องไม่กรอกข้อมูลเนื้อหาล่วงหน้าไว้ในช่อง "initialText" ในแผ่นงานการแชร์โดยที่ผู้ใช้แอพไม่ได้กรอกไว้
API นี้ยังใช้บล็อกสไตล์แบบเดียวกับส่วนอื่นๆ ของ Facebook SDK ด้วย หากต้องการแสดงกล่องการแชร์ของ iOS แบบเนทีฟ โปรดใช้:
let dialog = ShareDialog( viewController: self, content: content, delegate: nil ) dialog.mode = .shareSheet dialog.show()
โปรดทราบว่าคุณจำเป็นต้องมีอาร์กิวเมนต์ viewController
หากต้องการให้แผ่นงานการแชร์ปรากฏขึ้น
คุณสามารถระบุแฮชแท็กเดี่ยวให้ปรากฏพร้อมกับรูปภาพ ลิงก์ หรือวิดีโอที่แชร์ได้ แฮชแท็กนี้จะปรากฏในกล่องการแชร์ด้วยเช่นกัน และผู้ใช้จะมีโอกาสลบออกก่อนที่จะเผยแพร่ได้
ต่อไปนี้เป็นตัวอย่างการเพิ่มแฮชแท็กให้กับการแชร์ลิงก์
let content = ShareLinkContent() guard let url = URL(string: "https://developers.facebook.com") else { return } content.contentURL = url content.hashtag = Hashtag("#MadeWithHackbook")
ลิงก์ที่ไปยังแอพช่วยลิงก์กลับไปยังแอพของคุณจากโพสต์ Facebook ที่เผยแพร่มาจากแอพของคุณ
เมื่อผู้ใช้คลิกโพสต์บน Facebook ที่เผยแพร่จากแอพของคุณ แอพจะเปิดขึ้นและคุณสามารถเชื่อมโยงไปยังเนื้อหาที่เจาะจงภายในแอพได้
หากกำลังใช้โปรแกรมจำลองเพื่อทดสอบการแชร์ในแอพพลิเคชั่น คุณจะเห็นข้อผิดพลาดถ้าคุณพยายามแชร์วิดีโอหรือรูปภาพ นั่นเป็นเพราะคุณต้องติดตั้ง Facebook สำหรับ iOS ซึ่งมีกล่องการแชร์ ทั้งนี้ เราไม่รองรับกล่องการแชร์นี้ในโปรแกรมจำลอง
ในกรณีที่แชร์ลิงก์ คุณไม่จำเป็นต้องติดตั้ง Facebook สำหรับ iOS ไว้เพื่อจะทำกรณีการทดสอบนี้ก็ได้ หากต้องการทดสอบสถานการณ์การแชร์อื่นๆ โปรดตั้งค่าอุปกรณ์ที่จะใช้ทดสอบจริงที่มี Facebook สำหรับ iOS ติดตั้งไว้อยู่