Using Unlock With Tap
This feature enables your app to perform unlock operations using mobile credentials.
Unlocking with SeamSDK uses proximity to communicate credentials to door readers. When a user initiates an unlock, the SDK performs scanning, error handling, and unlock events using Seam.shared.unlock(using:).
Using this process involves the following steps:
Retrieve available mobile credentials.
Monitor for permission or credential errors. Unhandled errors are thrown as
credentialErrors([SeamCredentialError]).Perform the unlock operation.
Handle unlock status events.
Cancel the unlock operation if needed.
1. Retrieve Mobile Credentials
Access the current credentials through the published credentials array on Seam.shared:
import SeamSDK
import Combine
// Access credentials
let credentials = Seam.shared.credentials
// Observe updates with Combine
let credentialsSubscription = Seam.shared.$credentials
.sink { creds in
// Update UI with new credentials array.
}import co.seam.core.api.SeamCredential
import co.seam.core.api.SeamSDK
// Collect credentials
SeamSDK.getInstance().credentials.collect { credentials ->
// Update UI with new credentials array.
}2. Monitor Credential Errors
Permission or setup issues appear in each credential’s errors property. Observe like this:
Note: The
.errorsarray on credentials represents per-credential issues, though some issues may be repeated across several credentials (for example, bluetooth requirements). SDK- or credential-level errors (such as invalid token or expired credential) are thrown directly by methods likeunlock(using:)becauseSeamErrororSeamCredentialErrorand must be handled throughdo/catch.
3. Perform Unlock Operation
The call to Seam.shared.unlock(using:) may throw:
SeamError: For SDK-level issues (for example, invalid token, uninitialized SDK).SeamCredentialError: For credential-specific issues (for example, expired credential, device not eligible). Ensure that you wrap the call indo/catchblocks to handle these errors.
Use Async/Await or Combine to initiate an unlock with a selected credential:
4. Handle Unlock Events
Handle each SeamUnlockEvent to update your UI and logic. Available events:
launched Unlock operation has started.
grantedAccess Access was granted by the lock.
timedOut Unlock operation timed out without success.
connectionFailed(debugDescription:) Unlock operation failed to connect;
debugDescriptionmay contain additional details.
Async/Await example:
Combine example:
5. Cancel the Unlock Operation
Stop scanning by canceling your active task or subscription.
Last updated
Was this helpful?

