在您整合 Facebook 登入、Facebook 分享或 Facebook Gaming 產品後,除非您停用事件自動記錄功能,否則系統會為事件管理工具自動記錄並蒐集特定應用程式事件。我們建議所有使用 Facebook 登入、Facebook 分享或 Facebook Gaming 產品的應用程式開發人員了解此功能的運作方式。若要進一步了解系統會蒐集哪些資料,以及如何停用事件自動記錄功能,請參閱應用程式事件自動記錄一文。
有關 Facebook iOS SDK 的詳情,請瀏覽此頁面。
本指南詳細說明如何啟用從您的 iOS 應用程式分享內容至 Facebook 的功能。當用戶從您的應用程式分享內容時,其內容會顯示在用戶的生活時報及用戶朋友的動態消息中。
若要將分享功能加至您的應用程式,您需要執行以下操作:
.plist
檔案的相片。FBSDKShareKit.framework
連結至您的專案。您的應用程式不可預先填入任何要分享的內容,否則將違反《Facebook 平台政策》,請參閱《開發商政策》。
iOS SDK 新手指南每個內容類型都有一個您可以用來代表它的介面,而且此介面符合 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 的連結,請在分享偵錯工具中輸入您的網址。
用戶可以使用「分享」對話框或自訂介面,從您的應用程式將相片分享至 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]
透過建立模型來處理內容後,您可以觸發「分享」或「訊息」對話框。
在 iOS 上,Facebook 設有可觸發分享的原生按鈕。
有了分享按鈕,您便可以允許用戶將內容分享至自己的 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()
在舊版 iOS 版 SDK 中,您的應用程式需要先檢查是否已安裝原生 Facebook 應用程式,然後才能開啟「分享」對話框。如果用戶尚未安裝該應用程式,您需要自行提供程式碼以呼叫後援對話框。
現在,SDK 會自動檢查原生 Facebook 應用程式。如果未有安裝此應用程式,SDK 會將用戶切換至其預設瀏覽器,並開啟「動態消息」對話框。
如果已經安裝原生 Facebook 應用程式,則用戶將會看到 iOS 分享表格,而且系統不會將用戶切換至原生 iOS 版 Facebook 應用程式。
「訊息」對話框會切換至原生 iOS 版 Messenger 應用程式,然後在發佈帖子之後將控制權交回您的應用程式。
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 帖子時,應用程式會開啟,您甚至可以連結至應用程式內的特定內容。
如果您在應用程式中使用模擬器測試分享功能,嘗試以此分享影片或相片,您將會看到錯誤,因為您需要安裝 iOS 版 Facebook,才能使用其提供的「分享」對話框。我們不對模擬器提供此等支援。
如果是分享連結,您不需要安裝 iOS 版 Facebook,因此這個測試案例屬可行情況。若要測試其他分享情境,請設定已安裝 iOS 版 Facebook 的實際測試裝置。