Commit 933db8ea authored by Alex朱枝文's avatar Alex朱枝文

首页banner和小窗逻辑调整

parent c9c486f7
......@@ -33,10 +33,6 @@ class YHHomePageViewController: YHBaseViewController {
var configModel: YHHomeInfoModel? {
didSet {
homeHeaderView.kingModel = configModel?.king_kong_list ?? []
if let live_info = configModel?.live_info {
setupLiveFloating(liveInfo: live_info)
}
}
}
......@@ -74,11 +70,13 @@ class YHHomePageViewController: YHBaseViewController {
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
isTopMostAndVisible = false
YHPlayerManager.shared.handlePageChanged(isRecommendPage: false)
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
isTopMostAndVisible = true
YHPlayerManager.shared.handlePageChanged(isRecommendPage: true)
}
override func viewDidAppear(_ animated: Bool) {
......@@ -119,14 +117,14 @@ class YHHomePageViewController: YHBaseViewController {
private extension YHHomePageViewController {
private func setupLiveFloating(liveInfo: YHHomeLiveInfoModel) {
printLog("#####setupLiveFloating(liveInfo: YHHomeLiveInfoModel) ")
guard !didShowFloating else {
guard YHPlayerManager.shared.isConfigFloating != false else {
return
}
if liveInfo.status == 1 {
didShowFloating = true
let playbackInfo = YHPlayerManager.PlaybackInfo(id: liveInfo.id, token: liveInfo.token, channelId: liveInfo.rtmp_channel, uid: UInt(liveInfo.id), isLive: true, scene: .floating, playerType: .main)
YHPlayerManager.shared.enterFloating(from: nil, playbackInfo: playbackInfo)
YHPlayerManager.shared.enterFloating(from: nil, playbackInfo: playbackInfo, isConfigured: true)
} else {
YHPlayerManager.shared.exitFloating()
}
}
......@@ -415,8 +413,17 @@ extension YHHomePageViewController {
func getData() {
loadFirstData()
getHomeBannerData()
viewModel.getHomeFloatingLive { [weak self] success, error in
guard let self = self else {
return
}
if success {
if let liveInfo = self.viewModel.liveInfo {
setupLiveFloating(liveInfo: liveInfo)
}
}
}
}
// 请求订单数据
func requestOrder() {
......
......@@ -20,6 +20,7 @@ class YHHomePageViewModel : YHBaseViewModel {
var categoryArr:[YHHomeLifeCategoryModel?] = []
var detailModel: YHHomeLifeCategoryDetailModel = YHHomeLifeCategoryDetailModel()
var liveArr: [YHLiveModel] = []
var liveInfo: YHHomeLiveInfoModel?
//首页相关参数
private var curPageIndex : Int = 1
private var page_Size : Int = 50
......@@ -574,4 +575,24 @@ extension YHHomePageViewModel {
callBackBlock(false, err)
}
}
//获取首页浮动小窗
func getHomeFloatingLive(callBackBlock:@escaping (_ success: Bool,_ error:YHErrorModel?)->()) {
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.Home.homeFloatingLive
let _ = YHNetRequest.getRequest(url: strUrl) { [weak self] json, code in
//1. json字符串 转 对象
guard let self = self else { return }
guard let dic = json.data?.peel as? [String : Any], let resultModel = YHHomeLiveInfoModel.deserialize(from: dic) else {
callBackBlock(false,nil)
return
}
self.liveInfo = resultModel
callBackBlock(true,nil)
} failBlock: { err in
callBackBlock(false,err)
}
}
}
......@@ -35,6 +35,9 @@ class YHH5WebViewVC: YHBaseViewController, WKUIDelegate, WKNavigationDelegate {
webview.scrollView.contentInsetAdjustmentBehavior = .never
webview.navigationDelegate = self
webview.scrollView.delegate = self
// config.allowsInlineMediaPlayback = true
// /// 开启让自动播放
// config.mediaTypesRequiringUserActionForPlayback = []
webview.setDebugMode(false)
return webview
......
......@@ -54,6 +54,7 @@ class YHBasePlayerViewController: YHBaseViewController {
gk_navBarAlpha = 0
gk_navigationBar.isHidden = true
view.backgroundColor = .black
UIApplication.shared.isIdleTimerDisabled = true
}
override func viewWillDisappear(_ animated: Bool) {
......@@ -63,6 +64,7 @@ class YHBasePlayerViewController: YHBaseViewController {
view.backgroundColor = .black
controlsAutoHideTimer?.invalidate()
controlsAutoHideTimer = nil
UIApplication.shared.isIdleTimerDisabled = false
}
deinit {
......
......@@ -54,6 +54,7 @@ class YHLivePlayerViewController: YHBasePlayerViewController {
}
vc.closeEvent = { [weak self] in
self?.leaveLiveRoom()
self?.closeLive()
}
......@@ -135,6 +136,7 @@ class YHLivePlayerViewController: YHBasePlayerViewController {
}
topBarView.zoomButtonClickEvent = { [weak self] in
self?.leaveLiveRoom()
self?.enterFloating()
}
......@@ -206,7 +208,7 @@ class YHLivePlayerViewController: YHBasePlayerViewController {
messageListView.anchorName = liveDetail.hxNickname
if needJoinLiveChannel {
if !liveDetail.rtmp_channel.isEmpty, !liveDetail.token.isEmpty, let uid = playbackInfo?.uid, let player = player {
YHPlayerManager.shared.joinChannel(for: player, token: liveDetail.token, channelId: liveDetail.rtmp_channel, uid: uid, view: playerView)
YHPlayerManager.shared.joinChannel(for: player, token: liveDetail.token, channelId: liveDetail.rtmp_channel, uid: uid, view: playerView, defaultMuted: false)
} else if currentPlayingURL == nil, !liveDetail.pullUrl.isEmpty {
play(url: liveDetail.pullUrl) // 如果没有预设URL,使用接口返回的URL播放
}
......@@ -338,7 +340,7 @@ class YHLivePlayerViewController: YHBasePlayerViewController {
guard let liveModel = viewModel.liveDetailModel else {
return
}
YHShareAlertView.show(image: liveModel.live_image, title: "@" + liveModel.account, subMessage: liveModel.live_title, linkUrl: liveModel.live_h5_url, isLive: true)
YHShareAlertView.show(image: liveModel.live_image, title: "@" + liveModel.account, subMessage: liveModel.live_title, linkUrl: liveModel.live_h5_url, isLive: true, fromAiSale: true)
}
private func showGoods() {
......
......@@ -110,7 +110,7 @@ class YHVODPlayerViewController: YHBasePlayerViewController {
guard let recordedDetailModel = viewModel.recordedDetailModel else {
return
}
YHShareAlertView.show(image: recordedDetailModel.recorded_image, title: "@" + recordedDetailModel.account, subMessage: recordedDetailModel.recorded_title, linkUrl: recordedDetailModel.recorded_h5_url, isLive: false)
YHShareAlertView.show(image: recordedDetailModel.recorded_image, title: "@" + recordedDetailModel.account, subMessage: recordedDetailModel.recorded_title, linkUrl: recordedDetailModel.recorded_h5_url, isLive: false, fromAiSale: true)
}
// MARK: - Data Loading
......
......@@ -21,7 +21,14 @@ protocol YHFloatingWindowDelegate: AnyObject {
class YHFloatingWindow: NSObject {
// MARK: - Properties
enum Source {
case configured // 配置产生的小窗(只在推荐页显示)
case userAction // 用户操作产生的小窗(全局显示)
}
weak var player: YHPlayer?
var source: Source = .userAction
weak var delegate: YHFloatingWindowDelegate?
var playbackInfo: YHPlayerManager.PlaybackInfo?
......@@ -63,6 +70,20 @@ class YHFloatingWindow: NSObject {
private var initialDistance: CGFloat = 0
private let scaleMultiplier: CGFloat = 1.5
var isHidden: Bool = false {
didSet {
if isHidden {
player?.isMuted = true
} else {
if source == .configured {
player?.isMuted = true
} else {
player?.isMuted = false
}
}
}
}
// UI组件
private lazy var closeButton: UIButton = {
let button = UIButton(type: .custom)
......
......@@ -11,6 +11,7 @@ import AttributedString
import Photos
class YHShareAlertView: UIView {
var fromAiSale: Bool = false
var centerView: UIView!
var leftButton: YHShareButton!
var centerButton: YHShareButton!
......@@ -266,13 +267,14 @@ class YHShareAlertView: UIView {
dismiss()
}
static func show(image: String = "", title: String = "", subMessage: String = "", linkUrl: String = "", isLive: Bool = false) {
static func show(image: String = "", title: String = "", subMessage: String = "", linkUrl: String = "", isLive: Bool = false, fromAiSale: Bool = false) {
let view = YHShareAlertView(frame: CGRect(x: 0, y: 0, width: KScreenWidth, height: KScreenHeight))
view.image = image
view.title = title
view.subMessage = subMessage
view.linkUrl = linkUrl
view.isLive = isLive
view.fromAiSale = fromAiSale
let window = UIApplication.shared.yhKeyWindow()
window?.addSubview(view)
}
......@@ -293,8 +295,12 @@ class YHShareAlertView: UIView {
}
@objc func wxClick() {
if fromAiSale {
YHShareManager.shared.sendLinkContent(subMessage, "", mainImageView.image ?? UIImage(), link: linkUrl)
} else {
YHShareManager.shared.sendLinkContent(title, subMessage, mainImageView.image ?? UIImage(), link: linkUrl)
}
}
func saveImageToPhotosAlbum(image: UIImage) {
// 确保应用有权访问相册
......
......@@ -84,6 +84,9 @@ class YHAllApiName {
//获取签约用户信息
static let signerInfoApi = "super-app/infoflow/signer/info"
// 获取首页小窗
static let homeFloatingLive = "super-app/live/app-live-latest"
}
//接口 模块名 Common
......
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