iOS JUnion SDK API文档

Vaas

一、 SDK接口类说明

  1. JUService:包含SDK功能服务的大部分接口。
  2. JUVideoDelegate: 视频流页面的代理回调,包含三个方面的回调。一个是视频播放相关事件,包含开始播放、暂停、播放结束、播放失败、;另个一个方面是用户对视频操作相关行为回调,包含点赞、取消点赞、分享;还有一个方面是广告相关的回调,包含,广告展现、广告点击、广告获取成功、广告获取失败。
  3. JURootViewController:横视频UI页入口,带频道和水平导航的UI,UIViewController类型,可以方便的嵌入用户App中,频道里面是feed流视频列表。
  4. JUFeedListViewController:某单一频道fee流页面。
  5. JULittleVideoViewController: 类似抖音的竖屏视频页面。
  6. JULittleVideoListController:小视频瀑布流布局,类似快手的竖屏视频列表页面。
  7. JUFeedVideoData:单个视频具体信息类
  8. JUVideoProvider:视频内容提供者类
  9. JUUIConfig:UI界面配置类,设置视频UI界面

1.1 在使用SDK的类中添加引用:

只需在类中添加如下引用即可使用SDK所有功能,无需引用JUService等对应的类。

OC项目: #import

Swift项目: import JUnion

1.2 初始化SDK及SDK配置等

在程序刚启动时, 调JUnion SDK其他功能之前,调初始化代码。

    /// 初始化SDK
    /// - Parameters:
    ///   - appkey: 极光平台申请的appkey
    ///   - channelId: 渠道id
    JUService.setAppkey(appkey: "您在极光官网申请的Appkey", channelId: "apple")

        /**
     保存用户标签
     @param uid:用户id
     @param userInfo:用户信息
        示例:
        {
            "gender": "1",     0-未知,1-男性,2-女性
            "age": "18,28"    年龄所在的区间段,以逗号分隔,年龄段的开始和结束值可以相同
        }
     */

    JUService.setUserTag(uid:"",userInfo:["gender": "1", "age":"18"])

    /// 检查业务是否可用,回调结果有缓存,24小时更新一次,setAppkey接口调用之后使用才生效。
    /// - Parameter callBack: 回调信息,result 是否可用,eror错误信息
    JUService.checkBussinessEnable { (result, eror) in

    }

1.3 接入用户系统

    /// 用户登录接口
    /// - Parameters:
    ///   - nickname: 昵称
    ///   - avatar: 头像 url地址
    ///   - phone: 手机号
    ///   - userid: 用户 id
    ///   - callback: 结果回调,成功失败,msg详细信息

    JUService.login(nickname: "Alan", avatar: "头像 url地址", phone: ""手机号,未传手机号不可评论", userid: "用户ID") { (result, msg) in

    }

    // 用户退出登录
    JUService.logout()
    // 查询用户登录状态
    BOOL isLogin = JUService.isLogin

    // 切换用户时单独调用
    JUService.setUid("xxx")

1.4嵌入UI

接入JURootViewController、JULittleVideoViewController等类时,建议使用childViewController的方式接入,以便调整frame来快速适配不同的项目结构。

// 为兼容iOS9设备中,scrollView特定情况下自动向下偏移一段距离的问题,建议使用时在viewController中加入以下代码
self.automaticallyAdjustsScrollViewInsets = NO;

1.4.1 自定义UI设置

JUUIConfig是UI界面配置类,设置视频UI界面可以通过下面的示例配置


// CP信息页是否显示关注按钮(默认隐藏)
JUUIConfig.showFollow = true;
/*-----------------  横版视频配置项  -----------------*/
// 播放页类型(默认:相关视频;局部信息流不支持当前页播放形式)
JUUIConfig.playPageType = .relation
// 是否响应点击头像跳转CP页(默认响应)
JUUIConfig.cpInfoResponse = true
// 评论展示类型(默认不显示)
JUUIConfig.commentType = .none
// 是否显示分享按钮(默认不显示)
JUUIConfig.showShare = true

