AHAudioPlayer 0.1.71

AHAudioPlayer 0.1.71

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最后发布2017年10月
SwiftSwift 版本3.0
SPM支持 SPM

Andy Tong 维护。



  • 作者:
  • ivsall2012

AHAudioPlayer

使用方法

播放

let url = URL(string: "https://mp3l.jamendo.com/?trackid=887202&format=mp31&from=app-devsite")
AHAudioPlayerManager.shared.play(trackId: 0, trackURL: url!)

对与 UI 相关组件的活跃监控

let timer = Timer(timeInterval: 0.1, target: self, selector: #selector(updatePlayer), userInfo: nil, repeats: true)
RunLoop.main.add(timer!, forMode: .commonModes)

func updatePlayer() {
let loadedProgress = CGFloat(AHAudioPlayerManager.shared.loadedProgress)
let progress = AHAudioPlayerManager.shared.progress
let currentTime = AHAudioPlayerManager.shared.currentTimePretty
let duration = AHAudioPlayerManager.shared.durationPretty
let speedStr = AHAudioPlayerManager.shared.rate.rawValue > 0 ? "\(AHAudioPlayerManager.shared.rate.rawValue)x" : "1.0x"
}

被动监控

A. 使用代理来更新本地数据库和为后台模式抓取数据

/// Update every 10s after the track startd to play.
func playerManger(_ manager: AHAudioPlayerManager, updateForTrackId trackId: Int, duration: TimeInterval)

/// Update every 10s after the track startd to play, additionally when paused, resume, and right before stop.
func playerManger(_ manager: AHAudioPlayerManager, updateForTrackId trackId: Int, playedProgress: TimeInterval)

///###### The following five are for audio background mode
/// Return a dict should include ['trackId': Int, 'trackURL': URL]. Return [:] if there's none or network is broken.
func playerMangerGetPreviousTrackInfo(_ manager: AHAudioPlayerManager, currentTrackId: Int) -> [String: Any]

/// Return a dict should include ['trackId': Int, 'trackURL': URL]. Return [:] if there's none or network is broken.
func playerMangerGetNextTrackInfo(_ manager: AHAudioPlayerManager, currentTrackId: Int) -> [String: Any]

func playerMangerGetTrackTitle(_ player: AHAudioPlayerManager, trackId: Int) -> String?

func playerMangerGetAlbumTitle(_ player: AHAudioPlayerManager, trackId: Int) -> String?

func playerMangerGetAlbumCover(_ player: AHAudioPlayerManager,trackId: Int, _ callback: @escaping(_ coverImage: UIImage?)->Void)
///######

B. 使用通知来让特定 UI 组件对 playerManger 发出的事件做出反应

public let AHAudioPlayerDidStartToPlay = Notification.Name("AHAudioPlayerDidStartToPlay")

public let AHAudioPlayerDidChangeState = Notification.Name("AHAudioPlayerDidChangeState")

/// Sent every time a track is being played
public let AHAudioPlayerDidSwitchPlay = Notification.Name("AHAudioPlayerDidSwitchPlay")

public let AHAudioPlayerDidReachEnd = Notification.Name("AHAudioPlayerDidReachEnd")

public let AHAudioPlayerFailedToReachEnd = Notification.Name("AHAudioPlayerFailedToReachEnd")

示例

要运行示例项目,请克隆仓库,然后首先从示例目录运行 pod install

需求

iOS 8.0+

安装

AHAudioPlayer 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中:

pod "AHAudioPlayer"

作者

Andy Tong, [email protected]

许可证

AHAudioPlayer 在 MIT 许可下提供。有关更多信息,请参阅 LICENSE 文件。