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;

以上是个人总结,如果有哪里不正确或者有更好的解决方法方案,还请在留言区或者私信告诉一下,共同成长。
感谢。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,025评论 3 119
  • 女生是不是都“觉得自己去年买的衣服特丑 觉得自己衣柜里总少了一件衣服 觉得自己去年就是裸奔过来的” ​​​
    ParisHe倩倩阅读 237评论 0 0
  • 不忘初心,方得始终。 口号之下,无不催人奋进,激人深思! 后来的我们,变成了你想要的样子吗? 很多人讨论不忘初心。...
    遇见真实阅读 232评论 0 0
  • 昨晚下课大叔送我回家,每次见到大叔就算很疲惫的我仍像打了鸡血的台上小丑,各种闹腾耍宝开始登场。 ...
    百合_beibei阅读 897评论 1 3
  • 二、感恩家人对我的宽容。想想我自己,臭毛病一大堆,可他们对我不离不弃,依然包容我,关心我。而我,像个未长大的孩子,...
    林山水阅读 465评论 0 0