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

首页banner和小窗逻辑调整

parent c9c486f7
...@@ -33,10 +33,6 @@ class YHHomePageViewController: YHBaseViewController { ...@@ -33,10 +33,6 @@ class YHHomePageViewController: YHBaseViewController {
var configModel: YHHomeInfoModel? { var configModel: YHHomeInfoModel? {
didSet { didSet {
homeHeaderView.kingModel = configModel?.king_kong_list ?? [] homeHeaderView.kingModel = configModel?.king_kong_list ?? []
if let live_info = configModel?.live_info {
setupLiveFloating(liveInfo: live_info)
}
} }
} }
...@@ -74,11 +70,13 @@ class YHHomePageViewController: YHBaseViewController { ...@@ -74,11 +70,13 @@ class YHHomePageViewController: YHBaseViewController {
override func viewWillDisappear(_ animated: Bool) { override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated) super.viewWillDisappear(animated)
isTopMostAndVisible = false isTopMostAndVisible = false
YHPlayerManager.shared.handlePageChanged(isRecommendPage: false)
} }
override func viewWillAppear(_ animated: Bool) { override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated) super.viewWillAppear(animated)
isTopMostAndVisible = true isTopMostAndVisible = true
YHPlayerManager.shared.handlePageChanged(isRecommendPage: true)
} }
override func viewDidAppear(_ animated: Bool) { override func viewDidAppear(_ animated: Bool) {
...@@ -119,14 +117,14 @@ class YHHomePageViewController: YHBaseViewController { ...@@ -119,14 +117,14 @@ class YHHomePageViewController: YHBaseViewController {
private extension YHHomePageViewController { private extension YHHomePageViewController {
private func setupLiveFloating(liveInfo: YHHomeLiveInfoModel) { private func setupLiveFloating(liveInfo: YHHomeLiveInfoModel) {
printLog("#####setupLiveFloating(liveInfo: YHHomeLiveInfoModel) ") printLog("#####setupLiveFloating(liveInfo: YHHomeLiveInfoModel) ")
guard !didShowFloating else { guard YHPlayerManager.shared.isConfigFloating != false else {
return return
} }
if liveInfo.status == 1 { 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) 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,9 +413,18 @@ extension YHHomePageViewController { ...@@ -415,9 +413,18 @@ extension YHHomePageViewController {
func getData() { func getData() {
loadFirstData() loadFirstData()
getHomeBannerData() 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() { func requestOrder() {
if YHLoginManager.shared.isLogin() == false { if YHLoginManager.shared.isLogin() == false {
......
...@@ -20,6 +20,7 @@ class YHHomePageViewModel : YHBaseViewModel { ...@@ -20,6 +20,7 @@ class YHHomePageViewModel : YHBaseViewModel {
var categoryArr:[YHHomeLifeCategoryModel?] = [] var categoryArr:[YHHomeLifeCategoryModel?] = []
var detailModel: YHHomeLifeCategoryDetailModel = YHHomeLifeCategoryDetailModel() var detailModel: YHHomeLifeCategoryDetailModel = YHHomeLifeCategoryDetailModel()
var liveArr: [YHLiveModel] = [] var liveArr: [YHLiveModel] = []
var liveInfo: YHHomeLiveInfoModel?
//首页相关参数 //首页相关参数
private var curPageIndex : Int = 1 private var curPageIndex : Int = 1
private var page_Size : Int = 50 private var page_Size : Int = 50
...@@ -574,4 +575,24 @@ extension YHHomePageViewModel { ...@@ -574,4 +575,24 @@ extension YHHomePageViewModel {
callBackBlock(false, err) 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 { ...@@ -35,6 +35,9 @@ class YHH5WebViewVC: YHBaseViewController, WKUIDelegate, WKNavigationDelegate {
webview.scrollView.contentInsetAdjustmentBehavior = .never webview.scrollView.contentInsetAdjustmentBehavior = .never
webview.navigationDelegate = self webview.navigationDelegate = self
webview.scrollView.delegate = self webview.scrollView.delegate = self
// config.allowsInlineMediaPlayback = true
// /// 开启让自动播放
// config.mediaTypesRequiringUserActionForPlayback = []
webview.setDebugMode(false) webview.setDebugMode(false)
return webview return webview
......
...@@ -54,6 +54,7 @@ class YHBasePlayerViewController: YHBaseViewController { ...@@ -54,6 +54,7 @@ class YHBasePlayerViewController: YHBaseViewController {
gk_navBarAlpha = 0 gk_navBarAlpha = 0
gk_navigationBar.isHidden = true gk_navigationBar.isHidden = true
view.backgroundColor = .black view.backgroundColor = .black
UIApplication.shared.isIdleTimerDisabled = true
} }
override func viewWillDisappear(_ animated: Bool) { override func viewWillDisappear(_ animated: Bool) {
...@@ -63,6 +64,7 @@ class YHBasePlayerViewController: YHBaseViewController { ...@@ -63,6 +64,7 @@ class YHBasePlayerViewController: YHBaseViewController {
view.backgroundColor = .black view.backgroundColor = .black
controlsAutoHideTimer?.invalidate() controlsAutoHideTimer?.invalidate()
controlsAutoHideTimer = nil controlsAutoHideTimer = nil
UIApplication.shared.isIdleTimerDisabled = false
} }
deinit { deinit {
......
...@@ -54,6 +54,7 @@ class YHLivePlayerViewController: YHBasePlayerViewController { ...@@ -54,6 +54,7 @@ class YHLivePlayerViewController: YHBasePlayerViewController {
} }
vc.closeEvent = { [weak self] in vc.closeEvent = { [weak self] in
self?.leaveLiveRoom()
self?.closeLive() self?.closeLive()
} }
...@@ -135,6 +136,7 @@ class YHLivePlayerViewController: YHBasePlayerViewController { ...@@ -135,6 +136,7 @@ class YHLivePlayerViewController: YHBasePlayerViewController {
} }
topBarView.zoomButtonClickEvent = { [weak self] in topBarView.zoomButtonClickEvent = { [weak self] in
self?.leaveLiveRoom()
self?.enterFloating() self?.enterFloating()
} }
...@@ -206,7 +208,7 @@ class YHLivePlayerViewController: YHBasePlayerViewController { ...@@ -206,7 +208,7 @@ class YHLivePlayerViewController: YHBasePlayerViewController {
messageListView.anchorName = liveDetail.hxNickname messageListView.anchorName = liveDetail.hxNickname
if needJoinLiveChannel { if needJoinLiveChannel {
if !liveDetail.rtmp_channel.isEmpty, !liveDetail.token.isEmpty, let uid = playbackInfo?.uid, let player = player { 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 { } else if currentPlayingURL == nil, !liveDetail.pullUrl.isEmpty {
play(url: liveDetail.pullUrl) // 如果没有预设URL,使用接口返回的URL播放 play(url: liveDetail.pullUrl) // 如果没有预设URL,使用接口返回的URL播放
} }
...@@ -338,7 +340,7 @@ class YHLivePlayerViewController: YHBasePlayerViewController { ...@@ -338,7 +340,7 @@ class YHLivePlayerViewController: YHBasePlayerViewController {
guard let liveModel = viewModel.liveDetailModel else { guard let liveModel = viewModel.liveDetailModel else {
return 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() { private func showGoods() {
......
...@@ -110,7 +110,7 @@ class YHVODPlayerViewController: YHBasePlayerViewController { ...@@ -110,7 +110,7 @@ class YHVODPlayerViewController: YHBasePlayerViewController {
guard let recordedDetailModel = viewModel.recordedDetailModel else { guard let recordedDetailModel = viewModel.recordedDetailModel else {
return 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 // MARK: - Data Loading
......
...@@ -20,8 +20,15 @@ protocol YHFloatingWindowDelegate: AnyObject { ...@@ -20,8 +20,15 @@ protocol YHFloatingWindowDelegate: AnyObject {
class YHFloatingWindow: NSObject { class YHFloatingWindow: NSObject {
// MARK: - Properties // MARK: - Properties
enum Source {
case configured // 配置产生的小窗(只在推荐页显示)
case userAction // 用户操作产生的小窗(全局显示)
}
weak var player: YHPlayer? weak var player: YHPlayer?
var source: Source = .userAction
weak var delegate: YHFloatingWindowDelegate? weak var delegate: YHFloatingWindowDelegate?
var playbackInfo: YHPlayerManager.PlaybackInfo? var playbackInfo: YHPlayerManager.PlaybackInfo?
...@@ -62,6 +69,20 @@ class YHFloatingWindow: NSObject { ...@@ -62,6 +69,20 @@ class YHFloatingWindow: NSObject {
private var currentScale: CGFloat = 1.0 private var currentScale: CGFloat = 1.0
private var initialDistance: CGFloat = 0 private var initialDistance: CGFloat = 0
private let scaleMultiplier: CGFloat = 1.5 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组件 // UI组件
private lazy var closeButton: UIButton = { private lazy var closeButton: UIButton = {
......
...@@ -11,6 +11,7 @@ import AttributedString ...@@ -11,6 +11,7 @@ import AttributedString
import Photos import Photos
class YHShareAlertView: UIView { class YHShareAlertView: UIView {
var fromAiSale: Bool = false
var centerView: UIView! var centerView: UIView!
var leftButton: YHShareButton! var leftButton: YHShareButton!
var centerButton: YHShareButton! var centerButton: YHShareButton!
...@@ -266,13 +267,14 @@ class YHShareAlertView: UIView { ...@@ -266,13 +267,14 @@ class YHShareAlertView: UIView {
dismiss() 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)) let view = YHShareAlertView(frame: CGRect(x: 0, y: 0, width: KScreenWidth, height: KScreenHeight))
view.image = image view.image = image
view.title = title view.title = title
view.subMessage = subMessage view.subMessage = subMessage
view.linkUrl = linkUrl view.linkUrl = linkUrl
view.isLive = isLive view.isLive = isLive
view.fromAiSale = fromAiSale
let window = UIApplication.shared.yhKeyWindow() let window = UIApplication.shared.yhKeyWindow()
window?.addSubview(view) window?.addSubview(view)
} }
...@@ -293,7 +295,11 @@ class YHShareAlertView: UIView { ...@@ -293,7 +295,11 @@ class YHShareAlertView: UIView {
} }
@objc func wxClick() { @objc func wxClick() {
YHShareManager.shared.sendLinkContent(title, subMessage, mainImageView.image ?? UIImage(), link: linkUrl) 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) { func saveImageToPhotosAlbum(image: UIImage) {
......
...@@ -84,6 +84,9 @@ class YHAllApiName { ...@@ -84,6 +84,9 @@ class YHAllApiName {
//获取签约用户信息 //获取签约用户信息
static let signerInfoApi = "super-app/infoflow/signer/info" static let signerInfoApi = "super-app/infoflow/signer/info"
// 获取首页小窗
static let homeFloatingLive = "super-app/live/app-live-latest"
} }
//接口 模块名 Common //接口 模块名 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