인터넷과 계정이 필요 없는 오프라인 메시징을 가능하게 하는 도구
전파가 닿는 거리 안에서만 서로 말을 주고받는 상황을 상상해 보세요. 이 앱은 그런 환경에서 스마트폰끼리 직접 연결되어 메시지를 전달합니다. 중앙 서버나 전화번호 없이 작동하는 탈중앙화 메시징 도구입니다.
두 가지 통신 방식의 결합
이 앱은 블루투스 메쉬 네트워크와 인터넷 기반 노스트 프로토콜을 함께 사용합니다. 인터넷이 끊긴 상태에서는 근처 기기를 통해 메시지를 중계하는 오프라인 통신이 가능합니다. 인터넷이 연결되어 있을 때는 노스트 릴레이를 이용해 전 세계로 메시지를 보낼 수 있습니다. 앱은 현재 상황에 맞는 최적의 전송 경로를 자동으로 선택하며, 연결이 끊겨도 메시지를 대기열에 넣어 재시도합니다.
위치 기반 채널과 보안 기능
지리적 좌표를 이용해 특정 지역의 대화방을 만들 수 있습니다. 이 기능은 노스트 릴레이 위에서 지오해시 좌표를 기반으로 작동합니다. 개인 메시지는 노이즈 프로토콜을 사용해 끝에서 끝까지 암호화하며, 채널 채팅에는 비밀번호 보호 옵션이 제공됩니다. 또한 토르 네트워크를 내장하여 인터넷 연결 시에도 프라이버시를 유지할 수 있습니다.
안드로이드 환경에서의 구현
이 저장소는 안드로이드용 구현체로, iOS 및 macOS 버전과 프로토콜 호환성을 갖춥니다. 코틀린과 제트팩 컴포즈를 사용해 개발되었으며, MVVM 아키텍처를 따릅니다. 블루투스 스캔을 위해 위치 권한이 필요하며, 백그라운드에서 메쉬 네트워크를 유지하기 위해 포그라운드 서비스를 사용합니다. 배터리 효율을 위해 적응형 듀티 사이클링과 연결 제한을 적용합니다.
빌드와 테스트 방법
안드로이드 스튜디오와 API 26 이상의 안드로이드 SDK가 필요합니다. 저장소를 클론한 후 ./gradlew assembleDebug 명령으로 디버그 APK를 빌드할 수 있습니다. 블루투스 메쉬의 실제 무선 동작은 시뮬레이션이 어려워 실제 기기를 이용한 테스트가 필요합니다.
사용 전 확인 사항
이 프로젝트는 퍼블릭 도메인으로 공개되어 있어 라이선스 제한이 없습니다. 그러나 블루투스 메쉬 통신은 기기의 하드웨어 사양과 주변 환경에 따라 성능이 달라질 수 있습니다. 인터넷 기반 통신은 노스트 릴레이의 가용성에 의존하므로, 안정적인 전 세계 통신을 기대하기보다는 오프라인 또는 저연결 환경에서의 비상 통신 수단으로 고려하는 것이 적절합니다. 설치 시 블루투스, 위치, 알림 권한을 요청하므로 이에 대한 허용이 필요합니다.