/*-----------------  竖版视频配置项  -----------------*/
// 评论展示类型(默认不显示)
JUUIConfig.littleCommentType = .none
// 播放器填充类型(默认resizeAspect)
JJUUIConfig.playerContentMode = .resizeAspectFill
// 点赞等按钮位于底部(默认右边)
JUUIConfig.bottomPanel = false;
// 是否显示分享按钮(默认不显示)
JUUIConfig.littleShowShare = true
// 是否响应点击头像跳转CP页(默认响应)
JUUIConfig.littleCpInfoResponse = true

1.4.2 嵌入多个频道导航的类:JURootViewController
1.4.2.1 添加 rootViewController
var channelVC:JURootViewController!
//// delegate 是横版视频状态等回调信息(详见3.6),self 是UIViewController的一个实例
self.channelVC = JUService.getChannelListViewController(delegate: self) 

self.channelVC.view.frame = CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height)
self.view.addSubview((self.channelVC.view)!) self.addChild(self.channelVC);

1.4.2.2 feed流滑动控制

控制feed流滑动到顶部,并设置是否刷新feed数据。

self.channelVC.scrollToTop(pullRefresh: false)
1.4.3 单一频道类:JUFeedListViewController
1.4.3.1 添加单个频道
var channel:JUFeedListViewController!
//// delegate 是横版视频状态等回调信息(详见3.6),self 是UIViewController的一个实例
self.channel = JUService.getOneChannelViewController(delegate: self)
self.channel.view.frame = CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height)
self.view.addSubview((self.channel.view)!)
self.addChild(self.channel);
channel.channelID = "23e234"

1.4.3.2 feed流滑动控制:同4.2.1
self.channel.scrollToTop(pullRefresh: false)

1.4.4 横版视频状态等回调信息:JUVideoDelegate
    //视频开始播放(isAD: 是否是广告)
    func playerStart(videoInfo: JUFeedVideoData, isAD: Bool) {
        print(">>>>>>>>> playerStart videoID:\(videoInfo.video_id ?? "")")
    }
    // 视频播放暂停状态变化
    func playerPause(videoInfo: JUFeedVideoData, isPause: Bool, isAD: Bool) {
        print(">>>>>>>>> playerPause videoID:\(videoInfo.video_id ?? "")  isPause:\(isPause)")
        logData.append("\(isPause ? "视频暂停" : "视频播放")")
        logTableView.reloadData()
    }
    // 视频播放结束
    func playerEnd(videoInfo: JUFeedVideoData, isAD: Bool) {
        print(">>>>>>>>> playerEnd videoID:\(videoInfo.video_id ?? "")")
    }
    // 视频播放失败
    func playerError(videoInfo: JUFeedVideoData, error: Error?, isAD: Bool) {
        print(">>>>>>>>> playerError videoID:\(videoInfo.video_id ?? "")")
    }
    //点击分享按钮(isMain: 竖版视频用来标记是否是首页,仅首页支持负反馈功能)
    func clickShareBtn(videoInfo: JUFeedVideoData, isMain: Bool) {
        if isMain {
            self.channelVC.disLikeVideo(feed: videoInfo)
        }
        print(">>>>>>>>> clickShareBtn videoID:\(videoInfo.video_id ?? "")  isMain: \(isMain)")
    }
    // 点赞(isPraise:true - 点赞,false - 取消点赞)
    func clickPraiseBtn(videoInfo: JUFeedVideoData, isPraise: Bool, isAD: Bool) {
        print(">>>>>>>>> clickPraiseBtn videoID:\(videoInfo.video_id ?? "")  isPraise: \(isPraise)")
        logData.append("\(isPraise ? "点赞" : "取消点赞")")
        logTableView.reloadData()
    }
    // 进入CP页
    func gotoCPPage(videoInfo: JUFeedVideoData) {
        print(">>>>>>>>> gotoCPPage cpID:\(videoInfo.provider?.id ?? "")")
        logData.append("进入CP页")
        logTableView.reloadData()
        UIApplication.shared.windows.last?.addSubview(logTableView)
    }
    // 进入播放页
    func gotoPlayerPage(videoInfo: JUFeedVideoData) {
        print(">>>>>>>>> gotoPlayerPage videoID:\(videoInfo.video_id ?? "")")
        logData.append("进入播放页")
        logTableView.reloadData()
        UIApplication.shared.windows.last?.addSubview(logTableView)
    }
    // 进入Feed页
    func gotoFeedPage(channelID: String) {
        logData.append("进入feed页:\(channelID)")
        logTableView.reloadData()
    }
    //广告展现
    func adShowWith(ylID: String, reqId: String, type: Int) {
        print(">>>>>>>>> adShow ylid: \(ylID)  reqid: \(reqId)  type: \(type)")
    }
    // 广告被点击
    func adClickWith(ylID: String, reqId: String, type: Int) {
        print(">>>>>>>>> adClick ylid: \(ylID)  reqid: \(reqId)  type: \(type)")
    }

