背景
线上发现了一个问题,就是 h5 的分享页面,在第一次成功唤醒 app 并且通过路由跳转到了指定的页面。然后再次回到 h5 的页面唤醒 app,发现 app 没有没有进行页面跳转。网上找了一大堆资料,都没有给出相关的分析和解决方案。
分析
经过排查发现,在第一次唤醒 app 的时候 intent 参数都可以正常拿到数据,但是在第二次唤醒 app 的时候页面没有收到任何数据,在 activity 的声明周期,onCreate 或者 onNewintet 都没有走到。变得非常奇怪。 之后换了另外一台手机进行发现,这个是属于兼容性问题,某一些手机可以正常打开,其他手机不能正常显示。
机型 是否正常多次唤醒
小米 是
华为 是
三星 否
魅族 否
vivo 否
vivo 否
调研其他app
通过其他 h5 唤醒 app的方式发现,其他公司的 h5 所有手机都可以发现问题,但是参数有一些变化。
我的唤醒逻辑: host://scheme?data=Base64(id=xxx)
其他业务逻辑: host://scheme?id=xx&ramdom=随机参数
所以本质的拆别是其他 h5 唤醒 app 的参数,每次都不一样
解决
各个 ROM 厂商对于兼容性不太一样,应该是系统会进行一些防抖逻辑,如果发现参数都一致,那么则不会响应。所以找到了解决办法,就联系 h5 的同学在唤醒app的时候附带一个随机参数即可。