故事背景
前端跑过来给我说 app 里的 H5 里的 post 请求参数被清空了,然后给我展示抓包的结果。但是线上 app 却是正常的。
我寻思着没有改 webView 相关的东西啊,然后抓了下线上的 h5 post 请求对比,发现线上 h5 里的 post 请求 http 协议版本是 2.0,但是现在测试的却是 1.1。
有点意思。
然后我直接把代码回退到线上版本,抓包,http 协议是 2.0。也就是说问题的确存在于上次发版到现在提交的代码中。
然后我使用二分排除法(一种简单粗暴定位bug的方法)将问题定位到集成淘宝客 SDK 的那次提交中。这个 SDK 是我同事集成的,按理说集成 SDK 这种直接照搬官方文档的事情不应该有任何问题,然而事实却是淘宝客 SDK 实在坑爹。
问题所在
我同事最开始打算用 CocoaPods 继承,但是由于项目中已经存在阿里云推送 SDK 了,所以之后的阿里巴巴相关 SDK 都不能使用 CocoaPods 了。原因:
UTDID作为阿里集团移动端SDK通用组件,包括阿里云在内的许多平台产品移动端SDK对其有依赖,若同时集成多平台移动端SDK,可能发生UTDID冲突。iOS集成时,如果通过CocoaPods进行远程仓库依赖,由于CocoaPods无法关闭传递性依赖,SDK集成需要修改为手动集成。
就是这么蛋疼,手动集成是唯一的选择。
那照着文档集成不就 OK 了?
集成当然没问题,但问题是 WKWebView 出问题了,就是文章开头说的那个问题。然后我同事就此事询问了一下客服,那边反馈要使用最新的 SDK。
但是我们下载的就是最新版本的 SDK 啊!
最骚的来了
我们下载的 SDK 虽然是最新版本的,但代码却不是最新的,最新的代码只能通过 CocoaPods 获取。
但是手动集成又是我们现在唯一的选择。
我真的太难了。。。
以骚制骚
不管再难,问题都是必须解决的,既然只能通过 CocoaPods 获得最新的完美无bug的代码,那我就新建一个demo,通过 CocoaPods 下载到最新代码,然后,替换掉项目里对应的framework。
问题解决。
都是被逼的
网友评论