RxSonosLib
一个简化与 Sonos 设备交互的 Swift 库
特性
- 获取当前网络上 SSDP 设备
- 将 SSDP 设备映射到 Sonos 房间
- 将 Sonos 房间映射到 Sonos 组 + 更新
- 获取每个房间正在播放的曲目(支持 Spotify,Tunein,图书馆 & TV)+ 更新
- 下载曲目图像
- 获取组进度 + 更新
- 获取组队列
- 将曲目添加到组队列
- 从组队列中删除曲目
- 设置上一曲/下一曲组队列曲目
- 设置播放/暂停/停止当前曲目
- 获取组音量
- 设置组音量
- 缓存家庭
平台
- iOS
- MacOS
- tvOS
- WatchOS
此库需要 Swift 5.0 & RxSwift。
背景信息
此项目最初是作为一个更好地理解 Sonos 的方式开始的。这个版本的目的是帮助我提升我的 RxSwift 知识。
Cocoapods
pod 'RxSonosLib', '~> 0.14'
用法
检查SonosInteractor.swift这个类是进入库的入口。
从这里开始,继续使用匹配模型中指定的观察者函数,如Group.swift,Room.swift和Track.swift
示例
SonosInteractor
.getActiveGroup()
.getQueue()
.subscribe(onNext: { (queue) in
print("queue: onNext")
}, onError: { (error) in
print("queue: \(error.localizedDescription)")
}, onCompleted: {
print("queue: onCompleted")
}).disposed(by: disposeBag)
框架入口点
从SonosInteractor中的静态函数开始
open class SonosInteractor {
static func setActive(group: Group)
static func getActiveGroup() -> Observable<Group>
static func getAllGroups() -> Observable<[Group]>
static func getAllMusicProviders() -> Single<[MusicProvider]>
}
观察者链方法
接着使用一个或多个链式方法。
针对可观察群组的函数
extension ObservableType where E == Group {
func getRooms() -> Observable<[Room]>
func getTrack() -> Observable<Track?>
func getImage() -> Observable<Data?>
func getProgress() -> Observable<GroupProgress>
func getQueue() -> Observable<[Track]>
func getTransportState() -> Observable<(TransportState, MusicService)>
func set(transportState: TransportState) -> Observable<TransportState>
func getVolume() -> Observable<Int>
func set(volume: Int) -> Completable
func setNextTrack() -> Completable
func setPreviousTrack() -> Completable
func getMute() -> Observable<[Bool]>
func set(mute enabled: Bool) -> Completable
}
针对可观察音轨的函数
extension ObservableType where E == Track {
func getImage() -> Observable<Data?>
}
针对带有房间列表的可观察数组的函数
extension ObservableType where E == [Room] {
func getMute() -> Observable<[Bool]>
func set(mute enabled: Bool) -> Completable
}
针对可观察房间的函数
extension ObservableType where E == Room {
func getMute() -> Observable<Bool>
func set(mute enabled: Bool) -> Completable
}
修改设置
检查SonosSettings.swift这个类包含所有可定制的设置。
更多示例?
克隆仓库,打开xcworkspace
并构建演示项目
开发信息
请在单元测试中记录代码更改,并确保所有测试都是绿色的。
许可协议
本项目采用Apache-2.0许可协议发布。