TeslaSwift
基于 Tesla JSON API (非官方) 的 Swift 库,用于访问 Tesla API
安装
手册
将 Sources
文件夹复制到您的项目中
CocoaPods
如果您不需要任何扩展,使用此行
pod 'TeslaSwift', '~> 7'
如果需要 PromiseKit 扩展,使用此行
pod 'TeslaSwift/PromiseKit', '~> 7'
如果需要 Combine 扩展,使用此行
pod 'TeslaSwift/Combine', '~> 7'
如果需要 Rx 扩展,使用此行
pod 'TeslaSwift/Rx', '~> 7'
流扩展
pod 'TeslaSwift/Streaming', '~> 7'
如果您需要用于流的组合扩展,请使用此行
pod 'TeslaSwift/StreamingCombine', '~> 7'
如果您需要用于流的 Rx 扩展,请使用此行
pod 'TeslaSwift/StreamingRx', '~> 7'
Swift 包管理器
您可以使用 Swift 包管理器 并在 Package.swift
中指定一个依赖项,方法是添加此行或将依赖项添加到 Xcode
.Package(url: "https://github.com/jonasman/TeslaSwift.git", majorVersion: 7)
还有用于 Combine TeslaSwiftCombine
、PromiseKit TeslaSwiftPMK
和 Rx TeslaSwiftRx
的扩展。流的扩展是:TeslaSwiftStreaming
、Combine TeslaSwiftStreamingCombine
和 Rx TeslaSwiftStreamingRx
用法
Tesla 的服务器与 ATS 不兼容,因此您需要在应用的 Info.plist 中添加以下内容
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
导入模块
import TeslaSwift
如有需要,添加扩展模块(使用上一行)
import TeslaSwiftPMK
import TeslaSwiftCombine
import TeslaSwiftRx
使用 Web OAuth2 流,带有 MFA 支持进行您的 MyTesla 凭证身份验证
let api = TeslaSwift()
let authViewControler = api.authenticate() {
(result: Result<AuthToken, Error>) in
switch result {
case .success(let token):
// Logged in
case .failure(let error):
// Failed
}
}
guard let safeWebLoginViewController = authViewControler else { /* error */ return }
present(safeWebLoginViewController, animated: true, completion: nil)
令牌重用
认证后,将 AuthToken 存储在安全的地方。下次启动应用程序时,您可以重用此令牌
let api = TeslaSwift()
api.reuse(token: previousToken)
车辆数据
如何使用 promiseKit 获取车辆列表的示例
class ViewController {
func showCars() {
api.getVehicles()
.done { (response) in
self.data = response
self.tableView.reloadData()
}.catch { (error) in
//Process error
}
}
流式传输
导入模块
import TeslaSwiftStreaming
如有需要,可导入扩展模块(与前一行相同)
import TeslaSwiftStreamingCombine
import TeslaSwiftStreamingRx
class ViewController {
func showStream() {
stream = TeslaStreaming(teslaSwift: api)
stream.openStream(vehicle: myVehicle, dataReceived: {
(event: TeslaStreamEvent) in
switch event {
case .open:
case .event(let streamEvent):
self.data.append(streamEvent)
self.tableView.reloadData()
case .error(let error):
//Process error
case .disconnet:
break
}
})
// After some events...
stream.closeStream()
}
}
编码器和解码器
如果需要JSON编码器和解码器,库已提供这些工具,并已配置以配合Tesla的JSON格式使用
public let teslaJSONEncoder: JSONEncoder
public let teslaJSONDecoder: JSONDecoder
选项
您可以通过设置api.useMockServer = true
来使用模拟服务器
您可以通过设置api.debuggingEnabled = true
来启用调试
其他功能
认证完成后,库将管理访问令牌。当令牌过期时,库将使用刷新令牌请求新的令牌。
推荐
如果您想购买Tesla或注册邮件列表,作为对库的一种“感谢”,请使用我的推荐码:[http://ts.la/joao290](http://ts.la/joao290)
使用此库的应用程序
- 特斯拉应用程序([https://itunes.apple.com/us/app/key-for-tesla/id1202595802?mt=8](https://itunes.apple.com/us/app/key-for-tesla/id1202595802?mt=8))
- 特斯拉露营车 (https://itunes.apple.com/us/app/camper-for-tesla/id1227483065?mt=8)
- 特斯拉动力 (https://itunes.apple.com/us/app/power-for-tesla/id1194710823?mt=8)
- Plus - 适用于特斯拉Model S & X (https://itunes.apple.com/us/app/plus-for-tesla-model-s-x/id1187829197?mt=8)
- 尼古拉入特斯拉 (https://itunes.apple.com/us/app/nikola-for-tesla/id1244489779?mt=8)
- Charged - 适用于特斯拉 (https://getcharged.app/)
- TeSlate (https://infinytum.co/)
- 特斯拉伴侣 - oAuth - (https://teslacompanion.app)
- 特斯拉飞行员日志 (https://itunes.apple.com/us/app/pilot-log-for-Tesla/id1564398488?mt=8)
- 电动汽车伴侣 (https://itunes.apple.com/us/app/ev-companion/id1574209459?mt=8)
- S3XY遥控器 (https://kenmaz.net/tesla-app/)
找不到您的应用程序?打开一个PR或问题
许可
MIT许可证 (MIT)
版权所有 © 2016 João Nunes
特此授予任何人免费获取此软件及其相关文档副本(以下简称“软件”)的副本(以下简称“软件”),对此软件进行不受限制的处理,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件的副本,并允许将软件提供给项目人,以这样做,前提是遵守以下条件
上述版权声明和此许可声明应包含在软件的所有副本或实质性部分中。
本软件按“原样”提供,没有任何形式的保证,明示或暗示,包括但不限于适销性保证、特定用途适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任承担责任,无论是因为合同、侵权或其他原因,无论该索赔、损害或其他责任源于、源于或与软件或其使用或其他调制解调器有关。