CoinbaseSocketSwift
特性
- 不绑定 WebSocket 库(可以使用您喜欢的任何库!示例使用 Starscream)
- 代码库最小的 Swift 代码,所有 JSON 解析都由内部处理
- 所有输出和输入通道 JSON 的对象
- 在订阅通道时可选自动请求签名
在您使用此库之前,请先查阅 Coinbase Pro 官方文档
此库受到了 GDAXSwift 的启发,并且是 GDAXSocketSwift 的延续。
要求
- iOS 8.1+ / macOS 10.13+ / tvOS 9.0+ / watchOS 4.0+
- Xcode 9.0+
- Swift 4.0+
安装
CoinbaseSocketSwift 通过 CocoaPods 提供使用。查看 cocoapods.org 上的 入门 标签页以了解更多信息。
要安装 CoinbaseSocketSwift,只需将以下行添加到 Podfile 中
pod 'CoinbaseSocketSwift'
然后运行
pod install
使用
导入
首先导入框架。请参阅上面的安装说明,了解如何使用 CocoaPods 将框架添加到您的项目中。
import CoinbaseSocketSwift
初始化
使用可用初始化器创建 CoinbaseSocketClient
的一个实例。注意,最好使用属性,这样在设置之后不会被立即回收。
如果想要接收经过身份验证的消息,apiKey
、secret64
和 passphrase
参数是可选的。有关身份验证 WebSocket 消息的更多详细信息,请参阅 Coinbase Pro 官方文档。
socketClient = CoinbaseSocketClient(apiKey: "apiKey", secret64: "secret64", passphrase: "passphrase")
设置 WebSocket
CoinbaseSocketSwift 设计为与任何 WebSocket 库一起使用。因此,一个符合 CoinbaseWebSocketClient
协议的类必须传递给 CoinbaseSocketClient
。CoinbaseSocketClient
保留对这个 socket 类的强引用,并处理连接、断开连接、接收消息和连接状态。请查看示例项目,了解如何使用 Starscream 来完成此操作。
socketClient.webSocket = ExampleWebSocketClient(url: URL(string: CoinbaseSocketClient.baseProAPIURLString)!)
设置日志记录器(可选)
如果您想查看 CoinbaseSocketSwift 的日志,可以可选地传递一个符合 CoinbaseSocketClientLogger
协议的类。提供了一个示例 CoinbaseSocketClientDefaultLogger
,其中包含了基本日志记录的示例。
socketClient?.logger = CoinbaseSocketClientDefaultLogger()
配置代理人
最后,设置一个类来接收代理调用。
socketClient?.delegate = self
然后,可以创建一个扩展并实现代理方法。代理方法是可选的(通过空默认实现)。
extension ViewController: CoinbaseSocketClientDelegate {
func coinbaseSocketDidConnect(socket: CoinbaseSocketClient) {
socket.subscribe(channels:[.ticker], productIds:[.BTCUSD])
}
func coinbaseSocketDidDisconnect(socket: CoinbaseSocketClient, error: Error?) {
}
func coinbaseSocketClientOnErrorMessage(socket: CoinbaseSocketClient, error: ErrorMessage) {
print(error.message)
}
func coinbaseSocketClientOnTicker(socket: CoinbaseSocketClient, ticker: TickerMessage) {
let formattedPrice = priceFormatter.string(from: ticker.price as NSNumber) ?? "0.0000"
self.tickerLabel.text = ticker.type.rawValue
self.priceLabel.text = "Price = " + formattedPrice
self.productIdLabel.text = ticker.productId.rawValue
if let time = ticker.time {
self.timeLabel.text = timeFormatter.string(from: time)
} else {
self.timeLabel.text = timeFormatter.string(from: Date())
}
}
}
示例
要运行示例项目,首先克隆仓库,并从示例目录运行pod install
。
待办事项
- 测试...
作者
许可
CoinbaseSocketSwift 在MIT许可证下提供。有关更多信息,请参阅LICENSE文件。
捐赠
使用此赚钱?通过捐赠来支持开源。
比特币: 1EkkFgBZp4jN21b6N85ZWDmxMohytt9L2Z