你可以使用 Swift Package Manager (Swift 包管理器) 将 FootprintSwift 添加到你项目的 Package.swift 文件中来安装它
import PackageDescription
let package = Package(
name: "YourProject",
dependencies: [
.package(url: "https://github.com/onefootprint/footprint-swift", from: "0.0.1")
],
targets: [
.target(
name: "YourTarget",
dependencies: ["FootprintSwift"])
]
)
要使用 CocoaPods 将 FootprintSwift 集成到你的 Xcode 项目中,请在你的 Podfile 文件中指定它
pod 'FootprintSwift'
有两种方法可以利用 FootprintSwift
你首先需要导入它,然后按照以下示例中的说明进行配置。
import FootprintSwift
let config = FootprintConfiguration(
publicKey: "yourPublicKey",
scheme: "yourScheme",
onCancel: {
// Handle dismiss
},
onComplete: { validationToken in
// Handle completion with validation token
}
)
Footprint.initialize(with: config)
初始化之后,将出现一个 Webview (网页视图),它将引导用户完成 playbook 中定义的常规流程。
通过这种方法,你可以更好地控制流程以及如何为用户呈现 UI。
import FootprintSwift
try await FootprintProvider.shared.initialize(
configKey: "yourPublicKey"
)
以上是最简单的入门方法,你可以查看 initialize 方法以了解它接受的其他参数。
现在你可以使用函数创建电子邮件或电话验证,而不是依赖 Webview (网页视图)。
import FootprintSwift
try await FootprintProvider.shared.createEmailPhoneBasedChallenge(
email: 'lorem@onefootprint.com',
phoneNumber: '+15555550100'
)
使用 verify 函数,通过传递验证码作为参数来完成挑战。
import FootprintSwift
try await FootprintProvider.shared.verify(verificationCode: code)
顾名思义,这是将用户数据持久保存在我们 vault 中的方法。
import FootprintSwift
let vaultData = VaultData(
idAddressLine1: addressLine1,
idAddressLine2: addressLine2,
idCity: city,
idCountry: country,
idDob: dobString,
idFirstName: firstName,
idLastName: lastName,
idMiddleName: middleName,
idSsn9: ssn,
idState: state,
idZip: zipCode
)
try await FootprintProvider.shared.vault(vaultData: vaultData)
如果在 OTP 之后任何时候,你需要访问 vault 数据,你可以通过以下方式进行操作:
import FootprintSwift
let vaultData = try await FootprintProvider.shared.getVaultData()
注意:
FootprintProvider.shared.verify
也返回 vaultData,
除了依赖 handoff 和重新打开 Webview (网页视图) 之外,我们可以通过一个简单的函数来实现这一点。但是,在某些情况下,我们需要回退到 handoff (Webview)。
import FootprintSwift
do {
let response = try await FootprintProvider.shared.process()
} catch {
if let footprintError = error as? FootprintError,
footprintError.domain == FootprintErrorDomain.process.rawValue {
do {
try await FootprintProvider.shared.handoff(
onCancel: {
print("Handoff was canceled by the user")
},
onComplete: { validationToken in
print("Handoff completed successfully with token: \(validationToken)")
},
onError: { error in
print("Error occurred during handoff: \(error)")
}
)
}
FootprintSwift 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。