评论

getCurrentPages()的用法

判断页面栈是否超过10级,超过10级,将不能打开新页面(主要是不用用navigateTo方式打开)。 可以修改某个页面栈的data数据,或者方法,禁止转发可以这么玩儿~

getCurrentPages()的用法

getCurrentPages()是个好东西,今天来说说他的用法。

先看看官方文档:

[路由 · 小程序]:https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/route.html

getCurrentPages() 函数用于获取当前页面栈的实例,以数组形式按栈的顺序给出,第一个元素为首页,最后一个元素为当前页面。

简单说,就是可以获取到当前小程序的页面栈

那么,获取到页面栈,有什么用处呢?

1、判断页面栈是否超过10级,超过10级,将不能打开新页面(主要是不用用navigateTo方式打开)。
2、可以修改某个页面栈的data数据,或者方法。

这里给大家分享一个实际应用场景:仅发起者可分享
有些投票、通知、抽奖、签到等,发起者会在私密的圈子内进行,比如,仅会员群才能参与的抽奖、公司内部的通知公告、班级内部的投票等。发起者是不希望别人分享出去,那么小程序里面要怎么做?

说到分享,在小程序内,应该是想到onShareAppMessage这个方法。只要page.js中有这个方法,不管你是否在内部写了代码逻辑,小程序默认就是可以分享的,如果没有这个方法,小程序右上角的“…”就不会出现“转发”的选项

问题是,是否允许分享,一般都是小程序内的一个开关设置项,可以看下图:

用户在加载内容时,需要先从服务端获取到这个开关状态,再决定是否出现“转发”的选项。

此时,我们默认不给page添加onShareAppMessage方法,这样,你转发出去的小程序卡片,别人将无法通过长按进行分享(群聊无法长按分享,私聊还是个坑,看下图)。

然后再动态设置当前page的onShareAppMessage方法,用this,或者getCurrentPages()都能解决,看下图:

目前私聊的卡片,长按依然可以转发,似乎不是很完美,但是,功能基本实现了。

如果想让私聊卡片的转发无效,你也可以变通一下,比如做个限群成员可见功能,即使私聊卡片被转发,可以判断小程序场景值,不展示内容即可~

1、用wx.getLaunchOptionsSync() 获取小程序启动时的参数:

2、判断群聊和私聊的场景值:

3、如果是微信私聊中打开,给用户提示即可~

欢迎各位一起讨论技术问题:mianhuabingbei

最后一次编辑于  2019-02-20  
点赞 4
收藏
评论

1 个评论

  • --
    --
    2019-04-12

    “此时,我们默认不给page添加onShareAppMessage方法,这样,你转发出去的小程序卡片,别人将无法通过长按进行分享(群聊无法长按分享,私聊还是个坑,看下图)”

    这段意思是用Button分享?

    2019-04-12
    赞同
    回复
登录 后发表内容