TestConnectSDK/
├── TapConnectSDK.podspec # CocoaPods specification
├── LICENSE # MIT License
├── README.md # Full documentation
├── INTEGRATION_GUIDE.md # Quick start guide
├── validate_pod.sh # Validation script
│
├── TapConnectSDK/Classes/ # SDK Source Files
│ ├── TapConnectSDK.swift # Main SDK class
│ ├── TapConnectSDKDelegate.swift # Delegate protocol
│ ├── TapConnectSDKConfig.swift # Configuration model
│ ├── TapConnectSDK.h # Umbrella header
│ ├── module.modulemap # Module map
│ └── Example.swift # Usage examples
│
└── TestConnectSDK/ # Original app with frameworks
├── ConnectSdkFramework.xcframework
├── ReactBrownfield.xcframework
└── hermes.xcframework
AppDelegate Setup:
TapConnectSDK.setup(launchOptions: launchOptions)Usage:
let config = TapConnectSDKConfig(language: .english, theme: .light)
TapConnectSDK.shared.present(from: self, config: config, delegate: self)Delegate Methods:
tapConnectDidComplete(authId:bi:)tapConnectDidError(message:)tapConnectDidNotFindAccount()tapConnectDidClose()
Problem: Framework Module Not Found During Build
Error:
fatal error: module 'ConnectSdkFramework' not found
Root Cause: The vendored XCFrameworks (ConnectSdkFramework, ReactBrownfield, hermes) are not being found in the framework search paths when TapConnectSDK's Swift code is being compiled as a pod.
- ✅ Created proper pod structure with source files and vendored frameworks
- ✅ Added framework search paths to podspec
- ✅ Tried subspecs to separate frameworks from Swift wrapper
- ✅ Added
CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES - ❌ Tried
@_implementationOnlyimports (conflicted with public protocol conformance)
Add a script phase in the podspec to copy frameworks to a known location:
s.script_phases = [
{
:name => 'Copy Frameworks',
:script => 'cp -R "${PODS_TARGET_SRCROOT}/TestConnectSDK"/*.xcframework "${BUILT_PRODUCTS_DIR}/"',
:execution_position => :before_compile
}
]Split into multiple pods:
TapConnectSDKCore(just the frameworks)TapConnectSDK(Swift wrapper that depends on Core)
Change the integration approach to use static libraries instead of dynamic frameworks.
Distribute TapConnectSDK itself as a pre-built XCFramework that includes everything.
platform :ios, '13.0'
target 'testConnectPod' do
use_frameworks!
pod 'TapConnectSDK', :path => '/Users/MahAllam/ReactNative/tap/mobile-os/apps/TestConnectSDK'
endTo validate the pod structure (without building):
cd /Users/MahAllam/ReactNative/tap/mobile-os/apps/TestConnectSDK
./validate_pod.shUntil the CocoaPods issue is resolved, users can integrate directly:
-
Add Frameworks to Xcode:
- Drag
ConnectSdkFramework.xcframework,ReactBrownfield.xcframework,hermes.xcframeworkinto project - Set to "Embed & Sign"
- Drag
-
Add Swift Files:
- Add all
.swiftfiles fromTapConnectSDK/Classes/to project
- Add all
-
Use the same API - no changes needed!
For assistance: developer@tap.company
Last Updated: December 11, 2025 Status: Pod structure complete, framework search path resolution in progress