I managed to make it work. There are few key points to follow:
- Make sure that you have correct values in info.plist in Non-UI and UI extension (NSExtensionPointIdentifier, NSExtensionPrincipalClass)
- Make sure you have com.apple.developer.payment-pass-provisioning entitlement for your app and both extensions
- Make sure that your function
func status(completion: @escaping (PKIssuerProvisioningExtensionStatus) -> Void)
inside Non-UI extension executes in under 100ms. The extension is not displayed to the user in Wallet if this criteria is not met. - Make sure that in your function
func status(completion: @escaping (PKIssuerProvisioningExtensionStatus) -> Void)
the object PKIssuerProvisioningExtensionStatus
has remotePassEntriesAvailable
or passEntriesAvailable
set to true (if there are no cards to add to the wallet, your app won't be displayed).
For the purpose of trying it out inside your Non-UI extension just implement status
function like that:
override func status(completion: @escaping (PKIssuerProvisioningExtensionStatus) -> Void) {
let status = PKIssuerProvisioningExtensionStatus()
status.remotePassEntriesAvailable = true
status.passEntriesAvailable = true
status.requiresAuthentication = false
completion(status)
}
I hope it helps :)