1.4.5 类似抖音的竖屏视频页面:JULittleVideoViewController
    var littleVc: JULittleVideoViewController!
    // delegate小视频视频状态及广告加载等回调信息(详见4.7),self是UIviewController的一个实例
    littleVc = JUService.getLittleVideoViewController(delegate: self)

    littleVc!.view.frame = CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height - statusBarHeight - gSafeAreaInsets.bottom - 49)
    self.view.addSubview(littleVc.view)
    self.addChild(littleVc)
1.4.6 类似快手的竖屏视频列表页面:JULittleVideoListController
    var littleListVc: JULittleVideoListController!

    // delegate 小视频视频状态及广告加载等回调信息(详见4.7)
    littleListVc = JUService.getLittleListVideoViewController(delegate: self) 
    littleListVc!.view.frame = CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height - statusBarHeight - gSafeAreaInsets.bottom - 49)
    self.view.addSubview(littleListVc.view)
    self.addChild(littleListVc)
1.4.7 小视频视频状态及广告加载等回调信息:JUVideoDelegate
 //   首个视频开始播放(isAD: 是否是广告) 
    func firstPlayerStart(videoInfo: JUFeedVideoData, isAD: Bool) {
        print(">>>>>>>>> firstPlayerStart videoID:\(videoInfo.video_id ?? "")")
    }
    //视频开始播放(isAD: 是否是广告)
    func playerStart(videoInfo: JUFeedVideoData, isAD: Bool) {
        print(">>>>>>>>> playerStart videoID:\(videoInfo.video_id ?? "")")
    }
    // 视频播放暂停状态变化
    func playerPause(videoInfo: JUFeedVideoData, isPause: Bool, isAD: Bool) {
        print(">>>>>>>>> playerPause videoID:\(videoInfo.video_id ?? "")  isPause:\(isPause)")
        logData.append("\(isPause ? "视频暂停" : "视频播放")")
        logTableView.reloadData()
    }
    // 视频播放结束
    func playerEnd(videoInfo: JUFeedVideoData, isAD: Bool) {
        print(">>>>>>>>> playerEnd videoID:\(videoInfo.video_id ?? "")")
    }
    // 视频播放失败
    func playerError(videoInfo: JUFeedVideoData, error: Error?, isAD: Bool) {
        print(">>>>>>>>> playerError videoID:\(videoInfo.video_id ?? "")")
    }
    // 广告信息获取成功
    func ylADInfoLoadSuccess(adID: String) {
        print(">>>>>>>>> ylADInfoLoadSuccess videoID:\(adID)")
    }
    //广告信息获取失败
    func ylADInfoLoadFail(adID: String, error: Error?) {
        print(">>>>>>>>> ylADInfoLoadFail videoID:\(adID)")
    }
    //点击分享按钮(isMain: 竖版视频用来标记是否是首页,仅首页支持负反馈功能)
    func clickShareBtn(videoInfo: JUFeedVideoData, isMain: Bool) {
        if isMain {
            self.channelVC.disLikeVideo(feed: videoInfo)
        }
        print(">>>>>>>>> clickShareBtn videoID:\(videoInfo.video_id ?? "")  isMain: \(isMain)")
    }
    // 点赞(isPraise:true - 点赞,false - 取消点赞)
    func clickPraiseBtn(videoInfo: JUFeedVideoData, isPraise: Bool, isAD: Bool) {
        print(">>>>>>>>> clickPraiseBtn videoID:\(videoInfo.video_id ?? "")  isPraise: \(isPraise)")
        logData.append("\(isPraise ? "点赞" : "取消点赞")")
        logTableView.reloadData()
    }
    // 进入CP页
    func gotoCPPage(videoInfo: JUFeedVideoData) {
        print(">>>>>>>>> gotoCPPage cpID:\(videoInfo.provider?.id ?? "")")
        logData.append("进入CP页")
        logTableView.reloadData()
        UIApplication.shared.windows.last?.addSubview(logTableView)
    }
    // 进入播放页
    func gotoPlayerPage(videoInfo: JUFeedVideoData) {
        print(">>>>>>>>> gotoPlayerPage videoID:\(videoInfo.video_id ?? "")")
        logData.append("进入播放页")
        logTableView.reloadData()
        UIApplication.shared.windows.last?.addSubview(logTableView)
    }
    // 进入Feed页
    func gotoFeedPage(channelID: String) {
        logData.append("进入feed页:\(channelID)")
        logTableView.reloadData()
    }
    //广告展现
    func adShowWith(ylID: String, reqId: String, type: Int) {
        print(">>>>>>>>> adShow ylid: \(ylID)  reqid: \(reqId)  type: \(type)")
    }
    // 广告被点击
    func adClickWith(ylID: String, reqId: String, type: Int) {
        print(">>>>>>>>> adClick ylid: \(ylID)  reqid: \(reqId)  type: \(type)")
    }

