-
Notifications
You must be signed in to change notification settings - Fork 16
3_6 直播_高级功能
HWilliamGo edited this page May 6, 2020
·
1 revision
IPolyvPointRewardDataSource pointRewardRepository = new PLVPointRewardDataSource();
使用接口IPolyvPointRewardDataSource
进行积分打赏数据的请求和发送。
public interface IPolyvPointRewardDataSource {
/**
* 获取对应频道的积分打赏设置
*
* @param channelId 频道
*/
void getPointRewardSetting(String channelId, IPointRewardListener<PolyvPointRewardSettingVO> listener);
/**
* 用指定的商品进行积分打赏
*
* @param channelId 频道i
* @param goodId 指定商品的id
* @param goodNum 打赏的数量
* @param viewerId 观众id
* @param nickName 观众昵称
* @param avatar 观众头像
*/
void makeReward(String channelId, int goodId, int goodNum, String viewerId, String nickName, String avatar, IPointRewardListener<Integer> listener);
/**
* 获取指定观众的剩余的积分数量
*
* @param viewerID 观众id
* @param nickName 观众昵称
*/
void getRemainingRewardPoint(String channelId, String viewerID, String nickName, IPointRewardListener<Integer> listener);
void destroy();
interface IPointRewardListener<T> {
void onSuccess(T t);
void onFailed(Throwable throwable);
}
}
请参考PolyvChatGroupFragment
类中的
private void acceptEventMessasge(){
//...
//道具打赏
case PolyvChatManager.EVENT_REWARD:
PLVRewardEvent rewardEvent = PolyvEventHelper.getEventObject(PLVRewardEvent.class, message, event);
if (rewardEvent == null) {
break;
}
if (pointRewardEventProducer != null) {
if (ScreenUtils.isPortrait()) {
//横屏不处理积分打赏事件
pointRewardEventProducer.addEvent(rewardEvent);
}
}
if (rewardEvent.getContent() != null) {
String goodImage = rewardEvent.getContent().getGimg();
String nickName = rewardEvent.getContent().getUnick();
int goodNum=rewardEvent.getContent().getGoodNum();
Spannable rewardSpan = generateRewardSpan(nickName, goodImage,goodNum);
if (rewardSpan != null) {
rewardEvent.setObjects(rewardSpan);
eventType = PolyvChatListAdapter.ChatTypeItem.TYPE_TIPS;
eventObject = rewardEvent;
}
}
break;
//...
}
积分打赏的UI和动效位于包:com.easefun.polyv.cloudclassdemo.watch.chat.point_reward
中。
其中类IPolyvPointRewardEventProducer
作为积分打赏事件的队列来维护积分打赏特效。