Skip to content

Commit

Permalink
Release 7.1.0
Browse files Browse the repository at this point in the history
  • Loading branch information
jonathanellis committed Sep 24, 2019
1 parent d471efa commit 7d8ae3e
Show file tree
Hide file tree
Showing 28 changed files with 47 additions and 31 deletions.
43 changes: 18 additions & 25 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,31 +1,21 @@
# iProov iOS SDK v7.0.0
# iProov iOS SDK v7.1.0

## 🤳 Introduction

The iProov iOS SDK allows you to integrate iProov into your iOS app. We also have an [Android SDK](https://github.com/iproov/android) and [HTML5 client](https://github.com/iProov/html5).
The iProov iOS SDK enables you to integrate iProov into your iOS app. We also have an [Android SDK](https://github.com/iproov/android) and [HTML5 client](https://github.com/iProov/html5).

The iProov iOS SDK is a binary iOS dynamic framework. It is supported on devices running iOS 9.0 and above, on both iPhones and iPads, using Xcode 10.2.1 (see note below regarding Xcode version compatibility).
The iProov iOS SDK is a binary iOS dynamic framework. It is supported on devices running iOS 9.0 and above, on both iPhones and iPads,

The framework has been written in Swift, and we recommend use of Swift for the simplest and cleanest integration, however it is also possible to call iProov from within an Objective-C app using our Objective-C wrapper, which provides an Objective-C friendly API to invoke the Swift code.
The framework has been written in Swift 5.1, and we recommend use of Swift for the simplest and cleanest integration, however it is also possible to call iProov from within an Objective-C app using our [Objective-C wrapper](https://github.com/iProov/ios/wiki/Objective-C-Integration), which provides an Objective-C friendly API to invoke the Swift code.

## 📖 Contents

The framework package is provided via this repository, which contains the following:

* **README.md** -- this document
* **WaterlooBank** -- a folder containing an Xcode sample project of iProov for the fictitious _Waterloo Bank_ written in Swift.
* **WaterlooBankObjC** -- a folder containing an Xcode sample project for _Waterloo Bank_ written in Objective-C.
* **iProov.framework & iProov.podspec** -- these are the files which will be pulled in automatically by Cocoapods. You do not need to do anything with these files.

## ⚠️ Important notice regarding Xcode compatibility

Please note that iProov is distributed as a compiled binary framework. Due to [current Swift limitations](https://forums.swift.org/t/plan-for-module-stability/14551), this means that the version of Xcode (and the version of Swift) that was used to compile the iProov framework must exactly match the version of Xcode used to compile your app.

The version of Xcode used to compile v7.0.0 of the SDK is Xcode 10.2.1 (Swift 5.0.1).

Therefore, this is the only supported version of Xcode for iProov. If you are using an older version of Xcode and cannot upgrade for whatever reason, you will need to use an older version of the SDK ([contact iProov](mailto:[email protected]) for further details).

> **NOTE:** With the addition of [module stability in Swift 5.1](https://swift.org/blog/5-1-release-process/) we look forward to providing an updated version of the SDK with the release of iOS 13 later this year, which will support multiple Swift compiler versions.
* **README.md** - This document
* **WaterlooBank** - A sample project of iProov for the fictitious _Waterloo Bank_, written in Swift.
* **iProov.framework** - The framework file itself. You can add this to your project manually, if you aren't using a dependency manager. (Please note this is a "fat" framework for both device & simulator)
* **iProov.podspec** - Required by Cocoapods. You do not need to do anything with this file.

## ⬆️ Upgrading from v6.x or earlier

Expand Down Expand Up @@ -80,11 +70,11 @@ Before being able to launch iProov, you need to get a token to iProov against. T
2. An **enrol** token - for registering a new user
3. An **ID match** token - for matching a user against a scanned ID document image.

In a production app, you normally would want to obtain the token via a server-to-server back-end call. For the purposes of on-device demos/testing, we provide Swift/Alamofire sample code for obtaining tokens via [iProov API v2](https://github.com/iProov/ios/blob/nextgen/Sample%20Code/APIV2Client.swift) with our open-source [iOS API Client](https://github.com/iProov/ios-api-client).
In a production app, you normally would want to obtain the token via a server-to-server back-end call. For the purposes of on-device demos/testing, we provide Swift/Alamofire sample code for obtaining tokens via [iProov API v2](https://secure.iproov.me/docs.html) with our open-source [iOS API Client](https://github.com/iProov/ios-api-client).

> **⬆️ UPGRADING NOTICE:** This is a significant change from pre-v7 SDK where for ease of debugging/development, the SDK could be passed an API key and then obtain the token for you automatically. This should never have been used for production apps anyway, and the functionality is no longer part of the SDK.
Once you have obtained the token, you can simply call `IProov.launch(...)`:
Once you have obtained the token, you can simply call `IProov.launch()`:

```
let token = "{{ your token here }}"
Expand All @@ -100,10 +90,10 @@ IProov.launch(token: token, callback: { (status) in
// The user was successfully verified/enrolled and the token has been validated.
// The token passed back will be the same as the one passed in to the original call.
case let .failure(reason, feedback):
case let .failure(reason, feedbackCode):
// The user was not successfully verified/enrolled, as their identity could not be verified,
// or there was another issue with their verification/enrollment, and a reason (as a string)
// is provided as to why the claim failed.
// or there was another issue with their verification/enrollment. A reason (as a string)
// is provided as to why the claim failed, along with a feedback code from the back-end.
case .cancelled:
// The user cancelled iProov, either by pressing the close button at the top right, or sending
Expand Down Expand Up @@ -170,6 +160,9 @@ options.ui.presentationDelegate = MyPresentationDelegate() // See the section be

options.network.certificates = [Bundle.main.path(forResource: "custom_cert", ofType: "der")!] // Supply an array of paths of certificates to be used for pinning. Useful when using your own proxy server, or for overriding the built-in certificate pinning for some other reason. Certificates should be generated in DER-encoded X.509 certificate format, eg. with the command: $ openssl x509 -in cert.crt -outform der -out cert.der
options.network.certificatePinningDisabled = false // Disables SSL/TLS certificate pinning to the server. WARNING! Do not enable this in production apps.
options.network.transport = .webSocket // The transport/streaming protocol to use. Default is .webSocket which uses WebSockets only. You can change this to .polling for HTTP long-polling, or .auto for auto-configuration which will start with polling and attempt to upgrade to WebSockets.
options.network.timeout = 10 // The network timeout in seconds.
options.network.path = "/socket.io/v2/" // The path to use when streaming, defaults to /socket.io/v2/. You should not need to change this unless directed to do so by iProov.

/*
CaptureOptions
Expand All @@ -189,9 +182,9 @@ options.capture.maxPitch = 0.03

In previous versions of the SDK, when presenting the iProov UI the SDK would get a reference to the app delegate's window's `rootViewController`, then iterate through the stack to find the top-most view controller, and then `present()` iProov's view controller as a modal view controller from the top-most view controller on the stack.

This resulted in an easy-to-use zero-config API surface, however this didn't necessarily work well for all cases, (e.g. modals from modals, or where it would be desirable to push iProov into an existing `UINavigationController` flow).
This resulted in an easy-to-use zero-config API, however this didn't necessarily work well for all cases, (e.g. modals from modals, or where it would be desirable to push iProov into an existing `UINavigationController` flow).

We listened to your feedback! SDK v7.0 still provides the existing behaviour as a default, however it is now possible to pass a custom `presentationDelegate` to the UI options, which allows you to override the presentation/dismissal behaviour of the iProov view controller:
We listened to your feedback! SDK v7 still provides the existing behaviour as a default, however it is now possible to pass a custom `presentationDelegate` to the UI options, which allows you to override the presentation/dismissal behaviour of the iProov view controller:

```
extension MyViewController: IProovPresentationDelegate {
Expand Down
1 change: 1 addition & 0 deletions carthage/IProov.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,5 @@
"7.0.0-beta2": "https://raw.githubusercontent.com/iProov/ios/master/carthage/iProov_7_0_0-beta2.zip",
"7.0.0-beta3": "https://raw.githubusercontent.com/iProov/ios/master/carthage/iProov_7_0_0-beta3.zip",
"7.0.0": "https://raw.githubusercontent.com/iProov/ios/master/carthage/iProov_7_0_0.zip",
"7.1.0": "https://raw.githubusercontent.com/iProov/ios/master/carthage/iProov_7_1_0.zip",
}
Binary file added carthage/iProov_7_1_0.zip
Binary file not shown.
Binary file modified iProov.framework/Assets.car
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
25 changes: 23 additions & 2 deletions iProov.framework/Headers/iProov-Swift.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Generated by Apple Swift version 5.0.1 (swiftlang-1001.0.82.4 clang-1001.0.46.5)
// Generated by Apple Swift version 5.1 (swiftlang-1100.0.270.13 clang-1100.0.33.7)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wgcc-compat"

Expand Down Expand Up @@ -110,6 +110,15 @@ typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4)));
# define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# endif
#endif
#if !defined(SWIFT_RESILIENT_CLASS)
# if __has_attribute(objc_class_stub)
# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) __attribute__((objc_class_stub))
# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_class_stub)) SWIFT_CLASS_NAMED(SWIFT_NAME)
# else
# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME)
# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) SWIFT_CLASS_NAMED(SWIFT_NAME)
# endif
#endif

#if !defined(SWIFT_PROTOCOL)
# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
Expand Down Expand Up @@ -151,6 +160,9 @@ typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4)));
#if !defined(SWIFT_AVAILABILITY)
# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__)))
#endif
#if !defined(SWIFT_WEAK_IMPORT)
# define SWIFT_WEAK_IMPORT __attribute__((weak_import))
#endif
#if !defined(SWIFT_DEPRECATED)
# define SWIFT_DEPRECATED __attribute__((deprecated))
#endif
Expand All @@ -162,6 +174,9 @@ typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4)));
#else
# define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg)
#endif
#if !defined(IBSegueAction)
# define IBSegueAction
#endif
#if __has_feature(modules)
#if __has_warning("-Watimport-in-framework-header")
#pragma clang diagnostic ignored "-Watimport-in-framework-header"
Expand Down Expand Up @@ -234,7 +249,7 @@ SWIFT_CLASS("_TtC6iProov6IProov")
@class NSError;

