RxSonosLib 0.14.0

RxSonosLib 0.14.0

Stefan Renne 维护。



 
依赖项
RxSwift~> 4.5
RxSSDP~> 5.0
AEXML~> 4.4
 

RxSonosLib 0.14.0

  • Stefan Renne

RxSonosLib

Swift 5.0 Travis Badge Test Coverage Maintainability CocoaPods Version Badge License Badge Platform

一个简化与 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.swiftRoom.swiftTrack.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许可协议发布。