14.iOS原生分享:UIActivityViewController,分享到微信失敗

weixin_34337265發表於2018-07-30

前言: 因為公司業務的需要,微信Api提供的一次分享一張圖片已經滿足不了,故而使用系統分享UIActivityViewController,其原理很簡單:選中多圖--->系統拉起微信遠端分享頁面--->多圖分享成功。在實際開發中確實也遇到不少的大大小小的問題,這裡簡單描述一下,並且附上我的並不完美的解決辦法(因為沒有根治)。

遇到的問題:

1 分享九宮格圖片時,出現亂序。
問題現象:直接將九張圖片陣列通過[[UIActivityViewController alloc] initWithActivityItems:imageArray applicationActivities:nil]進行分享,大多數時候朋友圈中的圖片順序和圖片陣列的順序並不相同。
產生原因:不清楚,有誰知道請留言或者私信告訴我,我想完全解決這個問題。
處理方案:採取迂迴戰術,定義UIActivityItemSource的類,然後將圖片和(快取到本地的)圖片地址,定義為子類的基本屬性,然後分享子類的陣列。
處理結果:很大程度上解決了亂序的問題,但是沒有根治!

2 分享過程中讀條過慢,或者直接出現分享失敗請重試。
問題現象:在微信遠端分享頁面中點發表或者傳送時候,出現傳送進度條,讀條過慢後出現分享失敗,點選重試後,大概率成功。
產生原因:個人覺得是因為分享的時候,實際上是給微信傳送一個請求包,該請求失敗導致,大多數情況是由於網路狀況或者請求包過大導致。
處理方案:程式碼中只能通過儘量減少請求包的體積來處理,例如處理圖片尺寸大小、圖片質量大小(個人摸索的圖片處理問題將在最後描述),儘量一次分享不要太多圖片。
處理結果:基本解決分享不成功問題(偶爾偶爾出現不成功)。

3 分享過程中呼叫不起微信遠端分享頁面。
問題現象:呼叫起系統分享頁面後,點選微信圖示,不彈出微信遠端分享頁面,或者一閃而過,控制檯報dismissVC
產生原因:個人分析有兩個原因,原因1,過多的建立WINDOWS檢視,導致遠端頁面找不到所要"依附"的檢視,聽說官方的說法是,只能保證有一個WINDOWS檢視才能載入成功(我遇到的不是這個原因);原因2,圖片的尺寸過大、圖片的質量過大導致。
處理方案:程式碼中只能通過減少WINDOWS檢視,減少請求包的體積來處理,例如處理圖片尺寸大小、圖片質量大小(個人摸索的圖片處理問題將在最後描述),儘量一次分享不要太多圖片。
處理結果:基本解決分享不成功問題(目前沒有遇到呼叫不起的反饋)。

PS 圖片處理上的個人心得

如果是方圖,推薦尺寸不要超過 750*750,圖片質量不要超過300K;
如果是長圖或者大圖,要注意圖片質量不要超過200K;

以上是個人總結,如果有哪裡不正確或者有更好的解決方法方案,還請在留言區或者私信告訴一下,共同成長。
感謝。

相關文章