diff --git a/relax.offline.mp3.music.xcworkspace/xcuserdata/zhou.xcuserdatad/UserInterfaceState.xcuserstate b/relax.offline.mp3.music.xcworkspace/xcuserdata/zhou.xcuserdatad/UserInterfaceState.xcuserstate index e3902de..91b6cb9 100644 Binary files a/relax.offline.mp3.music.xcworkspace/xcuserdata/zhou.xcuserdatad/UserInterfaceState.xcuserstate and b/relax.offline.mp3.music.xcworkspace/xcuserdata/zhou.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/relax.offline.mp3.music/AppDelegate.swift b/relax.offline.mp3.music/AppDelegate.swift index ff440f0..093c390 100644 --- a/relax.offline.mp3.music/AppDelegate.swift +++ b/relax.offline.mp3.music/AppDelegate.swift @@ -74,7 +74,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate { MP_DownloadManager.shared.session.completionHandler = completionHandler } } - //设置播放器会话状态 + ///设置播放器会话 func setAudioSupport(){ //设置会话 let session = AVAudioSession.sharedInstance() @@ -90,19 +90,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate { //响应后台控制 UIApplication.shared.beginReceivingRemoteControlEvents() } - func setAudioResume() { - //设置会话 - let session = AVAudioSession.sharedInstance() - do { - try session.setCategory(.playAndRecord, mode: .default, options: [ .allowAirPlay, .allowBluetoothA2DP,.defaultToSpeaker]) - //恢复会话 - try session.setActive(true) - print("恢复会话") - } catch { - print("Failed to set type:\(error.localizedDescription)") - } - } - ///停止播放器会话 + ///终止播放器会话 func setAudioStop() { //设置会话 let session = AVAudioSession.sharedInstance() @@ -114,18 +102,29 @@ class AppDelegate: UIResponder, UIApplicationDelegate { print("Failed to set type:\(error.localizedDescription)") } } - ///激活播放器会话 + ///重新激活播放器会话 func setAudioActive() { //设置会话 let session = AVAudioSession.sharedInstance() do { - //中止会话 - try session.setCategory(.playAndRecord, mode: .default, options: [ .allowAirPlay, .allowBluetoothA2DP,.defaultToSpeaker]) - try session.setActive(true) - print("恢复会话") + if session.category != .playAndRecord || session.categoryOptions != [ .allowAirPlay, .allowBluetoothA2DP,.defaultToSpeaker] { + if session.category != .playAndRecord { + print("音频会话状态发生变动") + }else { + print("音频会话类型发生变动") + } + try session.setCategory(.playAndRecord, mode: .default, options: [ .allowAirPlay, .allowBluetoothA2DP,.defaultToSpeaker]) + try session.setActive(true) + print("重新设置音频会话模型") + }else { + try session.setActive(true) + print("恢复会话") + } } catch { print("Failed to set type:\(error.localizedDescription)") } + //发送一个通知,询问当前音乐是否播放中 + NotificationCenter.notificationKey.post(notificationName: .player_is_continua) } //活跃天数计算 private func ActiveDaysCalculation() { diff --git a/relax.offline.mp3.music/MP/Common/Extension(扩展)/Notification.swift b/relax.offline.mp3.music/MP/Common/Extension(扩展)/Notification.swift index de41b64..6563504 100644 --- a/relax.offline.mp3.music/MP/Common/Extension(扩展)/Notification.swift +++ b/relax.offline.mp3.music/MP/Common/Extension(扩展)/Notification.swift @@ -121,6 +121,8 @@ extension NotificationCenter{ case search_gride_reload ///曲库原生广告加载成功 case library_native_success + ///询问播放器是否继续播放音乐 + case player_is_continua } } } diff --git a/relax.offline.mp3.music/MP/Common/Macro(宏定义与全局量)/Macro.swift b/relax.offline.mp3.music/MP/Common/Macro(宏定义与全局量)/Macro.swift index b1bb7ea..04b6d18 100644 --- a/relax.offline.mp3.music/MP/Common/Macro(宏定义与全局量)/Macro.swift +++ b/relax.offline.mp3.music/MP/Common/Macro(宏定义与全局量)/Macro.swift @@ -567,7 +567,7 @@ func postUpdateReminder(_ observe:UIViewController) { observe.present(alter, animated: true) } ///从离线第一首开始播放 -func playOfflineSongs() { +func playOfflineSongs(_ videoId:String) { if MPPositive_LoadCoreModel.shared.loadViewModels.isEmpty == false { MP_HUD.text("You are in offline mode".localizableString(), delay: 2.0, completion: nil) //获取离线的歌曲 @@ -594,7 +594,15 @@ func playOfflineSongs() { item.relatedID = song.loadItem.relatedID array.append(item) } - if let currentVideo = MPPositive_LoadCoreModel.shared.loadViewModels.first { + //检索videoId是否在loadModels中存在 + if let currentVideo = MPPositive_LoadCoreModel.shared.loadViewModels.first(where: {$0.loadItem.videoId == videoId}) { + let lodaViewModel = MPPositive_PlayerLoadViewModel(array, currentVideoId: currentVideo.loadItem.videoId ?? "") + lodaViewModel.improveData(currentVideo.loadItem.videoId ?? "") + //更改播放器播放类型 + MP_PlayerManager.shared.setPlayType(.normal) + MP_PlayerManager.shared.loadPlayer = lodaViewModel + MP_AnalyticsManager.shared.player_b_listAction() + }else if let currentVideo = MPPositive_LoadCoreModel.shared.loadViewModels.first { let lodaViewModel = MPPositive_PlayerLoadViewModel(array, currentVideoId: currentVideo.loadItem.videoId ?? "") lodaViewModel.improveData(currentVideo.loadItem.videoId ?? "") //更改播放器播放类型 diff --git a/relax.offline.mp3.music/MP/Common/Tool(工具封装)/MP_ADSimpleManager.swift b/relax.offline.mp3.music/MP/Common/Tool(工具封装)/MP_ADSimpleManager.swift index b7cb8ad..a2c493d 100644 --- a/relax.offline.mp3.music/MP/Common/Tool(工具封装)/MP_ADSimpleManager.swift +++ b/relax.offline.mp3.music/MP/Common/Tool(工具封装)/MP_ADSimpleManager.swift @@ -81,6 +81,9 @@ class MP_ADSimpleManager: NSObject { override init() { super.init() NotificationCenter.notificationKey.add(observer: self, selector: #selector(netWorkReachableAction(_:)), notificationName: .net_switch_reachable) + DispatchQueue.main.async { + GADMobileAds.sharedInstance().audioVideoManager.audioSessionIsApplicationManaged = true + } } deinit{ NotificationCenter.default.removeObserver(self) @@ -89,11 +92,15 @@ class MP_ADSimpleManager: NSObject { func isAdMuted() { DispatchQueue.main.async { if MP_PlayerManager.shared.getPlayState() == .Playing { - GADMobileAds.sharedInstance().audioVideoManager.audioSessionIsApplicationManaged = true - GADMobileAds.sharedInstance().applicationMuted = true + if GADMobileAds.sharedInstance().applicationMuted == false { + GADMobileAds.sharedInstance().applicationMuted = true + GADMobileAds.sharedInstance().applicationVolume = 0.1 + print("播放中,静音广告") + } }else { - GADMobileAds.sharedInstance().audioVideoManager.audioSessionIsApplicationManaged = false GADMobileAds.sharedInstance().applicationMuted = false + GADMobileAds.sharedInstance().applicationVolume = 1 + print("没有播放,不需要静音广告") } } } @@ -101,8 +108,8 @@ class MP_ADSimpleManager: NSObject { func isAdSounded() { DispatchQueue.main.async { if GADMobileAds.sharedInstance().applicationMuted == true { - GADMobileAds.sharedInstance().audioVideoManager.audioSessionIsApplicationManaged = false GADMobileAds.sharedInstance().applicationMuted = false + print("加载广告时恢复广告声音配置") } } } diff --git a/relax.offline.mp3.music/MP/Common/Tool(工具封装)/MP_AdMobManager.swift b/relax.offline.mp3.music/MP/Common/Tool(工具封装)/MP_AdMobManager.swift index 32b95c6..8644aca 100644 --- a/relax.offline.mp3.music/MP/Common/Tool(工具封装)/MP_AdMobManager.swift +++ b/relax.offline.mp3.music/MP/Common/Tool(工具封装)/MP_AdMobManager.swift @@ -1544,11 +1544,11 @@ class MP_AdMobManager: NSObject, GADAudioVideoManagerDelegate, GADFullScreenCont //MARK: - 广告音频代理 GADAudioVideoManagerDelegate //广告将会播放视频 func audioVideoManagerWillPlayVideo(_ audioVideoManager: GADAudioVideoManager) { - print("广告将会播放视频") +// print("广告将会播放视频") } //广告将会暂停播放所有视频 func audioVideoManagerDidPauseAllVideo(_ audioVideoManager: GADAudioVideoManager) { - print("广告暂停播放视频") +// print("广告暂停播放视频") } //广告将要播放音频 func audioVideoManagerWillPlayAudio(_ audioVideoManager: GADAudioVideoManager) { diff --git a/relax.offline.mp3.music/MP/Common/Tool(工具封装)/MP_PlayerManager.swift b/relax.offline.mp3.music/MP/Common/Tool(工具封装)/MP_PlayerManager.swift index bf22814..35611aa 100644 --- a/relax.offline.mp3.music/MP/Common/Tool(工具封装)/MP_PlayerManager.swift +++ b/relax.offline.mp3.music/MP/Common/Tool(工具封装)/MP_PlayerManager.swift @@ -251,6 +251,8 @@ class MP_PlayerManager:NSObject{ NotificationCenter.default.addObserver(self, selector: #selector(playerDidFinishPlaying(_ :)), name: .AVPlayerItemDidPlayToEndTime, object: player.currentItem) //监听用户切换了音乐 NotificationCenter.notificationKey.add(observer: self, selector: #selector(userSwitchCurrentVideoAction(_ :)), notificationName: .positive_player_reload) + //当音频会话被重新激活后 + NotificationCenter.notificationKey.add(observer: self, selector: #selector(sessionIsActiveAction(_ :)), notificationName: .player_is_continua) //监听网络状态恢复可用 NotificationCenter.notificationKey.add(observer: self, selector: #selector(netWorkReachableAction(_ :)), notificationName: .net_switch_reachable) //监听蓝牙设备的状态 @@ -489,6 +491,18 @@ class MP_PlayerManager:NSObject{ videoLayer.player = player } } + //当音频会话被重新激活后 + @objc private func sessionIsActiveAction(_ sender:Notification) { + //音频会话被重新激活后,检索播放器是否具备当前播放音乐,以及是否处于播放中 + if let current = loadPlayer?.currentVideo, playState == .Playing, player.timeControlStatus == .paused { + //现在应该播放音乐,但是播放器播放状态被某些因素强制暂停了,需要恢复播放 + DispatchQueue.main.async { + [weak self] in + self?.player.play() + print("播放器播放状态被某些因素强制暂停了,需要恢复播放") + } + } + } ///网络状态恢复正常 @objc private func netWorkReachableAction(_ sender:Notification) { diff --git a/relax.offline.mp3.music/MP/MPPositive/ViewControllers/Center(个人曲库页)/MPPositive_LoveSongsViewController.swift b/relax.offline.mp3.music/MP/MPPositive/ViewControllers/Center(个人曲库页)/MPPositive_LoveSongsViewController.swift index 8e81605..9922eb7 100644 --- a/relax.offline.mp3.music/MP/MPPositive/ViewControllers/Center(个人曲库页)/MPPositive_LoveSongsViewController.swift +++ b/relax.offline.mp3.music/MP/MPPositive/ViewControllers/Center(个人曲库页)/MPPositive_LoveSongsViewController.swift @@ -513,10 +513,11 @@ extension MPPositive_LoveSongsViewController: UITableViewDataSource, UITableView MPPositive_Debouncer.shared.call { [weak self] in guard let self = self else {return} -// guard MP_NetWorkManager.shared.netWorkStatu == .reachable else { -// MP_HUD.text("Bad connection~".localizableString(), delay: 2.0, completion: nil) -// return -// } + let currentVideo = isSearchStyle ? searchSongs[indexPath.row]:showSongs[indexPath.row] + guard MP_NetWorkManager.shared.netWorkStatu == .reachable else { + playOfflineSongs(currentVideo.collectionSong.videoId ?? "") + return + } MP_AnalyticsManager.shared.song_clickAction("Love Song") //优先清除数据 MP_PlayerManager.shared.loadPlayer = nil @@ -537,7 +538,6 @@ extension MPPositive_LoveSongsViewController: UITableViewDataSource, UITableView item.relatedID = song.collectionSong.relatedID array.append(item) } - let currentVideo = isSearchStyle ? searchSongs[indexPath.row]:showSongs[indexPath.row] let lodaViewModel = MPPositive_PlayerLoadViewModel(array, currentVideoId: currentVideo.collectionSong.videoId ?? "") lodaViewModel.improveData(currentVideo.collectionSong.videoId ?? "") //更改播放器播放类型 diff --git a/relax.offline.mp3.music/MP/MPPositive/ViewControllers/Home(首页,各项列表页,艺术家页)/MPPositive_HomeViewController.swift b/relax.offline.mp3.music/MP/MPPositive/ViewControllers/Home(首页,各项列表页,艺术家页)/MPPositive_HomeViewController.swift index 094f2b8..b1668c8 100644 --- a/relax.offline.mp3.music/MP/MPPositive/ViewControllers/Home(首页,各项列表页,艺术家页)/MPPositive_HomeViewController.swift +++ b/relax.offline.mp3.music/MP/MPPositive/ViewControllers/Home(首页,各项列表页,艺术家页)/MPPositive_HomeViewController.swift @@ -592,7 +592,7 @@ extension MPPositive_HomeViewController: UITableViewDataSource, UITableViewDeleg [weak self] in guard let self = self else {return} guard MP_NetWorkManager.shared.netWorkStatu == .reachable else { - playOfflineSongs() + playOfflineSongs(item.browseItem.videoId ?? "") return } MP_AnalyticsManager.shared.song_clickAction("Home") diff --git a/relax.offline.mp3.music/MP/MPPositive/ViewControllers/Home(首页,各项列表页,艺术家页)/MPPositive_ListShowViewController.swift b/relax.offline.mp3.music/MP/MPPositive/ViewControllers/Home(首页,各项列表页,艺术家页)/MPPositive_ListShowViewController.swift index 6bdfbf0..a882ff1 100644 --- a/relax.offline.mp3.music/MP/MPPositive/ViewControllers/Home(首页,各项列表页,艺术家页)/MPPositive_ListShowViewController.swift +++ b/relax.offline.mp3.music/MP/MPPositive/ViewControllers/Home(首页,各项列表页,艺术家页)/MPPositive_ListShowViewController.swift @@ -249,7 +249,7 @@ class MPPositive_ListShowViewController: MPPositive_BaseViewController, UIViewCo [weak self] in guard let self = self, let item = listOrAlbum.items.first else {return} guard MP_NetWorkManager.shared.netWorkStatu == .reachable else { - playOfflineSongs() + playOfflineSongs(item.browseItem.videoId ?? "") return } MP_AnalyticsManager.shared.song_clickAction("List") @@ -277,7 +277,7 @@ class MPPositive_ListShowViewController: MPPositive_BaseViewController, UIViewCo [weak self] in guard let self = self, let item = listOrAlbum.items.randomElement() else {return} guard MP_NetWorkManager.shared.netWorkStatu == .reachable else { - playOfflineSongs() + playOfflineSongs(item.browseItem.videoId ?? "") return } MP_AnalyticsManager.shared.song_clickAction("List") @@ -394,16 +394,15 @@ extension MPPositive_ListShowViewController: UITableViewDataSource, UITableViewD func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { MPPositive_Debouncer.shared.call { [weak self] in - guard let self = self else {return} + guard let self = self, let item = listOrAlbum?.items[indexPath.row] else {return} guard MP_NetWorkManager.shared.netWorkStatu == .reachable else { - playOfflineSongs() + playOfflineSongs(item.browseItem.videoId ?? "") return } MP_AnalyticsManager.shared.song_clickAction("List") //弹出播放器 NotificationCenter.notificationKey.post(notificationName: .pup_player_vc) MP_AnalyticsManager.shared.player_b_impAction() - let item = listOrAlbum.items[indexPath.row] //触发next请求,优先获取列表全部单曲基础数据(不完善) MP_NetWorkManager.shared.requestNextList(item.browseItem.playListId ?? "", videoId: item.browseItem.videoId ?? "", clickTrackingParams: item.browseItem.clickTrackingParams){ [weak self] listSongs in guard let self = self else {return} diff --git a/relax.offline.mp3.music/MP/MPPositive/ViewControllers/Home(首页,各项列表页,艺术家页)/MPPositive_MoreContentViewController.swift b/relax.offline.mp3.music/MP/MPPositive/ViewControllers/Home(首页,各项列表页,艺术家页)/MPPositive_MoreContentViewController.swift index 837cfbd..54652b0 100644 --- a/relax.offline.mp3.music/MP/MPPositive/ViewControllers/Home(首页,各项列表页,艺术家页)/MPPositive_MoreContentViewController.swift +++ b/relax.offline.mp3.music/MP/MPPositive/ViewControllers/Home(首页,各项列表页,艺术家页)/MPPositive_MoreContentViewController.swift @@ -137,9 +137,9 @@ extension MPPositive_MoreContentViewController: UICollectionViewDataSource, UICo //单曲/视频跳转 MPPositive_Debouncer.shared.call { [weak self] in - guard let self = self else {return} + guard let self = self, let item = browseModuleList?.items[indexPath.row] else {return} guard MP_NetWorkManager.shared.netWorkStatu == .reachable else { - playOfflineSongs() + playOfflineSongs(item.browseItem.videoId ?? "") return } MP_AnalyticsManager.shared.song_clickAction("MoreContent") @@ -148,7 +148,6 @@ extension MPPositive_MoreContentViewController: UICollectionViewDataSource, UICo //弹出播放器 NotificationCenter.notificationKey.post(notificationName: .pup_player_vc) MP_AnalyticsManager.shared.player_b_impAction() - let item = browseModuleList.items[indexPath.row] //触发next请求,优先获取列表全部单曲基础数据(不完善) MP_NetWorkManager.shared.requestNextList(item.browseItem.playListId ?? "", videoId: item.browseItem.videoId ?? "", clickTrackingParams: item.browseItem.clickTrackingParams){ [weak self] listSongs in guard let self = self else {return} diff --git a/relax.offline.mp3.music/MP/MPPositive/ViewControllers/Search(搜索页)/MPPositive_GrideMoodViewController.swift b/relax.offline.mp3.music/MP/MPPositive/ViewControllers/Search(搜索页)/MPPositive_GrideMoodViewController.swift index 57bcb1a..78eb175 100644 --- a/relax.offline.mp3.music/MP/MPPositive/ViewControllers/Search(搜索页)/MPPositive_GrideMoodViewController.swift +++ b/relax.offline.mp3.music/MP/MPPositive/ViewControllers/Search(搜索页)/MPPositive_GrideMoodViewController.swift @@ -144,7 +144,7 @@ extension MPPositive_GrideMoodViewController: UITableViewDataSource, UITableView [weak self] in guard let self = self else {return} guard MP_NetWorkManager.shared.netWorkStatu == .reachable else { - playOfflineSongs() + playOfflineSongs(item.browseItem.videoId ?? "") return } MP_AnalyticsManager.shared.song_clickAction("Mood") diff --git a/relax.offline.mp3.music/MP/MPPositive/Views/Home/MPPositive_ArtistShowTypeView.swift b/relax.offline.mp3.music/MP/MPPositive/Views/Home/MPPositive_ArtistShowTypeView.swift index 5cf1cf2..038c9e6 100644 --- a/relax.offline.mp3.music/MP/MPPositive/Views/Home/MPPositive_ArtistShowTypeView.swift +++ b/relax.offline.mp3.music/MP/MPPositive/Views/Home/MPPositive_ArtistShowTypeView.swift @@ -273,12 +273,11 @@ extension MPPositive_ArtistShowTypeView:UITableViewDataSource, UITableViewDelega if let first = sectionList?.itemViews.first { switch first.browseItem.itemType { case .single: - let item = sectionList.itemViews[indexPath.row] MPPositive_Debouncer.shared.call { [weak self] in - guard let self = self else {return} + guard let self = self, let item = sectionList?.itemViews[indexPath.row] else {return} guard MP_NetWorkManager.shared.netWorkStatu == .reachable else { - playOfflineSongs() + playOfflineSongs(item.browseItem.videoId ?? "") return } MP_AnalyticsManager.shared.song_clickAction("Artist") diff --git a/relax.offline.mp3.music/MP/MPPositive/Views/Home/MPPositive_HomeSinglesTableViewCell.swift b/relax.offline.mp3.music/MP/MPPositive/Views/Home/MPPositive_HomeSinglesTableViewCell.swift index c243c82..2e1e032 100644 --- a/relax.offline.mp3.music/MP/MPPositive/Views/Home/MPPositive_HomeSinglesTableViewCell.swift +++ b/relax.offline.mp3.music/MP/MPPositive/Views/Home/MPPositive_HomeSinglesTableViewCell.swift @@ -166,11 +166,11 @@ extension MPPositive_HomeSinglesTableViewCell:UICollectionViewDataSource, UIColl MPPositive_Debouncer.shared.call { [weak self] in guard let self = self else {return} - guard MP_NetWorkManager.shared.netWorkStatu == .reachable else { - playOfflineSongs() + guard let item = (self.browseViewModel?.items[indexPath.row] ?? self.personlViewModel?.items[indexPath.row]) else { return } - guard let item = (self.browseViewModel?.items[indexPath.row] ?? self.personlViewModel?.items[indexPath.row]) else { + guard MP_NetWorkManager.shared.netWorkStatu == .reachable else { + playOfflineSongs(item.browseItem.videoId ?? "") return } MP_AnalyticsManager.shared.home_b_module_clickAction(item.browseItem.pageType ?? "") diff --git a/relax.offline.mp3.music/MP/MPPositive/Views/Home/MPPositive_PersonalisedRecommendationsTableViewCell.swift b/relax.offline.mp3.music/MP/MPPositive/Views/Home/MPPositive_PersonalisedRecommendationsTableViewCell.swift index 942f609..ba9fc41 100644 --- a/relax.offline.mp3.music/MP/MPPositive/Views/Home/MPPositive_PersonalisedRecommendationsTableViewCell.swift +++ b/relax.offline.mp3.music/MP/MPPositive/Views/Home/MPPositive_PersonalisedRecommendationsTableViewCell.swift @@ -197,7 +197,7 @@ class MPPositive_PersonalisedRecommendationsTableViewCell: UITableViewCell, UIVi [weak self] in guard let self = self else {return} guard MP_NetWorkManager.shared.netWorkStatu == .reachable else { - playOfflineSongs() + playOfflineSongs(item.videoId ?? "") return } MP_AnalyticsManager.shared.home_b_module_clickAction(titleLabel.text ?? "") @@ -328,7 +328,7 @@ extension MPPositive_PersonalisedRecommendationsTableViewCell:UICollectionViewDa [weak self] in guard let self = self else {return} guard MP_NetWorkManager.shared.netWorkStatu == .reachable else { - playOfflineSongs() + playOfflineSongs(item.browseItem.videoId ?? "") return } MP_AnalyticsManager.shared.home_b_module_clickAction(item.browseItem.pageType ?? "") diff --git a/relax.offline.mp3.music/MP/MPPositive/Views/Search/MPPositive_SearchResultPreviewShowView.swift b/relax.offline.mp3.music/MP/MPPositive/Views/Search/MPPositive_SearchResultPreviewShowView.swift index 8398d30..8a195a1 100644 --- a/relax.offline.mp3.music/MP/MPPositive/Views/Search/MPPositive_SearchResultPreviewShowView.swift +++ b/relax.offline.mp3.music/MP/MPPositive/Views/Search/MPPositive_SearchResultPreviewShowView.swift @@ -76,16 +76,16 @@ class MPPositive_SearchResultPreviewShowView: MPPositive_BaseShowView, JXSegment } } func chooseItemClick(_ item:MPPositive_SearchResultItemViewModel) { - switch item.item.itemType { + switch item.item?.itemType { case .artist: //用户查看艺术家 - let artistVC = MPPositive_ArtistShowViewController(item.item.artistId ?? "", clickTrackingParams: item.item.clickTrackingParams ?? "") + let artistVC = MPPositive_ArtistShowViewController(item.item?.artistId ?? "", clickTrackingParams: item.item?.clickTrackingParams ?? "") if let vc = self.parentController(ofType: MPPositive_SearchResultShowViewController.self) { vc.navigationController?.pushViewController(artistVC, animated: true) } case .list: //列表专辑 - let listVC = MPPositive_ListShowViewController(item.item.browseId ?? "", params: "", title: item.title ?? "", subtitle: item.subtitle ?? "", clickTrackingParams: item.item.clickTrackingParams ?? "") + let listVC = MPPositive_ListShowViewController(item.item?.browseId ?? "", params: "", title: item.title ?? "", subtitle: item.subtitle ?? "", clickTrackingParams: item.item?.clickTrackingParams ?? "") if let vc = self.parentController(ofType: MPPositive_SearchResultShowViewController.self) { vc.navigationController?.pushViewController(listVC, animated: true) } @@ -94,7 +94,7 @@ class MPPositive_SearchResultPreviewShowView: MPPositive_BaseShowView, JXSegment [weak self] in guard let self = self else {return} guard MP_NetWorkManager.shared.netWorkStatu == .reachable else { - playOfflineSongs() + playOfflineSongs(item.item?.videoId ?? "") return } MP_AnalyticsManager.shared.song_clickAction("Search") diff --git a/relax.offline.mp3.music/MP/MPPositive/Views/Search/MPPositive_SearchResultTypeShowView.swift b/relax.offline.mp3.music/MP/MPPositive/Views/Search/MPPositive_SearchResultTypeShowView.swift index 6d7928a..053b501 100644 --- a/relax.offline.mp3.music/MP/MPPositive/Views/Search/MPPositive_SearchResultTypeShowView.swift +++ b/relax.offline.mp3.music/MP/MPPositive/Views/Search/MPPositive_SearchResultTypeShowView.swift @@ -46,8 +46,11 @@ class MPPositive_SearchResultTypeShowView: MPPositive_BaseShowView, JXSegmentedL } sectionList.completionBlock = { [weak self] in - self?.tableView.reloadData() - self?.tableView.mj_footer?.endRefreshing() + DispatchQueue.main.async { + [weak self] in + self?.tableView.reloadData() + self?.tableView.mj_footer?.endRefreshing() + } } }else { tableView.reloadData() @@ -94,7 +97,7 @@ class MPPositive_SearchResultTypeShowView: MPPositive_BaseShowView, JXSegmentedL } //上拉刷新 @objc private func footerRefresh() { - guard sectionList.continuation != nil, sectionList.itct != nil else { + guard sectionList?.continuation != nil, sectionList?.itct != nil else { DispatchQueue.main.async { [weak self] in guard let self = self else {return} @@ -102,7 +105,7 @@ class MPPositive_SearchResultTypeShowView: MPPositive_BaseShowView, JXSegmentedL } return } - sectionList.requestSearchContinuation() + sectionList?.requestSearchContinuation() } func chooseItemClick(_ item:MPPositive_SearchResultItemViewModel) { switch item.item.itemType { @@ -123,7 +126,7 @@ class MPPositive_SearchResultTypeShowView: MPPositive_BaseShowView, JXSegmentedL [weak self] in guard let self = self else {return} guard MP_NetWorkManager.shared.netWorkStatu == .reachable else { - playOfflineSongs() + playOfflineSongs(item.item?.browseId ?? "") return } MP_AnalyticsManager.shared.song_clickAction("Search")