Commit 56c5346c authored by Alex朱枝文's avatar Alex朱枝文

直播间im简单处理

parent 6431d16c
......@@ -6,6 +6,7 @@
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import HyphenateChat
import AgoraRtcKit
import UIKit
......@@ -61,6 +62,48 @@ class YHLivePlayerViewController: YHBasePlayerViewController {
override func viewDidLoad() {
super.viewDidLoad()
setupUI()
setupData()
setupNoti()
}
deinit {
//
}
/// 是否可以返回,包括点击返回和手势返回,默认YES
override func navigationShouldPop() -> Bool {
quitChatRoom()
navigationController?.popViewController(animated: true)
return false
}
// MARK: - Setup
private func setupUI() {
containerView.addSubview(bottomInputBar)
containerView.addSubview(messageListView)
bottomInputBar.snp.makeConstraints { make in
make.left.right.bottom.equalToSuperview()
make.top.equalTo(view.safeAreaLayoutGuide.snp.bottom).offset(-YHInputBottomBar.inputActionHeight)
}
messageListView.snp.makeConstraints { make in
make.left.equalToSuperview().offset(16)
make.bottom.equalTo(bottomInputBar.snp.top).offset(-14)
make.height.width.equalTo(listMaxWidth)
}
topBarView.closeButtonClickEvent = { [weak self] in
guard let self = self else {
return
}
self.quitChatRoom()
self.navigationController?.popViewController(animated: true)
}
}
private func setupData() {
requestData(id: liveId) { [weak self] liveDetail, error in
guard let self = self else {
return
......@@ -74,24 +117,37 @@ class YHLivePlayerViewController: YHBasePlayerViewController {
}
self.topBarView.setupTopBarView(headUrl: liveDetail.avatar, nickname: liveDetail.hxNickname, count: liveDetail.access_num)
self.play(with: liveDetail.pullUrl)
YHIMHelper.shared.joinChatRoom(roomID: liveDetail.roomId, leaveOtherRooms: true) { [weak self] error in
guard let self = self else {
return
}
if let error = error {
printLog("joinChatRoom: \(error)")
} else {
printLog("joinChatRoom: success")
YHIMHelper.shared.fetchHistoryMessage(roomID: liveDetail.roomId) { list, error in
//
}
}
}
}
}
// MARK: - Setup
private func setupNoti() {
NotificationCenter.default.addObserver(self, selector: #selector(didChatManagerReceiveMessages(_:)), name: YHIMHelper.didChatManagerReceiveMessages, object: nil)
}
private func setupUI() {
containerView.addSubview(bottomInputBar)
containerView.addSubview(messageListView)
bottomInputBar.snp.makeConstraints { make in
make.left.right.bottom.equalToSuperview()
make.top.equalTo(view.safeAreaLayoutGuide.snp.bottom).offset(-YHInputBottomBar.inputActionHeight)
private func quitChatRoom() {
guard let roomId = self.viewModel.liveDetailModel?.roomId else {
return
}
messageListView.snp.makeConstraints { make in
make.left.equalToSuperview().offset(16)
make.bottom.equalTo(bottomInputBar.snp.top).offset(-14)
make.height.width.equalTo(listMaxWidth)
YHIMHelper.shared.quitChatRoom(roomID: roomId) { error in
if let error = error {
printLog("quitChatRoom: \(error)")
} else {
printLog("quitChatRoom: success")
}
}
}
......@@ -106,6 +162,13 @@ class YHLivePlayerViewController: YHBasePlayerViewController {
showAlert(message: "播放失败,错误码:\(result)")
}
}
@objc private func didChatManagerReceiveMessages(_ note: Notification) {
guard let messages = note.object as? [EMChatMessage], let message = messages.first, message.conversationId == viewModel.liveDetailModel?.roomId else {
return
}
printLog("")
}
}
extension YHLivePlayerViewController {
......
......@@ -24,6 +24,10 @@ class YHIMHelper: NSObject {
}
return false
}
var currentNickname: String {
return viewModel.huanXinUserInfoModel?.nickname ?? ""
}
static let shared: YHIMHelper = {
let helper = YHIMHelper()
......@@ -93,17 +97,6 @@ class YHIMHelper: NSObject {
}
}
func getToken() {
guard let userId = YHLoginManager.shared.userModel?.id, userId.count > 0 else {
return
}
viewModel.getHuanXinToken { tokenModel, _ in
guard let tokenModel = tokenModel else {
return
}
}
}
@objc private func loginSuccess() {
registerAndLoginCurrentUser { _ in
//
......@@ -208,8 +201,9 @@ extension YHIMHelper {
}
/// 加入聊天室
func joinChatRoom(roomID: String, nickname: String, leaveOtherRooms: Bool, completion: @escaping (EMError?) -> Void) {
EMClient.shared().roomManager?.joinChatroom(roomID, ext: "fromNickName=\(nickname)", leaveOtherRooms: leaveOtherRooms, completion: { _, err in
func joinChatRoom(roomID: String, leaveOtherRooms: Bool, completion: @escaping (EMError?) -> Void) {
printLog("joinChatRoom: \(currentNickname)")
EMClient.shared().roomManager?.joinChatroom(roomID, ext: "fromNickName=\(currentNickname)", leaveOtherRooms: leaveOtherRooms, completion: { _, err in
DispatchQueue.main.async {
if let err = err {
printLog(err.errorDescription)
......
......@@ -98,7 +98,7 @@ class YHMyViewController: YHBaseViewController, ConstraintRelatableTarget {
[weak self] in
guard let self = self else { return }
if !checkLogin() { return }
let vc = YHMySettingViewController()
let vc = YHMySettingViewController()//let vc = YHLivePlayerViewController(id: 2)
self.navigationController?.pushViewController(vc)
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment