EEltaCrew
홈 › 블로그

로또 용지 QR 인식 성공이 0건이었던 이유: 기록하지 않은 경로는 실패처럼 보인다

게시 2026-10-22실측 기준 2026-10-22읽는 시간 약 5분elta · EltaCrew

로또 앱 주간 보고에서 QR 화면을 연 사람은 19명인데 인식 성공은 0건이었습니다. 스캐너가 고장 난 게 아니라, 진짜 용지 QR 이 지나가는 경로에 기록이 하나도 없었습니다. 측정 구멍을 찾은 과정, 같은 기능 앱 4개와 비교한 결과, 스캔 엔진을 번들로 바꾼 이유, 고친 뒤 1주일 숫자를 정리합니다.

19명이 열었는데 성공 0건

로또 당첨번호 앱에는 용지의 QR 을 찍어 당첨 결과를 보는 화면이 있습니다. 10월 초 주간 보고에서 이 화면을 연 사람은 19명이었고, GA4 의 인식 성공 기록은 0건이었습니다.

19명 중 한 명도 읽지 못했다면 스캐너가 고장 난 것입니다. 그런데 직접 찍어 보면 잘 읽혔습니다. 숫자와 손에서 본 결과가 맞지 않아서, 스캐너보다 기록하는 코드를 먼저 의심했습니다.

진짜 용지 QR 은 기록 없이 앱을 떠났다

QR 을 읽은 뒤 처리하는 코드를 다시 읽어 보니 경로가 둘이었습니다.

실제 로또 용지의 QR 은 전부 URL 입니다. LOTTO;ROUND= 형식은 개발 초기에 예시로 만든 것이고, 이런 QR 이 찍힌 용지는 없습니다. 결국 진짜 용지를 찍은 사람은 모두 첫 번째 경로로 브라우저에 넘어갔고, 기록이 남는 두 번째 경로는 아무도 지나가지 않았습니다. 「성공 0건」은 실패가 아니라 측정 구멍이었습니다.

용지 QR 의 생김새

고치기 전에 실제 용지 QR 의 형식부터 확인했습니다.

http://qr.dhlottery.co.kr/?v=1245q061415182834q…n000000000000…

예전 용지에 찍힌 m.dhlottery.co.kr/?v= 주소도 지금 열어 보면 307 로 qr.dhlottery.co.kr 로 넘어가서 정상적으로 결과가 나왔습니다(10월 15일 확인).

기록부터 넣었다

어디서 끊기는지 알아야 하니, 앱 동작을 바꾸기 전에 모든 갈래에 기록을 넣었습니다.

갈래 기록
동행복권 로또 주소 성공 + 주소 모양
연금복권 주소 성공 + 주소 모양
다른 주소 실패 + 도메인
로또 QR 이 아님 실패
카메라 권한 거부 실패
아무것도 못 읽고 나감 실패(no_read)

주소 모양은 숫자를 모두 9 로 바꿔서 남깁니다. 용지 번호는 개인이 산 복권이라 분석 도구에 그대로 보내지 않고, 형식이 맞는지만 알 수 있게 했습니다.

lotto_url:qr.dhlottery.co.kr/?v=9999q999999999999q999999999999…

같은 기능 앱 4개는 어떻게 하나

QR 로 당첨을 확인하는 다른 앱 4개를 설치해서 APK 를 열고 QR 처리 부분을 봤습니다.

번들이 아닌 스캔 엔진의 함정

ML Kit 바코드 스캐너에는 두 가지 버전이 있습니다. 번들 버전은 인식 모델이 APK 안에 들어 있고, 번들이 아닌 버전은 모델을 Google Play 서비스가 따로 내려받습니다.

공식 문서를 다시 읽어 보니, 번들이 아닌 버전은 앱을 Play 스토어에서 설치할 때만 모델을 미리 받아 둡니다. 다른 경로로 설치하면 첫 스캔 때 받기 시작하고, 받기 전에 들어온 요청에는 「결과 없음」을 돌려줍니다. 사용자 눈에는 카메라에 QR 을 비춰도 아무 반응이 없는 화면입니다.

이 앱은 Play 스토어 말고 다른 스토어에도 올립니다. 그래서 번들 버전으로 바꿨습니다. APK 가 약 2.4MB 커지지만 설치 경로와 상관없이 첫 스캔부터 읽습니다. 번들 버전에 든 네이티브 라이브러리가 16KB 페이지 정렬인지도 확인했습니다.

함께 바꾼 것은 다음과 같습니다(10월 15일 1.0.76).

고친 뒤 1주일

1.0.76 부터 10월 22일까지 QR 화면 기록입니다.

항목 사용자 횟수
QR 화면 시도 33명 83회
성공(동행복권 주소) 5명 16회
못 읽고 나감 21명 41회
카메라 권한 거부 3명 9회
다른 주소 1명 1회

성공이 처음으로 잡혔습니다. 1.0.76 에서 성공한 주소 모양은 모두 예전 주소(m.dhlottery.co.kr)였습니다. 예전 용지도 인식되고 있습니다.

아직 모르는 것

정리

이 글에 나온 앱은 로또 당첨번호·명당 판매점 앱(Google Play) 입니다.

AndroidGA4ML KitQR 코드측정

함께 읽기

지도 왼쪽 아래 로고를 누르면 앱이 꺼졌다: 네이버 지도 SDK 와 AppCompat 테마로또 판매점 지도 앱의 Crashlytics 에 「You need to use a Theme.AppCompat theme」 크래시가 4건 올라왔습니다. 사용자가 아니라 Play 사전 출시 보고서의 테스트 로봇이 지도 왼쪽 아래 NAVER 로고를 누른 것이었습니다. 원인, 앱 전체 테마를 바꾸지 않고 지도만 감싼 수정, 다크 모드에서 생긴 두 번째 문제를 정리합니다.광고 SDK 초기화가 끝나기 전에 광고를 요청하면 꺼진다: 막는 장치를 만들고도 세 번 다시 나온 이유운영 중인 앱에서 「MobileAds.initialize must be called」 크래시를 처음 고친 뒤에도 같은 크래시가 다른 모양으로 세 번 더 나왔습니다. 초기화 완료를 기다리는 장치는 있었지만, 시작 시점에 켜지는 값, 동의만 보고 켜지는 값, 그 장치를 거치지 않는 새 광고 자리가 빈틈이었습니다. 각 경우의 원인과 23개 앱 전수 점검 결과를 정리합니다.이미지 줄여 읽기 한 줄이 만든 크래시: inSampleSize 는 0 에서 시작한다메모리를 아끼려고 QR 스캐너 앱 문서함의 썸네일을 줄여 읽게 바꿨더니, 다음 버전에서 문서 목록을 열 때마다 앱이 꺼졌습니다. 원인은 BitmapFactory.Options 의 inSampleSize 기본값이 0 이라는 것이었습니다. 바꾼 코드, 크래시 기록, 고친 코드, 같은 실수를 다른 곳에서 찾은 방법을 정리합니다.