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