本文介绍 smh_flutter_sdk 如何快速入门以及 API 介绍。
相关资源
准备工作
1. 您需要一个纯 Flutter 项目或 Flutter 原生混合项目,这个应用可以是您现有的工程,也可以是您新建的一个空的工程。
2. Flutter 版本要求:
sdk: ">=2.17.6 <3.0.0"flutter: ">=3.0.0 <4.0.0"
第一步:SDK 介绍
smh_flutter_sdk 目前兼容支持 iOS、Android。
分为两个版本:
名称 | 功能描述 |
完整版本 | 包含 smh 全部功能以及灯塔事件上报模块。 |
含灯塔版本 | 仅含 smh 全部功能。 |
具体可以按照项目需求集成对应版本 SDK。
第二步:集成 SDK
集成完整版本
smh_flutter_sdk:git:url: https://github.com/tencentyun/smh-flutter-sdk.git
集成不含灯塔版本
smh_flutter_sdk:git:url: https://github.com/tencentyun/smh-flutter-sdk.gitref: 'slim'
第三步:开始使用
1. 自定义 Accesstoken 刷新类
说明:
SDK 内部已经做了 accesstoken 缓存。业务侧需要提供 accessToken 的刷新机制。
自定义 AccessToken刷新工具类并实现 SMHRefreshAccessTokenHander 接口。
实例代码参考:
class CustomRefreshAccessTokenHander extends SMHRefreshAccessTokenHander {@overrideFuture<SMHAccessTokenEntity>? refreshAccessToken(String? spaceId, String? spaceOrgId) async {// spaceId 为空时调用 SMHUserSpaceApis.getUserInfoAndAccessToken 接口if (spaceId == null) {SMHResponse? response;try {response = await SMHUserSpaceApis.getUserInfoAndAccessToken(userToken: userToken); // 用户 UserToken} catch (e) {}return response?.data;} else {// spaceId 不为空时调用 SMHUserSpaceApis.getSpaceAccessToken 接口SMHResponse? response;try {response = await SMHUserSpaceApis.getSpaceAccessToken(userToken: userToken, // 用户 UserTokenspaceId: spaceId, // 用户空间 ID} catch (e) {}return response?.data;}}}
2. 初始化 SDK
// 注意 请在 WidgetsFlutterBinding.ensureInitialized(); 后进行初始化// 注册 SMHUserServiceSMHServicesManager().registerService(SMHUserService());// 实例化 SMHAPIService 并设置 accesstoken 刷新 Handler// CustomRefreshAccessTokenHander 为SMHAPIService apiService = SMHAPIService()..setAccessTokenRefreshHandle(CustomRefreshAccessTokenHander());// 注册 SMHAPIServiceSMHServicesManager().registerService(apiService);// 配置开发域名SMHServicesManager().configHostWithEnv("https://devhost/", SMHHostType.dev);// 配置测试域名SMHServicesManager().configHostWithEnv("https://testhost/", SMHHostType.test);// 配置预发布域名SMHServicesManager().configHostWithEnv("https://previewhost/", SMHHostType.preview);// 配置发布域名SMHServicesManager().configHostWithEnv("https://releasehost/", SMHHostType.release);// 设置当前模式 开发、测试、预发布、发布SMHServicesManager().setupCurrentEnv(SMHHostType.dev);
说明:
设置 host 根据项目实际使用场景设置,除了 release 模式外,其他都为可选。
3. 初始化灯塔(若集成不含灯塔版本,跳过此步骤)
// 需要 用户 ID ,请在登录完成以后 进行初始化灯塔 SDK。SMHServicesManager().initBeaconSDK(userId: userId,isDebug: true);
第四步:访问 SMH 服务
例如:列出文件列表
SMHResponse<SMHFileListEntity>? smhResponse;try {smhResponse = await SMHAPIDirectoryApis.listDirectory(libraryId: 'libraryId',spaceId: 'spaceId',dirPath: '/');} on SMHError catch (e) {}
文件传输任务队列并发数设置
该项为选择性设置,支持自定义并发数量,也可以使用 SDK 默认策略。
任务并发数根据当前网速自动调节,当前并发数最大不能超过最大并发数,最小为2.
设置最大任务并发数(默认5):
SMHTaskManager.instance.setMaxConcurrentCount(8);
设置当前任务并发数(默认3):
SMHTaskManager.instance.setCustomConcurrentCount(5);
通用参数介绍
libraryId | 媒体库 ID,必选参数 |
spaceId | 空间 ID,如果媒体库为单租户模式,则该参数固定为连字符(-);如果媒体库为多租户模式,则必须指定该参数 |
accessToken | 访问令牌,必选参数 |
userId | |
userToken | 用户令牌,必选参数 |
说明: