We have enabled the Host Card Emulation (HCE) capability for our app and successfully implemented and tested the functionality during development.
When running the app directly from Xcode, HCE-related flows work as expected. However, we are observing different behavior in the distributed build. In particular, the following check consistently evaluates to false:
guard await CardSession.isEligible else {
return
}
After distributing the app via TestFlight, HCE functionality is not available for external testers. The CardSession.isEligible property always returns false, even when tested on supported devices and in supported regions.
We are using the same bundle identifier for both development and distribution builds, and the provisioning profiles include the required capability.
Could you please clarify the following:
Are there any additional entitlements, approvals, or configuration steps required for HCE to function in TestFlight or distribution builds?
Are there known region, device, or account-related restrictions that could cause CardSession.isEligible to return false outside the development environment?
Is there any difference in behavior between development-signed and distribution-signed builds for this capability?