Niu-Scooter API 的 Swift API 包装器

NiuAPI

这是Niu-ScooterSwift API的 API 包装器它基于协议并为每种类型提供。变量名称是 API 中的名称。Codablestructs

小牛是一个生产电动滑板车🛵的品牌。网站

这个包没有完全涵盖整个 API。但是,它应该涵盖您可能感兴趣的最常用功能。

如果您遗漏了某些东西或某些东西不起作用,请随时写一个问题或打开一个拉取请求。

如何使用这个包

所有 API 函数都是NiuAPI枚举上的静态方法。

您应该首先登录以获取访问令牌。在此示例中,我们将使用电话号码 (+49 151 1234567) 登录。您也可以使用您的用户名或电子邮件。无论您使用什么进行注册。密码必须是您的明文密码。它将在登录函数中进行 md5 哈希处理。然后只有哈希将被发送到服务器。

let myAccount = "1511234567" // Do not add the country code at the beginning
let password = "mySuperSecretPassword"
let countryCode = 49 // The country code as in phone numbers. Without leadings zeros. In our example it is 49 for Germany 

let loginData = try await NiuAPI.login(with: account, password: password, countryCode: countryCode)

let accessToken = loginData.token.access_token
let refreshToken = loginData.token.refresh_token 

对于大多数 API 函数,您需要提供您想要获取其信息的车辆的序列号。您可以获得登录用户的所有车辆列表,如下所示:

let userVehicles = try await NiuAPI.vehicles(forUserWith: accessToken)
let myScooter = userVehicles[0]
let scooterSerialNumber = myScooter.sn 

这是您获取车辆状态的方法:

let motorInfo = try await NiuAPI.motorInfo(forVehicleWith: scooterSerialNumber, accessToken: accessToken)
let isCharging = motorInfo.isCharging == 1
let estimatedMileage = motorInfo.estimatedMileage // This is in km
let chargingLevelBatteryA = motorInfo.batteries.compartmentA.batteryCharging // In percentage
let chargingLevelBatteryB = motorInfo.batteries.compartmentB.batteryCharging // In percentage
let currentVehiclePosition = motorInfo.postion.location 

您可以通过以下方式获取最后 2 首曲目和有关最后一首曲目的详细信息:

let trackList = try await NiuAPI.tracks(forVehicleWith: scooterSerialNumber, take: 2, skip: 0, accessToken: accessToken)

let lastTrackId = trackList.last!.trackId
let lastTrackDate = trackList.last!.date
let detailsLastTrack = try await NiuAPI.detailTrack(forVehicleWith: scooterSerialNumber,
                                                    trackId: lastTrackId,
                                                    trackDate: lastTrackDate,
                                                    accessToken: accessToken)

您还可以检查测试以进一步使用 API,或者自己探索这个包。

测试

测试应涵盖所有 API 调用。您需要提供您的Account InfosAccess infos测试所有调用。

GitHub

查看 Github