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 接受 logoImage
和 tokenDelegate
作为参数,分别是您公司的标志(显示在充电 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
}
}