Android h5 多次唤醒 app 失效的问题

420 阅读1分钟

背景

线上发现了一个问题,就是 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的时候附带一个随机参数即可。