tencent cloud

智能媒资托管

产品简介
产品概述
功能介绍
产品优势
应用场景
基本概念
购买指南
快速入门
创建媒体库
发起请求
服务级 API 文档
History
Introduction
API Category
Making API Requests
PaaS Service APIs
Official Cloud Disk APIs
Data Types
Error Codes
业务级 API 文档
简介
访问令牌操作接口
租户空间操作接口
文件操作接口
目录或相簿操作接口
回收站操作接口
配额操作接口
查询任务操作接口
搜索操作接口
历史版本操作接口
目录和文件批量操作接口
收藏操作接口
Error Codes
SDK 文档
Android SDK
iOS SDK
鸿蒙 SDK
常见问题
企业网盘
产品简介
购买指南
快速入门
常见问题
Service Level Agreement
词汇表

快速入门

PDF
聚焦模式
字号
最后更新时间: 2026-01-07 10:49:05

准备工作

您需要一个 iOS 应用,这个应用可以是您现有的工程,也可以是您新建的一个空的工程。
请确保您的 iOS 应用目标为 iOS 9及以上。

步骤1:安装 SDK

在您工程的 Podfile 添加以下依赖,并执行 pod install
pod "QCloudCOSSMH/Api"

步骤2:开始使用

导入头文件

#import <QCloudCOSSMHApi.h>

设置访问域名

使用SDK提供的相关服务前,需要先设置SDK的访问域名。
// 配置发布域名
[QCloudSMHBaseRequest setBaseRequestHost:@"<libraryId>.api.tencentsmh.cn" targetType:QCloudECDTargetRelease];
[QCloudSMHBaseRequest setTargetType:QCloudECDTargetRelease];
注意:
控制台创建媒体库后,控制台会展示为您生成的专属域名,该域名是您访问所有服务的前提,强烈建议您在应用初始化后通过SDK设置您的专属域名。


初始化 SMH 服务并实现获取 accessToken 协议

说明:
User 模块不需要 accessToken,若仅使用 User,可以跳过此步骤。
集成 API 和 User 时,获取 accessToken 的方式。
API 模块接口在发出请求时需要携带 accessToken,所以需要实现 QCloudSMHAccessTokenProvider 协议,在该协议中获取包含 accessToken 以及 spaceId 等信息的 QCloudSMHSpaceInfo 对象通过参数 continueBlock 回调给 SDK。
- (void)accessTokenWithRequest:(QCloudSMHBizRequest *)request
urlRequest:(NSURLRequest *)urlRequst
compelete:(QCloudSMHAuthentationContinueBlock)continueBlock {
// 首先从您的访问令牌服务器获取包含了访问令牌信息的响应
QCloudSMHSpaceInfo * spaceInfo = [QCloudSMHSpaceInfo new];
spaceInfo.accessToken = @""; // 访问令牌 Token
spaceInfo.expiresIn = @""; // 访问令牌的有效时长,单位为秒
spaceInfo.libraryId = @""; //
spaceInfo.spaceId = @"";
continueBlock(sapceInfo, nil);
}
SDK 提供了一个 QCloudSMHAccessTokenFenceQueue 的脚手架,实现对 accessToken 的缓存与复用。脚手架在密钥过期之后会重新调用该协议的方法来重新获取新的密钥,直到该密钥过期时间大于设备的当前时间。
说明:
建议把初始化过程放在 AppDelegate 或者程序单例中。
使用脚手架您需要实现 QCloudAccessTokenFenceQueueDelegate 协议。
1. 初始化脚手架。
@property (nonatomic) QCloudSMHAccessTokenFenceQueue *fenceQueue;

self.fenceQueue = [QCloudSMHAccessTokenFenceQueue new];
self.fenceQueue.delegate = self;
2. 实现QCloudAccessTokenFenceQueueDelegate
- (void)fenceQueue:(QCloudSMHAccessTokenFenceQueue *)queue
request:(QCloudSMHBizRequest *)request
requestCreatorWithContinue:(QCloudAccessTokenFenceQueueContinue)continueBlock {
// 首先从您的访问令牌服务器获取包含了访问令牌信息的响应
QCloudSMHSpaceInfo * spaceInfo = [QCloudSMHSpaceInfo new];
spaceInfo.accessToken = @""; // 访问令牌 Token
spaceInfo.expiresIn = @""; // 访问令牌的有效时长,单位为秒
spaceInfo.libraryId = @""; //
spaceInfo.spaceId = @"";
continueBlock(sapceInfo, nil);
}

// 在该方法中使用脚手架进行请求 sdk 内部缓存的 accessToken 并使用 continueBlock 回调给 sdk,若
// sdk 内缓存的 accessToken 过期或没有,则跳转到上面方法中进行请求最新的 accessToken 回调给 sdk 并缓存。
- (void)accessTokenWithRequest:(QCloudSMHBizRequest *)request
urlRequest:(NSURLRequest *)urlRequst
compelete:(QCloudSMHAuthentationContinueBlock)continueBlock {
[self.fenceQueue performRequest:request
withAction:^(QCloudSMHSpaceInfo *_Nonnull accessToken, NSError *_Nonnull error) {
if (error) {
continueBlock(nil, error);
} else {
continueBlock(accessToken, nil);
}
}];
}
说明:
若仅需要 API 模块,则需要一个可以获取智能媒资托管服务访问令牌的业务服务端接口,访问令牌的相关说明请参见 生成访问令牌
实现 QCloudSMHAccessTokenProvider 协议,在该协议中获取 accessToken 并包装成一个 QCloudSMHSpaceInfo 对象通过参数 continueBlock 回调给 SDK。

步骤3:访问 SMH 服务

以列出文件列表为例,其他接口访问方式与此类似。
QCloudSMHListContentsRequest *req = [QCloudSMHListContentsRequest new];
// 用户所在空间 ID
req.spaceId = @"spaceId";
// 用户所在 libraryid
req.libraryId = @"libraryId";

// 目录路径或相簿名,对于多级目录,使用斜杠(/)分隔,例如 foo/bar;对于根目录,该参数留空;
req.dirPath = @"dirpath";
[req setFinishBlock:^(QCloudSMHContentListInfo *_Nullable result, NSError *_Nullable error) {
// result 文件列表数据
// error 报错信息
}];
// 发起请求
[[QCloudSMHService defaultSMHService] listContents:req];

通用参数介绍

libraryId:媒体库 ID,必选参数。
spaceId:空间 ID,如果媒体库为单租户模式,则该参数固定为连字符(-);如果媒体库为多租户模式,则必须指定该参数。
accessToken:访问令牌,必选参数。
说明:
更多概念请参见 基本概念

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