最近项目直播那块加了点新需求,需要上个版本,由于公司没有专业测试,所以,自测很重要,出现bug就得自己背锅。。。

无意之中发现横屏直播的时候,友盟集成的微博web分享,有严重大坑。

复现bug场景 :

1:必须有横屏的分享,一般直播,视频较多。

2:卸载手机上的微博

3:横屏的时候点击分享微博,这时候会调微博的web网页,

4:也不需要登录微博那个网页,左上角有一个关闭的按钮,点击关闭,基本回到前一个界面的时候都走形。

第一次尝试解决:

判断返回直播界面的时候,强行把屏幕给扭回横屏,结果是在强转过程中,会看到畸形画面,不是很自然流畅,并且部分按钮失灵。感觉整不了,得把微博砍了

斗鱼直播的bug如下    (返回失灵,底部被覆盖)               

ios16 竖屏转横屏 ios15横屏bug_微博web

ios16 竖屏转横屏 ios15横屏bug_微博web_02

当我看到他们也有这个bug我就安心了,顺道测试了一下,爱奇艺,腾讯视频,优酷,暂时叫他们三巨头,不得不说,他们实在太奸了,如果判断手机没有安装微博客户端,直接不显示微博分享,根本不存在微博web分享。看到他们的想法,就试着去实现了一下,这也不失为一个解决问题的好办法,

第二次解决:

友盟分享那个类里正好有,判断是否安装,各个要分享的客户端,然后也有移除微博按钮的方法,基本可以实现 美滋滋

 

测试 (我感觉更适合测试,不适合做程序员)

设想1:如果删除微博,这个时候再从后台进入前台点击分享,gg不好使,基本没判断是否安装,所以我在Appdelegate里从后台进入前台那里又重新判断了一波。解决了删除微博时情况。

设想2:如果微博正在下载的时候我在分享那个页面等待,大概不到一分钟微博在后台就会下载完成,再分享微博又不好使。

这就很无奈了,我顺便测试了一下,上面那三巨头,确实厉害,这两种情况,他们都没出现,所以我猜测,他们应该是把判断这个是否安装,是否移除微博这个方法封装在分享功能里了,这样基本就做到,不管你外面花里胡哨,每次调用我都判断,就不会出现我设想的两种情况。

上代码

ios16 竖屏转横屏 ios15横屏bug_微博web_03

这里边有一个情况,就是这个红色框框代码,在手机上有微博,删除微博,他能判断出来,但是在第二种情况,微博后台下载,下载好了,他判断不出来(包括,从后台进入前台,还是点击分享按钮都判断不出来) 

如果要实现三巨头那种,这段代码整体就要写在,封装分享那个代码里。

但是 

[[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_Sina appKey:kSinaAppID  appSecret:kSinaKey redirectURL:@"https://sns.whalecloud.com/sina2/callback"];

这句代码,就会调很多次,我不清楚会不会有问题,(暂时自测一下,没什么bug)希望有哪个大神给我指点一下,这个代码一直调用会不会有问题