在医联4.0项目里面,嵌入我们自己的hybrid框架遇到一个非常奇怪的问题,页面打开就卡死。
之前此框架已经在另以项目落地,跑得妥妥的。先是查了hybrid框架代码,感觉没啥问题,响应事件、事件回调都OK,最后把范围缩小到userAgent注入。我们注入的userAgent叫 med_hybrid_medlinker_ ,web端收到请求后,会通过注入的userAgent来确定后续发起请求的名称。
例如注入med_hybrid_medlinker_,后续的请求就为medmedlinkerhybrid://XXXXX?XXXXXXXXXX。
那么问题来了,这和我们iOS程序设置的URL Types冲突了,或者说是一致了,因为我们好像就是这么设计的(囧)。
我们加载一个内嵌的web按照5个hybrid方法计算(这数量还比较保守,hybrid方法我们约定的有设置导航栏、按钮、各种回调事件等),每发一次hybrid请求都会触发一次AppDelegate 的 openURL方法
如果这个方法里面没有干啥喃也不会导致webview卡死。但是正好此项目里面的处理方式有一点点问题。
没有判断url的来源,也就是没有区分sourceApplication,而是很粗暴的把url依次用各种SDK去试能不能打开。其实也不至于卡死!QQ和微信SDK调用的时候检测到不该他们处理的url立马就返回了,但是weibo SDK就不知道干了嘛,就在内部捣鼓了半天才返回,就卡在那了。
①native先修改,openURL的时候判断下来源,该谁处理再调用谁。
②hybrid方法和URL Types里注册的名字是否要保持一致?这个要思考一下。