Skip to content
daliang0101 edited this page Dec 21, 2017 · 3 revisions

Welcome to the KSVSShortVideoKit_iOS wiki!

iOS短视频解决方案使用指南

功能及API拆分

SDK部分

  • SDK鉴权:KSVSAuthService
  • 录制页:KSVSRecordViewController(编辑、合成、上传等功能,由录制页直接调用对应接口实现,省去您接入的成本)
  • 视频广场页:KSVSSquareViewController
  • 视频播放页:KSVSPlayerViewController
  • 头像上传:KSVSKS3UploadService
  • 获取/删除已发布视频:KSVSUserInfoRequestService

API使用说明

  • KSVSAuthService
/**
 * @abstract 鉴权接口
 * @param bundleIdentifier App包名
 * @param ksvsToken KSVSDk鉴权所需的token(由金山云颁发)
 * @param accessToken App Server下发的token(登录App后,由App Server后返回的token,可参考KSVSDemo部分)
 * @param success 请求鉴权信息成功后的回调
 * @param failure 请求鉴权信息失败后的回调(KSVSError错误码参考KSVSErrorCodeDefines.h)
 */
+ (void)authWithBundleIdentifier:(NSString *)bundleIdentifier
                       ksvsToken:(NSString *)ksvsToken
                     accessToken:(NSString *)accessToken
                         success:(void(^)(void))success
                         failure:(void(^)(KSVSError *ksvsError))failure;

调用示例:
[KSVSAuthService authWithBundleIdentifier:bundleId ksvsToken:ksvsToken accessToken:kCurrUser.token success:^{
     // 在这里执行鉴权成功后的操作
} failure:^(KSVSError *ksvsError) {
    // 在这里查看鉴权出错的信息
}];
  • KSVSRecordViewController(目前仅支持push到此控制器)
/**
 * 最短录制时长, 视频集合的总时长必须大于该值,默认为5s
 */
@property (nonatomic, assign) NSTimeInterval minRecDuration;
/**
 * 最长录制时长,视频集合的总时长必须小于该值,当录制时长超过该值后内部自动停止录制, 默认sdk本身不限制,但必须大于minRecDuration
 * 默认60s
 */
@property (nonatomic, assign) NSTimeInterval maxRecDuration;

/**
 * @abstract 初始化录制页视图控制器(目前仅支持用push到此控制器)
 * @param userId 用户id (App Server返回的,可参考KSVSDemo部分)
 */
- (instancetype)initWithUserId:(NSString *)userId;

调用示例:
KSVSRecordViewController *recordVC = [[KSVSRecordViewController alloc] initWithUserId:@"uid"];
[self.navigationController pushViewController:recordVC animated:YES];
  • KSVSSquareViewController
/**
 * @abstract 初始化广场页视图控制器
 * @param userId App用户id(由App Server返回)
 */
- (instancetype)initWithUserId:(NSString *)userId;

调用示例:
KSVSSquareViewController *asquareVC = [[KSVSSquareViewController alloc] initWithUserId:@"uid"];
  • KSVSPlayerViewController
/**
 * @abstract 出始化播放页视图控制器
 * @param videoModel 视频对象模型
 * @param playerFrom 是否是从个人中心push的
 */
- (instancetype)initWithVideoModel:(KSVSVideoModel *)videoModel
                        playerFrom:(KSVSPlayerFrom)playerFrom;


调用示例:
KSVSPlayerViewController *playerVC = [[KSVSPlayerViewController alloc] initWithVideoModel:model playerFrom:KSVSPlayerFromPersonalCenter];
  • KSVSKS3UploadService
/**
 * @abstract 初始化上传对象
 * @param userId 当前用户的id
 */
- (instancetype)initWithUserId:(NSString *)userId;

/**
 * @abstract 上传头像
 * @param headImage 相册或拍照选取的图片
 * @param success 上传成功的回调,headImageUrl为头像在ks3上的地址(例如,上传成功后修改headImageView.image为headImage)
 * @param failure 上传失败的回调
 */
- (void)uploadHeadImage:(UIImage *)headImage
                success:(void(^)(NSString *headImageUrl))success
                failure:(void(^)(KSVSError *ksvsError))failure;

调用示例:
KSVSKS3UploadService *ks3Service = [[KSVSKS3UploadService alloc] initWithUserId:kCurrUser.uid];
[ks3Service uploadHeadImage:_selectedHeadImage success:^(NSString *headImageUrl) {
     // 在这里执行上传头像成功的操作(如:更新userModel头像地址为headImageUrl,修改headImageView.image为新头像等)            
} failure:^(KSVSError *ksvsError) {
     // 在这里查看上传头像失败的原因
}];
  • KSVSUserInfoRequestService
/**
 * @abstract 获取已发布视频列表
 * @param userId 用户id
 * @param page 第几页的数据
 * @param size 每页最多返回数据条数
 * @param completion 请求完成回调
 */
+ (void)fetchReleasedVideoWithUserId:(NSString *)userId
                                page:(NSInteger)page
                                size:(NSInteger)size
                          completion:(void(^)(KSVSReleasedVideoResponse *response ,KSVSError *ksvsError))completion;

调用示例:
__weak typeof(self) weakSelf = self;
[KSVSUserInfoRequestService fetchReleasedVideoWithUserId:kCurrUser.uid page:1 size:50 completion:^(KSVSReleasedVideoResponse *response, KSVSError *ksvsError) {
        typeof(weakSelf) strongSelf = weakSelf;
        if (!ksvsError) {
             // 更新已发布视频列表
             [strongSelf.releasedVideos addObjectsFromArray:response.Data.Videos];
             [strongSelf.releasedVideoTable reloadData];
        } else {
             // 提示错误码
        }
}];

/**
 * @abstract 删除用户已发布的视频
 * @param userId App用户id
 * @parma videoId 视频id
 * @param completion 删除请求结束后的回调(请求失败错误码参考KSVSErrorCodeDefines.h)
 */
+ (void)deleteReleasedVideoWithUserId:(NSString *)userId
                              videoId:(NSString *)videoId
                           completion:(void(^)(KSVSDeleteReleasedVideoResponse *response ,KSVSError *ksvsError))completion;

调用示例:
[KSVSUserInfoRequestService deleteReleasedVideoWithUserId:kCurrUser.uid videoId:model.Id completion:^(KSVSDeleteReleasedVideoResponse *response, KSVSError *ksvsError) {
            [MBProgressHUD hideHUDForView:self.view animated:YES];
            typeof(weakSelf) strongSelf = weakSelf;
            if (!ksvsError) {
                 // 删除数据源,更新已发布视频列表
                [strongSelf.releasedVideos removeObjectAtIndex:indexPath.row];
                [tableView reloadData];
            } else {
                 // 提示错误码
            }
}];
Clone this wiki locally