NetatmoSwiftSDK 0.0.3

NetatmoSwiftSDK 0.0.3

James Barrow维护。



  • 作者
  • James Barrow

NetatmoSwiftSDK

Swift Platforms SwiftPM Carthage CocoaPods Twitter

NetatmoSwiftSDK 是围绕Netatmo API的 Swift 封装。

目前仍在开发中。以下列出了当前支持的功能列表。

  • 使用 OAuth2 进行身份验证
  • 天气
  • 安全
  • 能源
  • AirCare
  • 错误处理

前提条件

在开始之前,请确保已满足以下要求

安装

Swift 包管理器

要将 NetatmoSwiftSDK 集成到您的 Xcode 项目中,并使用 Swift 包管理器,请在您的 Package.swift 文件的 dependencies 值中添加 NetatmoSwiftSDK 作为依赖项。

dependencies: [
    .package(url: "https://github.com/Baza207/NetatmoSwiftSDK.git", .upToNextMajor(from: "0.0.3"))
]

Carthage

要使用 CarthageNetatmoSwiftSDK 集成到您的 Xcode 项目中,请在您的 Cartfile 中指定它,如下所示

github "Baza207/NetatmoSwiftSDK" "0.0.3"

CocoaPods

要使用 CocoaPodsNetatmoSwiftSDK 集成到您的 Xcode 项目中,请在您的 Podfile 中指定它,如下所示

pod 'NetatmoSwiftSDK', '~> 0.0.3'

Usage

Basic Setup

一旦您在 Netatmo 开发者门户 获取了客户端 ID 和客户端密钥,您还需要在您的 Xcode 项目中创建一个 URI。为此,您可以按照苹果文档中的以下步骤进行 注册您的 URL 方案

获取这些项目后,您可以在您的项目中导入 NetatmoSwiftSDK 框架并设置它以供使用。

  1. 在您的 AppDelegate 中导入 NetatmoSwiftSDK
import NetatmoSwiftSDK
  1. 通过在 application(_:didFinishLaunchingWithOptions:) 中调用 configure(clientId:clientSecret:redirectURI:) 来设置 NetatmoSwiftSDK,并传入从 Netatmo 开发者门户 获取的客户端 ID 和客户端密钥以及您在 Xcode 信息标签中设置的 URI。
NetatmoManager.configure(clientId: "<Client ID>", clientSecret: "<Client Secret>", redirectURI: "<Redirect URI>://auth")
  1. 要处理身份验证回调,您需要处理 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 中调用。

认证

完成基本设置后,您现在可以验证用户身份。

  1. 监听认证状态变化
listener = NetatmoManager.addAuthStateDidChangeListener { (authState) in
    // Handle state change
}

您应该跟踪监听器,以便在不使用时可以删除它,如下所示

if let listener = self.listener {
    NetatmoManager.removeAuthStateDidChangeListener(with: listener)
}
  1. 开始监听认证状态后,现在您可以使用URL让用户登录并使用SafariViewControlleropen(_: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找到。

  1. 当用户返回到应用后,认证状态将会变化并触发监听器。从这里,您就可以使用所有的NetatmoWeatherNetatmoSecurityNetatmoEnergyNetatmoAircare函数。

  2. NetatmoSwiftSDK会在应用启动之间跟踪用户的认证状态并在必要时刷新令牌。但是,为了注销用户并清空密钥库,请调用以下代码

do {
    try NetatmoManager.logout()
} catch {
    // Handle error
}

高级认证设置

有关如何设置认证的更详细说明,请参阅文档目录中的认证设置

测试

有关执行测试的更多详细信息,请参阅文档目录中的测试

贡献者

James Barrow

许可

MIT 许可证