chore: Add iOS and Android Remote Verification Tutorial sample apps#296
Merged
Conversation
A SwiftUI sample app accompanying the Remote Mobile Verifier tutorial at https://learn.mattr.global/docs/verification/remote-mobile-verifiers/tutorial. Uses MobileCredentialVerifierSDK to verify an mDoc presented by a same-device wallet over OID4VP / ISO 18013-7 Annex B. Tenant host and application id are placeholders, the URL scheme is bound to $(PRODUCT_BUNDLE_IDENTIFIER) so the deep link tracks whatever bundle id the developer sets. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
A Jetpack Compose sample app accompanying the Remote Mobile Verifier tutorial at https://learn.mattr.global/docs/verification/remote-mobile-verifiers/tutorial. Uses MobileCredentialVerifier SDK to verify an mDoc presented by a same-device wallet over OID4VP / ISO 18013-7 Annex B. Tenant host and application id are placeholders. The OID4VP callback intent filter is bound to ${applicationId} so the deep link scheme tracks whatever package name the developer sets in build.gradle.kts. local.properties is intentionally not committed. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
xcframeworks (iOS) and Android repo/global/ maven artifacts are distributed by MATTR separately. Each developer drops them into their local clone; they shouldn't be committed. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
al-abbas-nz
approved these changes
May 28, 2026
dylan-paul
approved these changes
May 28, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds two new sample apps that accompany the Remote mobile verifiers tutorial. Both verify an mDoc presented by a same-device wallet over OID4VP / ISO 18013-7 Annex B, mirroring the existing in-person verifier samples.
A developer can download either project, set their bundle identifier / applicationId, fill in the tenant host and application id, and run on a device. Tenant configuration is handled out of band against MATTR VII (verifier application configuration, supported wallet, trusted issuer) and isn't covered by the apps.
iOS — ios-remote-verification-tutorial-sample-app/
MobileCredentialVerifierSDK(Embed & Sign xcframework, added by the developer per the README).Remote-verification-tutorial-Info.plistis bound to$(PRODUCT_BUNDLE_IDENTIFIER), so the deep link tracks whatever bundle id the developer sets without manual edits.Android — android-remote-verification-tutorial-sample-app/
global.mattr.mobilecredential:verifier:6.1.0(resolved from the localrepo/directory, populated from the SDK distribution).<intent-filter>is bound to\${applicationId}, so the scheme tracks the package name set inapp/build.gradle.kts.local.propertiesis intentionally not committed (the in-person sample's committed copy contains a personalsdk.dirpath — same class of PII the recentchore: Remove personal identifierscommit was cleaning up).PII removed vs. the tutorial
Constants.swift:tenantHostandapplicationIDreplaced withyour-tenant.vii.your-region.mattr.global/your-application-id. The URL still parses so the app launches; a credential request returns an error until real values are set.Constants.kt:TENANT_HOSTandAPPLICATION_IDreplaced with matching placeholders.\$(PRODUCT_BUNDLE_IDENTIFIER)(iOS) and\${applicationId}(Android).Not done
🤖 Generated with Claude Code