전체 글137 Flutter 앱 하나로 Android와 Windows를 동시에 — PlatformInterface 추상화 설계 안녕하세요! FlutterNeverDie 개발자입니다.하나의 Flutter 코드베이스로 Android 태블릿과 Windows PC에서 모두 완벽하게 돌아가는 앱을 만들어 보신 적 있나요? 단순한 UI 렌더링이라면 Flutter가 알아서 해주지만, 문제는 네이티브 하드웨어 제어입니다.영수증 프린터, 카드 단말기(VAN), 바코드 스캐너 등 하드웨어와 통신하는 방식은 OS마다 완전히 다릅니다. Android는 MethodChannel을 통해 Java/Kotlin 코드와 대화해야 하고, Windows는 로컬 소켓(Socket)을 열어 C# 에이전트와 JSON을 주고받아야 합니다.곳곳에 if (Platform.isAndroid) 분기문이 흩어져 있는 끔찍한 코드를 막기 위해, 저희가 도입한 PlatformInt.. 2026. 5. 13. Flutter TTS, 그냥 speak() 쓰면 생기는 일 — 3단계 우선순위 큐 설계 안녕하세요! FlutterNeverDie 개발자입니다.시각 장애인을 위한 배리어프리(Barrier-Free) 키오스크를 개발할 때 가장 중요한 것은 TTS(Text-To-Speech)입니다. 화면을 볼 수 없는 사용자는 오직 음성 안내에만 의지해 결제를 진행해야 합니다.Flutter에서 flutter_tts 패키지를 사용해 보신 분들은 알겠지만, 단순히 tts.speak('안녕하세요')를 호출하는 것만으로는 실제 프로덕션을 만들 수 없습니다. 사용자가 화면을 빠르게 터치하거나, 시스템 경고가 발생할 때 음성이 겹치거나 끊기는 "TTS 충돌 현상"이 발생하기 때문입니다.오늘은 저희 키오스크 프로젝트에서 이 문제를 해결하기 위해 도입한 TTS 3단계 우선순위 큐(Queue) 아키텍처를 소개합니다.1. 문제 .. 2026. 5. 13. 현장에 가지 않고 수백 대 키오스크를 업데이트하는 법 — Flutter OTA 안녕하세요! FlutterNeverDie 개발자입니다.만약 코드에 치명적인 메모리 누수 버그나 결제 오류가 발견되어 긴급 패치를 해야 한다면 어떨까요? 전국에 깔린 수백 대의 키오스크에 USB를 들고 찾아가는 것은 불가능합니다. 플레이스토어 심사를 기다릴 시간도 없습니다.키오스크는 현장에 가지 않고도 스스로 업데이트 파일을 다운로드하고 설치하는 시스템이 필수적입니다. 오늘은 저희 프로젝트에서 구현한 OTA(Over-The-Air) 무선 업데이트 아키텍처를 소개합니다.1. OTA 업데이트의 기본 흐름Flutter에서 OTA 업데이트를 구현하려면 Native의 힘을 빌려야 합니다. 전체 흐름은 크게 3단계로 나뉩니다. 권한 획득: Android의 저장소 접근 권한과 패키지 설치 권한(REQUEST_INST.. 2026. 5. 13. Flutter 키오스크 메모리 누수를 1초 단위로 감시하는 법 안녕하세요! FlutterNeverDie 개발자입니다.스마트폰 앱과 키오스크 앱의 가장 큰 차이점이 무엇일까요? 바로 "앱이 종료되는가?"입니다. 일반적인 스마트폰 앱은 사용자가 홈 버튼을 눌러 나가면 OS가 알아서 메모리를 회수합니다. 하지만 키오스크는 24시간 내내, 1년 365일 켜져 있어야 합니다. 단 1MB의 메모리 누수(Memory Leak)라도 발생하면, 며칠 뒤에는 반드시 OOM(Out Of Memory) 크래시로 이어져 키오스크가 먹통이 됩니다.오늘은 저희 Flutter 키오스크 프로젝트에서 메모리 누수를 어떻게 실시간으로 감시하고 방어하는지에 대한 구조를 공유합니다.1. 왜 메모리를 직접 감시해야 하는가?Flutter는 가비지 컬렉터(GC)가 알아서 메모리를 관리해 주는 훌륭한 프레임워.. 2026. 5. 13. 코드 한 줄 안 바꾸고 브랜드마다 완전히 다른 키오스크 만들기 [Flutter 결제 파이프라인 7편] 안녕하세요! FlutterNeverDie 개발자입니다.지금까지 6편에 걸쳐 결제 모듈을 할인, 결제수단, VAN, 플랫폼이라는 4개의 축으로 분리하고, 실패 안전망까지 구축하는 과정을 살펴보았습니다. 이번 마지막 7편에서는 이 모든 복잡한 퍼즐 조각들을 하나로 묶어 통제하는 "설정 주도 아키텍처(Configuration-Driven Architecture)"에 대해 이야기하며 시리즈를 마무리하겠습니다.1. 브랜드마다 다른 키오스크가 되는 마법발트루스트 통합 키오스크(kiosk_v4)는 단일 Flutter 앱입니다. 하지만 A브랜드 매장에 설치된 키오스크와 B브랜드 매장에 설치된 키오스크는 완전히 다르게 동작합니다.A브랜드: KIS VAN사 사용, 카카오페이/네이버페이 활성화, 쿠폰 사용 가능, 배리어프리.. 2026. 5. 12. VAN 승인은 됐는데 서버가 죽었다 — 결제 데이터를 지키는 SQLite 안전망 [Flutter 결제 파이프라인 6편] 안녕하세요! FlutterNeverDie 개발자입니다.이전 편들에서 4개의 축으로 이루어진 결제 파이프라인 설계를 모두 살펴보았습니다. 이번 6편에서는 결제 시스템의 화룡점정이자, 어떤 장애 상황에서도 고객의 결제 데이터를 안전하게 지켜내는 "실패 안전망(FailedOrderRetryService)"에 대해 이야기하겠습니다.1. 최악의 시나리오 — 결제는 성공했는데 저장이 실패한다면?키오스크를 운영하다 보면 반드시 마주치는 상황이 있습니다. 고객이 카드를 꽂고 VAN사 승인(결제 완료)까지는 정상적으로 떨어졌는데, 그 직후 매장 인터넷이 잠시 끊기거나 키오스크 서버가 일시적인 장애를 일으키는 경우입니다.이때 아무런 안전망이 없다면, 고객 통장에서는 돈이 빠져나갔는데 매장 POS에는 주문이 들어오지 않아 .. 2026. 5. 12. 이전 1 2 3 4 ··· 23 다음