BonnetAlternator 0.1.4

BonnetAlternator 0.1.4

BonnetAlternatorTest维护。



  • Bonnet LTD

BonnetAlternator

Bonnet的Alternator SDK可以作为iOS应用的一个包添加,它提供最优质的公共电动汽车充电体验,设置过程简单。我们提供一个可定制的充电UI,允许您的用户发现并访问欧洲超过200,000个充电点。

入门指南

安装

所需最低iOS版本 -> iOS 14

Swift 包

Swift 包管理器(Swift Package Manager)是一个自动化分发 Swift 代码的工具,并且集成在 swift 编译器中。

一旦您设置了 Swift 包,添加 Bonnet Alternator 作为一个依赖项就像将其添加到您的 Package.swift 中的 dependencies 值一样简单。

dependencies: [
    .package(url: "https://github.com/bonnet-electric/BonnetAlternatoriOS.git", branch: "main")
],

或者,从 Xcode 项目/包依赖中添加依赖项,使用以下 URL,指向 main 分支。

https://github.com/bonnet-electric/BonnetAlternatoriOS.git

NursePods

NursePods 是一个 Cocoa 项目的依赖管理器。有关使用和安装说明,请访问他们的网站。要使用 NursePods 将 Bonnet Alternator 集成到您的 Xcode 项目中,请在您的 Podfile 中指定它。

pod 'BonnetAlternator', :git => 'https://github.com/bonnet-electric/BonnetAlternatoriOS.git', :branch => 'main'

使用

首先,通过在目标文件中调用以下简单方法来导入 SDK:

import BonnetAlternator

这样,您可以使用选择的框架(UIKit 或 SwiftUI)呈现 ChargingUI,如下所示。在两种情况下,ChargingUI 接受 logoImagetokenDelegate 作为参数,分别是您公司的标志(显示在充电 UI 左上角)和从您的服务器检索用户认证令牌的代理。

LogoIcon 如下所示,初始化时接收图像名称和尺寸,其中尺寸定义为图像的宽度,可以是 narrow(默认)或 wide

// Initialisation example
LogoIcon(name: <#T##String#>, size: <#T##Size#>)

// Options for Size enum
enum Size {
    /// Icon sized 34x24
    case narrow
    /// Icon sized 110x24
    case wide
}

环境

在展示充电UI之前,请为交流发电机分配正确的运行环境,即staging(测试)或production(生产)。

BonnetAlternator.setEnvironment(to: <#T##AlternatorEnvironment#>)

建议

  • 如果充电UI始终将从同一位置展示,请将其添加到您UIKit的ViewDidLoad方法中,或在其View的初始化中。
  • 如果充电UI将从不同的位置打开,请在应用启动时分配环境,例如
    • 在您的WindowGroup初始化中,主视图。
    • SceneDelegate中的func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions)
    • AppDelegate中的func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool

iOSkit

如果您使用的是UIKit框架,需要注意的是充电UI是用SwiftUI编写的,这意味着在展示之前视图将被包裹在UIHostingController中。

BonnetAlternator().presentChargingUI(from: <#T##UIViewController#>, logoImage: <#T##LogoIcon?#>, tokenDelegate: <#T##TokenGeneratorDelegate?#>)

示例

class ViewController: UIViewController {
    
    @IBOutlet var alternatorButton: UIButton!
    
    override func viewDidLoad() {
        super.viewDidLoad()
    }
    
    @IBAction func alternatorButtonTapped(_ sender: Any) {
        // Present the alternator view
        BonnetAlternator().presentChargingUI(from: self, tokenDelegate: self)
    }
}

SwiftUI

在使用SwiftUI时,展示是通过修饰符进行的,这意味着可以简单地将充电UI添加到您的视图中,并使用@State<Bool> / @Binding<Bool>变量控制展示状态。

.showChargingUI(<#T##presented: Binding<Bool>##Binding<Bool>#>, logoImageName: <#T##String?#>, tokenDelegate: <#T##TokenGeneratorDelegate?#>)

示例

struct ContentView: View {
    
    @State private var showAlternator: Bool = false
    
    var body: some View {
        VStack(spacing: 16) {
            Image(systemName: "globe")
                .imageScale(.large)
                .foregroundColor(.accentColor)
            Button("Present Bonnet Alternator") {
                self.showAlternator = true
            }
        }
        .padding()
        .showChargingUI($showAlternator, logoImage: .init(name: "bonnet.logo"), tokenDelegate: nil)
    }
}

令牌生成/刷新

使用此SDK,您的用户需要一个认证令牌,该令牌需要在您的服务器上生成,并将传递给SDK以便将其安全地传递给Bonnet的服务器,请参阅认证/授权。为此,您需要一个TokenGeneratorDelegate。此代理需要在展示ChargingUI时分配(请参阅上面的初始化代码示例)。将代理添加到您的视图扩展中,并包含从您的服务器检索令牌所需的功能。

示例

extension MyView: TokenGeneratorDelegate {
    func refreshToken() async throws -> String {
        let token = // Do the call to your server to obtain the Token
        return token
    }
}