Integrate Weavr Secure UI components into native iOS apps. Covers Swift Package Manager and CocoaPods setup, secure input and display components, KYC verification, biometric authentication, and push provisioning. Use when building iOS Weavr integrations.
72
89%
Does it follow best practices?
Impact
—
No eval scenarios have been run
Advisory
Suggest reviewing before use
Documentation: https://docs.weavr.io/sdks/ios/
Native iOS SDK (Swift) for embedding PCI-compliant financial services components with biometric authentication support.
File > Add Package Dependencies > Enter:
https://github.com/weavr-io/secure-components-ios.git# Podfile
source 'https://cdn.cocoapods.org'
source 'https://github.com/nicklockwood/iVersion.git'
pod 'WeavrComponents'
pod 'Approov', :podspec => 'https://raw.githubusercontent.com/nicklockwood/iVersion/master/Approov.podspec'<key>NSPhotoLibraryUsageDescription</key>
<string>Upload identity documents</string>
<key>NSCameraUsageDescription</key>
<string>Capture identity documents and selfie</string>
<key>NSMicrophoneUsageDescription</key>
<string>Required for video verification</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>Verify your location during onboarding</string>
<key>NSFaceIDUsageDescription</key>
<string>Authenticate with Face ID</string>import WeavrComponents
// Set Firebase App Check token (if using biometrics)
UXComponents.setAppCheckToken(token)
// Initialize
UXComponents.initialize(env: .SANDBOX, uiKey: "your_ui_key")// Password field
let passwordField = SecurePasswordField()
passwordField.placeholder = "Enter password"
view.addSubview(passwordField)
// Passcode field
let passcodeField = SecurePasscodeField()
view.addSubview(passcodeField)
// Segmented passcode (PIN-style boxes)
let segmentedPasscode = SecurePasscodeFieldStack()
view.addSubview(segmentedPasscode)
// Tokenize
passwordField.tokenize { token in
// Send token to your server
}// Card number
let cardNumber = SecureCardNumberTextView()
cardNumber.cardId = "card_id"
cardNumber.accessToken = bearerToken
view.addSubview(cardNumber)
// CVV
let cvv = SecureCVVTextView()
cvv.cardId = "card_id"
cvv.accessToken = bearerToken
view.addSubview(cvv)
// Card PIN
let cardPin = SecureCardPINTextView()
cardPin.cardId = "card_id"
cardPin.accessToken = bearerToken
view.addSubview(cardPin)// Enroll
UXComponents.psa.enroll { result in
switch result {
case .success:
// Enrolled
case .failure(let error):
// Handle error
}
}
// Authenticate
UXComponents.psa.authenticate { result in
switch result {
case .success(let token):
// Use token for API calls
case .failure:
// Fallback to passcode
}
}let branding = BrandingConfig(
primaryColor: UIColor(hex: "#1A73E8"),
textColor: UIColor(hex: "#333333"),
font: UIFont(name: "CustomFont", size: 16),
buttonCornerRadius: 8
)
UXComponents.setBranding(branding)Components can also be added via Interface Builder:
SecurePasswordField)WeavrComponentsUXComponents.initialize() in AppDelegate or early in the app lifecycle.aa03739
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.