feat(bluetooth): 실제 BLE 기반 맛집 리스트 공유 구현

- ble_peripheral 패키지 추가 (Peripheral/GATT Server 역할)
- flutter_blue_plus 패키지 활용 (Central/스캔/연결 역할)

변경 사항:
- BleConstants: BLE UUID 및 설정 상수 정의
- BluetoothService: Mock에서 실제 BLE 통신으로 전면 재작성
  - Receiver: GATT Server로 광고, Write callback으로 데이터 수신
  - Sender: 서비스 UUID로 스캔, 연결 후 Characteristic에 데이터 전송
  - 청크 기반 대용량 데이터 전송 프로토콜 구현
- ShareDevice: BLE 디바이스 정보 필드 추가 (remoteId, rssi, bleDevice)
- Android/iOS: BLE 권한 및 기능 선언 추가

데이터 전송 프로토콜:
- 'CHUNK:index:total:data' 형식으로 500바이트 단위 분할 전송
- 수신 측에서 청크 조립 후 JSON 파싱
This commit is contained in:
JiWoong Sul
2026-01-30 00:09:13 +09:00
parent 24b074ff4c
commit c608b6c7df
11 changed files with 534 additions and 60 deletions

View File

@@ -5,6 +5,7 @@
import FlutterMacOS
import Foundation
import ble_peripheral
import flutter_blue_plus_darwin
import flutter_local_notifications
import geolocator_apple
@@ -15,6 +16,7 @@ import url_launcher_macos
import webview_flutter_wkwebview
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
BlePeripheralPlugin.register(with: registry.registrar(forPlugin: "BlePeripheralPlugin"))
FlutterBluePlusPlugin.register(with: registry.registrar(forPlugin: "FlutterBluePlusPlugin"))
FlutterLocalNotificationsPlugin.register(with: registry.registrar(forPlugin: "FlutterLocalNotificationsPlugin"))
GeolocatorPlugin.register(with: registry.registrar(forPlugin: "GeolocatorPlugin"))