Identance iOS 集成
要求
- iOS 10.0+
- Xcode 13.0+
- Swift 5.5+
- 仅为 iPhone idiom(使用 Universal 或仅 iPad idiom 的 SDK 可能会导致不可预测的行为)
- iPhone 5+
- 支持应用于水平及垂直方向(详细信息见下文)
- Git LFS
安装
CocoaPods
您必须使用至少 1.10 版本的 Cocoapods。
Git-lfs
- 您必须通过运行以下命令来安装Git Large File Storage:
brew install git-lfs
git lfs install
- 务必在安装Git LFS后重启您的控制台
- 注意:如果您已经尝试使用cocoapods添加SDK但未奏效,请首先安装git-lfs并清除您cocoapods的缓存。这应该足以强制cocoapods克隆SDK。如果仍然无效,请尝试重新�始化您的pods并重新安装。
CocoaPods 是Cocoa项目的依赖项管理器。有关使用和安装说明,请访问他们的网站。要使用CocoaPods将Identance集成到您的Xcode项目,请在您的 Podfile
中指定它。
pod 'Identance'
重要:如果您需要将Identance SDK集成到Objective-C代码,则应使用 ZN
前缀来指定Identance类。
重要:您不应更改Identance SDK及其在Pod项目中的所有依赖项的原始部署版本。否则,您可能会遇到编译或运行时错误。
应用限制
为了正确工作,SDK需要访问设备的 相机 和 相册。为此,您必须将以下键添加到应用程序 Info.plist
文件中(如果尚未添加)
NSPhotoLibraryUsageDescription
- 对 相册 使用的描述NSCameraUsageDescription
- 对设备 相机 使用的描述
方向支持
Identance SDK需要宿主应用程序在验证过程中支持 纵向 和 横向(左右)方向模式。这可以通过在 Info.plist 文件中的 UISupportedInterfaceOrientations
键设置适当的值来实现,或者通过正确实现 UIApplicationDelegate
。
optional func application(_ application: UIApplication,
supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask
。
使用
在Xcode中打开集成SDK的 IdentanceExample
项目。您需要在项目目录中执行 pod install
命令以下载依赖项。
开始验证过程
Verification
对象
创建 您可以通过 Verification
对象访问主要的 SDK 功能。要创建它,您首先需要创建一个 Configuration
实例并设置其选项。
配置选项
apiURL
(必需) - 与之交互的 API 端点。联系我们的团队以获取 API 端点。通常您需要为沙盒和生产环境使用不同的 URL。tokenProvider
(必需) - JWT 令牌提供者实例。您需要实现TokenProvider
协议以返回 JWT 令牌字符串。您可以使用现有的ClosureTokenProvider
类并设置provider
闭包,或者创建新的一个。有关技术细节,请参阅 JsonWebToken 使用方法。workingMode
(必需) - 根据您的业务逻辑选择singleStage
或allStages
。localizationKeys
(必需) - 包含与商户相关的文本本地化键的LocalizationKeys
实例。请在此处了解详情:文本language
(必需) - SDK 语言system
(默认) - 主机的应用程序语言。如果 SDK 不支持该语言,则将使用 英语。english
- 强制使用 英语 语言。russian
- 强制使用 俄语 语言。
customLanguageStringsURL
(可选) - 到自定义本地化文件的 URL。在这种情况下需要设置,当language
设置为非system
语言,且需要应用自定义文本替换时(见 自定义文本)。showSupportScreen
(可选) - 用于打开或显示支持链接或视图的特殊闭包。appID
(可选) - Appstore 应用程序 ID。在需要 SDK 或应用程序更新时,可以用来显示 Appstore 更新屏幕。
Verification
对象创建
let configuration = Configuration()
configuration.apiURL = URL(string: "https://...")!
configuration.tokenProvider = ClosureTokenProvider() { completion in
completion("JWT Token", nil)
}
let verification try = Verification(configuration: configuration)
每次您想要开始一个验证过程时,都建议创建一个新的 Verification
对象。接下来,您需要获取 VerificationViewController
对象,设置其代理,然后展示它。
let verificationController = verification.verificationViewController()
verificationController.delegate = self
present(verificationController, animated: true, completion: nil)
通过实现 VerificationViewControllerDelegate
,您将从验证流程中接收到有关其成功提交或取消的回调。
// Verification finished and must be dismissed
func verification(_ viewController: VerificationViewController, didCompleteWith result: VerificationResult) {
viewController.dismiss(animated: true, completion: nil) // Required step. ViewController will not dismiss automatically
}
自定义
颜色
您可以通过 UIScheme.shared
单例对象来自定义颜色方案。
如果您需要自定义一些颜色,则只需调用 configure(scheme:..)
方法
UIScheme.shared.configure(scheme: ["errorColor": "121212"])
UIScheme.shared.configure(scheme: ["actionColorColor": "121212FA"])
如果您需要自定义所有颜色,则可以创建一个单独的 .plist
文件或带有颜色列表的 [String: String]
对象,然后通过 loadScheme(from:..)
方法加载它
guard let filePath = Bundle.main.path(forResource: "custom-color-palette", ofType: "plist"),
let schemeDictionary = NSDictionary(contentsOfFile: filePath) as? [String: String]
else { return }
UIScheme.shared.loadScheme(from: schemeDictionary)
请注意,有一个特殊的颜色键 - theme
。它通常控制深色或浅色模式。值必须是以下字符串之一:dark
或 light
颜色主题
SDK 支持颜色主题:dark 和 light。
默认情况下它使用深色主题。Identance SDK 忽略系统定义的主题,而必须在使用验证之前手动设置。要设置 light 主题,请调用
UIScheme.shared.resetToLightTheme()
对于 dark 则呼叫
UIScheme.shared.resetToDarkTheme()
图标 & 图片
SDK 中的图标和图片可以通过为主应用的主包中正确命名的图像资源来替换。使用前缀 zn__
和 SDK 图像资源的名称。如果图像必须为深色和浅色主题单独设置,则可以在浅色主题资源的名称末尾添加后缀 ~light
(例如 zn__alert_icon~light
)。
文本
如果使用 allStages
和 workingMode
,则必须正确填充 LocalizationKeys.stageDescriptions
,包含 LocalizationStageDescription
对象。每个对象包含某个阶段(stage
)的 简短(shortDescriptionKey
)和 完整(fullDescriptionKey
)描述键。SDK 通过这些键从宿主应用程序的本地化文件中提取本地化文本。 简短描述 是放置在阶段单元格底部的文本。完整描述 是用户点击阶段单元格时屏幕上显示的文本。完整描述 支持包括链接在内的 Markdown 格式。在验证开始之前,必须设置正确的 LocalizationKeys
对象为验证 Configuration
实例的 localizationKeys
属性。
如果您从未使用过 allStages
并使用 singleStage
和 workingMode
,则只需设置验证 Configuration
实例的 localizationKeys = .empty
。
如果 SDK 中的某些文本需要更改,则需要在应用程序中添加适当的字符串键对到相应语言的默认 Localizable.strings
文件。以下是一个此类键对的示例
"zn__button_yes" = "Yes";
所有 SDK 键都以 zn__
开头,因此不会与您的键发生冲突。尝试打开框架内容,并在 language.lprog
目录中查找要替换的键的 Localizable.strings
文件。
问答
问:在项目编译期间得到错误:`Command CompileSwiftSources failed with a nonzero exit code`,详细描述为 error: using bridging headers with module interfaces is unsupported
答:这通常发生在 Xcode 项目包含 桥接头 的情况下。将目标的 `BUILD_LIBRARY_FOR_DISTRIBUTION
` 编译设置为 NO
。
问:在验证流程中,用户在 Simulator 设备上没有扫描文档的这一步。答:由于 Simulator 设备无法访问摄像头,这一步将自动跳过。因此,强烈建议在真实设备上测试验证流程。