Skip to content
mayudong1 edited this page Nov 1, 2017 · 7 revisions

金山云KSYHTTPCache iOS SDK使用手册

阅读对象

本文档面向所有使用该SDK的开发人员, 测试人员等, 要求读者具有一定的iOS编程开发经验。

1. 产品概述

金山云iOS HTTPCache SDK可以方便地和播放器进行集成,提供对HTTP视频边播放缓存的功能,缓存完成的内容可以离线工作。

KSY HTTPCache与播放器及视频服务器的关系如下图:

KSY HTTPCache相当于本地的代理服务,使用KSY HTTPCache后,播放器不直接请求视频服务器,而是向KSY HTTPCache请求数据。KSY HTTPCache在代理HTTP请求的同时,缓存视频数据到本地。

2.功能说明

它可以很方便的和播放器进行集成,提供以下功能:

  • http点播视频边缓存边播放,且播放器可从通过回调得到缓存的进度以及错误码
  • 缓存完成的视频,再次点播时可以离线播放,不再请求视频
  • 查询缓存已完成的文件列表, 缓存未完成的文件列表
  • 清除缓存(清除所有缓存,或删除某个url缓存)
  • 提供两种缓存策略供选择(限制缓存区总大小或者限制缓存文件总个数)
  • 提供预缓存接口KSYFileDownloader (v1.2.1)

3.下载和使用

3.1 此demo的编译和运行

  1. 使用git下载源码或者从release页面下载zipg格式压缩包后解码
  2. 打开终端,进入demo目录
  3. 执行pod install命令
  4. 成功后使用xcode打开新生成的KSYHTTPCacheDemo.xcworkspace工程文件即可编译和运行

3.2 SDK的下载和使用

3.2.1 下载SDK

本SDK依赖cocopads中的CocoaAsyncSocket,CocoaLumberjack两个库,建议使用pod的方式下载和使用。
在Podfile文件中添加以下语句,执行pod install之后即可将sdk添加入工程
pod 'ksyhttpcache'

3.2.2 使用SDK

  1. KSYHTTPProxyService类实现了本地HTTP代理,一般在appDelegate中将其启动即可
#import <KSYHTTPCache/KSYHTTPProxyService.h>

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [[KSYHTTPProxyService sharedInstance] startServer];
    return YES;
}
  1. 使用getProxyUrl方法获取原始URL经过本地HTTP代理后的URL,之后将代理URL传递给播放器即可实现在播放的同时将文件cache到本地
//get proxy url from ksyhttpcache
NSString *proxyUrl = [[KSYHTTPProxyService sharedInstance] getProxyUrl:@"http://maichang.kssws.ks-cdn.com/upload20150716161913.mp4"];
    
//init player with proxy url
KSYMoviePlayerController *player = [[KSYMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:proxyUrl]];

//play the video
[player prepareToPlay];
  1. 监听状态
    KSYHTTPCache发生错误时的发送CacheErrorNotification通知
    CacheErrorNotification
    KSYHTTPCache缓存进度发送变化时发送CacheStatusNotification通知
    CacheStatusNotification
    注册notification监听
    [[NSNotificationCenter defaultCenter] addObserver:self 
                selector:@selector(mediaCacheDidChanged:)
                name:CacheStatusNotification 
                object:nil];
    去掉notification监听
    [[NSNotificationCenter defaultCenter] removeObserver:self
                 name:CacheStatusNotification
                 object:nil];

4.API接口文档

API接口文档在线版  

5.反馈与建议