NetatmoSwiftSDK
NetatmoSwiftSDK 是围绕Netatmo API的 Swift 封装。
目前仍在开发中。以下列出了当前支持的功能列表。
- 使用 OAuth2 进行身份验证
- 天气
- 安全
- 能源
- AirCare
- 错误处理
前提条件
在开始之前,请确保已满足以下要求
- 在:https://dev.netatmo.com 创建 Netatmo 开发者账户
- 在:https://dev.netatmo.com/apps/ 创建 Netatmo 应用并生成客户端 ID 和客户端密钥进行身份验证
- 按照用法中的说明开始将 NetatmoSwiftSDK 添加到您的应用。
安装
Swift 包管理器
要将 NetatmoSwiftSDK
集成到您的 Xcode 项目中,并使用 Swift 包管理器,请在您的 Package.swift
文件的 dependencies
值中添加 NetatmoSwiftSDK
作为依赖项。
dependencies: [
.package(url: "https://github.com/Baza207/NetatmoSwiftSDK.git", .upToNextMajor(from: "0.0.3"))
]
Carthage
要使用 Carthage 将 NetatmoSwiftSDK
集成到您的 Xcode 项目中,请在您的 Cartfile
中指定它,如下所示
github "Baza207/NetatmoSwiftSDK" "0.0.3"
CocoaPods
要使用 CocoaPods 将 NetatmoSwiftSDK
集成到您的 Xcode 项目中,请在您的 Podfile
中指定它,如下所示
pod 'NetatmoSwiftSDK', '~> 0.0.3'
Usage
Basic Setup
一旦您在 Netatmo 开发者门户 获取了客户端 ID 和客户端密钥,您还需要在您的 Xcode 项目中创建一个 URI。为此,您可以按照苹果文档中的以下步骤进行 注册您的 URL 方案。
获取这些项目后,您可以在您的项目中导入 NetatmoSwiftSDK
框架并设置它以供使用。
- 在您的
AppDelegate
中导入NetatmoSwiftSDK
import NetatmoSwiftSDK
- 通过在
application(_:didFinishLaunchingWithOptions:)
中调用configure(clientId:clientSecret:redirectURI:)
来设置NetatmoSwiftSDK
,并传入从 Netatmo 开发者门户 获取的客户端 ID 和客户端密钥以及您在 Xcode 信息标签中设置的 URI。
NetatmoManager.configure(clientId: "<Client ID>", clientSecret: "<Client Secret>", redirectURI: "<Redirect URI>://auth")
- 要处理身份验证回调,您需要处理 URL 回调。
如果您使用的是 SceneDelegate
,则使用以下方法
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
guard let url = URLContexts.first?.url else {
NSLog("No valid URL contexts")
return
}
if url.scheme == "<Redirect URI>" && url.host == "auth" else {
NetatmoManager.authorizationCallback(with: url)
} else {
NSLog("No matching URL contexts")
}
}
否则,在您的 AppDelegate
中使用此方法
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
if url.scheme == "<Redirect URI>" && url.host == "auth" else {
NetatmoManager.authorizationCallback(with: url)
return true
}
NSLog("No matching URL contexts")
return false
}
注意:如果您的应用程序支持 UIWindowSceneDelegate
,则 URL 回调将不会在您的 UIApplicationDelegate
中调用。
认证
完成基本设置后,您现在可以验证用户身份。
- 监听认证状态变化
listener = NetatmoManager.addAuthStateDidChangeListener { (authState) in
// Handle state change
}
您应该跟踪监听器
,以便在不使用时可以删除它,如下所示
if let listener = self.listener {
NetatmoManager.removeAuthStateDidChangeListener(with: listener)
}
- 开始监听认证状态后,现在您可以使用URL让用户登录并使用
SafariViewController
或open(_:options:completionHandler:)
将其展示。
let url: URL
do {
url = try NetatmoManager.authorizeURL(scope: [.readStation])
} catch {
// Handle error
return
}
UIApplication.shared.open(url, options: [:], completionHandler: nil)
注意:请确保传递正确的范围以进行您想要发起的请求。每个请求都会说明它需要什么范围,否则您可以在https://dev.netatmo.com找到。
-
当用户返回到应用后,认证状态将会变化并触发监听器。从这里,您就可以使用所有的
NetatmoWeather
、NetatmoSecurity
、NetatmoEnergy
和NetatmoAircare
函数。 -
NetatmoSwiftSDK
会在应用启动之间跟踪用户的认证状态并在必要时刷新令牌。但是,为了注销用户并清空密钥库,请调用以下代码
do {
try NetatmoManager.logout()
} catch {
// Handle error
}
高级认证设置
有关如何设置认证的更详细说明,请参阅文档目录中的认证设置。
测试
有关执行测试的更多详细信息,请参阅文档目录中的测试。