iOS
SPIDX Button is an iOS library conceived to be integrated into an iOS Application. It provides a Button View to be used in the application and classes that communicate with SPIDX server to retrieve a Dynamic Link and ID for the transaction defined by a Use Case.
Requirements
Minimum IOS Version
IOS 13.0
Development environment
Xcode IDE v11+
Import and configuration
Drag the
SpidxButton.framework
folder into the Frameworks folder.If the Frameworks folder does not exist, drag the file into the project folder.
Open the project settings by clicking on the top item in the file tree.
Go to the
__Geral__
(or__General__
) tab of your__target__
.Click and drag the
.framework
from the project’s file tree to the “__Frameworks, Libraries and etc__
” section.Change the configuration of the frameworks from Do not embed to Embed & Sign.
Collection Types
Collection: Standard biometric collection.
Verification: Biometric collection to check if it matches an existing account (SpidxAccount)
Registration: Standard biometric collection that reuses data from a past collection already carried out.
Classes and Methods
SpidxButton Class
collection():
Method that uses the variables
apiKey
anduseCaseName
to retrieve the dynamic link for a collection-type link. The same method can be used to redeem registration-type links.verification():
Method that uses the variables
apiKey
,useCaseName
, andspidxAccount
to retrieve the verification dynamic link.setAuth(apiKey: String, useCaseName: String, spidxAccount: String? = nil):
Method required to populate the variables that will be used by the functions listed above. Both apiKey and useCaseName are mandatory parameters. SpidxAccount is optional and if it is not defined in the method call it will have a null value.
Responses
The methods collection () and verification () have a callback that returns an object of type UseCaseData
. This object has the variables: dynamicLink
, transactionID
, errorDescription
, and rawError
. If an error occurs, the error variables will be populated and the others will be null. In case of success, the variables related to the link and the transaction are populated and the others are null.
Usage
You can visually add the button to .storyboard
or .xib
files as it follows:
Add a common UIButton and change its class to SpidxButton, as well as its module.
Change the type of the button to custom, if not.
Create a reference and action outlet for the button:
import SpidxButton
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var spidxButton: SpidxButton!
override func viewDidLoad() {
super.viewDidLoad()
self.spidxButton.setAuth(apiKey: <String>, useCaseName: <String>, spidxAccount: <String>)
}
@IBAction func spidxButtonTapped(_ sender: Any) {
self.spidxButton.verification() { data in
//Access UseCaseData
print("dynamicLink", data?.dynamicLink)
print("transactionID", data?.transactionID)
print("error", data?.rawError)
print("errorDesc", data?.errorDescription)
}
}
}
You can also add the button to a view programmatically as it follows:
import SpidxButton
import UIKit
class ViewController: UIViewController {
var spidxButton: SpidxButton!
override func viewDidLoad() {
super.viewDidLoad()
self.spidxButton = SpidxButton(frame: CGRect(x: <CGFloat>, y: <CGFloat>, width: <CGFloat>, height: <CGFloat>))
self.view.addSubview(spidxButton)
self.spidxButton.setAuth(apiKey: <String>, useCaseName: <String>, spidxAccount: <String>)
spidxButton.addTarget(self, action: #selector(spidxButtonTapped(_:)), for: .touchUpInside)
}
@objc func spidxButtonTapped(_ sender: SpidxButton) {
self.spidxButton.verification() { data in
//Access UseCaseData
print("dynamicLink", data?.dynamicLink)
print("transactionID", data?.transactionID)
print("error", data?.rawError)
print("errorDesc", data?.errorDescription)
}
}
}
Note that the proportions of the button will always be respected in any of the cases mentioned above, that is, the height of the button will always be 1/4 of the width. Even if another value is passed in the constructor of the button it will be overwritten.
After generating the link it is recommended that it should be opened using Firebase’s DynamicLink service, available through cocoa pods (https://firebase.google.com/docs/dynamic-links/ios/receive), or using something like:
self.spidxButton.verification() { data in
//Open DynamicLink on Browser
guard data?.dynamicLink != nil, let url = URL(string: (data?.dynamicLink)!) else {return}
DispatchQueue.main.sync {
UIApplication.shared.open(url)
}
}
which will open the SPIDX app itself (if the user has it installed) or the link in question in a browser, which will then redirect the user to SPIDX.
Last updated