FinClip为企业提供小程序生态圈技术产品,开发者可在FinClip小程序开发帮助中心找到相关FinClip小程序指引

# 自定义菜单

# 1. 小程序更多菜单功能说明

为了支持 App 内的不同业务需求,比如支持不同取到的分享,当前 SDK 支持更多面板内自定义菜单。自定义的菜单按类型分为 onMiniProgram 和 common 两种类型

  • common: 该类型无需小程序添加额外处理
  • onMiniProgram: 该类型菜单在点击时,会向小程序获取数据用以提供给 App 的业务处理

菜单类型的详细说明:
1)common类型的自定义菜单,在用户点击菜单时,会直接触发代理事件给宿主app。小程序的当前页面不需要添加任何逻辑。

2)onMiniProgram类型的自定义菜单,在用户点击菜单时,会先调用当前小程序页面的on{MenuId}ButtonHandler事件,获取到小程序的页面数据后,再触发代理事件给宿主app。它的行为流程,有点类似于Page api onShareAppMessage。所以,如果onMiniProgram类型的自定义菜单,在当前小程序页面如果未实现对应的事件,该菜单是不会展示的。

注意

自定义更多菜单项需要App和小程序共同实现,关于App侧的工作,可参考UI自定义-设置小程序更多菜单

# 2. 小程序更多菜单举例

例如:APP 内更多菜单项目要实现 onMiniProgram 类型的【分享到钉钉】和【分享到新浪微博】(这里仅说明小程序中需要做的处理)

# 2.1 分享 ID

  • 管理后台配置分享到钉钉菜单 ID 为 ShareDingDing
  • 管理后台配置分享到新浪微博 ID 为 ShareSinaWeibo

# 2.2 分享配置

小程序对应页面内,配置 onShareDingDingButtonHandler 和 onShareSinaWeiboButtonHandler 两个 function(如不配置对应的 function,SDK 不会展示对应的菜单)

小程序配置方法
on{id}ButtonHandler(id 为首字母大写)
funtion 调用后需返回 title、appInfo 等信息,会透传给 SDK 处理

整个流程
当点击【分享到钉钉】菜单项目时,就会调用 onShareDingDingButtonHandler function,返回数据、透传给 SDK 处理​

注意

小程序代码中,为了与 onShareAppMessage 统一命名和规范,处理ID时会统一转为首字母大写。

更多示例

  • ID 为 shareWeibo,小程序则需要配置 onShareWeiboButtonHandler;
  • ID 为 shareDingDing,小程序则需要配置 onShareDingDingButtonHandler;
  • ID 为 doSomething,小程序则需要配置 onDoSomethingButtonHandler;
  • ID 为 ShareQQ,小程序则需要配置 onShareQQButtonHandler。
Page({
  // ...

  // 自定义 handler
  onShareDingDingButtonHandler(e) {
    return {
      title: "onShareDingDingButtonHandler custom title",
      appInfo: {
        // 其他额外信息
      },
      success(res) {
        console.log('share success callback', res)
      },
      fail(res) {
        console.log('share fail callback', res)
      }
    }
  },

  // 自定义 handler
  onShareSinaWeiboButtonHandler(e) {
    return {
      title: "onShareSinaWeiboButtonHandler custom title",
      appInfo: {
        // 其他额外信息
      },
      success(res) {
        console.log('share success callback', res)
      },
      fail(res) {
        console.log('share fail callback', res)
      }
    }
  },

  onShareAppMessage(res) {
    return {
      title: 'onShareAppMessage custom title',
      appInfo: {
        // 其他额外信息
      },
      success(res) {
        console.log('share success', res)
      },
      fail(res) {
        console.log('share fail', res)
      }
    }
  }
})

© 2022 FinClip with ❤

👋🏻 嘿,你好!

「FinClip」是一套基于云原生框架设计的小程序容器。能够让任何移动应用在集成小程序SDK之后,获得可用、安全的小程序运行能力。

>> 点我免费注册体验

查看产品文档
了解与 FinClip 相关的一切信息

产品博客 👈  了解产品更新与核心功能介绍
资源下载 👈  获取小程序 SDK 与开发工具
文档中心 👈  查询 FinClip 小程序开发指南与答疑

商务咨询热线
预约 FinClip 产品介绍,咨询商务报价或私有化部署事宜

0755-86967467

获取产品帮助
联系 FinClip 技术顾问,获取产品资料或加入开发者社群

联系线上
人工客服

或 👉  点击这里,提交咨询工单