Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
galaxy-iOS
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
mobile-group
galaxy-iOS
Commits
933db8ea
Commit
933db8ea
authored
Dec 09, 2024
by
Alex朱枝文
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
首页banner和小窗逻辑调整
parent
c9c486f7
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
280 additions
and
35 deletions
+280
-35
YHHomePageViewController.swift
...Classes/Modules/Home(首页)/C/YHHomePageViewController.swift
+16
-9
YHHomePageViewModel.swift
...axy/Classes/Modules/Home(首页)/VM/YHHomePageViewModel.swift
+21
-0
YHH5WebViewVC.swift
.../Classes/Modules/InteractionH5(与H5交互)/YHH5WebViewVC.swift
+3
-0
YHBasePlayerViewController.swift
.../LivestreamSales(直播销售)/C/YHBasePlayerViewController.swift
+2
-0
YHLivePlayerViewController.swift
.../LivestreamSales(直播销售)/C/YHLivePlayerViewController.swift
+4
-2
YHPlayerManager.swift
...ses/Modules/LivestreamSales(直播销售)/C/YHPlayerManager.swift
+201
-21
YHVODPlayerViewController.swift
...s/LivestreamSales(直播销售)/C/YHVODPlayerViewController.swift
+1
-1
YHFloatingWindow.swift
...es/Modules/LivestreamSales(直播销售)/V/YHFloatingWindow.swift
+21
-0
YHShareAlertView.swift
...es/Modules/LivestreamSales(直播销售)/V/YHShareAlertView.swift
+8
-2
YHAllApiName.swift
galaxy/galaxy/Classes/Tools/NetWork/YHAllApiName.swift
+3
-0
No files found.
galaxy/galaxy/Classes/Modules/Home(首页)/C/YHHomePageViewController.swift
View file @
933db8ea
...
...
@@ -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,9 +413,18 @@ 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
()
{
if
YHLoginManager
.
shared
.
isLogin
()
==
false
{
...
...
galaxy/galaxy/Classes/Modules/Home(首页)/VM/YHHomePageViewModel.swift
View file @
933db8ea
...
...
@@ -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
)
}
}
}
galaxy/galaxy/Classes/Modules/InteractionH5(与H5交互)/YHH5WebViewVC.swift
View file @
933db8ea
...
...
@@ -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
...
...
galaxy/galaxy/Classes/Modules/LivestreamSales(直播销售)/C/YHBasePlayerViewController.swift
View file @
933db8ea
...
...
@@ -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
{
...
...
galaxy/galaxy/Classes/Modules/LivestreamSales(直播销售)/C/YHLivePlayerViewController.swift
View file @
933db8ea
...
...
@@ -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
()
{
...
...
galaxy/galaxy/Classes/Modules/LivestreamSales(直播销售)/C/YHPlayerManager.swift
View file @
933db8ea
...
...
@@ -72,6 +72,10 @@ class YHPlayerManager: NSObject {
private
var
activePlayers
:
[
YHPlayerType
:
YHPlayer
]
=
[:]
private
var
currentPlaybackInfo
:
[
YHPlayerType
:
PlaybackInfo
]
=
[:]
private
var
floatingWindow
:
YHFloatingWindow
?
private(set)
var
isInRecommendPage
:
Bool
=
false
private(set)
var
isConfigFloating
:
Bool
?
=
nil
private
var
bannerAutoPlayEnabled
:
Bool
=
true
private
var
bannerPlayerView
:
UIView
?
private
var
transitionSourceView
:
UIView
?
...
...
@@ -213,7 +217,7 @@ class YHPlayerManager: NSObject {
func
joinChannel
(
for
player
:
YHPlayer
,
token
:
String
,
channelId
:
String
,
uid
:
UInt
,
view
:
UIView
?
)
{
uid
:
UInt
,
view
:
UIView
?,
defaultMuted
:
Bool
=
false
)
{
let
option
=
AgoraRtcChannelMediaOptions
()
option
.
publishCameraTrack
=
false
option
.
publishMicrophoneTrack
=
false
...
...
@@ -227,6 +231,11 @@ class YHPlayerManager: NSObject {
connection
.
localUid
=
uid
secondaryChannelDelegate
?
.
channelId
=
channelId
if
defaultMuted
{
agoraKit
.
disableAudio
()
}
else
{
agoraKit
.
enableAudio
()
}
let
result
=
agoraKit
.
joinChannelEx
(
byToken
:
token
,
connection
:
connection
,
delegate
:
secondaryChannelDelegate
,
...
...
@@ -236,6 +245,11 @@ class YHPlayerManager: NSObject {
}
}
else
{
mainChannelDelegate
?
.
channelId
=
channelId
if
defaultMuted
{
agoraKit
.
disableAudio
()
}
else
{
agoraKit
.
enableAudio
()
}
let
result
=
agoraKit
.
joinChannel
(
byToken
:
token
,
channelId
:
channelId
,
uid
:
uid
,
...
...
@@ -282,7 +296,11 @@ class YHPlayerManager: NSObject {
if
playbackInfo
.
scene
==
.
banner
,
let
bannerPlayer
=
activePlayers
[
.
secondary
]
{
startPosition
=
bannerPlayer
.
getPosition
()
bannerPlayer
.
stop
()
if
playbackInfo
.
isLive
{
leaveChannel
(
for
:
bannerPlayer
)
}
else
{
bannerPlayer
.
pause
()
}
}
let
playerVC
=
YHVODPlayerViewController
(
id
:
playbackInfo
.
id
,
url
:
playbackInfo
.
url
,
title
:
playbackInfo
.
title
)
...
...
@@ -323,9 +341,14 @@ class YHPlayerManager: NSObject {
updatedInfo
.
scene
=
.
fullscreen
updatedInfo
.
playerType
=
playerType
// 如果是从banner跳转,释放副播放器
if
playbackInfo
.
scene
==
.
banner
{
activePlayers
[
.
secondary
]?
.
pause
()
// 如果是从banner跳转,需要转移播放进度
if
playbackInfo
.
scene
==
.
banner
,
let
bannerPlayer
=
activePlayers
[
.
secondary
]
{
if
playbackInfo
.
isLive
{
leaveChannel
(
for
:
bannerPlayer
)
}
else
{
bannerPlayer
.
pause
()
}
}
let
playerVC
=
YHLivePlayerViewController
(
id
:
playbackInfo
.
id
,
...
...
@@ -375,7 +398,10 @@ class YHPlayerManager: NSObject {
}
}
func
enterFloating
(
from
viewController
:
UIViewController
?
=
nil
,
playbackInfo
:
PlaybackInfo
)
{
func
enterFloating
(
from
viewController
:
UIViewController
?
=
nil
,
playbackInfo
:
PlaybackInfo
,
isConfigured
:
Bool
=
false
)
{
if
isConfigured
{
self
.
isConfigFloating
=
isConfigured
}
guard
let
window
=
UIApplication
.
shared
.
yhKeyWindow
()
else
{
return
}
guard
floatingWindow
==
nil
else
{
return
...
...
@@ -383,7 +409,11 @@ class YHPlayerManager: NSObject {
let
isCurrentFromLive
=
viewController
is
YHLivePlayerViewController
let
isCurrentFromVod
=
viewController
is
YHVODPlayerViewController
// 如果是配置产生的小窗,但不在推荐页,则不创建
if
isConfigured
&&
!
isInRecommendPage
{
return
}
if
!
isCurrentFromLive
,
!
isCurrentFromVod
,
let
topVC
=
UIApplication
.
shared
.
yhKeyWindow
()?
.
rootViewController
?
.
topMostViewController
()
{
// 如果当前顶部控制器是播放器页面,则不创建浮窗
if
topVC
is
YHLivePlayerViewController
||
topVC
is
YHVODPlayerViewController
{
...
...
@@ -391,8 +421,32 @@ class YHPlayerManager: NSObject {
}
}
// 如果是从banner跳转,需要转移播放进度
if
playbackInfo
.
scene
==
.
banner
,
let
bannerPlayer
=
activePlayers
[
.
secondary
]
{
if
playbackInfo
.
isLive
{
leaveChannel
(
for
:
bannerPlayer
)
}
else
{
bannerPlayer
.
pause
()
}
}
let
playerType
=
determinePlayerType
(
for
:
.
floating
)
let
player
:
YHPlayer
=
player
(
for
:
playerType
)
var
needMuteLive
:
Bool
=
false
if
isConfigured
{
if
playbackInfo
.
isLive
{
needMuteLive
=
true
}
else
{
player
.
isMuted
=
true
}
}
else
{
if
playbackInfo
.
isLive
{
needMuteLive
=
false
}
else
{
player
.
isMuted
=
false
}
}
var
updatedInfo
=
playbackInfo
updatedInfo
.
scene
=
.
floating
...
...
@@ -412,6 +466,7 @@ class YHPlayerManager: NSObject {
floatingWindow
.
delegate
=
self
floatingWindow
.
player
=
player
player
.
delegate
=
floatingWindow
floatingWindow
.
source
=
isConfigured
?
.
configured
:
.
userAction
self
.
floatingWindow
=
floatingWindow
// 添加截图视图到窗口
...
...
@@ -426,7 +481,7 @@ class YHPlayerManager: NSObject {
let
uid
=
playbackInfo
.
uid
,
!
token
.
isEmpty
,
!
channelId
.
isEmpty
{
if
player
.
isJoined
{
leaveChannel
(
for
:
player
)
joinChannel
(
for
:
player
,
token
:
token
,
channelId
:
channelId
,
uid
:
uid
,
view
:
floatingWindow
.
contentView
)
joinChannel
(
for
:
player
,
token
:
token
,
channelId
:
channelId
,
uid
:
uid
,
view
:
floatingWindow
.
contentView
,
defaultMuted
:
needMuteLive
)
// // 先清理上次的播放状态
// player.clearPlayerView()
// // 将播放状态转移到floating
...
...
@@ -462,6 +517,7 @@ class YHPlayerManager: NSObject {
floatingWindow
.
delegate
=
self
floatingWindow
.
player
=
player
floatingWindow
.
playbackInfo
=
updatedInfo
floatingWindow
.
source
=
isConfigured
?
.
configured
:
.
userAction
self
.
floatingWindow
=
floatingWindow
player
.
delegate
=
floatingWindow
// 检查是否存在当前播放器
...
...
@@ -469,14 +525,13 @@ class YHPlayerManager: NSObject {
let
channelId
=
playbackInfo
.
channelId
,
let
uid
=
playbackInfo
.
uid
,
!
token
.
isEmpty
,
!
channelId
.
isEmpty
{
leaveChannel
(
for
:
player
)
joinChannel
(
for
:
player
,
token
:
token
,
channelId
:
channelId
,
uid
:
uid
,
view
:
floatingWindow
.
contentView
)
joinChannel
(
for
:
player
,
token
:
token
,
channelId
:
channelId
,
uid
:
uid
,
view
:
floatingWindow
.
contentView
,
defaultMuted
:
needMuteLive
)
}
else
if
let
url
=
playbackInfo
.
url
,
!
url
.
isEmpty
{
player
.
play
(
url
:
url
,
title
:
playbackInfo
.
title
,
view
:
floatingWindow
.
contentView
)
}
let
showFloatingWindow
=
{
floatingWindow
.
show
(
in
:
window
)
// player.setPlayView(floatingWindow.contentView)
}
if
let
viewController
=
viewController
{
...
...
@@ -490,24 +545,32 @@ class YHPlayerManager: NSObject {
}
func
enterBanner
(
playbackInfo
:
PlaybackInfo
,
inView
view
:
UIView
)
{
// 检查是否应该播放banner
if
!
shouldPlayBanner
()
{
return
}
let
playerType
=
determinePlayerType
(
for
:
.
banner
)
var
updatedInfo
=
playbackInfo
updatedInfo
.
scene
=
.
banner
updatedInfo
.
playerType
=
playerType
currentPlaybackInfo
[
playerType
]
=
updatedInfo
bannerPlayerView
=
view
let
player
=
player
(
for
:
playerType
)
// 加入频道
if
let
token
=
playbackInfo
.
token
,
let
channelId
=
playbackInfo
.
channelId
,
let
uid
=
playbackInfo
.
uid
,
!
token
.
isEmpty
,
!
channelId
.
isEmpty
{
if
player
.
isJoined
{
leaveChannel
(
for
:
player
)
joinChannel
(
for
:
player
,
token
:
token
,
channelId
:
channelId
,
uid
:
uid
,
view
:
view
)
}
else
{
joinChannel
(
for
:
player
,
token
:
token
,
channelId
:
channelId
,
uid
:
uid
,
view
:
view
)
if
playbackInfo
.
isLive
{
// 加入频道
if
let
token
=
playbackInfo
.
token
,
let
channelId
=
playbackInfo
.
channelId
,
let
uid
=
playbackInfo
.
uid
,
!
token
.
isEmpty
,
!
channelId
.
isEmpty
{
if
player
.
isJoined
{
leaveChannel
(
for
:
player
)
joinChannel
(
for
:
player
,
token
:
token
,
channelId
:
channelId
,
uid
:
uid
,
view
:
view
,
defaultMuted
:
true
)
}
else
{
joinChannel
(
for
:
player
,
token
:
token
,
channelId
:
channelId
,
uid
:
uid
,
view
:
view
,
defaultMuted
:
true
)
}
}
}
else
if
let
url
=
playbackInfo
.
url
,
!
url
.
isEmpty
{
player
.
play
(
url
:
url
,
title
:
playbackInfo
.
title
,
view
:
view
)
}
else
{
if
let
url
=
playbackInfo
.
url
,
!
url
.
isEmpty
{
player
.
play
(
url
:
url
,
title
:
playbackInfo
.
title
,
view
:
view
)
}
}
}
...
...
@@ -605,6 +668,9 @@ extension YHPlayerManager: YHFloatingWindowDelegate {
//player.stop()
floatingWindow
=
nil
leaveChannel
(
for
:
player
)
if
window
.
source
==
.
configured
{
isConfigFloating
=
false
}
}
func
floatingWindow
(
_
window
:
YHFloatingWindow
,
didChangeSize
size
:
CGSize
)
{
...
...
@@ -657,3 +723,117 @@ extension UIViewController {
return
self
}
}
extension
YHPlayerManager
{
// MARK: - Page Management
func
handlePageChanged
(
isRecommendPage
:
Bool
)
{
self
.
isInRecommendPage
=
isRecommendPage
if
isRecommendPage
{
if
isConfigFloating
==
true
{
if
let
window
=
floatingWindow
,
let
player
=
window
.
player
,
window
.
source
==
.
configured
{
window
.
isHidden
=
false
resumeConfiguredFloatingWindow
(
window
,
player
)
}
stopBannerPlayback
()
}
else
{
if
let
window
=
floatingWindow
,
let
player
=
window
.
player
,
window
.
source
==
.
configured
{
window
.
isHidden
=
true
stopConfiguredFloatingWindow
(
window
,
player
)
}
enableBannerAutoPlay
()
//resumeBannerPlayback()
}
}
else
{
if
let
window
=
floatingWindow
,
let
player
=
window
.
player
,
window
.
source
==
.
configured
{
window
.
isHidden
=
true
stopConfiguredFloatingWindow
(
window
,
player
)
}
stopBannerPlayback
()
}
}
private
func
resumeConfiguredFloatingWindow
(
_
window
:
YHFloatingWindow
,
_
player
:
YHPlayer
)
{
if
let
playbackInfo
=
window
.
playbackInfo
{
if
playbackInfo
.
isLive
{
if
let
token
=
playbackInfo
.
token
,
let
channelId
=
playbackInfo
.
channelId
,
let
uid
=
playbackInfo
.
uid
{
joinChannel
(
for
:
player
,
token
:
token
,
channelId
:
channelId
,
uid
:
uid
,
view
:
window
.
contentView
)
}
}
else
{
if
let
url
=
playbackInfo
.
url
{
player
.
play
(
url
:
url
,
title
:
playbackInfo
.
title
,
view
:
window
.
contentView
)
}
}
}
}
private
func
stopConfiguredFloatingWindow
(
_
window
:
YHFloatingWindow
,
_
player
:
YHPlayer
)
{
if
player
.
playMode
==
.
live
{
leaveChannel
(
for
:
player
)
}
else
{
player
.
stop
()
}
}
private
func
stopBannerPlayback
()
{
bannerAutoPlayEnabled
=
false
if
let
player
=
getPlayer
(
.
secondary
)
{
if
player
.
playMode
==
.
live
{
leaveChannel
(
for
:
player
)
}
else
{
player
.
stop
()
}
}
}
private
func
resumeBannerPlayback
()
{
guard
bannerAutoPlayEnabled
,
let
bannerPlayerView
=
bannerPlayerView
else
{
return
}
if
let
player
=
getPlayer
(
.
secondary
)
{
if
let
playbackInfo
=
currentPlaybackInfo
[
.
secondary
]
{
if
playbackInfo
.
isLive
{
if
let
token
=
playbackInfo
.
token
,
let
channelId
=
playbackInfo
.
channelId
,
let
uid
=
playbackInfo
.
uid
{
joinChannel
(
for
:
player
,
token
:
token
,
channelId
:
channelId
,
uid
:
uid
,
view
:
bannerPlayerView
,
defaultMuted
:
true
)
}
}
else
{
if
let
url
=
playbackInfo
.
url
{
player
.
play
(
url
:
url
,
title
:
playbackInfo
.
title
,
view
:
bannerPlayerView
)
player
.
isMuted
=
true
}
}
}
}
}
private
func
enableBannerAutoPlay
()
{
bannerAutoPlayEnabled
=
true
}
func
shouldPlayBanner
()
->
Bool
{
if
let
window
=
floatingWindow
,
!
window
.
isHidden
{
return
false
}
return
bannerAutoPlayEnabled
}
}
galaxy/galaxy/Classes/Modules/LivestreamSales(直播销售)/C/YHVODPlayerViewController.swift
View file @
933db8ea
...
...
@@ -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
...
...
galaxy/galaxy/Classes/Modules/LivestreamSales(直播销售)/V/YHFloatingWindow.swift
View file @
933db8ea
...
...
@@ -20,8 +20,15 @@ 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
?
...
...
@@ -62,6 +69,20 @@ class YHFloatingWindow: NSObject {
private
var
currentScale
:
CGFloat
=
1.0
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
=
{
...
...
galaxy/galaxy/Classes/Modules/LivestreamSales(直播销售)/V/YHShareAlertView.swift
View file @
933db8ea
...
...
@@ -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,7 +295,11 @@ class YHShareAlertView: UIView {
}
@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
)
{
...
...
galaxy/galaxy/Classes/Tools/NetWork/YHAllApiName.swift
View file @
933db8ea
...
...
@@ -84,6 +84,9 @@ class YHAllApiName {
//获取签约用户信息
static
let
signerInfoApi
=
"super-app/infoflow/signer/info"
// 获取首页小窗
static
let
homeFloatingLive
=
"super-app/live/app-live-latest"
}
//接口 模块名 Common
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment