func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
guard let components = URLComponents(url: url, resolvingAgainstBaseURL: true) else {
// handle error e.g. logging
return false
}
guard let queryItems = components.queryItems else {
// handle error e.g. logging
return false
}
var passTypeIdentifier: String? = nil
var serialNumber: String? = nil
var action: String? = nil
for queryItem in queryItems {
if queryItem.name == "passTypeIdentifier" {
passTypeIdentifier = queryItem.value
} else if queryItem.name == "serialNumber" {
serialNumber = queryItem.value
} else if queryItem.name == "action" {
action = queryItem.value
}
}
if let passTypeIdentifier = passTypeIdentifier,
let serialNumber = serialNumber,
action != nil {
let library = PKPassLibrary()
if let pendingPass = library.pass(withPassTypeIdentifier: passTypeIdentifier, serialNumber: serialNumber) {
if #available(iOS 13.4, *) {
if let primaryAccountNumberSuffix = pendingPass.secureElementPass?.primaryAccountNumberSuffix,
let deviceAccountIdentifier = pendingPass.secureElementPass?.deviceAccountIdentifier {
// continue with activation through SDK
}
} else {
if let primaryAccountNumberSuffix = pendingPass.paymentPass?.primaryAccountNumberSuffix,
let deviceAccountIdentifier = pendingPass.paymentPass?.deviceAccountIdentifier {
// continue with activation through SDK
}
}
}
return true
} else {
// handle error e.g. show error UI
return false
}
}