Open
Conversation
- Added NSObject import from platform.darwin for iOS protocol implementations - Fixed NSMutableData initialization for receive file buffer - Added ExperimentalForeignApi opt-in annotations - Fixed UInt/ULong type conversions in use cases - Configured proper iosMain source set hierarchy in build.gradle.kts - Added Java 17 configuration for Xcode builds - Linked SystemConfiguration framework for network monitoring - Implemented ArkDrop bridge wrapper for iOS - Added send/receive file implementations for iOS - Configured cinterop for Objective-C bridge
- Add .github/workflows/release-ios.yml (Testflight, same secrets as Rate-iOS) - Add fastlane Fastfile, Appfile, Gemfile - Add shared iosApp.xcscheme - Update bundle ID to com.arkbuilders.Drop (from deprecated Drop-iOS) - Update Release config: Team SQNXHTL7FT, manual signing Co-authored-by: Cursor <cursoragent@cursor.com>
…ties Gradle will use JAVA_HOME from environment (set by GitHub Actions) Co-authored-by: Cursor <cursoragent@cursor.com>
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.
🎉 iOS Native Application Implementation
This PR implements a complete native iOS application for Drop KMP, bringing full feature parity with the Android app using SwiftUI and native iOS patterns.
📋 Overview
This implementation adds a fully functional iOS app that integrates seamlessly with the existing Kotlin Multiplatform shared module. The app includes all core features: file sending/receiving via QR codes, transfer history, and user profile management.
✨ What's New
🍎 Complete iOS UI Implementation
🎨 Design System
Created a comprehensive design system matching the Android app:
🧩 UI Components
Built reusable components following iOS design patterns:
AvatarView- User avatar display with multiple optionsDropButton- Primary action buttonsDropCard- Container component for content cardsEmptyStateView- Empty state handlingErrorView- Error state displayLoadingView- Loading indicatorsProgressBar- Transfer progress visualization🔗 Native Bridge Layer
Implemented a robust bridge between Swift/iOS APIs and Kotlin:
ArkDropBridge.h/m) - Native iOS API wrappersArkDropBridge.swift) - File operations, QR scanning, network utilitiesArkDropBridgeWrapper.ios.kt) - C-interop integration📦 Shared Module Enhancements
Extended the Kotlin Multiplatform shared module with iOS-specific implementations:
Platform Helpers:
AvatarHelper.ios.kt- Avatar resource managementNetworkStatus.ios.kt- Network connectivity monitoringPermissionsHelper.ios.kt- iOS permissions handlingResourcesHelper.ios.kt- File system and resource accessDrop Protocol Implementations:
DropSendFilesBubbleImpl.ios.kt- Sender bubbleSenderFileDataImpl.ios.kt- File data handling for sendingSenderFilesSubscriberImpl.ios.kt- Send progress subscriptionDropReceiveFilesBubbleImpl.ios.kt- Receiver bubbleDropReceiveFilesSubscriberImpl.ios.kt- Receive progress subscriptionDependency Injection:
KoinHelper.kt- iOS Koin initializationKoinInitializer.kt- DI setup for Swift accessPlatformModule.ios.kt🏗️ Architecture
ArkDropBridge.defadd_files_to_xcode.shscript for Xcode project managementBreakdown:
🔧 Technical Details
Dependencies Added:
Build Configuration:
🚀 How to Test
iosApp/iosApp.xcodeproj📝 Notes
Please pay special attention to: