Flutter sample project demonstrating how to use native ChannelTalk SDK in Flutter apps. (Korean Guide)
This project was created to test how to use ChannelTalk SDK in Flutter. It provides practical implementation examples that Flutter developers can reference before adopting ChannelTalk SDK.
Channel Talk does not officially support a Flutter SDK, but we provide guides and sample projects to help our clients use it. Please understand that these guides and sample projects may not be updated as quickly as other resources.
This project is an unofficial integration method that implements bridge code to use native Android/iOS SDK in Flutter. Please conduct thorough testing and verification before using in actual production environments.
channeltalk_sample/
βββ lib/
β βββ constants/
β β βββ texts.dart # App text constants
β βββ managers/
β β βββ channel_io_manager.dart # Flutter ChannelIO Manager (Singleton)
β β βββ fcm_manager.dart # Firebase messaging manager (FCM + ChannelTalk integration)
β βββ viewmodels/
β β βββ boot_test_viewmodel.dart # Boot functionality test ViewModel
β β βββ event_test_viewmodel.dart # Event handling test ViewModel
β β βββ fcm_test_viewmodel.dart # FCM functionality test ViewModel
β β βββ profile_test_viewmodel.dart # Profile functionality test ViewModel
β βββ views/
β β βββ common/ # Common UI components (8 files)
β β βββ pages/ # Main app pages
β β βββ test_sections/ # Test functionality sections (4 files)
β β βββ widgets/ # Custom widgets
β βββ firebase_options.dart # Firebase configuration (FlutterFire CLI generated)
β βββ main.dart # Sample app implementation (UI + ChannelTalk/FCM testing)
βββ android/
β βββ app/
β β βββ build.gradle.kts # Android dependencies (Firebase + ChannelTalk)
β β βββ google-services.json # Firebase configuration file
β β βββ src/main/
β β βββ AndroidManifest.xml # Custom FCM service registration
β β βββ res/values/strings.xml # FCM channel configuration
β β βββ kotlin/io/channel/channeltalk_sample/
β β βββ MainActivity.kt # Flutter β Android bridge
β β βββ ChannelIOManager.kt # Android native logic
β β βββ MainApplication.kt # ChannelTalk initialization
β β βββ ChannelIOFirebaseMessagingService.kt # Custom FCM service
βββ ios/
β βββ Podfile # iOS dependencies (Firebase + ChannelTalk)
β βββ GoogleService-Info.plist # Firebase configuration file
β βββ Runner/
β βββ AppDelegate.swift # Flutter β iOS bridge (Firebase + FCM)
β βββ ChannelIOManager.swift # iOS native logic (ChannelPluginDelegate)
β βββ Info.plist # FCM background mode configuration
βββ π Documentation/
β βββ README.md # This file (multi-language support)
β βββ guide/ # Language-specific guide documents
β βββ ko/ # Korean guides
β β βββ installation.md # SDK Installation Guide
β β βββ channel_io_manager_guide.md # ChannelIOManager Usage Guide
β β βββ push_notification_guide.md # Push Notification Main Guide
β β βββ push_notification_android.md # Android Push Setup Guide
β β βββ push_notification_ios.md # iOS Push Setup Guide
β βββ en/ # English guides
β βββ installation.md # SDK Installation Guide
β βββ channel_io_manager_guide.md # ChannelIOManager Usage Guide
β βββ push_notification_guide.md # Push Notification Main Guide
β βββ push_notification_android.md # Android Push Setup Guide
β βββ push_notification_ios.md # iOS Push Setup Guide
βββ pubspec.yaml # Flutter packages (firebase_core, firebase_messaging)
- Flutter SDK: 3.0 or higher
- iOS: iOS 15.0 or higher
- Android: API 21 or higher (Android 5.0)
- ChannelTalk Plan: Paid service plan
- Flutter: 3.35.2 (stable channel)
- Dart: 3.9.0
- Firebase Core: 2.32.0
- Firebase Messaging: 14.7.10
- Xcode: 16.3 (Build 16E140)
- Swift: 6.1
- CocoaPods: 1.16.2
- Android Gradle: 8.12
- Android Target SDK: API 35
- Android Compile SDK: API 35
- Android Min SDK: API 21
- Firebase BOM: 33.1.2
- Google Services Plugin: Latest (automatic)
- ChannelTalk Android SDK: 12.13.0
- ChannelTalk iOS SDK: Latest (automatic latest version)
For detailed information on ChannelTalk SDK installation and project setup:
π English Installation Guide - Step-by-step installation guide
Firebase FCM integration setup for ChannelTalk push notifications:
π¬ English Push Notification Guide - Firebase FCM + ChannelTalk Integration
Detailed guide on using ChannelIOManager in Flutter and code reuse:
βοΈ English ChannelIOManager Guide - Implementation, Usage, Reuse Guide
- π± iOS SDK Guide
- π€ Android SDK Guide
- π ChannelTalk Developer Documentation
- π¬ ChannelTalk Support Center
β οΈ Important: Firebase FCM configuration is required to run this sample project. Push notification functionality will not work without proper Firebase setup.
# 1. Clone project
git clone https://github.com/channel-io/channel-flutter-sample
cd channeltalk_sample
# 2. Install Flutter dependencies
flutter pub get
# 3. Install iOS dependencies (when building for iOS)
cd ios && pod install && cd ..
// Set plugin key in lib/main.dart file
await channelIO.boot(
pluginKey: "YOUR_PLUGIN_KEY", // β Change to actual plugin key
// ... other settings
);
- Create Firebase Project in Firebase Console
- Add Android/iOS apps to the project
- Download configuration files:
google-services.json
βandroid/app/
GoogleService-Info.plist
βios/Runner/
- Enable Firebase Cloud Messaging in Firebase Console
- Configure push notification credentials in ChannelTalk Admin
# Run in debug mode
flutter run
# Release build
flutter build apk --release # Android
flutter build ios --release # iOS
We recommend using the sample project code as reference material rather than direct reuse. If you plan to reuse the code, please refer to the content below and modify accordingly.
To use in actual projects, please check the following files.
π Flutter
βββ lib/managers/channel_io_manager.dart # ChannelTalk SDK Flutter interface (MethodChannel + event management)
βββ lib/managers/fcm_manager.dart # Firebase FCM + ChannelTalk integrated manager
βββ lib/firebase_options.dart # Firebase configuration (FlutterFire CLI generated)
π Android
βββ android/app/src/main/kotlin/.../ChannelIOManager.kt # ChannelTalk native logic (ChannelPluginListener)
βββ android/app/src/main/kotlin/.../MainActivity.kt # Flutter β Android bridge
βββ android/app/src/main/kotlin/.../MainApplication.kt # ChannelTalk initialization
βββ android/app/src/main/kotlin/.../ChannelIOFirebaseMessagingService.kt # Custom FCM service
βββ android/app/src/main/AndroidManifest.xml # FCM service registration + permissions
βββ android/app/src/main/res/values/strings.xml # FCM channel configuration
π iOS
βββ ios/Runner/ChannelIOManager.swift # ChannelTalk native logic (ChannelPluginDelegate)
βββ ios/Runner/AppDelegate.swift # Flutter β iOS bridge (Firebase + FCM + UNUserNotificationCenter)
βββ ios/Runner/Info.plist # FCM background mode configuration
π Firebase Configuration
βββ android/app/google-services.json # Android Firebase configuration
βββ ios/GoogleService-Info.plist # iOS Firebase configuration
βββ android/app/build.gradle.kts # Android dependencies (Firebase BOM + ChannelTalk)
βββ ios/Podfile # iOS dependencies (Firebase + ChannelTalk)
-
Integrated ChannelIOManager Architecture:
- Flutter: Provides unified SDK interface with Singleton pattern
- Android: Real-time event reception with
ChannelPluginListener
implementation - iOS: Real-time event reception with
CHTChannelPluginDelegate
implementation - MethodChannel: Bidirectional communication between platforms (method calls + event callbacks)
-
Platform-optimized FCM Processing:
- Android: Native processing in
ChannelIOFirebaseMessagingService
(inherits FlutterFirebaseMessagingService) - iOS: Integration with Flutter through
UNUserNotificationCenterDelegate
inAppDelegate
- Android: Native processing in
-
Accurate ChannelTalk Message Detection: Distinguished by
data['provider'] == 'Channel.io'
key -
Flutter FCM Compatibility: Completely preserves existing Flutter FCM functionality while adding ChannelTalk message processing
π Detailed ChannelIOManager Usage: Check ChannelIOManager Guide for detailed information on implementation structure, usage, and code reuse.
- Package Name Change: Modify package names in files to match your actual project
- Plugin Key Configuration: Use actual key issued by ChannelTalk
- Firebase Configuration: Replace
google-services.json
/GoogleService-Info.plist
files with actual project settings - Permission Settings: Check Android 13+
POST_NOTIFICATIONS
permission and iOS notification permissions β οΈ Notes for Reusing ChannelIOManager.swift:- We recommend adding the
ChannelIOManager.swift
file directly in Xcode - Copying from file explorer or creating with external editors may not be recognized by iOS project.
- Refer to Apple Developer Documentation for details.
- We recommend adding the
This project was created for learning and reference purposes. If you find improvements or issues, feel free to create Issues or PRs in the project, but contacting through ChannelTalk service will enable faster responses.
This project is used only for learning and testing purposes. ChannelTalk SDK license applies separately.
Flutter μ±μμ λ€μ΄ν°λΈ μ±λν‘ SDKλ₯Ό μ¬μ©νλ λ°©λ²μ λν μν νλ‘μ νΈμ λλ€.
μ΄ νλ‘μ νΈλ Flutterμμ μ±λν‘ SDKλ₯Ό μ¬μ©νλ λ°©λ²μ ν μ€νΈνκΈ° μν΄ λ§λ€μ΄μ‘μ΅λλ€. Flutter κ°λ°μλ€μ΄ μ±λν‘ SDKλ₯Ό λμ νκΈ° μ μ μ°Έκ³ ν μ μλ μ€μ ꡬν μμ λ₯Ό μ 곡ν©λλ€.
μ μμΌλ‘ μ§μνλ μ±λν‘ Flutter SDKλ μμ§λ§, κ³ κ°μ¬λ€μ΄ μ¬μ©ν μ μλλ‘ κ°μ΄λ λ° μν νλ‘μ νΈλ₯Ό μ 곡ν΄λλ¦¬κ³ μμ΅λλ€. λ€λ§, κ°μ΄λμ μν νλ‘μ νΈλ λΉ λ₯΄κ² μ΅μ νλμ§ μμ μ μλ€λ μ μν΄ λΆνλ립λλ€.
μ΄ νλ‘μ νΈλ λ€μ΄ν°λΈ Android/iOS SDKλ₯Ό Flutterμμ μ¬μ©ν μ μλλ‘ λΈλ¦¬μ§ μ½λλ₯Ό ꡬνν λΉκ³΅μ μ°λ λ°©λ²μ λλ€. μ€μ νλ‘λμ νκ²½μμ μ¬μ©νμ€ λλ μΆ©λΆν ν μ€νΈμ κ²μ¦μ κ±°μΉμκΈ° λ°λλλ€.
channeltalk_sample/
βββ lib/
β βββ constants/
β β βββ texts.dart # μ± ν
μ€νΈ μμ
β βββ managers/
β β βββ channel_io_manager.dart # Flutter ChannelIO Manager (Singleton)
β β βββ fcm_manager.dart # Firebase λ©μμ§ λ§€λμ (FCM + μ±λν‘ μ°λ)
β βββ viewmodels/
β β βββ boot_test_viewmodel.dart # Boot κΈ°λ₯ ν
μ€νΈ ViewModel
β β βββ event_test_viewmodel.dart # μ΄λ²€νΈ μ²λ¦¬ ν
μ€νΈ ViewModel
β β βββ fcm_test_viewmodel.dart # FCM κΈ°λ₯ ν
μ€νΈ ViewModel
β β βββ profile_test_viewmodel.dart # νλ‘ν κΈ°λ₯ ν
μ€νΈ ViewModel
β βββ views/
β β βββ common/ # κ³΅ν΅ UI μ»΄ν¬λνΈ (8κ° νμΌ)
β β βββ pages/ # λ©μΈ μ± νμ΄μ§λ€
β β βββ test_sections/ # ν
μ€νΈ κΈ°λ₯ μΉμ
λ€ (4κ° νμΌ)
β β βββ widgets/ # 컀μ€ν
μμ ―λ€
β βββ firebase_options.dart # Firebase μ€μ νμΌ (FlutterFire CLI μμ±)
β βββ main.dart # μν μ± κ΅¬ν (UI + μ±λν‘/FCM ν
μ€νΈ)
βββ android/
β βββ app/
β β βββ build.gradle.kts # Android μ’
μμ± μ€μ (Firebase + μ±λν‘)
β β βββ google-services.json # Firebase μ€μ νμΌ
β β βββ src/main/
β β βββ AndroidManifest.xml # 컀μ€ν
FCM μλΉμ€ λ±λ‘
β β βββ res/values/strings.xml # FCM μ±λ μ€μ
β β βββ kotlin/io/channel/channeltalk_sample/
β β βββ MainActivity.kt # Flutter β Android λΈλ¦¬μ§
β β βββ ChannelIOManager.kt # Android λ€μ΄ν°λΈ λ‘μ§
β β βββ MainApplication.kt # μ±λν‘ μ΄κΈ°ν
β β βββ ChannelIOFirebaseMessagingService.kt # 컀μ€ν
FCM μλΉμ€
βββ ios/
β βββ Podfile # iOS μ’
μμ± μ€μ (Firebase + μ±λν‘)
β βββ GoogleService-Info.plist # Firebase μ€μ νμΌ
β βββ Runner/
β βββ AppDelegate.swift # Flutter β iOS λΈλ¦¬μ§ (Firebase + FCM)
β βββ ChannelIOManager.swift # iOS λ€μ΄ν°λΈ λ‘μ§ (ChannelPluginDelegate)
β βββ Info.plist # FCM λ°±κ·ΈλΌμ΄λ λͺ¨λ μ€μ
βββ π λ¬Έμλ€/
β βββ README.md # μ΄ νμΌ (λ€κ΅μ΄ μ§μ)
β βββ guide/ # μΈμ΄λ³ κ°μ΄λ λ¬Έμ
β βββ ko/ # νκ΅μ΄ κ°μ΄λ
β β βββ installation.md # SDK μ€μΉ κ°μ΄λ
β β βββ channel_io_manager_guide.md # ChannelIOManager μ¬μ© κ°μ΄λ
β β βββ push_notification_guide.md # νΈμ μλ¦Ό λ©μΈ κ°μ΄λ
β β βββ push_notification_android.md # Android νΈμ μ€μ κ°μ΄λ
β β βββ push_notification_ios.md # iOS νΈμ μ€μ κ°μ΄λ
β βββ en/ # English guides
β βββ installation.md # SDK Installation Guide
β βββ channel_io_manager_guide.md # ChannelIOManager Usage Guide
β βββ push_notification_guide.md # Push Notification Main Guide
β βββ push_notification_android.md # Android Push Setup Guide
β βββ push_notification_ios.md # iOS Push Setup Guide
βββ pubspec.yaml # Flutter ν¨ν€μ§ (firebase_core, firebase_messaging)
- Flutter SDK: 3.0 μ΄μ
- iOS: iOS 15.0 μ΄μ
- Android: API 21 μ΄μ (Android 5.0)
- μ±λν‘ νλ: μ λ£ μλΉμ€ νλ
- Flutter: 3.35.2 (stable channel)
- Dart: 3.9.0
- Firebase Core: 2.32.0
- Firebase Messaging: 14.7.10
- Xcode: 16.3 (Build 16E140)
- Swift: 6.1
- CocoaPods: 1.16.2
- Android Gradle: 8.12
- Android Target SDK: API 35
- Android Compile SDK: API 35
- Android Min SDK: API 21
- Firebase BOM: 33.1.2
- Google Services Plugin: Latest (μλ)
- μ±λν‘ Android SDK: 12.13.0
- μ±λν‘ iOS SDK: Latest (μλ μ΅μ λ²μ )
μ±λν‘ SDK μ€μΉ λ° νλ‘μ νΈ μ€μ μ λν μμΈν λ΄μ©:
π νκ΅μ΄ μ€μΉ κ°μ΄λ - λ¨κ³λ³ μ€μΉ κ°μ΄λ
μ±λν‘ νΈμ μλ¦Όμ μν Firebase FCM μ°λ μ€μ :
π¬ νκ΅μ΄ νΈμ μλ¦Ό μ€μ κ°μ΄λ - Firebase FCM + μ±λν‘ μ°λ
Flutterμμ ChannelIOManagerλ₯Ό μ¬μ©νλ λ°©λ²κ³Ό μ½λ μ¬μ¬μ©μ λν μμΈ κ°μ΄λ:
βοΈ νκ΅μ΄ ChannelIOManager κ°μ΄λ - ꡬν ꡬ쑰, μ¬μ©λ², μ¬μ¬μ© κ°μ΄λ
- π± iOS SDK κ°μ΄λ
- π€ Android SDK κ°μ΄λ
- π μ±λν‘ κ°λ°μ λ¬Έμ
- π¬ μ±λν‘ μ§μμΌν°
β οΈ μ€μ: μ΄ μν νλ‘μ νΈλ₯Ό μ€ννλ €λ©΄ Firebase FCM μ€μ μ΄ νμμ λλ€. Firebase μ€μ μμ΄λ νΈμ μλ¦Ό κΈ°λ₯μ΄ λμνμ§ μμ΅λλ€.
# 1. νλ‘μ νΈ ν΄λ‘
git clone https://github.com/channel-io/channel-flutter-sample
cd channeltalk_sample
# 2. Flutter μ’
μμ± μ€μΉ
flutter pub get
# 3. iOS μ’
μμ± μ€μΉ (iOS λΉλμ)
cd ios && pod install && cd ..
// lib/main.dart νμΌμμ νλ¬κ·ΈμΈ ν€ μ€μ
await channelIO.boot(
pluginKey: "YOUR_PLUGIN_KEY", // β μ€μ νλ¬κ·ΈμΈ ν€λ‘ λ³κ²½
// ... κΈ°ν μ€μ
);
- Firebase νλ‘μ νΈ μμ± (Firebase Consoleμμ)
- Android/iOS μ± μΆκ°
- μ€μ νμΌ λ€μ΄λ‘λ:
google-services.json
βandroid/app/
GoogleService-Info.plist
βios/Runner/
- Firebase Cloud Messaging νμ±ν (Firebase Consoleμμ)
- νΈμ μλ¦Ό μ격μ¦λͺ μ€μ (μ±λν‘ κ΄λ¦¬μμμ)
# Debug λͺ¨λ μ€ν
flutter run
# Release λΉλ
flutter build apk --release # Android
flutter build ios --release # iOS
μν νλ‘μ νΈμ μ½λλ₯Ό μ¬μ¬μ©ν기보λ€λ μ°Έκ³ μλ£λ‘ μ¬μ©νμλ κ²μ κΆμ₯λ립λλ€. λ§μ½ μ¬μ¬μ©μ νλ κ²½μ°, μλ λ΄μ©μ μ°Έμ‘°νμ¬ μ½λλ₯Ό μμ ν΄μ£ΌμΈμ.
μ€μ νλ‘μ νΈμμ μ¬μ©νλ €λ©΄ λ€μ νμΌλ€μ νμΈν΄μ£ΌμΈμ.
π Flutter
βββ lib/managers/channel_io_manager.dart # μ±λν‘ SDK Flutter μΈν°νμ΄μ€ (MethodChannel + μ΄λ²€νΈ κ΄λ¦¬)
βββ lib/managers/fcm_manager.dart # Firebase FCM + μ±λν‘ ν΅ν© κ΄λ¦¬μ
βββ lib/firebase_options.dart # Firebase μ€μ (FlutterFire CLI μμ±)
π Android
βββ android/app/src/main/kotlin/.../ChannelIOManager.kt # μ±λν‘ λ€μ΄ν°λΈ λ‘μ§ (ChannelPluginListener)
βββ android/app/src/main/kotlin/.../MainActivity.kt # Flutter β Android λΈλ¦¬μ§
βββ android/app/src/main/kotlin/.../MainApplication.kt # μ±λν‘ μ΄κΈ°ν
βββ android/app/src/main/kotlin/.../ChannelIOFirebaseMessagingService.kt # 컀μ€ν
FCM μλΉμ€
βββ android/app/src/main/AndroidManifest.xml # FCM μλΉμ€ λ±λ‘ + κΆν μ€μ
βββ android/app/src/main/res/values/strings.xml # FCM μ±λ μ€μ
π iOS
βββ ios/Runner/ChannelIOManager.swift # μ±λν‘ λ€μ΄ν°λΈ λ‘μ§ (ChannelPluginDelegate)
βββ ios/Runner/AppDelegate.swift # Flutter β iOS λΈλ¦¬μ§ (Firebase + FCM + UNUserNotificationCenter)
βββ ios/Runner/Info.plist # FCM λ°±κ·ΈλΌμ΄λ λͺ¨λ μ€μ
π Firebase μ€μ
βββ android/app/google-services.json # Android Firebase μ€μ
βββ ios/GoogleService-Info.plist # iOS Firebase μ€μ
βββ android/app/build.gradle.kts # Android μ’
μμ± (Firebase BOM + μ±λν‘)
βββ ios/Podfile # iOS μ’
μμ± (Firebase + μ±λν‘)
-
ν΅ν©λ ChannelIOManager μν€ν μ²:
- Flutter: Singleton ν¨ν΄μΌλ‘ λ¨μΌνλ SDK μΈν°νμ΄μ€ μ 곡
- Android:
ChannelPluginListener
ꡬνμΌλ‘ μ€μκ° μ΄λ²€νΈ μμ - iOS:
CHTChannelPluginDelegate
ꡬνμΌλ‘ μ€μκ° μ΄λ²€νΈ μμ - MethodChannel: νλ«νΌ κ° μλ°©ν₯ ν΅μ (λ©μλ νΈμΆ + μ΄λ²€νΈ μ½λ°±)
-
νλ«νΌλ³ μ΅μ νλ FCM μ²λ¦¬:
- Android:
ChannelIOFirebaseMessagingService
(FlutterFirebaseMessagingService μμ)μμ λ€μ΄ν°λΈ μ²λ¦¬ - iOS:
AppDelegate
μUNUserNotificationCenterDelegate
μμ Flutterμ μ°λ
- Android:
-
μ±λν‘ λ©μμ§ μ νν νλ³:
data['provider'] == 'Channel.io'
ν€λ‘ κ΅¬λΆ -
Flutter FCM νΈνμ± μ μ§: κΈ°μ‘΄ Flutter FCM κΈ°λ₯μ μμ ν 보쑴νλ©΄μ μ±λν‘ λ©μμ§ μΆκ° μ²λ¦¬
π μμΈν ChannelIOManager μ¬μ©λ²: ChannelIOManager κ°μ΄λμμ ꡬν ꡬ쑰, μ¬μ©λ², μ½λ μ¬μ¬μ©μ λν μμΈ μ 보λ₯Ό νμΈνμΈμ.
- ν¨ν€μ§λͺ λ³κ²½: νμΌ λ΄ ν¨ν€μ§λͺ μ μ€μ νλ‘μ νΈμ λ§κ² μμ
- νλ¬κ·ΈμΈ ν€ μ€μ : μ±λν‘μμ λ°κΈλ°μ μ€μ ν€ μ¬μ©
- Firebase μ€μ :
google-services.json
/GoogleService-Info.plist
νμΌμ μ€μ νλ‘μ νΈ μ€μ μΌλ‘ κ΅μ²΄ - κΆν μ€μ : Android 13+
POST_NOTIFICATIONS
κΆν λ° iOS μλ¦Ό κΆν νμΈ β οΈ ChannelIOManager.swift μ¬μ¬μ© μ μ°Έκ³ μ¬ν:ChannelIOManager.swift
νμΌμ Xcodeμμ μ§μ μΆκ°νλ κ²μ κΆμ₯λ립λλ€- νμΌ νμκΈ°μμ 볡μ¬νκ±°λ μΈλΆ μλν°λ‘ μμ±νλ©΄ iOS νλ‘μ νΈμμ μΈμ§νμ§ λͺ»ν μ μμ΅λλ€.
- μμΈν λ΄μ©μ Apple κ°λ°μ λ¬Έμλ₯Ό μ°Έκ³ νμΈμ.
μ΄ νλ‘μ νΈλ νμ΅ λ° μ°Έκ³ λͺ©μ μΌλ‘ λ§λ€μ΄μ‘μ΅λλ€. κ°μ μ¬νμ΄λ λ¬Έμ μ μ λ°κ²¬νμλ©΄ νλ‘μ νΈμ Issue νΉμ PRμ μμ²ν΄μ£Όμ λ μ’μ§λ§, μ±λν‘ μλΉμ€λ₯Ό ν΅ν΄ λ¬Έμλ₯Ό μ£Όμλ©΄ λΉ λ₯Έ μλ΅μ΄ κ°λ₯ν©λλ€.
μ΄ νλ‘μ νΈλ νμ΅ λ° ν μ€νΈ λͺ©μ μΌλ‘λ§ μ¬μ©λ©λλ€. μ±λν‘ SDKμ λΌμ΄μ μ€λ λ³λλ‘ μ μ©λ©λλ€.