Skip to content

Latest commit

 

History

History
143 lines (100 loc) · 3.93 KB

File metadata and controls

143 lines (100 loc) · 3.93 KB

TapConnectSDK - Setup Status

✅ What's Been Created

1. Pod Structure

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

2. SDK API (Simple & Clean)

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()

⚠️ Current Issue

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.

🔧 Attempted Solutions

  1. ✅ Created proper pod structure with source files and vendored frameworks
  2. ✅ Added framework search paths to podspec
  3. ✅ Tried subspecs to separate frameworks from Swift wrapper
  4. ✅ Added CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES
  5. ❌ Tried @_implementationOnly imports (conflicted with public protocol conformance)

🎯 Recommended Next Steps

Option 1: Manual Framework Copying (Simplest)

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
  }
]

Option 2: Create Separate Framework Pods

Split into multiple pods:

  • TapConnectSDKCore (just the frameworks)
  • TapConnectSDK (Swift wrapper that depends on Core)

Option 3: Use Static Podspec with Direct Paths

Change the integration approach to use static libraries instead of dynamic frameworks.

Option 4: Pre-built Binary Distribution

Distribute TapConnectSDK itself as a pre-built XCFramework that includes everything.

📝 Current Podfile Configuration

platform :ios, '13.0'

target 'testConnectPod' do
  use_frameworks!
  pod 'TapConnectSDK', :path => '/Users/MahAllam/ReactNative/tap/mobile-os/apps/TestConnectSDK'
end

🚀 Quick Test

To validate the pod structure (without building):

cd /Users/MahAllam/ReactNative/tap/mobile-os/apps/TestConnectSDK
./validate_pod.sh

💡 Alternative: Direct Framework Integration

Until the CocoaPods issue is resolved, users can integrate directly:

  1. Add Frameworks to Xcode:

    • Drag ConnectSdkFramework.xcframework, ReactBrownfield.xcframework, hermes.xcframework into project
    • Set to "Embed & Sign"
  2. Add Swift Files:

    • Add all .swift files from TapConnectSDK/Classes/ to project
  3. Use the same API - no changes needed!

📧 Contact

For assistance: developer@tap.company


Last Updated: December 11, 2025 Status: Pod structure complete, framework search path resolution in progress