{"_id":"@activity-maker/app-share","name":"@activity-maker/app-share","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@activity-maker/app-share","version":"1.0.0","description":"喜马拉雅 App、微信的自定义分享/禁用分享","homepage":"http://cft.pages.xmly.work/sunshine/#/packages/app-share","repository":{"type":"git","url":"http://gitlab.ximalaya.com/cft/sunshine.git","directory":"packages/app-share"},"bugs":{"url":"http://gitlab.ximalaya.com/cft/sunshine/issues"},"keywords":["微信自定义分享","喜马拉雅 App 自定义分享","禁用分享"],"author":{"name":"Eleven","email":"master@eleven.net.cn"},"license":"ISC","main":"dist/index.js","module":"dist/index.esm.js","typings":"dist/index.d.ts","sideEffects":false,"scripts":{"watch":"cd ../.. && PACKAGE=app-share father-build --watch","build":"cd ../.. && PACKAGE=app-share father-build","test":"umi-test","test:watch":"umi-test --watchAll","test:coverage":"umi-test --coverage","prepublishOnly":"yarn build","prepare":"cd .. && yarn patch-package"},"publishConfig":{"access":"public"},"dependencies":{"@babel/runtime-corejs3":"^7.13.9","axios":"^0.21.1"},"peerDependencies":{"react":"^17.0.1","react-dom":"^17.0.1","axios":"^0.21.1"},"devDependencies":{"postinstall-prepare":"^2.0.0"},"browserslist":["> 1%","last 2 versions","not ie <= 8"],"_id":"@activity-maker/app-share@1.0.0","_nodeVersion":"14.18.3","_npmVersion":"6.14.15","_npmUser":{"name":"zhangfan999999","email":"356672247@qq.com"},"dist":{"integrity":"sha512-UZjHmloUGI9r+XGJa8RORlzuWrkGk2H6fWv8Rz0tdosPY+tzdwXPTYFXtFfsE0F7cEtkmhKSSVGgk0wQmnbxBw==","shasum":"b82a056336b4cef6e29a592985016fd38c015f4a","tarball":"https://registry.npmjs.org/@activity-maker/app-share/-/app-share-1.0.0.tgz","fileCount":14,"unpackedSize":93325,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCUd147z3Bbsj1yrOV/MWu8Dn0DZOSjqNnbAEZHiDxBwgIhAL20PkjpOQt+ug9HuC/pGA8d2dNocfO/0gVZJzTwB1Bl"}]},"directories":{},"maintainers":[{"name":"zhangfan999999","email":"356672247@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/app-share_1.0.0_1684207055439_0.8606377643395888"},"_hasShrinkwrap":false}},"time":{"created":"2023-05-16T03:17:35.360Z","1.0.0":"2023-05-16T03:17:35.641Z","modified":"2023-05-16T03:17:35.850Z"},"maintainers":[{"name":"zhangfan999999","email":"356672247@qq.com"}],"description":"喜马拉雅 App、微信的自定义分享/禁用分享","homepage":"http://cft.pages.xmly.work/sunshine/#/packages/app-share","keywords":["微信自定义分享","喜马拉雅 App 自定义分享","禁用分享"],"repository":{"type":"git","url":"http://gitlab.ximalaya.com/cft/sunshine.git","directory":"packages/app-share"},"author":{"name":"Eleven","email":"master@eleven.net.cn"},"bugs":{"url":"http://gitlab.ximalaya.com/cft/sunshine/issues"},"license":"ISC","readme":"喜马拉雅 App、微信的自定义分享/禁用分享封装。\n\n## Documentation\n\nhttp://cft.pages.xmly.work/sunshine/#/packages/app-share\n\n## 准备工作\n\n区分环境，分别引入对应的 JS SDK 资源，并初始化。\n\n详细步骤如下：\n\n1. 微信\n\n   1. 引入 weixin jssdk 文件；\n\n      > 推荐使用新版，前往 [微信开放文档](https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#3) 查看最新 JSSDK 版本信息。\n\n      ```html\n      <script src=\"https://res.wx.qq.com/open/js/jweixin-1.6.0.js\"></script>\n      ```\n\n   2. JS 接口安全域名\n\n      若你的页面域名是 `m.ximalaya.com/pages.ximalaya.com`，那么无需做设置，可跳过此步骤。\n\n      否则，请前往（[传送门](#js-接口安全域名)）了解如何支持更多域名。\n\n2. 喜马拉雅 App\n\n   1. 引入 jssdk 文件：\n\n      > 前往 [喜马拉雅 App JSSDK 文档](http://www.xmly.work/jssdk/docs/common/quick-start/#%E5%BC%95%E5%85%A5-jssdk-%E8%84%9A%E6%9C%AC) 查看最新版本信息。\n\n      ```html\n      <script src=\"https://s1.xmcdn.com/lib/jssdk/1.1.1/build/ly.js\"></script>\n      ```\n\n   2. 添加 JSSDK 初始化鉴权，填写 APPID 和使用到的 api：\n\n      > APPID 申请地址 ☞ [点击前往](https://ops.ximalaya.com/gatekeeper/lego/page/5fd730ffefec5c41c33f59fe/5fd73182132c4ec5392fe16e)。\n\n      ```ts\n      // 初始化 JSSDK\n      window?.ly?.config({\n        appId: '',\n        apiList: [\n          // 自定义分享需要使用到的 api ☞ nav.setMenu、util.share\n          'nav.setMenu',\n          'util.share',\n        ],\n      });\n      ```\n\n      你也可以在 `setXmlyShareData` 中，配置 `config` 参数自动执行初始化鉴权（不推荐）。\n\n## 使用示例\n\n### 基本用法\n\n设置微信、喜马拉雅 App 自定义分享内容。\n\n> 默认配置，仅支持当前页面是 `m.ximalaya.com/pages.ximalaya.com` 域名（与要分享的地址无关）。\n\n```ts\nimport { Wechat, XMLY, ShareOptions } from '@activity-maker/app-share';\n\nconst SHARE_DATA: ShareOptions = {\n  link: window.location.href,\n  imgUrl:\n    'http://fdfs.xmcdn.com/storages/7f77-audiofreehighqps/37/4F/CMCoOSEETHnNAAADcwCee6lz.png',\n  title: '自定义分享标题',\n  desc: '自定义分享的描述语...',\n};\n\n// 设置微信自定义分享\nWechat.setShareData(SHARE_DATA);\n// 设置喜马拉雅 App 自定义分享\nXMLY.setShareData(SHARE_DATA);\n```\n\n### 更多域名、环境配置（仅微信分享）\n\n> 微信自定义分享，通过 config 参数配置，支持更多域名、更多环境（test、uat）页面的自定义分享。\n\n```ts\nimport { Wechat, ShareOptions } from '@activity-maker/app-share';\n\nconst SHARE_DATA: ShareOptions = {\n  link: window.location.href,\n  imgUrl:\n    'http://fdfs.xmcdn.com/storages/7f77-audiofreehighqps/37/4F/CMCoOSEETHnNAAADcwCee6lz.png',\n  title: '自定义分享标题',\n  desc: '自定义分享的描述语...',\n};\n\n// 设置微信自定义分享（支持测试环境、UAT 环境）\nWechat.setShareData({\n  ...SHARE_DATA,\n  // 配置为 true 或不配置，都将会自动执行微信签名鉴权，使用默认配置。能够支持 m.ximalaya.com/pages.ximalaya.com 页面的分享。\n  // config: true,\n  // 如果自己已经在别处执行了微信签名鉴权，配置为 false 关闭\n  // config: false,\n  // 配置后，将会自动执行微信签名鉴权（如果需要配置非 m.ximalaya.com/pages.ximalaya.com 页面的分享，须指定 thirdpartyId）\n  config: {\n    thirdpartyId: {\n      production: 17,\n      test: 31,\n      uat: 31,\n    },\n    env: 'production', // 自己根据部署环境指定值（'test'、'uat'）\n  },\n});\n```\n\n> 喜马拉雅 App 无需区分环境，调用均一致。\n\n## 微信\n\n### 自定义微信分享\n\n```ts\nimport { Wechat } from '@activity-maker/app-share';\n\nWechat.setShareData({\n  link: window.location.href,\n  imgUrl:\n    'http://fdfs.xmcdn.com/storages/7f77-audiofreehighqps/37/4F/CMCoOSEETHnNAAADcwCee6lz.png',\n  title: '自定义分享标题',\n  desc: '自定义分享的描述语...',\n  // 配置为 true 或不配置，都将会自动执行微信签名鉴权，使用默认配置。能够支持 m.ximalaya.com/pages.ximalaya.com 页面的分享。\n  // config: true,\n  // 如果自己已经在别处执行了微信签名鉴权，配置为 false 关闭\n  // config: false,\n  // 配置后，将会自动执行微信签名鉴权（如果需要配置非 m.ximalaya.com/pages.ximalaya.com 页面的分享，须指定 thirdpartyId）\n  // config: {\n  //   thirdpartyId: {\n  //     production: 17,\n  //     test: 31,\n  //     uat: 31,\n  //   },\n  //   env: 'production', // 想要支持 test/uat 环境自定义分享生效，必须配置 thirdpartyId，env 设置为对应的 'test'、'uat'\n  // },\n  success() {\n    console.log('成功回调');\n  },\n});\n```\n\n### 更新微信自定义分享信息\n\n> 你可以在应用内，任意时刻，更新自定义分享信息。\n\n```ts\nimport { Wechat } from '@activity-maker/app-share';\n\nWechat.updateShareData({\n  link: window.location.href,\n  imgUrl:\n    'http://fdfs.xmcdn.com/storages/7f77-audiofreehighqps/37/4F/CMCoOSEETHnNAAADcwCee6lz.png',\n  title: '自定义分享标题',\n  desc: '自定义分享的描述语...',\n  success() {\n    console.log('成功回调');\n  },\n});\n```\n\n### 禁用微信分享\n\n```ts\nimport { Wechat } from '@activity-maker/app-share';\n\nWechat.setShareData({\n  disable: true,\n});\n```\n\n## 喜马拉雅 App\n\n### 自定义喜马拉雅 App 分享\n\n```ts\nimport { XMLY } from '@activity-maker/app-share';\n\nXMLY.setShareData({\n  link: window.location.href,\n  imgUrl:\n    'http://fdfs.xmcdn.com/storages/7f77-audiofreehighqps/37/4F/CMCoOSEETHnNAAADcwCee6lz.png',\n  title: '自定义分享标题',\n  desc: '自定义分享的描述语...',\n  // 配置后，将自动执行喜马拉雅 JSSDK 签名鉴权\n  // 通常你不应该配置 config，而是在别处统一执行 window?.ly?.config() 去初始化 ly.js\n  // 如果页面特别简单，仅仅需要配置自定义分享，无需调用其它 ly.js 的 api，你可以借助 config 配置自动完成 ly.js 初始化\n  // config: {\n  //   appId: 'xxxxxxxxxxxxxxxx',\n  // },\n  success() {\n    console.log('成功回调');\n  },\n  fail() {\n    console.log('失败回调');\n  },\n  complete() {\n    console.log('无论成功失败都执行');\n  },\n});\n```\n\n### 喜马拉雅 App 点击拉起分享\n\n```ts\nimport { XMLY } from '@activity-maker/app-share';\n\nXMLY.share({\n  link: window.location.href,\n  imgUrl: 'http://fdfs.xmcdn.com/storages/7f77-audiofreehighqps/37/4F/CMCoOSEETHnNAAADcwCee6lz.png',\n  title: '自定义分享标题',\n  desc: '自定义分享的描述语...',\n  channel: ['weixin], // 若是单个渠道，将直接拉起，不会弹出选择面板\n  success() {\n    console.log('成功回调');\n  },\n  fail() {\n    console.log('失败回调');\n  },\n  complete() {\n    console.log('无论成功失败都执行');\n  },\n})\n```\n\n### 禁用喜马拉雅 App 分享\n\n```ts\nimport { XMLY } from '@activity-maker/app-share';\n\nXMLY.setShareData({\n  disable: true,\n});\n```\n\n## API\n\n> 微信分享、喜马拉雅 App 的自定义分享回调机制不同（如：微信自定义分享无 fail 回调），为了避免使用上的不统一，设计不同的 API 分别使用（当然，这个思路未必很好...）。\n\n### XMLY\n\n喜马拉雅 App 分享相关\n\n```ts\nimport { XMLY } from '@activity-maker/app-share';\n```\n\n```ts\n// 喜马拉雅 App 自定义分享\nfunction setShareData(options: XmlyShareOptions | DisableOptions): void;\n\n// 喜马拉雅 App 直接拉起分享\n// 若是单个渠道，将直接拉起，不会弹出选择面板\nfunction share(options: XmlyShareOptions): void;\n\n// 喜马拉雅 App JSSDK 鉴权\n// 通常你不需要单独调用此方法（此方法仅作为附赠的快捷方法，也许某些时候你会用的上）\n// setXmlyShareData 方法中，如果已配置 config 参数，将会自动执行鉴权操作\nfunction setConfig(options: XmlyAuthConfig): void;\n```\n\n### Wechat\n\n微信自定义分享相关\n\n```ts\nimport { Wechat } from '@activity-maker/app-share';\n```\n\n```ts\n// 微信自定义分享\nfunction setShareData(options: WechatShareOptions | DisableOptions): void;\n\n// 更新微信自定义分享信息\nfunction updateShareData(options: UpdateWechatShareOptions): void;\n\n// 微信 JSSDK 鉴权\n// 通常你不需要单独调用此方法（此方法仅作为附赠的快捷方法，也许某些时候你会用的上）\n// setWechatShareData 方法中，如果已配置 config 参数，将会自动执行鉴权操作\nfunction setConfig(options?: WechatAuthConfig | undefined): void;\n```\n\n#### XmlyShareOptions\n\n| 参数     | 说明                                                                                                                                        | 类型                      | 必填 | 默认值 |\n| -------- | ------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------- | ---- | ------ |\n| link     | 分享的链接                                                                                                                                  | `string`                  | 是   | -      |\n| imgUrl   | 分享的头图                                                                                                                                  | `string`                  | 是   | -      |\n| title    | 分享的标题                                                                                                                                  | `string`                  | 是   | -      |\n| desc     | 分享的文案                                                                                                                                  | `string`                  | 是   | -      |\n| channel  | 喜马拉雅 App 分享渠道                                                                                                                       | `XmlyShareChannel[]`      | 否   | -      |\n| config   | 喜马拉雅 app jssdk 鉴权配置（通常不应该配置此项，而是在自己在需要的地方调用 `window?.ly?.config()` 方法统一注册所有 ly.js 需要的 api list） | `XmlyAuthConfig \\| false` | 否   | -      |\n| success  | 成功回调                                                                                                                                    | `(data: any) => void`     | 否   | -      |\n| fail     | 失败回调                                                                                                                                    | `(error: any) => void`    | 否   | -      |\n| complete | 执行完成后回调                                                                                                                              | `(data: any) => void`     | 否   | -      |\n| onShare  | 点击分享按钮回调                                                                                                                            | `() => void`              | 否   | -      |\n\n#### XmlyShareChannel\n\n```ts\n/** 微信 */\n| 'weixin'\n/** 微信朋友圈 */\n| 'weixinGroup'\n/** 新浪微博 */\n| 'tSina'\n/** QQ */\n| 'qq'\n/** QQ 空间 */\n| 'qzone'\n/** 喜马拉雅 App 我的动态 */\n| 'tingZone'\n/** 短信 */\n| 'message'\n/** 喜马拉雅 App 群组 */\n| 'xmGroup'\n/** 复制链接 */\n| 'url';\n```\n\n#### XmlyAuthConfig\n\n| 参数    | 说明                                                                                                                                  | 类型       | 必填 | 默认值 |\n| ------- | ------------------------------------------------------------------------------------------------------------------------------------- | ---------- | ---- | ------ |\n| appId   | 申请接入的 appid，申请地址 ☞ [传送门](http://ops.ximalaya.com/gatekeeper/lego/page/5fd730ffefec5c41c33f59fe/5fd73182132c4ec5392fe16e) | `string`   | 是   | -      |\n| apiList | 需要鉴权的接口列表                                                                                                                    | `string[]` | 否   | -      |\n\n#### WechatShareOptions\n\n| 参数    | 说明                  | 类型                          | 必填 | 默认值 |\n| ------- | --------------------- | ----------------------------- | ---- | ------ |\n| link    | 分享的链接            | `string`                      | 是   | -      |\n| imgUrl  | 分享的头图            | `string`                      | 是   | -      |\n| title   | 分享的标题            | `string`                      | 是   | -      |\n| desc    | 分享的文案            | `string`                      | 是   | -      |\n| channel | 喜马拉雅 App 分享渠道 | `WechatShareChannel[]`        | 否   | -      |\n| config  | 微信鉴权配置          | `WechatAuthConfig \\| boolean` | 否   | -      |\n| success | 成功回调              | `(data: any) => void`         | 否   | -      |\n\n#### UpdateWechatShareOptions\n\n| 参数    | 说明                  | 类型                   | 必填 | 默认值 |\n| ------- | --------------------- | ---------------------- | ---- | ------ |\n| link    | 分享的链接            | `string`               | 是   | -      |\n| imgUrl  | 分享的头图            | `string`               | 是   | -      |\n| title   | 分享的标题            | `string`               | 是   | -      |\n| desc    | 分享的文案            | `string`               | 是   | -      |\n| channel | 喜马拉雅 App 分享渠道 | `WechatShareChannel[]` | 否   | -      |\n| success | 成功回调              | `(data: any) => void`  | 否   | -      |\n\n#### WechatShareChannel\n\n```ts\n'weixin' | 'weixinGroup';\n```\n\n#### WechatJSSDKConfig\n\n| 参数          | 说明                                                                                                                           | 类型       | 必填 | 默认值 |\n| ------------- | ------------------------------------------------------------------------------------------------------------------------------ | ---------- | ---- | ------ |\n| debug         | 是否开启调试模式                                                                                                               | `boolean`  | 否   | -      |\n| jsApiList     | 需要使用的 JS 接口列表，微信 JSSDK 文档 ☞ [传送门](https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#4) | `string[]` | 否   | -      |\n| openTagList   | 需要使用的开放标签列表，例如：`['wx-open-launch-app']`                                                                         | `string[]` | 否   | -      |\n| `[K: string]` | 支持其它更多参数（预防微信 JSSDK 扩展参数）                                                                                    | `any`      | 否   | -      |\n\n#### WechatAuthConfig\n\n| 参数          | 说明                                                                                                                                                                                                                                                                                            | 类型                  | 必填 | 默认值                                 |\n| ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------- | ---- | -------------------------------------- |\n| thirdpartyId  | 平台架构统一维护微信鉴权，通过 thirdpartyId 关联注册的不同微信公众号，而不同的微信公众号，在后台对应配置了不同的安全域名。详细介绍参照上方的[准备工作](#准备工作) <br/> thirdpartyid 对照表 ☞ [传送门](http://gitlab.ximalaya.com/x-fm/xpassport/wikis/thirdpartyid%E5%AF%B9%E7%85%A7%E8%A1%A8) | `Record<Env, number>` | 否   | `{ test: 31, uat: 31, production: 17}` |\n| env           | 运行环境                                                                                                                                                                                                                                                                                        | `Env`                 | 否   | `'production'`                         |\n| debug         | 是否开启调试模式                                                                                                                                                                                                                                                                                | `boolean`             | 否   | -                                      |\n| jsApiList     | 需要使用的 JS 接口列表，微信 JSSDK 文档 ☞ [传送门](https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#4)                                                                                                                                                                  | `string[]`            | 否   | -                                      |\n| openTagList   | 需要使用的开放标签列表，例如：`['wx-open-launch-app']`                                                                                                                                                                                                                                          | `string[]`            | 否   | -                                      |\n| `[K: string]` | 支持其它更多参数（预防微信 JSSDK 扩展参数）                                                                                                                                                                                                                                                     | `any`                 | 否   | -                                      |\n\n#### DisableOptions\n\n| 参数    | 说明     | 类型      | 必填 | 默认值 |\n| ------- | -------- | --------- | ---- | ------ |\n| disable | 禁用分享 | `boolean` | 是   | -      |\n\n#### Env\n\n```ts\n'test' | 'uat' | 'production';\n```\n\n#### ShareOptions\n\n| 参数   | 说明       | 类型     | 必填 | 默认值 |\n| ------ | ---------- | -------- | ---- | ------ |\n| link   | 分享的链接 | `string` | 是   | -      |\n| imgUrl | 分享的头图 | `string` | 是   | -      |\n| title  | 分享的标题 | `string` | 是   | -      |\n| desc   | 分享的文案 | `string` | 是   | -      |\n\n## JS 接口安全域名\n\n调用微信 JSSDK API 设置自定义分享，需要将**自己的页面域名**（不是要分享的链接）配置到微信公众号后台“JS 接口安全域名”。\n\n在喜马拉雅，平台架构统一维护微信鉴权，通过 thirdpartyId 关联注册的不同微信公众号，而不同的微信公众号，在后台对应配置了不同的“JS 接口安全域名”、“网页授权域名”。\n\n`@activity-maker/app-share` 默认使用的 `thirdpartyId` 是:\n\n```json\n{\n  \"test\": 31,\n  \"uat\": 31,\n  \"production\": 17\n}\n```\n\n对应 `thirdpartyId` 配置的“JS 接口安全域名”如下：\n\n> 截图时间：2021-08-03 11:11，将来也许会被修改，如果有偏差，请钉钉联系王志伦。\n\n- `thirdpartyId: 31`，如下图：\n\n![thirdpartyId_31](https://imagev2.xmcdn.com/storages/a036-audiofreehighqps/0A/D1/CKwRIJIE3naZAAGeSgDRvDDm.png)\n\n- `thirdpartyId: 17`，如下图：\n\n![thirdpartyId_17](https://imagev2.xmcdn.com/storages/5a44-audiofreehighqps/09/9F/CKwRIJEE3nR6AAFWegDRuubL.png)\n\n如果你的页面域名不在默认配置中，你必须要使用新的 thirdpartyId，并在初始化参数 `config` 中配置 `thirdpartyId`。\n\n喜马拉雅的大部分域名都有在微信公众号配置过，请钉钉联系王志伦帮忙查询即可，某些未添加也可以新增。\n\nthirdpartyid 对照表 ☞ [传送门](http://gitlab.ximalaya.com/x-fm/xpassport/wikis/thirdpartyid%E5%AF%B9%E7%85%A7%E8%A1%A8)\n\n## 其它\n\n1. 注意分享的小图，如果图片体积太大，有可能在部分设备上无法显示，推荐控制在 200KB 以内。\n","readmeFilename":"README.md"}