14.iOS原生分享:UIActivityViewController,分享到微信失敗
前言: 因為公司業務的需要,微信Api提供的一次分享一張圖片已經滿足不了,故而使用系統分享UIActivityViewController
,其原理很簡單:選中多圖--->系統拉起微信遠端分享頁面--->多圖分享成功。在實際開發中確實也遇到不少的大大小小的問題,這裡簡單描述一下,並且附上我的並不完美的解決辦法(因為沒有根治)。
遇到的問題:
1 分享九宮格圖片時,出現亂序。
問題現象:直接將九張圖片陣列通過[[UIActivityViewController alloc] initWithActivityItems:imageArray applicationActivities:nil]
進行分享,大多數時候朋友圈中的圖片順序和圖片陣列的順序並不相同。
產生原因:不清楚,有誰知道請留言或者私信告訴我,我想完全解決這個問題。
處理方案:採取迂迴戰術,定義UIActivityItemSource
的類,然後將圖片和(快取到本地的)圖片地址,定義為子類的基本屬性,然後分享子類的陣列。
處理結果:很大程度上解決了亂序的問題,但是沒有根治!
2 分享過程中讀條過慢,或者直接出現分享失敗請重試。
問題現象:在微信遠端分享頁面中點發表或者傳送時候,出現傳送進度條,讀條過慢後出現分享失敗,點選重試後,大概率成功。
產生原因:個人覺得是因為分享的時候,實際上是給微信傳送一個請求包,該請求失敗導致,大多數情況是由於網路狀況或者請求包過大導致。
處理方案:程式碼中只能通過儘量減少請求包的體積來處理,例如處理圖片尺寸大小、圖片質量大小(個人摸索的圖片處理問題將在最後描述),儘量一次分享不要太多圖片。
處理結果:基本解決分享不成功問題(偶爾偶爾出現不成功)。
3 分享過程中呼叫不起微信遠端分享頁面。
問題現象:呼叫起系統分享頁面後,點選微信圖示,不彈出微信遠端分享頁面,或者一閃而過,控制檯報dismissVC
。
產生原因:個人分析有兩個原因,原因1,過多的建立WINDOWS
檢視,導致遠端頁面找不到所要"依附"的檢視,聽說官方的說法是,只能保證有一個WINDOWS
檢視才能載入成功(我遇到的不是這個原因);原因2,圖片的尺寸過大、圖片的質量過大導致。
處理方案:程式碼中只能通過減少WINDOWS
檢視,減少請求包的體積來處理,例如處理圖片尺寸大小、圖片質量大小(個人摸索的圖片處理問題將在最後描述),儘量一次分享不要太多圖片。
處理結果:基本解決分享不成功問題(目前沒有遇到呼叫不起的反饋)。
PS 圖片處理上的個人心得
如果是方圖,推薦尺寸不要超過 750*750,圖片質量不要超過300K;
如果是長圖或者大圖,要注意圖片質量不要超過200K;
以上是個人總結,如果有哪裡不正確或者有更好的解決方法方案,還請在留言區或者私信告訴一下,共同成長。
感謝。
相關文章
- 記一次微信自定義分享debug均為true但是分享失敗的經歷
- APICloud分享圖片到微信APICloud
- UIActivityViewController分享視訊到第三方AppUIViewControllerAPP
- 微信分享
- 友盟整合(十二) —— 幾個遇到的坑之HTTP分享到微博失敗(二)HTTP
- 微信分享 - 開荒
- 微信語音分享
- 分享為什麼不加微信分享呀
- 微信公眾號-- 微信分享功能(分享到朋友和朋友圈顯示圖片和簡介)
- IOS 系統自帶的分享功能之 UIActivityViewControlleriOSUIViewController
- 實現微信分享功能
- VUE專案微信分享Vue
- php實現的微信分享到朋友圈並記錄分享次數功能PHP
- 微信簽到有禮上線,線上搭建方法分享
- 微信分享測試步驟
- uniapp h5微信分享APPH5
- 微信分享(移動web端)Web
- android微信分享、微信支付的一些坑Android
- 微信JSSDK遇見的坑--vue微信自定義分享JSVue
- 微信自定義分享支援https(php)HTTPPHP
- 分享微信域名檢測API介面API
- Flutter Notes | Android 借殼分享微信FlutterAndroid
- 微信公眾號開發-分享
- 自定義QQ和微信分享卡片
- 微信token驗證失敗的幾種情況
- 微信團隊原創分享:Android版微信後臺保活實戰分享(程式保活篇)Android
- 前端對接微信分享功能完全指南前端
- 使用微信js-sdk自定義分享JS
- 微信小程式之分享海報生成微信小程式
- 微信域名攔截檢測介面分享
- 微信分享筆記(第二版)筆記
- 監測Linux上失敗的登入嘗試方法分享Linux
- Laravel 配置微信公眾平臺驗證 token 失敗Laravel
- 第一次做vue微信分享Vue
- Cocos Creator - 微信小遊戲 實戰分享遊戲
- react解決ios微信分享的問題ReactiOS
- 分享一下微信域名防封方案
- 如何解決微信分享大圖報錯