Android JUnion SDK API 文档
Vaas
SDK类
SDK主要提供了以下类:
基础类:
- JUnionInterface:主要提供初始化。
- JGUIConfig:用于配置个性化UI
- MediaInfo:视频的model类
- MediaDetail:视频详情的model类
- JGUser:登陆用户类
页面:
- ChannelFragment:频道导航栏 + feed流页面
- JGLittleVideoFragment:小视频页面
- KSLittleVideoFragment:类快手样式小视频页面
接入代码
2.1 SDK 初始化
2.1.1 初始化配置
- JUnionInterface.setDebugMode(boolean debugMode);
- 接口说明:
- 设置是否开启debug模式。true则会打印更多的日志信息。建议在init接口之前调用。
- 参数说明:
- debugMode:debug开头
- 调用示例:
- 接口说明:
JUnionInterface.setDebugMode(true);//debug设置,在初始化前调用
- JUnionInterface.init(Application application);
- 接口说明
- 初始化接口。
- 参数说明:
- application:上下文
- 调用示例:
- 接口说明
JUnionInterface.init(this);//初始化
- JUnionInterface.queryEnabled(Context context, RequestCallback requestCallback);
- 接口说明:
- appkey是否可用。
- 参数说明:
- context:上下文
- requestCallback:回调接口
- 回调说明:
- void onSuccess()
- 可用
- void onError(int code, String result)
- code:错误码
- result:错误信息
- void onSuccess()
- 调用示例:
- 接口说明:
JUnionInterface.queryEnabled(this, new RequestCallback() {
@Override
public void onSuccess() {
}
@Override
public void onError(int code, String result) {
}
});
code | result |
---|---|
9002 | disabled |
4001 | Request method not supported |
4002 | http media type invalid |
4010 | parameter invalid |
4011 | auth empty |
4012 | encrypt fail |
4013 | decrypt fail |
4014 | invalid appKey |
4015 | body invalid |
4016 | appKey offline (表示未开通过 vaas 业务的 appKey) |
2.1.2 页面UI配置
JGUIConfig config = JGUIConfig.getInstance();
config.littleComment(CommentConfig.CommentType.SHOW_COMMENT_LIST);//小视频评论展现形式
config.littleLikeShow(true);//是否显示小视频点赞
config.littleShareShow(true);//是否显示小视频分享
config.littleShowAvatar(true);//是否显示作者头像
config.littleShowGuide(true);//是否显示新手引导滑动浮层(第一次安装进入显示)
config.feedAvatarClickable(false);//短视频头像是否可以点击
config.feedPlayAuto(true);//feed自动播放(setPlayerStyle(FeedConfig.STYLE_FEED_PLAY) 时有效)
config.feedPlayStyle(FeedConfig.STYLE_FEED_PLAY);//设置feed播放方式,STYLE_FEED_PLAY:feed流当前播放, STYLE_NATIVE:跳转播放详情页播放
config.feedShowAvatar(true);//是否显示作者头像
config.feedSwipeRefreshEnable(true);//是否可以下拉刷新
config.videoComment(CommentConfig.CommentType.SHOW_COMMENT_ALL);//短视频评论展现形式
config.videoLikeShow(true);//是否显示短视频点赞
config.videoShareShow(true);//是否显示短视频分享
config.followAvailable(true);//是否显示关注按钮
常量说明:
类名 | 常量说明 |
---|---|
CommentConfig | 设置播放页评论显示类,目前支持一下3种: CommentType.SHOW_COMMENT_ALL; //显示评论列表,并支持评论 CommentType.SHOW_COMMENT_LIST; //只显示评论列表,不支持评论 CommentType.DISMISS_COMMENT //隐藏评论列表 |
FeedConfig | 设置feed播放方式,目前支持一下2种: FeedConfig.STYLE_FEED_PLAY; //feed流当前页播放 FeedConfig.STYLE_NATIVE; //跳到播放详情页播放 |
2.1.3 回调相关
config.registerShareCallBack(shareCallback);//分享回调注册
config.unRegisterShareCallBack();//注销
config.registerAdListener(jgAdListener);//广告回调状态监听注册
config.unRegisterAdListener();//注销
config.registerAvatarClick(onAvatarClickListener);//头像点击回调
config.unRegisterAvatarClick();//注销
config.registerCommentCallBack(commentCallback);//注册评论回调
config.unregisterCommentCallBack();//注销
config.registerLikeCallBack(likeCallback); //注册点赞回调
config.unregisterLikeCallBack();//注销
config.registerLittleVideoCallBack(onLittleVideoCallBack);//小视频位置滑动监听
config.unRegisterLittleVideoCallBack();//注销
config.registerRelateClick(onRelateVideoListener);//视频详情页item点击回调
config.unRegisterRelateClick();//注销
/***注意***/
/***如果上述监听配置在具备生命周期的组件中,如Activity或Fragment中, ***/
/***需在组件的onDestory()中解注册监听,否则有内存泄漏的风险,解注册代码如下:***/
config.unRegisterXXXXXXXXXXX();
2.1.4 回调接口
//分享回调注册
config.registerShareCallBack(new ShareCallback() {
@Override
public void onShare(Context context, MediaInfo mediaInfo) {
//mediaInfo 分享的视频信息
Log.d(TAG, "onShare mediaInfo:" + mediaInfo);
}
});
//头像点击回调
config.registerAvatarClick(new OnAvatarClickListener() {
@Override
public void onAvatarClick() {
Log.d(TAG, "onAvatarClick");
}
});
//注册评论回调
config.registerCommentCallBack(new CommentCallback() {
@Override
public void onCommentClick(String videoID) {
Log.e(TAG, "onCommentClick 评论点击 " + videoID);
}
@Override
public void onCommentSend(String videoID) {
Log.e(TAG, "onCommentSend 评论发送 " + videoID);
}
@Override
public boolean onCommentShow(String videoID) {
Log.e(TAG, "onCommentShow 评论展示 " + videoID);
return false;
}
@Override
public void onCommentHide(String videoID) {
Log.e(TAG, "onCommentHide 评论关闭 " + videoID);
}
});
//注册点赞回调
config.registerLikeCallBack(new LikeCallback() {
@Override
public void onLike(String videoID, boolean isLike) {
Log.e(TAG, isLike ? "点赞:" + videoID : "取消点赞:" + videoID);
}
});
//小视频位置滑动监听
config.registerLittleVideoCallBack(new OnLittleVideoCallBack() {
@Override
public void onPositionChange(int position) {
Log.e(TAG, "当前位置:" + position);
}
});
//视频详情页item点击回调
config.registerRelateClick(new OnRelateVideoListener() {
@Override
public void onRelateClick(String videoID) {
Log.e(TAG, "相关视频被点击了:" + videoID);
}
});
//广告回调状态监听注册
config.registerAdListener(new JGAdListener() {
/**
* 广告请求成功
*
* @param adType 广告类型
* @param source 广告来源
* @param reqId 请求id
* @param pid 广告位id
*/
@Override
public void onSuccess(String adType, int source, String reqId, String pid) {
Log.i(TAG, "[onSuccess] " + "adType = " + adType + " source = " + source + " reqId = " + reqId + " pid = " + pid);
}
/**
* 广告请求失败
*
* @param adType 广告类型
* @param source 广告来源
* @param reqId 请求id
* @param code 错误码
* @param msg 错误信息
* @param pid 广告位id
*/
@Override
public void onError(String adType, int source, String reqId, int code, String msg, String pid) {
Log.i(TAG, "[onError] " + "adType = " + adType + " source = " + source + " reqId = " + reqId + " pid = " + pid);
}
/**
* 广告渲染失败
*
* @param adType 广告类型
* @param source 广告来源
* @param reqId 请求id
* @param code 错误码
* @param msg 错误信息
* @param pid 广告位id
*/
@Override
public void onRenderError(String adType, int source, String reqId, int code, String msg, String pid) {
Log.i(TAG, "[onRenderError] " + "adType = " + adType + " source = " + source + " reqId = " + code + " pid = " + pid);
}
/**
* 广告展现
*
* @param adType 广告类型
* @param source 广告来源
* @param reqId 请求id
* @param pid 广告位id
*/
@Override
public void onShow(String adType, int source, String reqId, String pid) {
Log.i(TAG, "[onShow] " + "adType = " + adType + " source = " + source + " reqId = " + reqId + " pid = " + pid);
}
/**
* 广告点击事件
*
* @param adType 广告类型
* @param source 广告来源
* @param reqId 请求id
* @param pid 广告位id
*/
@Override
public void onClick(String adType, int source, String reqId, String pid) {
Log.i(TAG, "[onClick] " + "adType = " + adType + " source = " + source + " reqId = " + reqId + " pid = " + pid);
}
/**
* 跳过回调,如开屏广告
*
* @param adType 广告类型
* @param source 广告来源
* @param reqId 请求id
* @param pid 广告位id
*/
@Override
public void onSkip(String adType, int source, String reqId, String pid) {
Log.i(TAG, "[onSkip] " + "adType = " + adType + " source = " + source + " reqId = " + reqId + " pid = " + pid);
}
/**
* 广告结束(倒计时类广告),如开屏广告
*
* @param adType 广告类型
* @param source 广告来源
* @param reqId 请求id
* @param pid 广告位id
*/
@Override
public void onTimeOver(String adType, int source, String reqId, String pid) {
Log.i(TAG, "[onTimeOver] " + "adType = " + adType + " source = " + source + " reqId = " + reqId + " pid = " + pid);
}
/**
* 广告被关闭
*
* @param adType 广告类型
* @param source 广告来源
* @param reqId 请求id
* @param pid 广告位id
*/
@Override
public void onClose(String adType, int source, String reqId, String pid) {
Log.i(TAG, "[onClose] " + "adType = " + adType + " source = " + source + " reqId = " + reqId + " pid = " + pid);
}
/**
* 没有广告
*
* @param adType 广告类型
* @param source 广告来源
* @param reqId 请求id
* @param pid 广告位id
*/
@Override
public void onAdEmpty(String adType, int source, String reqId, String pid) {
Log.i(TAG, "[onAdEmpty] " + "adType = " + adType + " source = " + source + " reqId = " + reqId + " pid = " + pid);
}
/**
* 广告视频开始播放(feed页,ks广告视频无回调)
*
* @param adType 广告类型
* @param source 广告来源
* @param reqId 请求id
* @param pid 广告位id
*/
@Override
public void onVideoStart(String adType, int source, String reqId, String pid) {
Log.i(TAG, "[onVideoStart] " + "adType = " + adType + " source = " + source + " reqId = " + reqId + " pid = " + pid);
}
/**
* 广告视频暂停播放(feed页,ks广告视频无回调)
*
* @param adType 广告类型
* @param source 广告来源
* @param reqId 请求id
* @param pid 广告位id
*/
@Override
public void onVideoPause(String adType, int source, String reqId, String pid) {
Log.i(TAG, "[onVideoPause] " + "adType = " + adType + " source = " + source + " reqId = " + reqId + " pid = " + pid);
}
/**
* 广告视频重新播放(feed页,ks广告视频无回调)
*
* @param adType 广告类型
* @param source 广告来源
* @param reqId 请求id
* @param pid 广告位id
*/
@Override
public void onVideoResume(String adType, int source, String reqId, String pid) {
Log.i(TAG, "[onVideoResume] " + "adType = " + adType + " source = " + source + " reqId = " + reqId + " pid = " + pid);
}
/**
* 广告视频播放完成(feed页,ks广告视频无回调)
*
* @param adType 广告类型
* @param source 广告来源
* @param reqId 请求id
* @param pid 广告位id
*/
@Override
public void onVideoComplete(String adType, int source, String reqId, String pid) {
Log.i(TAG, "[onVideoComplete] " + "adType = " + adType + " source = " + source + " reqId = " + reqId + " pid = " + pid);
}
/**
* 广告视频播放异常(feed页,ks广告视频无回调)
*
* @param adType 广告类型
* @param source 广告来源
* @param reqId 请求id
* @param pid 广告位id
*/
@Override
public void onVideoError(String adType, int source, String reqId, String pid) {
Log.i(TAG, "[onVideoError] " + "adType = " + adType + " source = " + source + " reqId = " + reqId + " pid = " + pid);
}
});
2.2 短视频Feed流页面
2.2.1 Feed流页面初始化
ChannelFragment fragment = new ChannelFragment();
FragmentManager manager = getSupportFragmentManager();
manager.beginTransaction().replace(R.id.content, fragment).commitAllowingStateLoss();
如果需要刷新页面可使用:
fragment.refresh()
2.3 小视频页面
LittleVideoConfig.getInstance().setVideoLoop(true);//小视频是否循环播放
2.3.1 小视频初始化(类抖音样式)
JGLittleVideoFragment fragment = JGLittleVideoFragment.newInstance();
manager.beginTransaction().replace(R.id.content, fragment).commitAllowingStateLoss();
小视频页面的超前预加载:提高首次进入小视频界面视频加载速度,建议添加
//建议放在小视频页面展示之前调用,例如在Splash页面或MainActivity中调用
JGLittleVideoFragment.preloadVideo()
小视频常见方法:
方法名 | 方法说明 |
---|---|
onPause()、 onResume()、onHiddenChange(boolean hidden)、 setUserVisibleHint(boolean) |
如果在Fragment内嵌JGLittleVideoFragment,需要手动回调以下Fragment生命周期函数。直接在Activity里面使用则不需要。否则会造成不可见播放等异常情况。 |
2.3.2 小视频初始化(快手样式)
KSLittleVideoFragment ksVideoFragment = KSLittleVideoFragment.newInstance();
manager.beginTransaction().replace(R.id.short_content, ksVideoFragment).commitAllowingStateLoss();
2.4 视频播放回调
JGPlayerConfig.config().registerPlayerCallBack(new OnPlayerCallBack() {...})
/***注意***/
/***如果上述视频监听配置在具备生命周期的组件中,如Activity或Fragment中, ***/
/***需在组件的onDestory()中解注册监听,否则有内存泄漏的风险,解注册代码如下:***/
JGPlayerConfig.config().unRegisterPlayerCallback();
//OnPlayerCallBack 回调方法相关说明
public interface OnPlayerCallBack {
/**
* 开始播放
* @param pager 播放回调来源
JGPlayerConfig.PAGE_FEED feed流页
JGPlayerConfig.PAGE_LITTLE 小视频页
JGPlayerConfig.PAGE_DETAIL 播放详情页(JGVideoFragment)
JGPlayerConfig.PAGE_WEB feed流 H5播放页
* @param videoID 视频id
* @param taskID 本次播放任务唯一标识
*/
void onStart(String pager,String videoID, String taskID);
/**
* 暂停播放
*
* @param videoID 视频id
* @param taskID 本次播放任务唯一标识
*/
void onPause(String pager,String videoID, String taskID);
/**
* 继续播放
*
* @param videoID 视频id
* @param taskID 本次播放任务唯一标识
*/
void onResume(String pager,String videoID, String taskID);
/**
* 播放完成
*
* @param videoID 视频id
* @param taskID 本次播放任务唯一标识
*/
void onComplete(String pager,String videoID, String taskID);
/**
* 在循环播放模式下,一次播放完成
*
* @param videoID 视频id
* @param taskID 本次播放任务唯一标识
* @param num 第几次循环播放
*/
void onLoopComplete(String pager,String videoID, String taskID, int num);
/**
* 视频卡顿,开始缓冲
*
* @param videoID 视频id
* @param taskID 本次播放任务唯一标识
*/
void onStuckStart(String pager,String videoID, String taskID);
/**
* 视频卡顿,缓冲完毕,继续播放
*
* @param videoID 视频id
* @param taskID 本次播放任务唯一标识
*/
void onStuckEnd(String pager,String videoID, String taskID);
/**
* 视频播放错误
*
* @param videoID 视频id
* @param taskID 本次播放任务唯一标识
*/
void onError(String pager,String videoID, String taskID);
/**
* 视频停止
*
* @param videoID 视频id
* @param taskID 本次播放任务唯一标识
*/
void onStop(String pager,String videoID, String taskID);
}
2.5 社交模块
社区功能主要包括评论、点赞、分享等,未登录用户只能进行浏览,不能进行参与。如发表评论、删除评论等等。
2.5.1 用户登陆、退出
JGUser.getInstance().login(nick, avatar, phone, userId);
JGUser为单例使用,常用的方法如下。
方法名 | 方法说明 | 备注 |
---|---|---|
void login(String nickname, String avatar, String phone, String userId) | nickname:用户昵称。必传。 avatar:用户头像。 phone:用户手机号。必传 userId:用户id。必传 |
调用时机:在APP启动和用户登陆后 |
void logout() | 退出登录 | 调用时机:在用户主动退出登录后 |
String getToken() | 获取用户token | 在登陆后获取 |