Hello,
we are using DeviceCheck – App Attest in a production iOS app. The integration has been live for some time and works correctly for most users, but a small subset of users encounter non-deterministic failures that we are unable to reproduce internally.
Environment
- iOS 14+
- Real devices only (no simulator)
- App Attest capability enabled
- Correct App ID, Team ID and App Attest entitlement
- Production environment
Relevant code
let service = DCAppAttestService.shared
service.generateKey { keyId, error in
// key generation
}
service.attestKey(keyId, clientDataHash: hash) { attestation, error in
// ERROR: com.apple.devicecheck.error 3 / 4
}
service.generateAssertion(keyId, clientDataHash: clientDataHash) { assertion, error in
// ERROR: com.apple.devicecheck.error 3 / 4
}
For some users we intermittently receive:
com.apple.devicecheck.error error 3com.apple.devicecheck.error error 4
Characteristics:
- appears random
- affects only some users/devices
- sometimes resolves after time or reinstall
- not reproducible on our test devices
NSErrorcontains no additional diagnostic info
Some questions:
- What is the official meaning of App Attest errors 3 and 4?
- Are these errors related to key state, device conditions, throttling, or transient App Attest service issues?
- Is there any recommended way to debug or gain more insight when this happens in production?
Any guidance would be greatly appreciated, as this impacts real users and is difficult to diagnose. Thank you.