ios-hybridloc-sdk

关于

Hybridloc 软件开发工具包 (SDK) 使 Wanzl Hybridloc 功能能够无缝集成到您现有的应用程序中。该 SDK 与后端通信,以获取通过 NFC 解锁 Hybridloc 所需的密钥。此 SDK 旨在管理大部分工作负载,从而简化您的实施步骤。

兼容性

该 SDK 需要最低 iOS 14 版本。

安装

该 SDK 支持通过 Swift Package Manager (SPM) 或 Cocoapods 集成到项目中。推荐使用 SPM。

Swift Package Manager (SPM)

通过 Package.swift 文件或 Xcode 菜单“File”/“Add Package Dependencies...”将以下依赖项 URL 添加到您的项目中:https://github.com/wanzl-gmbh/ios-hybridloc-sdk

Cocoapods

pod 'HybridlocSDK' 添加到您的 Podfile 中。

使用方法

重要提示

SDK 需要

警告

SDK-API 不是线程安全的。请从一个线程(最好是主线程)中使用它。

警告

请注意,凭据(clientId 和 clientSecret)是用于向后端进行身份验证的敏感数据。我们建议不要像以下代码示例中那样将它们静态存储在应用程序的代码中,而是部署一些隐藏/混淆方法。最佳实践是在首次应用程序启动后动态下载它们,例如通过按需资源(请参阅 博客文章)。请务必安全地存储它们,以防止不必要的访问。如果我们检测到这些凭据被滥用,它们将被立即撤销。

重要提示

只允许存在一个 HybridlocClient 的活动实例。请重复使用已创建的实例,而不是创建新实例,或者考虑事先取消初始化已创建的实例。还要确保不在您的代码和此类的实例之间建立保留环。在初始化此类的新实例之前,请务必对旧实例调用 cancelLockOpening()。否则旧实例可能会泄漏!

创建 HyblidlocClient 对象

SDK 可以使用公共初始化器进行初始化。初始化器需要以下参数

注意

clientId、clientSecret 和 userId 由 Wanzl 提供给您。如果您还没有任何凭据,请与您在 Wanzl 的联系人联系。

示例

private var sdkInstance = try? HybridlocClient.init(
    clientId: "123456",
    clientSecret: "123456",
    userId: "sdk_user",
    nfcAlertMessages: .init(
        initial: "Unlocking Hybridloc",
        success: "Hybridloc unlocked",
        error: "Unlocking failed, please try again"
    )
)

获取密钥

重要提示

SDK 一次仅支持调用一次“loadDigitalKeys()”或“openLock()”。请确保在一个函数正在运行时不要调用相同或另一个函数。(如果确实发生这种情况,该函数将返回“processAlreadyRunning”错误。)

此函数从后端检索数字密钥并将它们本地存储。打开锁取决于您的本地存储中是否具有最新的密钥,否则您可能无法打开锁。

提示

我们建议在每次应用程序启动时加载密钥,以便始终使用最新的密钥进行更新,而不会产生过多的网络流量。

示例

let result = await sdkInstance.loadDigitalKeys()
switch result {
case .success(()):
    ...
case .failure(let error):
    ...
}

启动锁打开过程

重要提示

SDK 一次仅支持调用一次“loadDigitalKeys()”或“openLock()”。请确保在一个函数正在运行时不要调用相同或另一个函数。(如果确实发生这种情况,该函数将返回“processAlreadyRunning”错误。)

该函数启动 NFC 扫描,并在找到兼容标签时写入解锁命令。

如果未存储密钥或密钥已过期,此方法可以触发 loadDigitalKeys()。请注意,通过使用此功能,可能会发生有人在密钥被获取之前尝试打开锁的情况。我们建议事先使用 loadDigitalKeys() 加载密钥,以获得流畅的用户体验。

返回后,NFC 会话将被清理。

示例

let result = await sdkInstance.openLock()
switch result {
case .success(()):
    ...
case .failure(let error):
    ...
}

取消锁打开过程

此函数可用于停止 NFC 标签监听。如果调用 cancelLockOpening()openLock() 将返回失败,并显示类型为“cancelled”的 HybridlocClientError

示例

sdkInstance.cancelLockOpening()

许可证

本软件根据 MIT 许可证提供。

反馈

请联系 info@wanzl.de