SwiftyMusic 4.5.0

SwiftyMusic 4.5.0

测试已测试
Lang语言 SwiftSwift
许可证 MIT
Released最后发布2022年5月
SPM支持 SPM

Dominik Ringler 维护。



  • 作者
  • Dominik Ringler

SwiftyMusic

Swift 5.0 Platform SPM supported CocoaPods Compatible

使用 AVFoundation 处理音乐播放的 Swift 辅助工具。

要求

  • iOS 11.4+
  • Swift 5.0+

安装

Cocoa Pods

Cocoa Pods 是 Cocoa 项目的依赖管理器。只需将以下行添加到您的 pod 文件中即可安装 pod。

pod 'SwiftyMusic'

Swift 包管理器

Swift 包管理器是一个用于自动化分发 Swift 代码的工具,并与 Swift 编译器集成。

要将 Swift 包添加到项目中,只需在 Xcode 中打开您的项目,然后点击 File > Swift Packages > Add Package Dependency。然后输入 https://github.com/crashoverride777/swifty-music.git 作为存储库 URL,并完成设置向导。

或者,如果您有一个需要添加 SwiftyMusic 作为依赖项的 Swift 包,只需将其添加到 Package.swift 的 dependencies 值即可。

dependencies: [
    .package(url: "https://github.com/crashoverride777/swifty-music.git", from: "4.4.0")
]

手工方式

或者,您可以将 Sources 文件夹及其包含的文件拖放到您的项目中。

用法

  • 将音乐轨道添加到您的项目中。

SwiftyMusic 支持以下文件格式:mp3, wav, aac, ac3, m4a, caf

  • 如果您通过 CocoaPods 或 Swift 包管理器安装,请将导入语句添加到您的 .swift 文件中。
import SwiftyMusic 
  • 在任何地方创建 SwiftyMusicFileName 的扩展,以便添加您将要使用的音乐文件名。这些名称必须与实际的音乐文件名相同。
extension SwiftyMusicFileName {
    static let menu = SwiftyMusicFileName("MenuMusic")
    static let game = SwiftyMusicFileName("GameMusic")
    
    static var all: [SwiftyMusicFileName] = [.menu, .game]
}
  • 然后,在应用启动时立即设置帮助器。
SwiftyMusic.shared.setup(withFileNames: SwiftyMusicFileName.all)
  • 要播放音乐,请调用具有您上面创建的对应音乐 URL 的 play 方法。这将自动暂停之前播放的音乐。
SwiftyMusic.shared.play(.menu)
SwiftyMusic.shared.play(.game)
  • 暂停音乐
SwiftyMusic.shared.pause()
  • 恢复暂停的音乐
SwiftyMusic.shared.resume()
  • 调整音量
SwiftyMusic.shared.setVolume(to: 0.5)
  • 停止并重置所有音乐播放器
SwiftyMusic.shared.reset()
  • 静音
SwiftyMusic.shared.setMuted(true)

if SwiftyMusic.shared.isMuted {
    // music is muted, show unmute button
} else {
    // music not muted, show mute button
}

测试

要测试 SwiftyMusic 的类,您可以注入 SwiftyMusicType 协议

class SomeClass {
    private let swiftyMusic: SwiftyMusicType
    
    init(swiftyMusic: SwiftyMusicType = SwiftyMusic.shared) {
        self.swiftyMusic = swiftyMusic
    }
}

并提供测试时的模拟实现。

class MockSwiftyMusic { }
extension MockSwiftyMusic: SwiftyMusicType { ... }

class SomeClassTests {
    func test() {
        let sut = SomeClass(swiftyMusic: MockSwiftyMusic())
    }
}