1.5 局部信息流

1.5.1 获取实时热点视频
// 获取热门视频,详细参数参考API文档或者demo实现
JUService.getHotVideoList(beginTime: 0, endTime: 0, videoType:type ,page: 1,size: 10) { (list,error) in
    if list.count == 0{
        print("没有数据")
    }else{
        self.data = list
        self.tableView.reloadData()
    }
}


override func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
    let video = self.data[indexPath.row]
    //视频展现上报
    JUService.reportVideoShowEvent(videoInfo: video, pos: indexPath.row)
}

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let video = self.data[indexPath.row]
    //播放视频
    JUService.openPlayer(videoType: self.type, videoData: video, viewController: self)
    //视频点击上报
    JUService.reportVideoClickEvent(videoInfo: video, pos: indexPath.row)
}


1.5.2 单卡片信息流
//小视频单卡片,参数给定宽度,高度自适应,详细参数参考API文档或者demo实现
JUService.showLittleVideoCard(width: width, delegate: self){ (card, error) in
    if error == .noError{
        self.littleCard?.removeFromSuperview()
        self.littleCard = card
        let y = CGFloat(298.0)
        let x = (self.view.frame.size.width - width)/2
        self.littleCard?.frame = CGRect.init(origin: CGPoint.init(x: x, y: y), size: CGSize.init(width: width,height: 300))
        self.view.addSubview(self.littleCard!)
    }else{
        print("网络错误")
    }
}

//横版feed视频单卡片,参数给定宽度,高度自适应,详细参数参考API文档,给定宽度高,度自适应
JUService.showFeedCard(width: 300, delegate: self) { (card, error) in
    if error == .noError{
        self.feedCard?.removeFromSuperview()
        self.feedCard = card
        let x = (self.view.frame.size.width - 300)/2
        self.feedCard?.frame = CGRect.init(origin: CGPoint.init(x: x, y: 88), size: CGSize.init(width: 300,height: 200))
        self.view.addSubview(self.feedCard!)
    }else{
        print("网络错误")
    }
}



1.5.3 多卡片信息流

该功能是往自己的tableView列表中插入小视频信息流,具体使用详见demo

