iPhone + Mac 조합에만 있던 알림 연동을, Galaxy 사용자에게도. NotiRelay는 Android에서 수신된 카톡·메시지·앱 알림을 종단 간 암호화된 채로 Firestore를 거쳐 macOS 네이티브 알림으로 띄웁니다. 별도 서버 없음, 무료.
NotiRelay는 자체 백엔드를 운영하지 않습니다. Android 앱이 알림을 캡처해 암호화 후 Firestore에 기록하고, Mac 앱은 같은 Google 계정으로 실시간 구독만 합니다.
업무폰·개인폰·서브폰을 한 계정으로 등록하면, Mac 알림함에 기기명 배지로 구분되어 표시됩니다. 기기별로 수신 ON/OFF 토글 가능.
카톡·메시지·라인·전화 등 지정한 앱의 알림만 포워딩합니다. 쇼핑·게임 광고 알림이 Mac까지 따라오지 않게.
알림 제목·본문은 기기에서 암호화된 뒤 Firestore로 올라갑니다. 패스프레이즈를 모르면 운영자조차 내용을 볼 수 없습니다.
삼성의 공격적인 배터리 최적화에도 살아남도록 포그라운드 서비스로 상주. 재부팅 후에도 알림 리스너 자동 복구.
Firestore snapshot listener 기반 100ms~수초 내 전파. 폴링 없음, 배터리 영향 미미.
Mac 앱 실행 시 30일 초과 알림을 자동 삭제해 Firestore 무료 한도(1GB) 내에서 계속 운영됩니다.
NotiRelay는 클라이언트 사이드 암호화만 사용합니다. Firebase는 암호문을 보관·중계할 뿐, 키 유도에 필요한 패스프레이즈에는 접근할 수 없습니다.
개인이 만든 무료 유틸리티입니다. 설치 전에 아래 제약들을 반드시 확인하세요.
현 MVP는 Android에서 Mac으로의 알림 포워딩만 구현합니다. Mac의 알림을 Android로 보내거나, Windows 수신 앱, iPhone 송신 앱은 로드맵에 있지만 미구현 상태입니다.
Mac에서 알림을 읽거나 삭제해도 Android 원본 알림은 그대로 남습니다. 카톡 답장 기능(RemoteInput)도 미지원. 알림은 읽기 전용 뷰어로 생각해주세요.
서버리스 구조상 Firestore Spark 플랜(일 20K writes, 50K reads, 1GB)에 의존합니다. 50명 초과 시 월 $1~5의 Blaze 전환이 필요할 수 있습니다. 이 때는 서비스를 중단할 수 있습니다.
E2E 암호화의 필연적 제약입니다. 패스프레이즈를 잊으면 기존 알림은 모두 복호화 불가(재설정 후 신규 알림만 수신). 비밀번호 관리자 사용을 권장합니다.
One UI의 공격적인 백그라운드 제한 때문에 설정 → 배터리 → 백그라운드 사용 제한에서 앱을 제외해야 합니다. 안 그러면 몇 시간 후 리스너가 킬됩니다.
Play Store / Mac App Store 미배포. APK는 "출처를 알 수 없는 앱 설치" 허용 후 사이드로드, DMG는 Gatekeeper 우회(우클릭 → 열기)가 필요합니다.
쿼리·필터링을 위해 appName, deviceName, timestamp는 암호화되지 않습니다. "누가, 뭘 말했는지"는 보호되지만 "언제, 어느 앱의 알림이 왔는지"는 Firestore에서 관찰 가능합니다.
두 기기에 각각 설치한 뒤 같은 Google 계정으로 로그인하면 자동으로 페어링됩니다. 별도 QR이나 코드 교환은 없습니다.
알림을 실시간 수신해 macOS 네이티브 알림으로 표시하고, 읽은 알림 히스토리를 관리합니다.
a41f…c9e2Android 알림을 캡처해 암호화 후 Firestore로 전송합니다. 포그라운드 서비스로 백그라운드 상주.
d77b…1aa3Android 먼저 설치·설정한 뒤 Mac에 동일 Google 계정으로 로그인, 같은 패스프레이즈를 입력하면 끝입니다.
설정 → 앱 → 특별한 접근 → 알 수 없는 앱 설치에서 Chrome 또는 다운로드 관리자에 권한을 주세요.
위의 NotiRelay-0.1.0.apk를 다운로드 후 탭하여 설치하고 앱을 실행합니다.
Mac에서도 사용할 Google 계정으로 로그인합니다. 같은 계정이 Android와 Mac을 연결하는 유일한 페어링 수단입니다.
앱이 가이드하는 대로 알림 접근 특별 권한을 허용하세요. 이 권한이 있어야 NotiRelay가 다른 앱의 알림을 읽을 수 있습니다.
Galaxy는 기본적으로 백그라운드 앱을 공격적으로 종료합니다. 설정 → 배터리 → 백그라운드 사용 제한 → 절대 잠자기 않는 앱에 NotiRelay를 추가하세요.
"업무폰"·"개인폰"처럼 기기 이름을 지정하고, 포워딩할 앱을 체크합니다. 기본값: 메시지, 카카오톡.
8자 이상의 패스프레이즈를 설정합니다. 이 값은 서버로 전송되지 않고 기기에서 AES-256 키로 유도됩니다.
예. Android와 Mac 모두 동일한 Google 계정으로 로그인하는 것이 유일한 페어링 방식입니다. 회사 Workspace 계정도 동작하지만, 관리자가 서드파티 앱 로그인을 제한해두면 실패할 수 있습니다.
같은 Google 계정에 Android 기기 여러 대를 등록할 수 있고, 각 알림은 기기명 배지로 Mac에서 구분됩니다. Mac은 여러 대에 같은 계정으로 로그인하면 모든 Mac이 동일하게 알림을 수신합니다.
아니요. 현 MVP는 읽기 전용입니다. 답장 기능은 구현 고민중에 있습니다.
MVP 스펙 외입니다. iPhone의 경우 시스템 수준 알림 접근 권한 자체를 앱에 내주지 않기 때문에 기술적으로 불가합니다. Windows Receiver는 Flutter Windows 타겟을 추가하면 가능하지만 우선순위가 낮습니다.
Spark 플랜 한도 초과 시 Firestore writes/reads가 일시 차단됩니다. 본인이 만든 Firebase 프로젝트에 본인 자격증명으로 로그인하는 구조라면, 본인이 직접 Blaze로 업그레이드할 수 있습니다. 유료 과금이 시작되면 서비스를 중지할 수 있습니다.
아니요. Analytics는 포함되지 않았고, Crashlytics가 활성화되어도 알림 제목·본문 평문은 로그에 남기지 않습니다. 모든 로깅 경로에서 암호화된 상태로만 취급됩니다.
개인 프로젝트로 출발했으며 스펙 문서와 보안 설계를 투명하게 공개합니다. 저장소 공개 여부는 검토 중입니다.