by addy 原创文章,欢迎转载,但希望全文转载,注明本文地址。

本文地址:https://www.iamaddy.net/2017/12/wxapp-onshow-event/

问题描述

onShow 事件在小程序里面非常重要,场景之多,导致处理起来很复杂。很多业务场景依赖与onShow与onHide事件。比如分享给他人,在群里PK等等。

息屏,新页面返回、Home键操作,也会触发onShow事件。

以下是官网的说明:

Tip: 由于Android系统限制,目前还无法获取到按 Home 键退出到桌面,然后从桌面再次进小程序的场景值,对于这种情况,会保留上一次的场景值。

ios也对齐了这一点,所以,单靠场景值scene是无法区分上面三种场景触发的onShow,通过log发现还是有些不同。

真正不同的地方是:

从息屏,新页面返回、Home键操作这三种场景触发的onshow返回的参数是会把query参数清空

所以这样一来,就能够真正的区分,这样逻辑就不会乱。这种hack方式不知道是不是小程序的一个bug,暂时可以避免这种问题。

案例

我在玩一个小游戏,分享到群里PK好友。

分享的query参数:from=pk

好友从群里打开:

wx.onshow(res => {
    if(res.scene === 1044){
        if(res.query.from){
            // show pk UI
        }else{
            // todo nothing
        }
    }
})

如果是正常onshow逻辑,那么from就会为pk,而息屏再亮起后则query为undefined。因此就不会再次show pk UI。

本文为原创文章,可能会经常更新知识点以及修正一些错误,因此转载请保留原出处,方便溯源,谢谢合作

本文地址:https://www.iamaddy.net/2017/12/wxapp-onshow-event/

个人知乎,欢迎关注:https://www.zhihu.com/people/iamaddy

欢迎关注公众号【入门游戏开发】 入门游戏开发