准备工作
1. 您需要一个微信小程序应用,这个应用可以是您现有的工程,也可以是您新建的一个空的工程。
2. 请确保您的微信小程序的基础库版本为 3.6.1 或更高版本。
3. SMH UIKit 以分包形式集成到您的小程序中。
操作步骤
步骤1:拷贝分包目录
your-miniapp-project/├── pages/ # 您的主包页面│ └── index/├── smh-ui-kit/ # 将 smh uikit 文件放到这里(整个目录)├── app.js├── app.json└── project.config.json
注意:
请保持
smh-ui-kit/ 内部的文件结构不变,不要移动或删除其中的文件。步骤2:配置分包路由
在
app.json 中添加分包配置:{"pages": ["pages/index/index"],"subPackages": [{"root": "smh-ui-kit","pages": ["index"]}],"window": {"navigationStyle": "custom"}}
步骤3:注册 AccessTokenProvider
当前发布产物中的
smh-ui-kit/index.js 已经内置完成 SDK 初始化、全局方法挂载和页面注册;宿主侧不需要再手动 require('./smh-ui-kit/lib/miniApp.js') 或调用 initSDK() / initApp()。宿主只需要在打开页面前,将 AccessTokenProvider 注册到全局表:
if (!global._smhAccessTokenProviders) {global._smhAccessTokenProviders = {};}function createSmhAccessTokenProvider() {return function(callback) {wx.request({url: 'https://your-server.com/api/smh/token',success: function(res) {callback({token: res.data.token,accessToken: res.data.token,startTime: res.data.startTime,expiresIn: res.data.expiresIn});},fail: function() {callback({ errorMsg: '获取 Token 失败' });}});};}
步骤4:跳转到分包页面
通过路由参数传入
SmhConfig 和 smh_access_token_provider_key:function openSmhPage() {var providerKey = 'provider_' + Date.now();var smhConfig = {host: 'https://xxx.api.tencentsmh.cn',libraryId: 'your-library-id',spaceId: 'your-space-id'};global._smhAccessTokenProviders[providerKey] = createSmhAccessTokenProvider();wx.navigateTo({url: '/smh-ui-kit/index?SmhConfig='+ encodeURIComponent(JSON.stringify(smhConfig))+ '&smh_access_token_provider_key='+ encodeURIComponent(providerKey)+ '&page_name=smh_netdisk'});}
其中:
SmhConfig:SMH 配置对象,SDK 会自动从路由参数中读取smh_access_token_provider_key:用于在全局 provider 注册表中定位当前页面实例对应的 TokenProviderpage_name:可选,默认值为 smh_netdiskSmhConfig 参数
参数 | 说明 | 类型 | 是否必填 |
host | SMH API 地址,如 https://xxx.api.tencentsmh.cn | String | 是 |
libraryId | 媒体库 ID | String | 是 |
spaceId | 空间 ID | String | 是 |
path | 初始 space 目录路径,默认根目录 | String | 否 |
userId | 用户 ID(SMH 服务端概念) | String | 否 |
AccessToken 参数
参数 | 说明 | 类型 | 是否必填 |
token | 访问凭证 | String | 是 |
startTime | Token 起始时间(毫秒时间戳) | number | 是 |
expiresIn | 有效时长(秒) | number | 是 |
说明:
startTime 和 expiresIn 用于描述 Token 有效期。SDK 内部会优先复用未过期 Token,接入方无需额外管理 Token 生命周期。