Swift — 實作 Line & Facebook & Messager 分享

讓我們一起看看如何實作 Line、Facebook 以及 Messager 的分享功能吧!

Jeremy Xue
Jeremy Xue ‘s Blog
7 min readJul 12, 2020

--

✒︎ 前言:

「分享」在一個 APP 中是非常常見的需求,尤其是分享到各大社群(Line、Facebook、Instagram…)的需求。而這次我在處理的案子中也碰到了需要分享至 Line 以及分享至 Facebook 塗鴉牆的功能。這次就來簡單分享如何實作這兩個功能吧!

✒︎ 實作:

⒈ 透過 UIActivityViewController 分享:

這應該就是最簡單的實現方式了,透過 UIActivityViewController 來開啟原生的分享視窗來分享到各個平台上,而其中也會有複製、存儲、以及列印等其他功能。

接著我們應該會跳出以下分享畫面,這時我們就能分享到裝置中所擁有的 APP 中,或是執行其他的操作:

有興趣的讀者也歡迎看我之前寫的這兩篇關於 UIActivityViewController 的文章:

⒉ 使用 Line URL scheme 分享:

而分享到 Line 的方式其實不難,在 Line Developer 的官方文件裡面有一篇 Using LINE features with the LINE URL scheme。而我們就可以透過 Line 所提供的一些 URL scheme 來執行一些特殊的操作。像是發送訊息、打開設定、開啟相機等等功能。

而這篇我們因為需要分享訊息,所以可以在文件中的 Sending text messages 找到可以使用 URL scheme 寄送訊息的方法:

而這邊也要特別注意送出的 {text_message} 是需要為 URL 編碼的內容。

接著來看看我們的程式碼吧:

這邊我們透過 canOpenURL 來判斷是否能夠開啟該發送訊息的 url,如果可以開啟就使用 open 的方法來開啟寄送訊息的 url。如果無法開啟或是沒有安裝 Line,那麼我們可以採用 Line Developer 裡面的方式,將它導向至 https://line.me/R/ 這個 URL。

接著讓我們看看效果吧,在我們尚未安裝 Line 時,會跳出左邊畫面。而當我們有安裝 Line 時,則會開啟至 Line APP 並且跳出分享畫面:

⒊ 使用 Facebook-Messager URL scheme 分享:

原本有找到類似 URL scheme 來分享至 Messager,但後來查詢過後好像不推薦,可能未來 Facebook 將不支援或者這種方式可能違反 Facebook 的平台政策(與 fb-messager 相關的內容在文件上都已經看不到了)。但其實就與 Line 的 URL scheme 方式大同小異,只是抽換成以下片段:

分享效果:

⒋ 使用 Facebook iOS SDK 分享:

這應該是做 Facebook 分享功能最正確的方式了,這邊我們可以選擇要使用 SDK 中提供的 FBShareButton 或是使用其中的 ShareDialog 來實作分享功能。

首先,我們先使用 FBShareButton 的方式來實作 Facebook 分享功能,如果想要分享至 Messager 則使用 FBSendButton 。實作方式並不難,就像在實例化一個 UIButton 一樣,而我們只需要設置其中的 shareContent 屬性就完成了:

接著我們畫面上應該會出現下面兩個按鈕:

而我們點選按鈕之後,就會自動開啟對應的功能執行分享操作了。

接著讓我們來看看使用 ShareDialog 的方式,如同上面 FBShareButton 一樣,如果要分享至 Messager 則使用 MessageDialog。接下來我們就來實作這兩種分享至 Facebook 的方式:

而在使用 Dialog 做分享的時候必須遵循 SharingDelegate 協議,而實作的內容就是分享功能的事件(分享結果、分享失敗、取消分享):

如此一來我們就能分享貼文至 Facebook 或 Messager 啦:

✒︎ 後記:

那麼本次實作 Line & Facebook & Messager 的分享功能就到這邊,這也算是我第一次實作這種第三方平台的分享功能,如果內容有誤的話再麻煩大家修正,如果有更好的做法實現這些分享功能,也歡迎讀者們與我交流 🙇🏻‍♂️。

--

--

Jeremy Xue
Jeremy Xue ‘s Blog

Hi, I’m Jeremy. [好想工作室 — iOS Developer]