iOS示例应用
此应用程序是一个概念验证,旨在演示(模拟)Salt Edge API与移动客户端之间的通信。
要求
- iOS 12.0+ / macOS 10.13+
- Swift 5+
Salt Edge iOS / macOS Swift SDK
一些类可以帮助您从iOS / macOS应用程序中与Salt Edge API交互。最新的SDK版本(3+)支持Salt Edge API v5。
需求
- iOS 10.0+ / macOS 10.13+
- Swift 5+
通过 CocoaPods 安装
Podfile
将 pod 添加到您的 用于 Salt Edge API v5
pod 'SaltEdge-iOS-Swift', '~> 3.5.0'
用于 Salt Edge API v4 (已弃用)
pod 'SaltEdge-iOS-Swift', '~> 1.1.2'
安装 pod
$ pod install
将 SDK 导入到您的应用
import SaltEdge
初始化 SDK
替换 appId
和 appSecret
。
要设置 Salt Edge API,在 AppDelegate.swift
中调用
SERequestManager.shared.set(appId: appId, appSecret: appSecret)
注意:您可以在 秘密 页面上找到您的 appId
和 appSecret
(仅适用于 Salt Edge API)。customerId
是新客户的唯一标识符。
SERequestManager
一个用于与 Salt Edge API 交互和查询的类,具有方便的方法来获取实体(连接、交易、账户等),请求通过 SEWebView
创建、重新连接和刷新连接的连接 URL,以及通过 REST API 创建连接。
通过 SERequestManager
成功请求返回 SEResponse
,其中包含 data
和 meta
。
失败的请求返回标准的 Swift Error
。
使用管理器与提供的 API 交互
let connectionParams = SEConnectionParams(
consent: SEConsent(scopes: ["account_details", "transactions_details"]),
countryCode: "XF",
providerCode: "fakebank_simple_xf",
credentials: ["login": "username", "password": "secret"]
)
SERequestManager.shared.createConnection(with: connectionParams) { response in
switch response {
case .success(let value):
// value.data is a valid SEConnection
case .failure(let error):
// Handle error
}
}
获取客户密钥
要访问 Salt Edge SDK 功能,需要获取客户密钥。要获取客户密钥,您可以通过 SERequestManager
发送请求。
请求成功后,您应将收到的客户密钥与请求管理器关联
SERequestManager.shared.set(customerSecret: "received-customer-secret")
注意:您必须在存储中保存收到的客户密钥(例如 UserDefaults),并且对于 Salt Edge SDK 的所有未来使用,您应关联存储中的客户密钥。
示例
let defaults = UserDefaults.standard
if let secret = defaults.string(forKey: "customerSecret") {
SERequestManager.shared.set(customerSecret: secret)
} else {
let params = SECustomerParams(identifier: "your-customer-unique-id")
SERequestManager.shared.createCustomer(with: params) { response in
switch response {
case .success(let value):
// Save customer secret to your storage and then link it with API manager
defaults.set(value.data.secret, forKey: "customerSecret")
SERequestManager.shared.set(customerSecret: value.data.secret)
case .failure(let error):
// Handle error
}
}
}
SEWebView
用于在iOS应用程序中使用Salt Edge Connect的小型WKWebView
子类。
示例
使视图控制器符合SEWebViewDelegate
协议。
class MyViewController : UIViewController, SEWebViewDelegate {
// ... snip ...
}
实例化一个SEWebView
并将其添加到控制器中
let connectWebView = SEWebView(frame: self.view.bounds)
connectWebView.stateDelegate = self
self.view.addSubview(connectWebView)
在控制器中实现SEWebViewDelegate
方法
// ... snip ...
func webView(_ webView: SEWebView, didReceiveCallbackWithResponse response: SEConnectResponse) {
switch response.stage {
case .success:
// Connection successfully connected
case .fetching:
// Connection is fetching. You can safe connection secret if it is present.
case .error:
// Handle error
}
}
func webView(_ webView: SEWebView, didReceiveCallbackWithError error: Error) {
// Handle error
}
将Salt Edge Connect URL加载到WebView中,并继续操作
SERequestManager.shared.createConnectSession(params: connectSessionParams) { response in
switch response {
case .success(let value):
if let url = URL(string: value.data.connectUrl) {
self.webView.load(URLRequest(url: url))
}
case .failure(let error):
// Handle error
}
}
模型
提供了一些用于序列化API响应中接收到的对象的模型。它们代表提供者、连接、账户、交易、提供者字段及其选项。每次您请求返回这些类型之一的数据时,它们都将序列化为Swift结构。例如,getAllTransactions(for connectionSecret: String, params: SETransactionParams? = nil, completion: SEHTTPResponse<[SETransaction]>)
方法有一个包含data
和meta
的SEResponse
,在它的成功回调中,data
是[SETransaction]
。
组件内的模型
SEProvider
SEConnection
SEAccount
SETransaction
SEConnectSessionResponse
SEAttempt
SEConsent
SECountry
SECustomer
SEStage
SEError
SEProviderField
SEProviderFieldOption
关于上述模型的其他补充说明,这些说明不包括在源文档中,您可以免费访问 Salt Edge API 参考文档
其他模型
一些模型具有类型为 [String: Any]
的 extra
字段。如果您需要获取任意字段,可以执行以下操作:
let account = SEAccount()
guard let accountExtra = account.extra else { return }
let anyValue = accountExtra["string_key"]
一些键值对有预定义的扩展
let transaction = SETransaction()
guard let transactionExtra = transaction.extra else { return }
let possibleDuplicate: Bool = transactionExtra.possibleDuplicate
文档
所有组件都有文档。使用快速文档(Alt+点击)可以快速查看方法或属性的文档。
运行演示
要运行包含的演示应用程序,必须使用您的 App ID、App Secret 并选择所需的 API。
要设置 Salt Edge API,调用:
SERequestManager.shared.set(appId: appId, appSecret: appSecret)
将常数 appId
、appSecret
和 customerId
设置为您的 App ID 和相应的 App Secret,可以在 AppDelegate.swift:49-51 中找到。
版本
当前 SDK 的版本是 3.5.0,支持 Salt Edge API 的最新可用版本。API 中的任何向下不兼容的更改将导致 SDK 发生变化。
自版本 1.1.0 以来
SDK 已迁移到 HTTP 公开密钥固定 (HPKP)
变更日志
请参阅 变更日志 文件。
许可协议
请参阅 许可协议 文件。
参考信息
如需更多信息,请随时联系我们
版权所有 © 2014 Salt Edge Inc. https://www.saltedge.com