礼物面板

组件概述

礼物面板组件会展示我们默认内置的礼物,点击这些礼物就可以将这些礼物发送到直播间中,直播间中的主播和用户可以通过礼物播放器组件播放这些礼物。
效果展示:


组件接入

Android
iOS
Flutter
1. 在您项目中的 src/main/java 目录下创建包名为 com.trtc.uikit.livekit 的目录,并将 github 上 livekit 目录下的 common 目录 和 component/gift 目录 拷贝到你创建的 com.trtc.uikit.livekit 目录下。
2. 将 github上 main 目录下的 res-common 和 res-gift 目录 拷贝到您自己工程中的 src/main 目录下。
3. 在您的 build.gradle.kts 或者 build.gradle 文件的 android 节点中添加如下配置:
build.gradle.kts
build.gradle
sourceSets.getByName("main") {
res.setSrcDirs(
listOf(
"src/main/res", "src/main/res-common", "src/main/res-gift"
)
)
}
sourceSets {
main {
res.srcDirs = [
'src/main/res',
'src/main/res-common',
'src/main/res-gift',
]
}
}
4. 使用 Android Studio 的全局字符串替换 功能,将 import com.trtc.uikit.livekit.R; 全局替换为 您项目自己的 R文件,示例如下:

使用 CocoaPods 导入组件,导入组件具体骤如下:
1. 您需要在 GitHub 上下载GiftCommon文件夹到本地。

2. 请在您的 Podfile 文件中添加 pod 'TUIGift'pod 'TUILiveResources'依赖。
Swift
target 'xxxx' do
...
...
pod 'TUILiveResources', :path => '../Component/Common/TUILiveResources.podspec'
//路径是您的Podfile文件与TUILiveResources.Podspec文件之间的相对路径
pod 'TUIGift', :path => '../Component/Gift/TUIGift.podspec'
//路径是您的Podfile文件与TUIGift.Podspec文件之间的相对路径
end
如果您没有Podfile 文件,首先终端cdxxxx.xcodeproj目录,然后通过以下命令创建:
pod init
3. 在终端中,首先cdPodfile目录下,然后执行以下命令,安装组件。
pod install
4. 您在接入和使用过程中遇到的任何问题,欢迎给我们 反馈
1. 在项目工程的 pubspec.yaml 文件的 dependencies 节点中,添加 gift 的依赖。
dependencies:
flutter:
sdk: flutter
flutter_localizations:
sdk: flutter
intl: ^0.19.0
# 添加 gift 依赖
live_uikit_gift: ^1.0.0
2. 执行 fluter pub get 命令
3. 配置多语言支持,在您应用 MaterialApplocalizationsDelegatessupportedLocales 属性上添加 gift 组件的多语言支持。
MaterialApp(localizationsDelegates: const [
...GiftLocalizations.localizationsDelegates,
], supportedLocales: const [
...GiftLocalizations.supportedLocales,
],
// ...
);

组件使用

说明:
由于礼物组件需要直播间信息参数,所以需要在观众进入直播间或者主播创建直播间后,再加载礼物组件。

接入礼物面板组件

Android
iOS
Flutter
创建 GiftListPanelView 对象,并将其添加到您的视图上,同时还需要实现 GiftListPanelViewOnSendGiftListener 中的 onSendGift 回调 ,获取礼物个数和礼物信息,在预处理完后可调用 GiftListPanelView sendGift 函数用于礼物的实际发送。
GiftListPanelView giftListPanelView = new GiftListPanelView(getContext());

giftListPanelView.init("roomId");
giftListPanelView.setListener(new GiftListPanelView.OnSendGiftListener() {
@Override
public void onSendGift(GiftListPanelView view, Gift gift, int giftCount) {
}
});

giftListPanelView.sendGift(new Gift(), 1, new GiftUser());
创建 GiftListView 对象,并将其添加到您的视图上,同时还需要实现GiftListViewDelegate中的 onSendGift 回调方法。
当您点击GiftListView 面板上的发送按钮时,您会收到该回调方式,您可在该方法中获取准备发送的礼物个数和礼物信息,在预处理完后可调用 GiftListView sendGift 函数用于礼物的实际发送。
import TUIGift

private let giftList: [TUIGift] = [] //...将此处替换为您的礼物列表

lazy var giftListView: GiftListView = {
let view = GiftListView(roomId: roomId, delegate: self)
view.setGiftList(giftList)
return view
}()

// ...此处将giftListView添加到您的父视图上并调整布局

func onSendGift(gift model: TUIGift, giftCount: Int) {
//...此处为预处理,如校验当前用户的余额等操作
let receiver = TUIGiftUser()
//...此处设置礼物接受者信息
let completion: TUIGiftIMSendBlock = { code, message in
//...此处为sendGift的post callback回调,您可添加您的后处理逻辑,如弹toast等
}

giftListView.sendGift(model: model, giftCount: giftCount, receiver: receiver, completion: completion)
}
说明:
在您成功进入房间之后,您才可成功调用 sendGift 函数。
在您需要接入发送礼物消息的地方构建 GiftSendControllerGiftSendWidget 对象,并将构建的 GiftSendWidget 对象添加到您的 Widget 树上。示例代码如下:
GiftSendController _giftSendController = GiftSendController(
roomId: "romId", /// roomId 替换为您的直播间ID
owner: ownerInfo, /// ownerInfo 替换为您的直播间主播信息
self: selfInfo, /// selfInfo 替换为您的登录用户信息
);

GiftSendWidget(controller: _giftSendController);

自定义礼物面板

Android
iOS
Flutter
如果您需要修改礼物面板的礼物列表:
GiftListPanelView giftListPanelView = new GiftListPanelView(getContext());
giftListPanelView.setGiftList(giftList);
如果您需要修改礼物面板的礼物列表,可调用 GiftListViewsetGiftList 方法实现:
import TUIGift

private let giftList: [TUIGift] = [] //...将此处替换为您的礼物列表

lazy var giftListView: GiftListView = {
let view = GiftListView(roomId: roomId, delegate: self)
view.setGiftList(giftList)
return view
}()
说明:
礼物的animationUrl 要求是一个SVGA动画。
如果您需要修改礼物面板的礼物列表,您可以调用 GiftSendControllersetGiftList 方法,示例如下:
List<GiftModel> giftList = [ /// 自定义您的礼物列表数据源
GiftModel(giftId: "1", giftName: "鸡蛋", imageUrl: "giftImageUrl", price: 10),
GiftModel(giftId: "2", giftName: "星星", imageUrl: "giftImageUrl", price: 10),
];

_giftSendController.setGiftList(giftList);