TeslaSwift 7.3.0

TeslaSwift 7.3.0

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最新版本2022年4月
SPM支持 SPM

joao21 管理。



TeslaSwift

基于 Tesla JSON API (非官方) 的 Swift 库,用于访问 Tesla API

Swift Build Status TeslaSwift

安装

手册

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)

使用此库的应用程序

找不到您的应用程序?打开一个PR或问题

许可

MIT许可证 (MIT)

版权所有 © 2016 João Nunes

特此授予任何人免费获取此软件及其相关文档副本(以下简称“软件”)的副本(以下简称“软件”),对此软件进行不受限制的处理,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件的副本,并允许将软件提供给项目人,以这样做,前提是遵守以下条件

上述版权声明和此许可声明应包含在软件的所有副本或实质性部分中。

本软件按“原样”提供,没有任何形式的保证,明示或暗示,包括但不限于适销性保证、特定用途适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任承担责任,无论是因为合同、侵权或其他原因,无论该索赔、损害或其他责任源于、源于或与软件或其使用或其他调制解调器有关。