iOS 社會化分享方案總結

發表於2017-08-22

一、系統原生 UIActivityViewController

優缺點

  • 優點:使用簡單、不用註冊繁雜的分享平臺賬號、不用匯入臃腫的SDK包
  • 缺點:UI可定製性差,只能使用系統提供的固定樣式,長相如下。分享的型別受限,只能分享text、url、image。
11953487-dd52eb6e334772d6
UIActivityViewController分享介面

使用:

activityItems是要分享的內容,包括文字、圖片、網址。但是要注意的是,不是所有平臺都支援這三種內容的分享,例如微信,不能同時分享圖片和網址,文字不能直接往外分享,下圖是幾個平臺分享概略

121672724-2c3139afcaf42d7e
各平臺分享概略

當彈出檢視框的時候,我們發現上邊很多圖示是我們用不到,我們可以將用不到的圖示去掉,只要設定以下屬性:

設定回撥block,可以在分享之後成功或失敗後做事情,

二、系統原生Social Framework

優缺點

  • 優點:使用簡單、不用註冊繁雜的分享平臺賬號、不用匯入臃腫的SDK包。UI可以自己繪製,滿足了很多個性化的需求。
  • 缺點:分享介面的UI需要開發者自己繪製,增加了工作量。分享的型別受限,只能分享text、url、image。

使用

匯入Social.framework

系統只提供了下面幾種分享平臺:

實際可以根據id來分享到更多平臺,如微信:

可以這麼使用的原因是:iOS8之後系統推出的Share Extension,不是系統實現了微信分享,而是微信App的Share Extension提供了分享入口。所以這個不是私有API,可以放心使用,想獲取手機中裝的App的所有Share Extension的方法。只需呼叫下面一句程式碼。。

看看控制檯輸出,手機內所有可用的Share Extension的bundle Id 都出來了。

三、友盟等第三方分享平臺

優缺點

  • 優點:開發者可以按照第三方文件自己定製分享介面UI、功能。分享的型別可以自由選擇,除了text、url、image。還有其他格式多媒體(聲音、視訊、檔案等)可供選擇。
  • 缺點:需要去友盟以及各個分享平臺註冊繁雜的賬號、匯入臃腫的SDK包。配置跳轉白名單。

使用

友盟分享使用文件及SDK下載

四、OpenShare

優缺點

  • 優點:開發者可以自己定製分享介面UI、功能。分享的型別可以自由選擇,除了text、url、image。還有其他格式多媒體(聲音、視訊、檔案等)可供選擇。
  • 缺點:需要配置跳轉白名單。

使用

實現原理介紹
github程式碼和demo地址

總結

這四種分享方案,各有優缺點,沒有最好的分享方案,只有最適合你App需求的方案。

如果你的App介面需要定製化,分享型別需要支援多媒體(聲音、視訊、檔案等),分享平臺只限於微信、QQ、微博、人人、支付寶,使用openshare。如果需要支援的平臺很多,使用友盟分享。

如果分享的型別只限於text、image、url,對介面要求不高,系統原生的UIActivityViewController就可以,使用UIActivityViewController。如果介面需要定製化,使用Social Framework。

方案 UI 分享型別 分享平臺
UIActivityViewController 要求不高 text、image、url 多種平臺
Social Framework 要求自定義 text、image、url 多種平臺
友盟等第三方分享平臺 要求自定義 支援多媒體(聲音、視訊、檔案等) 多種平臺
OpenShare 要求自定義 支援多媒體(聲音、視訊、檔案等 微信/QQ/微博/人人/支付寶

除了第一種方案UIActivityViewController不需要自己繪製介面以外,其他方案均要自己繪製分享彈出選單,針對以上問題,我寫了一個介面和功能高度可定製化的輪子IFMShareSwift版)供大家使用。

推薦

IFMShareSwift版)使用簡單、優雅,介面和功能高度可定製化。支援單行滾動、雙行滾動、多行、九宮格、頭檢視、尾檢視等多種樣式,分享功能可以一個平臺名直接呼叫Share Extension,也可以使用各平臺SDK或者OpenShare自定義分享功能。歡迎前去issue、pull request、star,程式碼示例如下:

部分自定義介面展示

13953487-f3ff921129424626 14953487-fba1892bb8d8bdf0
圖片展示

GIF展示

15953487-1b3b9c5eb4ea7ec7
動圖展示

下一篇內容:UIActivityViewController自定義Activity、OpenShare配置跳轉白名單


參考文章:

《使用系統自帶的UIActivityViewController和UIActivity進行內容分享》
新手指南:使用 Social Framework 以及 UIActivityViewController
iOS通過UIActivityViewController實現原生分享功能
UIActivityViewController 和 SLComposeViewController
程式內分享到微信

相關文章