@interface IProov (SWIFT_EXTENSION(iProov))
+ (void)launchWithToken:(NSString * _Nonnull)token options:(Options * _Nonnull)options processing:(void (^ _Nonnull)(double, NSString * _Nonnull))processing success:(void (^ _Nonnull)(NSString * _Nonnull))success cancelled:(void (^ _Nonnull)(void))cancelled failure:(void (^ _Nonnull)(NSString * _Nonnull))failure error:(void (^ _Nonnull)(NSError * _Nonnull))error;
+ (void)launchWithStreamingURL:(NSString * _Nonnull)streamingURL token:(NSString * _Nonnull)token options:(Options * _Nonnull)options processing:(void (^ _Nonnull)(double, NSString * _Nonnull))processing success:(void (^ _Nonnull)(NSString * _Nonnull))success cancelled:(void (^ _Nonnull)(void))cancelled failure:(void (^ _Nonnull)(NSString * _Nonnull))failure error:(void (^ _Nonnull)(NSError * _Nonnull))error;
@end


Expand Down Expand Up @@ -267,6 +282,12 @@ SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly) Class _Nonnull layer



typedef SWIFT_ENUM(NSInteger, StreamingTransport, closed) {
StreamingTransportWebSockets = 0,
StreamingTransportPolling = 1,
StreamingTransportAuto = 2,
};