//小视频(竖版视频)多卡片,详细参数参考API文档
JUService.showLittleVideoCards(num: 5, width: 400, delegate: self)  { (card, error) in
    if error == .noError{
        self.data.insert(card!, at: 3)
        self.tableView.reloadData()
    }else{
        print("网络错误")
    }
}


1.6 登录用户关注页面(v1.1.0 新增)

override func viewDidLoad() {
    super.viewDidLoad()
    let vc =  JUService.getFollowPageViewController(delegate: self)
    self.addChild(vc)
    self.view.addSubview(vc.view)
}

二、详细API说明

2.1 JUService 类API

    /// 1、初始化SDK
    /// - Parameters:
    ///   - appkey: 极光平台申请的appkey
    ///   - channelId: 渠道id
    @objc public class func setAppkey(appkey:String, channelId:String)

    /// 2、开启debug日志接口
    /// - Parameter enable: 默认false
    @objc public class func setDebug(enable:Bool)

    /// 3、检查业务是否可用,回调结果有缓存,24小时更新一次
    /// - Parameter callBack: 回调信息
    @objc public class func checkBussinessEnable(callBack: @escaping (_ result:Bool,Error?)->Void)

    /// 4、获取多频道导航页面
    /// - Parameter delegate: 视频广告状态相关的回调
    /// - Returns:JURootViewController   多频道导航 根视图控制器
    @objc public class func getChannelListViewController(delegate:JUVideoDelegate) -> JURootViewController

    /// 5、单个频道feed流
    /// - Parameters:
    ///   - delegate: 视频和广告状态相关的回调
    ///   - channelID:频道id
    /// - Returns: JUFeedListViewController  feed流控制器
    @objc public class func getOneChannelViewController(delegate:JUVideoDelegate,channelID:String? = "") -> JUFeedListViewController

    /// 6、类似抖音小视频、单个视频全屏布局
    /// - Parameters:
    ///   - delegate: 视频和广告状态相关的回调
    ///   - single: 是否是单个视频 默认false
    ///   - cpInfo: 是否是cp视频 默认false
    ///   - cpId: cp id
    /// - Returns: JULittleVideoViewController小视频控制器
    @objc public class func getLittleVideoViewController(delegate:JUVideoDelegate,single:Bool = false,cpInfo:Bool = false,cpId:String? = "") -> JULittleVideoViewController

    /// 7、类似与快手小视频瀑布流视图布局
    /// - Parameter delegate: 视频和广告状态相关的回调
    /// - Returns: JULittleVideoListController 小视频控制器
    @objc public class func getLittleListVideoViewController(delegate:JUVideoDelegate) -> JULittleVideoListController

    /// 8、用户登录接口
    /// - Parameters:
    ///   - nickname: 昵称
    ///   - avatar: 头像
    ///   - phone: 手机号
    ///   - uid: user id
    ///   - callback: 结果回调
    @objc public class func login(nickname: String, avatar: String, phone: String, uid: String,callback: @escaping (Bool, String) -> Void) {

    /// 9、用户登出
    @objc public class func logout()

    /// 10、保存用户标签
    /// - Parameters:
    ///   - uid: 用户id
    ///   - userInfo: 用户信息
    ///   示例
    ///     {
    ///      "gender": "1",     0-未知,1-男性,2-女性
    //        "age": "18,28"    年龄所在的区间段,以逗号分隔,年龄段的开始和结束值可以相同
    //       }
    @objc public class func setUserTag(uid: String, userInfo: [String: String])

    /// 11、切换用户时单独调用
    @objc public class func setUid(_ uid: String){


    ///12、 查询用户登录状态
    @objc public class var isLogin:Bool

    //13、查询版SDK版本号
    @objc public static let sdkVer 


    /// 14、用户关注的视频主页面,需要调用登录接口,登录成功之后才有数据显示
    /// - Parameter delegate: 视频播放相关回调
    /// - Returns:JUFeedListViewController 视图控制器
    @objc public class func getFollowPageViewController(delegate:JUVideoDelegate) -> JUFeedListViewController


    //MARK:-局部信息流
    ///15、 插入feed信息流卡片
    /// - Parameters:
    ///   - width: 卡片视图宽度,高度自适应
    ///   - chanleId: 频道id
    ///   - delegate: 视频播放开始暂停失败等事件的代理
    ///   - callBack:  回调结果
    @objc public class func showFeedCard(width:CGFloat, chanelId:String = "",delegate:JUVideoDelegate,callBack:@escaping(_ cardView:UIView?,_ error:JUVideosCardError)->Void)

    /// 16、插入只有一个小视频的卡片
    /// - Parameters:
    ///   - width: 卡片视图宽度,高度自适应
    ///   - delegate: 视频播放开始暂停失败等事件的代理
    ///   - callBack: 回调结果
    @objc public class func showLittleVideoCard(width:CGFloat,delegate:JUVideoDelegate,callBack:@escaping(_ cardView:UIView?,_ error:JUVideosCardError)->Void)


    ///17、 插入含有4个以上小视频的卡片
    /// - Parameters:
    ///   - num: 卡片数量(4-8个 小于4默认4,大于8默认8)
    ///   - width: 卡片视图宽度,高度自适应
    ///   - delegate: 视频播放开始暂停失败等事件的代理
    ///   - callBack:  回调结果
    @objc public class func showLittleVideoCards(num:Int = 4,width:CGFloat,delegate:JUVideoDelegate,callBack:@escaping(_ cardView:UIView?,_ error:JUVideosCardError)->Void)


    // 18、实时热点视频
    /**
     获取实时热点视频
     @param beginTime : 开始时间戳,单位秒(小数点后数值内部自动忽略),默认传0,代表获取最新数据
     @param endTime : 结束时间戳,单位秒(小数点后数值内部自动忽略),默认传0,代表获取最新数据
     @param videoType : 视频类型  horizontal-横版视频视频  vertical -竖版视频,热点竖视频需要联系商务申请
     @param key : 内容池key名,默认传空
     @param page : 页数
     @param size : 每页返回的内容条数,取值范围:1-100
     */
    @objc public class func getHotVideoList(beginTime: TimeInterval, endTime: TimeInterval, videoType:JUVideoType, key: String = "", page: Int = 1, size: Int = 10, callback: @escaping ([JUFeedVideoData],_ error:JUResponseError) -> Void)


    ///19、 播放视频接口
    /// - Parameters:
    ///   - videoType: 视频类型
    ///   - videoData: 视频内容数据源
    ///   - delegate: 代理回调
    ///   - viewController: 控制器
    @objc public class func openPlayer(videoType:JUVideoType, videoData: JUFeedVideoData, delegate: JUVideoDelegate? = nil, viewController: UIViewController)

    // MARK:-视频上报相关事件
    /// 20、 上报视频显示事件
    /// - Parameters:
    ///   - videoInfo: 视频数据源
    ///   - pos: 视频显示位置
    @objc public class func reportVideoShowEvent(videoInfo: JUFeedVideoData, pos: Int)

    ///21、 上报视频点击事件
    /// - Parameters:
    ///   - videoInfo: 视频数据源
    ///   - pos: 视频显示位置
    @objc public class func reportVideoClickEvent(videoInfo: JUFeedVideoData, pos: Int)

2.2 JUVideoDelegate 视频和广告状态相关的回调


    /// 首个视频开始播放(isAD: 是否是广告)
    @objc optional func firstPlayerStart(videoInfo: JUFeedVideoData, isAD: Bool)
    /// 视频开始播放
    @objc optional func playerStart(videoInfo: JUFeedVideoData, isAD: Bool)
    /// 视频播放暂停状态变化
    @objc optional func playerPause(videoInfo: JUFeedVideoData, isPause: Bool, isAD: Bool)
    /// 视频播放结束
    @objc optional func playerEnd(videoInfo: JUFeedVideoData, isAD: Bool)
    /// 视频播放失败
    @objc optional func playerError(videoInfo: JUFeedVideoData, error: Error?, isAD: Bool)
    /// 广告信息获取成功
    @objc optional func ylADInfoLoadSuccess(adID: String)
    /// 广告信息获取失败
    @objc optional func ylADInfoLoadFail(adID: String, error: Error?)
    /// 点击分享按钮(isMain: 竖版视频用来标记是否是首页,仅首页支持负反馈功能)
    @objc optional func clickShareBtn(videoInfo: JUFeedVideoData, isMain: Bool)
    /// 点赞(isPraise:true - 点赞,false - 取消点赞)
    @objc optional func clickPraiseBtn(videoInfo: JUFeedVideoData, isPraise: Bool, isAD: Bool)
    /// 进入CP页
    @objc optional func gotoCPPage(videoInfo: JUFeedVideoData)
    /// 进入播放页
    @objc optional func gotoPlayerPage(videoInfo: JUFeedVideoData)
    /// 进入Feed页
    @objc optional func gotoFeedPage(channelID: String)
    /// YLLittleVideoListController列表滑动
    @objc optional func yl_scrollViewDidScroll(_ scrollView: UIScrollView)
    /// 广告展现
    @objc optional func adShowWith(ylID: String, reqId: String, type: Int)
    /// 广告点击
    @objc optional func adClickWith(ylID: String, reqId: String, type: Int)

2.3 JURootViewController类API

是横视频UI页入口类,带多频道水平导航的UI界面,UIViewController类型,可以方便的嵌入用户App中,频道里面是feed流视频列表

    // 1、视频和广告状态相关回调代理
    @objc public weak var delegate: JUVideoDelegate?

    /// 2、当前频道滚动到顶部,设置是否刷新
    /// pullRefresh: 是否刷新
    @objc public func scrollToTop(pullRefresh: Bool = false)

    /// 3、视频负反馈接口 
    @objc public func disLikeVideo(feed: JUFeedVideoData)

2.4 JUFeedListViewController 类API

某单一频道fee流页面视图控制器类,可单独使用。

    // 1、频道id ,用来获取频道内容feed流
    @objc public var channelID: String?
    // 2、视频和广告状态相关回调代理
    @objc public weak var delegate: JUVideoDelegate?

    /// 3、当前频道滚动到顶部,设置是否刷新
    /// pullRefresh: 是否刷新
    @objc public func scrollToTop(pullRefresh: Bool = false)

    /// 4、视频负反馈接口 
    @objc public func disLikeVideo(feed: JUFeedVideoData)

2.5 JULittleVideoViewController 类API

类似抖音的竖屏视频页面的视图控制器

    // 1、视频和广告状态相关回调代理
    @objc public weak var delegate: JUVideoDelegate?
    // 2、是否播放单个视频
    var single = false  
    //3、是否是cp视频
    var cpInfo = false
    //4、为cp视频时的cpid
    var cpID: String?
    // 5、对当前视频进行负反馈
    @objc public func disLikeVideo()

2.6 JULittleVideoListController 类API

小视频瀑布流布局,类似快手的竖屏视频列表页面。

    // 1、视频和广告状态相关回调代理
    @objc public weak var delegate: JUVideoDelegate?

2.7 JUFeedVideoData 类API

单个视频具体信息类

    /// 1、视频ID
    @objc public var video_id: String?
    /// 2、标题
    @objc public var title: String?
    /// 3、标签
    @objc public var tags: String?
    /// 4、分类
    @objc public var category: String?
    /// 5、频道ID
    @objc public var channel_id: String?
    /// 6、 是否精选
    @objc public var is_choice: String?
    /// 7、分享时H5播放页
    @objc public var shareUrl: String

    /// 8、封面图
    @objc public var image: String?
    /// 9、播放时长
    @objc public var duration: String?
    /// 10、内容提供者
    @objc public var provider: JUVideoProvider?
    /// 11、视频内容宽
    @objc public var video_w: String?
    /// 12、视频内容高
    @objc public var video_h: String?
    /// 13、播放数
    @objc public var play_num: String?
    /// 14、点赞数
    @objc public var like_num: String?
    /// 15、评论数
    @objc public var comment_num: String?
    /// 16、是否点赞
    @objc public var is_like: String?

2.8 JUVideoProvider 类API

视频内容提供者类

    /// 1、视频提供者ID
    @objc public var id: String?
    /// 2、名字
    @objc public var name: String?
    /// 3、头像
    @objc public var avatar: String?
    /// 4、简介
    @objc public var aword: String?
    /// 5、视频数
    @objc public var videos: String?
    /// 6、粉丝数
    @objc public var fans: String?
    /// 7、是否已关注
    @objc public var islike: String?
    /// 8、CP类型(1:短视频,2:小视频)
    @objc public var type: String?

2.9 JUUIConfig 类API

UI界面配置类,设置视频UI界面

/// 播放页类型
@objc public enum JUPlayPageType: Int {
    /// 播放页类型-h5
    case web
    /// 播放页类型-相关视频
    case relation
    /// 播放页类型-feed流
    case feed
    /// 当前页播放
    case direct
}

/// 评论展示类型
@objc public enum JULittleCommentType: Int {
    /// 只能看不能评论
    case read
    /// 支持看和写评论
    case readWrite
    /// 不显示评论功能
    case none
}
/// 小视频播放器填充类型
@objc public enum JULittlePlayerContentMode: Int {
    /// 非等比例填充,拉伸视频直至两个维度填满播放器区域
    case resize
    /// 等比例填充,直到一个维度填满播放器区域,其中一个维度可能会出现黑边
    case resizeAspect
    /// 等比例填充,直到两个维度都填满播放器区域,其中一个维度部分区域可能会被裁剪
    case resizeAspectFill
}

    /*-----------------  横版视频配置项  -----------------*/
    /// 播放页类型(默认:相关视频;局部信息流不支持当前页播放形式)
    @objc public static var playPageType: JUPlayPageType = .relation
    /// 是否响应点击头像跳转CP页(默认响应)
    @objc public static var cpInfoResponse = true
    /// 评论展示类型(默认不显示)
    @objc public static var commentType: JULittleCommentType = .none
    /// 是否显示分享按钮
    @objc public static var showShare = false
    /// 是否显示关注按钮
    @objc public static var showFollow = false
    /// 是否显示关注页面
    @objc public static var showFollowPage = false
     // 是否显示横屏按钮(默认显示 v1.1.0新增)
        JUUIConfig.showFullBtn = true

    /*-----------------  竖版视频配置项  -----------------*/
    /// 小视频评论展示类型(默认不显示)
    @objc public static var littleCommentType: JULittleCommentType = .none
    /// 小视频播放器填充类型(默认resizeAspect)
    @objc public static var playerContentMode: JULittlePlayerContentMode = .resizeAspect
    /// 小视频点赞等按钮位于底部(默认右边)
    @objc public static var bottomPanel = false
    /// 小视频是否显示分享按钮
    @objc public static var littleShowShare = false
    /// 小视频是否响应点击头像跳转CP页(默认响应)
    @objc public static var littleCpInfoResponse = true
         /*-----------------以下为v1.1.0竖版视频配置新增属性-----------------*/
     // 小视频是否显示相关视频按钮(默认显示)
    JUUIConfig.littleShowRelation = true
    //小视频是否自动播放下一个(默认自动播放)
    JUUIConfig.littleAutoPlayNext = true
    // 小视频title和description距离底部的距离,默认57
    JUUIConfig.littleTitleMargin = 57.0
    // 小视频右边按钮最下面的按钮距离底部的距离,默认42
    JUUIConfig.littleRightMargin = 42.0
    // 小视频底部话题距离底部的距离,默认0
    JUUIConfig.littleTopicMargin = 0.0


Copyright 2011-2020, jiguang.cn, All Rights Reserved.
粤ICP备12056275号-13 深圳市和讯华谷信息技术有限公司

Documentation built with MkDocs.