播放器的再优化
This commit is contained in:
parent
26a46c83a3
commit
f75ff871a2
@ -8,6 +8,7 @@
|
|||||||
import UIKit
|
import UIKit
|
||||||
import CoreData
|
import CoreData
|
||||||
import AVFoundation
|
import AVFoundation
|
||||||
|
import Alamofire
|
||||||
@_exported import IQKeyboardManagerSwift
|
@_exported import IQKeyboardManagerSwift
|
||||||
@UIApplicationMain
|
@UIApplicationMain
|
||||||
class AppDelegate: UIResponder, UIApplicationDelegate {
|
class AppDelegate: UIResponder, UIApplicationDelegate {
|
||||||
@ -81,7 +82,6 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
|
|||||||
window?.rootViewController = tabBarVC
|
window?.rootViewController = tabBarVC
|
||||||
window?.makeKeyAndVisible()
|
window?.makeKeyAndVisible()
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - Core Data stack
|
// MARK: - Core Data stack
|
||||||
lazy var persistentContainer: NSPersistentContainer = {
|
lazy var persistentContainer: NSPersistentContainer = {
|
||||||
/*
|
/*
|
||||||
|
|||||||
@ -37,30 +37,30 @@ class MP_NetWorkManager: NSObject {
|
|||||||
private let search = "/search"
|
private let search = "/search"
|
||||||
///YouTuBe资源键值
|
///YouTuBe资源键值
|
||||||
private let youTubeKeys:[String] = ["MUSIC_VIDEO_TYPE_ATV","MUSIC_VIDEO_TYPE_OMV","MUSIC_PAGE_TYPE_ALBUM","MUSIC_PAGE_TYPE_ARTIST","MUSIC_PAGE_TYPE_PLAYLIST","MUSIC_PAGE_TYPE_TRACK_LYRICS","MUSIC_PAGE_TYPE_TRACK_RELATED"]
|
private let youTubeKeys:[String] = ["MUSIC_VIDEO_TYPE_ATV","MUSIC_VIDEO_TYPE_OMV","MUSIC_PAGE_TYPE_ALBUM","MUSIC_PAGE_TYPE_ARTIST","MUSIC_PAGE_TYPE_PLAYLIST","MUSIC_PAGE_TYPE_TRACK_LYRICS","MUSIC_PAGE_TYPE_TRACK_RELATED"]
|
||||||
///当前网络状态
|
//网络状态
|
||||||
enum NetWorkStatus: String {
|
enum NetWorkStatus: String {
|
||||||
case notReachable = "网络不可用"
|
case notReachable = "网络不可用"
|
||||||
case unknown = "网络未知"
|
case unknown = "网络未知"
|
||||||
case reachable = "网络可用"
|
case reachable = "网络可用"
|
||||||
}
|
}
|
||||||
private var netWorkStatu:NetWorkStatus = .reachable{
|
///网络监听器
|
||||||
|
private let reachabilityManager:NetworkReachabilityManager = NetworkReachabilityManager(host: "https://music.youtube.com/")!
|
||||||
|
///当前网络状态
|
||||||
|
var netWorkStatu:NetWorkStatus!{
|
||||||
willSet{
|
willSet{
|
||||||
DispatchQueue.main.async {
|
//旧值为网络可用,新值为网络不可用,为断网第一时间,发出通知告知播放器
|
||||||
[weak self] in
|
if netWorkStatu == .reachable, newValue == .notReachable {
|
||||||
guard let self = self else {return}
|
print("网络不可用")
|
||||||
//旧值为网络可用,新值为网络不可用,为断网第一时间,发出通知告知播放器
|
NotificationCenter.notificationKey.post(notificationName: .net_switch_notReachable)
|
||||||
if netWorkStatu == .reachable, newValue == .notReachable {
|
}
|
||||||
print("网络不可用")
|
//旧值为网络不可用,新值为网络可用,为网络回复第一时间,发出通知告知播放器
|
||||||
NotificationCenter.notificationKey.post(notificationName: .net_switch_notReachable)
|
if (netWorkStatu == .notReachable), newValue == .reachable {
|
||||||
}
|
print("网络可用")
|
||||||
//旧值为网络不可用,新值为网络可用,为网络回复第一时间,发出通知告知播放器
|
NotificationCenter.notificationKey.post(notificationName: .net_switch_reachable)
|
||||||
if netWorkStatu == .notReachable, newValue == .reachable {
|
|
||||||
print("网络可用")
|
|
||||||
NotificationCenter.notificationKey.post(notificationName: .net_switch_reachable)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//MARK: - 固定参数
|
//MARK: - 固定参数
|
||||||
//访问数据(首次首页预览时获得)
|
//访问数据(首次首页预览时获得)
|
||||||
private var visitorData:String?
|
private var visitorData:String?
|
||||||
@ -158,10 +158,8 @@ class MP_NetWorkManager: NSObject {
|
|||||||
}
|
}
|
||||||
///网络请求检测
|
///网络请求检测
|
||||||
func requestStatusToYouTube() {
|
func requestStatusToYouTube() {
|
||||||
//设置一个节点
|
|
||||||
let reachabilityManager = NetworkReachabilityManager(host: "https://music.youtube.com/")
|
|
||||||
//通过ping节点确认是否能执行网络请求
|
//通过ping节点确认是否能执行网络请求
|
||||||
reachabilityManager?.startListening(onQueue: .main, onUpdatePerforming: { [weak self] status in
|
reachabilityManager.startListening(onQueue: .main, onUpdatePerforming: { [weak self] status in
|
||||||
guard let self = self else {return}
|
guard let self = self else {return}
|
||||||
switch status {
|
switch status {
|
||||||
case .unknown://未知状况
|
case .unknown://未知状况
|
||||||
@ -173,7 +171,6 @@ class MP_NetWorkManager: NSObject {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
//MARK: - API请求
|
//MARK: - API请求
|
||||||
extension MP_NetWorkManager {
|
extension MP_NetWorkManager {
|
||||||
|
|||||||
@ -171,10 +171,11 @@ class MP_PlayerManager:NSObject{
|
|||||||
///网络状态恢复正常
|
///网络状态恢复正常
|
||||||
@objc private func netWorkReachableAction(_ sender:Notification) {
|
@objc private func netWorkReachableAction(_ sender:Notification) {
|
||||||
//监听到网络状态恢复,检索当前播放器是否正在播放
|
//监听到网络状态恢复,检索当前播放器是否正在播放
|
||||||
if loadPlayer.currentVideo != nil {
|
if loadPlayer?.currentVideo != nil {
|
||||||
//有音乐播放,获取当前播放进度
|
//有音乐播放,获取当前播放进度
|
||||||
let currentTime = loadPlayer.currentVideo!.resourcePlayerItem.currentTime()
|
let currentTime = loadPlayer.currentVideo!.resourcePlayerItem.currentTime()
|
||||||
//手动调整播放时间点,以此重启播放器缓存
|
//手动调整播放时间点,以此重启播放器缓存
|
||||||
|
player.seek(to: currentTime)
|
||||||
player.play()
|
player.play()
|
||||||
playState = .Playing
|
playState = .Playing
|
||||||
}
|
}
|
||||||
@ -225,7 +226,6 @@ class MP_PlayerManager:NSObject{
|
|||||||
if let playbackLikelyToKeepUp = change?[.newKey] as? Bool, playbackLikelyToKeepUp == true {
|
if let playbackLikelyToKeepUp = change?[.newKey] as? Bool, playbackLikelyToKeepUp == true {
|
||||||
if playState != .Playing {
|
if playState != .Playing {
|
||||||
//还未播放当前音乐,启动播放
|
//还未播放当前音乐,启动播放
|
||||||
print("播放音乐-\(loadPlayer.currentVideo?.title ?? "")")
|
|
||||||
player.play()
|
player.play()
|
||||||
playState = .Playing
|
playState = .Playing
|
||||||
//执行开始播放闭包
|
//执行开始播放闭包
|
||||||
|
|||||||
@ -307,7 +307,7 @@ class MPPositive_PlayerViewController: MPPositive_BaseViewController, UIViewCont
|
|||||||
coverView.subtitleLabel.text = MP_PlayerManager.shared.loadPlayer.currentVideo?.subtitle
|
coverView.subtitleLabel.text = MP_PlayerManager.shared.loadPlayer.currentVideo?.subtitle
|
||||||
lyricsView.titleLabel.text = MP_PlayerManager.shared.loadPlayer.currentVideo?.title
|
lyricsView.titleLabel.text = MP_PlayerManager.shared.loadPlayer.currentVideo?.title
|
||||||
lyricsView.subtitleLabel.text = MP_PlayerManager.shared.loadPlayer.currentVideo?.subtitle
|
lyricsView.subtitleLabel.text = MP_PlayerManager.shared.loadPlayer.currentVideo?.subtitle
|
||||||
lyricsView.lyricsLabel.text = MP_PlayerManager.shared.loadPlayer.currentVideo?.lyrics ?? "No Lyrics"
|
lyricsView.lyricsLabel.text = MP_PlayerManager.shared.loadPlayer.currentVideo?.lyrics?.isEmpty == true ? "No Lyrics":MP_PlayerManager.shared.loadPlayer.currentVideo?.lyrics
|
||||||
coverView.loadBtn.isSelected = MP_PlayerManager.shared.loadPlayer.currentVideo?.isDlownd ?? false
|
coverView.loadBtn.isSelected = MP_PlayerManager.shared.loadPlayer.currentVideo?.isDlownd ?? false
|
||||||
coverView.collectionSongBtn.isSelected = MP_PlayerManager.shared.loadPlayer.currentVideo?.isCollection ?? false
|
coverView.collectionSongBtn.isSelected = MP_PlayerManager.shared.loadPlayer.currentVideo?.isCollection ?? false
|
||||||
}
|
}
|
||||||
|
|||||||
@ -156,11 +156,19 @@ class MPPositive_PlayerCoverView: UIView {
|
|||||||
}
|
}
|
||||||
//网络不可用时触发
|
//网络不可用时触发
|
||||||
@objc private func netWorkNotReachableAction(_ sender:Notification) {
|
@objc private func netWorkNotReachableAction(_ sender:Notification) {
|
||||||
maskNotReachableView.isHidden = false
|
DispatchQueue.main.async {
|
||||||
|
[weak self] in
|
||||||
|
guard let self = self else {return}
|
||||||
|
maskNotReachableView.isHidden = false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
//网络可用时触发
|
//网络可用时触发
|
||||||
@objc private func netWorkReachableAction(_ sender:Notification) {
|
@objc private func netWorkReachableAction(_ sender:Notification) {
|
||||||
maskNotReachableView.isHidden = true
|
DispatchQueue.main.async {
|
||||||
|
[weak self] in
|
||||||
|
guard let self = self else {return}
|
||||||
|
maskNotReachableView.isHidden = true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//调整音乐进度
|
//调整音乐进度
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user