Expand Down
Binary file modified iProov.framework/Info.plist
Binary file not shown.
Binary file modified iProov.framework/Modules/iProov.swiftmodule/arm.swiftdoc
Binary file not shown.
Binary file modified iProov.framework/Modules/iProov.swiftmodule/arm.swiftmodule
Binary file not shown.
Binary file modified iProov.framework/Modules/iProov.swiftmodule/arm64.swiftdoc
Binary file not shown.
Binary file modified iProov.framework/Modules/iProov.swiftmodule/arm64.swiftmodule
Binary file not shown.
Binary file modified iProov.framework/Modules/iProov.swiftmodule/i386.swiftdoc
Binary file not shown.
Binary file modified iProov.framework/Modules/iProov.swiftmodule/i386.swiftmodule
Binary file not shown.
Binary file modified iProov.framework/Modules/iProov.swiftmodule/x86_64.swiftdoc
Binary file not shown.
Binary file modified iProov.framework/Modules/iProov.swiftmodule/x86_64.swiftmodule
Binary file not shown.
2 changes: 1 addition & 1 deletion iProov.framework/README.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Loco ios export: iOS Localizable.strings
Project: iProov
Release: Working copy
Exported at: Fri, 12 Jul 2019 11:53:05 +0100
Exported at: Mon, 16 Sep 2019 12:31:02 +0100
Exported by: Jonathan Ellis
Binary file modified iProov.framework/en.lproj/Localizable.strings
Binary file not shown.
Binary file modified iProov.framework/iProov
Binary file not shown.
Binary file modified iProov.framework/nb.lproj/Localizable.strings
Binary file not shown.
Binary file modified iProov.framework/nl.lproj/Localizable.strings
Binary file not shown.
Binary file modified iProov.framework/nn.lproj/Localizable.strings
Binary file not shown.
Binary file modified iProov.framework/tr.lproj/Localizable.strings
Binary file not shown.
7 changes: 4 additions & 3 deletions iProov.podspec
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
Pod::Spec.new do |s|
s.name = 'iProov'
s.version = '7.0.0'
s.summary = 'It\'s never been so simple to authenticate securely'
s.version = '7.1.0'
s.summary = 'Right person. Real person. Right now.'
s.homepage = 'https://www.iproov.com/'
s.license = { :type => 'MIT', :file => 'licenses/3rdparty.md' }
s.author = { 'iProov' => '[email protected]' }
s.source = { :git => 'https://github.com/iProov/ios.git', :tag => s.version.to_s }

s.ios.deployment_target = '9.0'
s.swift_version = '5.0'
s.swift_version = '5.1'

s.ios.vendored_frameworks = 'iProov.framework'

Expand All @@ -19,5 +19,6 @@ Pod::Spec.new do |s|
s.dependency 'KeychainAccess', '~> 3.2.0'
s.dependency 'Socket.IO-Client-Swift', '~> 15.1.0'
s.dependency 'SwiftyJSON', '~> 4.0.0'


end

0 comments on commit 7d8ae3e

Please sign in to comment.