การแชร์ใน iOS

หลังจากใช้การเข้าสู่ระบบด้วย Facebook, การแชร์ผ่าน Facebook หรือ Facebook Gaming เหตุการณ์บางอย่างในแอพของคุณจะได้รับการลงบันทึกและเก็บรวบรวมไว้สำหรับตัวจัดการเหตุการณ์โดยอัตโนมัติ เว้นแต่คุณจะปิดใช้งานการลงบันทึกเหตุการณ์อัตโนมัติ เราขอแนะนำให้ผู้พัฒนาแอพทั้งหมดที่ใช้การเข้าสู่ระบบด้วย Facebook, การแชร์ผ่าน Facebook หรือ Facebook Gaming ทำความเข้าใจวิธีการทำงานของฟังก์ชันนี้ สำหรับรายละเอียดเกี่ยวกับข้อมูลที่ถูกรวบรวมและวิธีปิดใช้การลงบันทึกเหตุการณ์ในแอพอัตโนมัติ โปรดดูการลงบันทึกเหตุการณ์ในแอพอัตโนมัติ

ดูรายละเอียดเพิ่มเติมเกี่ยวกับ FB iOS SDK ได้ที่นี่

คู่มือฉบับนี้อธิบายรายละเอียดวิธีเปิดใช้งานการแชร์จากแอพ iOS ของคุณไปยัง Facebook เมื่อมีคนแชร์เนื้อหาจากแอพของคุณ เนื้อหานั้นจะปรากฏบนไทม์ไลน์ของบุคคลนั้นและในฟีดของเพื่อนบุคคลนั้นด้วย

ข้อกำหนดเบื้องต้น

ก่อนที่คุณจะเพิ่มการแชร์ไปยังแอพของคุณ คุณจำเป็นต้องดำเนินการต่อไปนี้:

  • เพิ่ม Facebook SDK สำหรับ iOS ลงในสภาพแวดล้อมการพัฒนาบนมือถือของคุณ
  • กำหนดค่าและเชื่อมกับ ID ของแอพ Facebook ของคุณ
  • เพิ่ม ID ของแอพ, ชื่อที่แสดง และเหตุผลที่เจ้าหน้าที่สามารถอ่านได้สำหรับการเข้าถึงรูปภาพในไฟล์ .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 ได้โดยใช้กล่องการแชร์หรืออินเทอร์เฟซแบบกำหนดเอง โดยมีรายละเอียดดังนี้:

  • รูปภาพต้องมีขนาดน้อยกว่า 12 MB
  • ผู้ใช้ต้องติดตั้งแอพ Facebook สำหรับ iOS แบบเนทีฟในเวอร์ชั่น 7.0 ขึ้นไป

สร้างเนื้อหาการแชร์สำหรับรูปภาพของคุณด้วยรูปแบบ 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 โดยใช้กล่องการแชร์หรืออินเทอร์เฟซแบบกำหนดเองของคุณ โดยมีรายละเอียดดังนี้:

  • วิดีโอต้องมีขนาดเล็กกว่า 50 MB
  • ผู้ที่แชร์ควรติดตั้งไคลเอ็นต์ Facebook สำหรับ iOS เวอร์ชั่น 26.0 ขึ้นไป

สร้างเนื้อหาการแชร์สำหรับวิดีโอของคุณด้วยรูปแบบ 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 โดยใช้กล่องการแชร์ได้ ซึ่งต้องคำนึงถึงสิ่งต่อไปนี้:

  • ผู้ที่แชร์ควรติดตั้งไคลเอ็นต์ Facebook สำหรับ iOS
  • รูปภาพต้องมีขนาดเล็กกว่า 12 MB และวิดีโอต้องมีขนาดเล็กกว่า 50 MB
  • ผู้ใช้สามารถแชร์วิดีโอได้สูงสุด 1 รายการกับรูปภาพ 29 หรือ 30 รูป

สร้างเนื้อหาการแชร์มัลติมีเดียของคุณด้วยรูปแบบ 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

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 ที่เผยแพร่จากแอพของคุณ แอพจะเปิดขึ้นและคุณสามารถเชื่อมโยงไปยังเนื้อหาที่เจาะจงภายในแอพได้

โปรแกรมจำลองและการทดสอบสำหรับ iOS

หากกำลังใช้โปรแกรมจำลองเพื่อทดสอบการแชร์ในแอพพลิเคชั่น คุณจะเห็นข้อผิดพลาดถ้าคุณพยายามแชร์วิดีโอหรือรูปภาพ นั่นเป็นเพราะคุณต้องติดตั้ง Facebook สำหรับ iOS ซึ่งมีกล่องการแชร์ ทั้งนี้ เราไม่รองรับกล่องการแชร์นี้ในโปรแกรมจำลอง

ในกรณีที่แชร์ลิงก์ คุณไม่จำเป็นต้องติดตั้ง Facebook สำหรับ iOS ไว้เพื่อจะทำกรณีการทดสอบนี้ก็ได้ หากต้องการทดสอบสถานการณ์การแชร์อื่นๆ โปรดตั้งค่าอุปกรณ์ที่จะใช้ทดสอบจริงที่มี Facebook สำหรับ iOS ติดตั้งไว้อยู่