WeProovSDK
版本 1.6.1
WeProovSDK 1.6.1 版本使用 XCode 13.3 和 Swift 编译器 5.6 构建
更新
位码问题已解决,现在该版本可用。(enableDamageList:Bool
参数。这是因为此选项对于开发者来说不可用。
- 修复了防止图片处理顺畅运行的错误。
- 上传弹出窗口的更新,包含进度条以确认报告已成功发送到控制器。
示例
要运行示例项目,请首先从仓库克隆,然后在 Example 目录中运行 pod install
。
要求
从1.4.x迁移到1.5.x
如果你使用的是1.4.x版本并需要更新到1.5.x版本,请联系我们升级你的访问权限。谢谢。
安装
WeProovSDK可以通过CocoaPods获得。要安装它,只需将以下行添加到你的Podfile中
pod 'WeProovSDK', :git => 'https://github.com/ProovGroup/weproov-ios-sdk'
在执行pod install之前,仓库使用git lfs,请确保已安装。请参见https://git-lfs.github.com/
Info.plist
分配给应用后台任务更新的权限
Background Fetch: capabilities -> Background Mode -> Background Fetch
在Info.plist
中添加访问相机和GPS所需的密钥
<key>NSCameraUsageDescription</key>
<string>Camera is required</string>
<key>NSContactsUsageDescription</key>
<string>Contacts required</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>Location required</string>
导入
import WeProovSDK
连接
在1.5.x之前,将SDK连接到WeProov
// permet de s'avoire si le SDK est connecté
WPUser.shared.connected
// permet de se connecter avec un token et un secret
WPUser.shared.connect(token: "<TOKEN>", secret: "<SECRET>")
// pour changer la lang default: "en"
WPUser.shared.lang = "fr"
从1.5.x开始,将SDK连接到WeProov
// permet de s'avoire si le SDK est connecté
WPUser.shared.connected
//Donne les credentials au sdk
WPUser.shared.setAppAuthCredentials(clientID: "<TOKEN>", secret: "<SECRET>")
// permet de se connecter avec un token et un secret
// A partir de > 1.5.1 cette methode ne prendra plus d'arguments
WPUser.shared.connect(token: "<TOKEN>", secret: "<SECRET>")
// pour changer la lang default: "en"
WPUser.shared.lang = "fr"
上传背景
授权应用在后台更新权限
后台获取
功能 -> 后台模式 -> 后台获取 WeProov 使用后台 URLSession 在应用启动时后台上传报告:调用 WPReportUploader.shared.sync()
在 AppDelegate
中处理事件
func application(_: UIApplication, handleEventsForBackgroundURLSession identifier: String, completionHandler: @escaping () -> Void) {
if WPReportUploader.shared.handleEventsForBackgroundURLSession(identifier: identifier, completionHandler: completionHandler) {
return
}
completionHandler()
}
示例
AppDelegate
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
...
if !WPUser.shared.connected {
WPUser.shared.setAppAuthCredentials(clientID: "<TOKEN>", secret: "<SECRET>")
WPUser.shared.connect(token: "<TOKEN>", secret: "<SECRET>")
}
WPReportUploader.shared.sync()
...
return true
}
func application(_: UIApplication, handleEventsForBackgroundURLSession identifier: String, completionHandler: @escaping () -> Void) {
if WPReportUploader.shared.handleEventsForBackgroundURLSession(identifier: identifier, completionHandler: completionHandler) {
return
}
completionHandler()
}
WPUserDelegate
func userDidConnect(user: WPUser){
print("WeProov Connected")
}
/// Tells the delegate when the user failed to connect
func userFailedToConnect(user: WPUser, error: Error?){
print("WeProov Connect Error \(error!.localizedDescription)")
}
自定义视图
当视图加载时,我们将在 viewController 中启动一个 proovcode 内容
class CustomViewController: UIViewController {
// Contiens le proovCode à ouvrir
var proovCode:String = ""
// downloader: permet de télécharger un rapport
private var downloader = WPReportDownloader()
// permet d'etre prevenue quand le rapport se termine
private var manager: WPReportManager?
// Initialise une vue raport qui vas etre imbriquer
var reportView: WPReportView = WPReportView()
override func viewDidLoad() {
super.viewDidLoad()
// ajoute la vue rapport an laissans la marge pour le header des iPhone X
self.view.addSubview(reportView)
reportView.snp.makeConstraints{make in
make.bottom.left.right.equalTo(self.view)
make.top.equalTo(self.view.snp.topMargin)
}
// ajoute comme delegate au downloader cette class
downloader.delegate = self
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
// initialise la popup de telechargement
let controller = WPReportDownloadViewController()
// set la classe actuel comde delegate
controller.delegate = self
// presente la page de download
present(controller, animated: true) { [weak self] in
guard let sself = self else {
return
}
sself.downloader.load(proovCode: sself.proovCode)
}
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
// permet de fermer proprement le rapport
manager?.closeReport()
}
}
WPReportManagerDelegate
extension CustomViewController: WPReportManagerDelegate {
// appelé à chaque changement de page
func reportCurrentSectionDidChange(manager: WPReportManager, section: Int) {
title = manager.sections[section]
}
// appelé quand le rapport est fermé
func reportDidClose(manager: WPReportManager, state: WPReportCloseState) {
dismiss()
}
}
WPReportDownloadViewControllerDelegate
extension CustomViewController: WPReportDownloadViewControllerDelegate {
func reportCancelDownload() {
// Cannot stop downloader, so create a new one
downloader.delegate = nil
downloader = WPReportDownloader()
downloader.delegate = self
}
}
WPReportDownloaderDelegate
extension CustomViewController: WPReportDownloaderDelegate {
func reportLoading(downloader _: WPReportDownloader) {}
// appeler lors de la progression du telechargement
func reportLoadingProgress(downloader _: WPReportDownloader, progress: Float) {
if let controller = presentedViewController as? WPReportDownloadViewController {
controller.updateProgression(value: progress)
}
}
// appeler lorsque le rapport est pres a etre afficher
func reportDidLoad(downloader _: WPReportDownloader, report: WPReport) {
if let controller = presentedViewController as? WPReportDownloadViewController {
controller.updateProgression(value: 1)
controller.dismiss()
}
var theme = WPTheme()
// Personalise les couleurs principal du framework
theme.reportInitialColor = UIColor(hexString: "#67BB0F9")
theme.reportFinalColor = UIColor(hexString: "#67BB0F9")
manager = WPReportManager(controller: self, report: report, theme: theme)
manager?.delegate = self
manager?.load(reportView: reportView)
}
// si une erreur survient
func reportFailedToLoad(downloader _: WPReportDownloader, error: Error?) {
if let controller = presentedViewController as? WPReportDownloadViewController {
controller.dismiss()
}
dismiss()
print("reportFailedToLoad", error ?? "unknown error")
}
// permet de savoir si le la page d'une section dois etre visible ou non
func reportCanShowSection(downloader _: WPReportDownloader, section: Int) -> Bool {
return true
}
// permet de savoir si la page peremet d'importer depuis son part / profile
// attention permet de voire tout le carnet d'adresse / parc de bien
func reportCanShowSectionImport(downloader _: WPReportDownloader, section _: Int) -> Bool {
return true
}
}