https://apps.apple.com/kr/app/socketing/id6741525412
- This project is built upon everyone-falls-asleep
- The original project provides a web-based real-time ticketing program, and this app extends its functionality to iOS platform using Swift and UIKit.
- Xcode Version: 15.0
- macOS Version: Ventura 13.5 (M2)
- Swift Version: 5.9
- iOS Deployment Target: 15.0 or later
- Dependencies: RxSwift, SocketIO, SnapKit, Starscream, Toast
1οΈβ£ Clone the repository
git clone https://github.com/yeonupark/socketing-iOS
2οΈβ£ Open the project
cd socketing-iOS
xed .
3οΈβ£ Set up environment variables
The project uses .xcconfig files to manage environment variables.
πΉ Steps to Configure Environment Variables:
- Navigate to the Configurations folder:
cd Configurations
- Create .xcconfig files for different configurations:
Debug.xcconfigRelease.xcconfig
π‘.xcconfig files are ignored by Git
- Inside each .xcconfig file, add the following variables
BASE_URL = [your-api-url]
SOCKET_URL = [your-socket-url]
QUEUE_URL = [your-queue-url]
- Verify the configuration is applied correctly in Xcode:
- Go to Project β Info β Configurations
- Ensure the Debug and Release configurations reference the corresponding
.xcconfigfiles.
-
Open the project in Xcode
-
Select a simulator or physical device
-
Press Cmd + R to run the app
π Socketing
βββ π Utils
βββ π Components
βββ π Extensions
βββ π Base
βββ π Network
βββ π Views
βββ π Controllers
βββ π ViewModels
- Utils: Reusable utility functions and helpers
- Extensions: Swift extensions for enhanced functionality
- Base: Base classes and protocols
- Network: Networking layer
- Views: UI screens
- Controllers: View controllers for handling UI logic and user interaction
- ViewModels: Business logic and data binding (MVVM)
Swift Package Manager (SPM) will automatically resolve dependencies when opening the project in Xcode.
List of dependencies:
- RxSwift β Used for reactive programming, handling UI events and network responses asynchronously with
Relay,Driver,Subject. - Socket.IO-Client-Swift β Enables real-time data communication using WebSocket-based Socket.IO for message exchange with the server.
- Starscream β Manages WebSocket connections, facilitating real-time communication with the server.
- SnapKit β Simplifies Auto Layout implementation, allowing for intuitive and concise UI layout management in code.
- Toast-Swift β Displays brief notifications or error messages in a toast-style popup.
β Socket-based communication β Real-time ticketing system powered by Socket.IO.
β Reactive programming with RxSwift β Efficient event-driven programming.
β WebView-based SVG rendering β Renders a seating chart SVG in a WebView and overlays coordinate-based seat data.
β Secure environment configuration β Manages environment variables using .xcconfig to protect sensitive information.
β MVVM architecture β Separates UI and business logic, improving modularity and maintainability.
If you have any questions, feel free to reach out at idepix5@gmail.com.