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;

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

你可能感兴趣的:(14.iOS原生分享:UIActivityViewController,分享到微信失败)