# onShareAppMessage

- 监听用户点击页面内转发按钮（[button](/miniprogram/dev/component/button.md) 组件 `open-type="share"`），并自定义转发内容。
- 完整的文档可前往小程序文档中心查看[onShareAppMessage](/miniprogram/dev/reference/api/Page.md#onShareAppMessage-Object-object)，本文仅描述该能力在多端框架中使用的差异点

补充：多端模式下「分享」的能力是基于 `wx.miniapp.shareMiniProgramMessage` 实现，因此需按照 [wx.miniapp.shareMiniProgramMessage](/miniprogram/dev/platform-capabilities/miniapp/api/miniapp/shareMiniProgramMessage)完成相关初始化配置（即，需要绑定移动应用账号，勾选 opensdk 扩展能力等）

## 小程序模式下的自定义转发内容

| 字段     | 说明                                                                                                     | 默认值                                    | 
| -------- | -------------------------------------------------------------------------------------------------------- | ----------------------------------------- | 
| title    | 转发标题                                                                                                 | 当前小程序名称                            |  
| path     | 转发路径                                                                                                 | 当前页面 path ，必须是以 / 开头的完整路径 |  
| imageUrl | 自定义图片路径，可以是本地文件路径、代码包文件路径或者网络图片路径。支持 PNG 及 JPG。显示图片长宽比是 5:4。 | 使用默认截图                              | 
| promise  | 如果该参数存在，则以 resolve 结果为准，如果三秒内不 resolve，分享会使用上面传入的默认参数                |                                           | 

## 多端应用模式下转发的内容

下列参数同 [wx.miniapp.shareMiniProgramMessage](/miniprogram/dev/platform-capabilities/miniapp/api/miniapp/shareMiniProgramMessage)

| 字段     | 说明                            | 是否必填         | 
| -------- | ------------------------------ | ----------------- | 
| userName   | 小程序原始 ID，如 gh_d43f693ca31f，[点击查看获取方式](../troubleshooting/dev#_1、如何获取小程序原始-id) | 是                            |  
| path     | 小程序页面路径；只支持本地路径，不支持网络路径                 | 是 |  
| title | 标题 | 是                            | 
| description | 描述 | 是                            | 
| imagePath | 分享小程序相关缩略图，支持代码包图片资源路径或者本地临时、缓存、用户文件（不支持网络地址）| 是                  | 
| webpageUrl | 兼容低版本的网页链接 url | 是                            | 
| withShareTicket | 通常开发者希望分享出去的小程序被二次打开时可以获取到更多信息，例如群的标识。 | 是                            | 
| miniprogramType | 0-正式版，1-开发版，2-体验版 | 是                            | 
| scene | 发送的目标场景,只支持会话，0=分享到会话 | 是                            | 
| promise  | 如果该参数存在，则以 resolve 结果为准，如果三秒内不 resolve，分享会使用上面传入的默认参数                |                                           | 

**示例代码**

```javascript
Page({
  onShareAppMessage() {
    const promise = new Promise(resolve => {
      setTimeout(() => {
        resolve({
          userName: '小程序原始id',  
          path: 'pages/index/index',
          title: '标题',
          imagePath: '/pages/thumb.png',
          webpageUrl: 'www.qq.com',
          withShareTicket: true,
          miniprogramType: 0,
          scene: 0, 
        })
      }, 2000)
    })
    return {
      userName: '小程序原始id',  
      path: 'pages/index/index',
      title: '标题',
      imagePath: '/pages/thumb.png',
      webpageUrl: 'www.qq.com',
      withShareTicket: true,
      miniprogramType: 0,
      scene: 0, 
      promise 
    }
  }
})
```
