Загружаем каталог…
Загружаем каталог…
안녕하세요. 독일에서 혼자 iOS 앱을 만드는 Konrad Kern입니다. 올해 여름에 DopamineOS 라는 앱을 App Store에 냈습니다. 한 줄로 말하면 진짜 폰 안에서 돌아가는 가짜 폰 OS 예요. 요즘 앱들이 쓰는 보상 장치(끝없는 피드, 이유 없는 좋아요, 연속 기록, 빨간 배지)를 과장해서 보여 주는 풍자 앱이자, 그냥 웃긴 장난감입니다. 이 글은 홍보보다는 만들면서 정한 규칙과 기술적인 선택, 그리고 한국어 현지화를 어떻게 했는지 정리한 기록입니다. 뭘 만들었나 앱을 열면 반짝이지만 하나같이 쓸모없는 미니 앱으로 가득한 홈 화면이 나옵니다. LikeLoop : 뭘 올려도 좋아요와 댓글이 쏟아집니다 DoomScroll : 바닥이 없는 피드. 내용은 무해한 헛소리입니다 HypeTrader : 숫자가 올라가요 (진짜 아님). 존재하지 않는 종목만 오르내립니다 CraveCart : 주문해도 절대 안 오는 배달 앱. 영수증에는 "도착한 음식 0개"가 찍힙니다 Dopify : 세상에 없는 아티스트의 로파이만 나오는 음악 앱 1초 만에 답장이 오는 가짜 메시지, 나를 좋아하는 사람만 거는 가짜 전화, 받은편지함 0이 쉬운 가짜 메일 위에서 끌어내리면 나오는 가짜 제어 센터와, 거기 있는 '도파민' 슬라이더 탭할 때마다 Sparks 라는 가짜 화폐가 쌓이고, Vault에서 배경화면·아이콘 팩·사운드 팩 같은 꾸미기 아이템에 쓸 수 있습니다. 현금화는 당연히 안 됩니다. 규칙: 풍자하는 대상의 나쁜 짓은 하지 않는다 저장소 README에 제일 먼저 적어 둔 원칙이 있습니다. 풍자가 성립하려면 앱이 자기가 패러디하는 해로운 행동을 스스로 하지 않아야 한다 는 것입니다. 그래서 코드 차원에서 몇 가지를 못 박았습니다. 진짜 알림은 하나도 보내지 않습니다. 코드베이스 어디에도 UNUserNotificationCenter 나 requestAuthorization 이 없습니다. 칭찬 일색의 가짜 알림은 RootView 의 포그라운드 전용 루프가 앱을 쓰는 동안에만 배너로 띄웁니다. 앱을 닫으면 조용합니다. 실제 홈 화면에 배지도 달지 않습니다. 네트워크, 계정, 광고, 추적이 없습니다. 백엔드가 아예 없고, 모든 데이터는 기기 안에만 있습니다. 세션이 끝나면 나오는 Recap 카드 는 늘 같은 현실 점검으로 끝납니다. 가짜 앱에 쓴 진짜 돈 0, 실제로 올린 게시물 0, 실제로 연락한 낯선 사람 0. 결제는 선택형 1회 구매 DopamineOS Pro 하나뿐입니다(StoreKit 2). 구독이나 앱별 결제는 없습니다. 그런 게 있으면 농담 자체가 무너지니까요. 기술 스택 SwiftUI + MVVM , iOS 17의 @Observable (Observation 프레임워크). 배포 타깃 iOS 17, Swift 5 언어 모드 프로젝트 파일은 XcodeGen 으로 생성합니다. project.yml 이 원본이고 .xcodeproj 는 커밋하지 않습니다 상태는 DopamineStore 라는 @Observable 객체 하나가 전부 들고 있습니다. Sparks 경제, 통계, 인벤토리, 꾸미기, 연속 기록, 업적, 내비게이션, 가짜 알림, 제어 센터 상태까지요. .environment(...) 로 한 번 주입하고 @Environment(DopamineStore.self) 로 읽습니다 저장은 Documents/dopamineos_state.json 로컬 JSON 하나입니다. 새 필드는 전부 옵셔널 로 추가해서 예전 저장 파일도 그대로 디코딩되게 했습니다 소리는 번들 오디오 없이 iOS 시스템 사운드만 쓰고, Dopify의 음악은 코드로 합성 합니다. 오디오 파일이 없습니다 Recap 카드는 ImageRenderer 로 이미지로 만들어 시스템 공유 시트로 보냅니다 테마는 두 가지입니다. 차분한 기본 테마 "Quiet Premium"과 화려한 네온 모드 "Vivid". 토큰 하나로 둘 다 처리합니다 첫 커밋은 2026년 6월 19일의 "Initial commit: DopamineOS MVP"였고, 1.0은 7월 6일에 App Store에 올라갔습니다. 지금 main 브랜치 커밋은 114개입니다. 솔직하게 적어 두면, 개발에는 AI 코딩 도구의 도움을 받았고 앱 아이콘과 일부 이미지도 이미지 생성 도구로 만들었습니다. 저장소의 CLAUDE.md 와 커밋 메시지에 그 흔적이 그대로 남아 있습니다. 한국어 현지화: 작은 엔진을 직접 만든 이유 앱 안에서는 영어와 한국어를 고를 수 있습니다. 시스템 .lproj 대신 작은 런타임 엔진을 직접 만들었습니다. 모든 화면 문자열은 tr("key") 를 거칩니다. en.json 과 ko.json 두 파일에 각각 1,707개 키 가 있습니다 첫 실행 때는 Locale.preferredLanguages 를 보고 ko 로 시작하면 한국어, 아니면 영어로 정합니다 설정에서 자동 / English / 한국어 를 고를 수 있습니다. 선택값은 앱 상태 JSON에 저장되고, 바꾸면 루트 뷰의 .id 가 바뀌면서 뷰 트리가 다시 만들어져 바로 적용됩니다 직접 만든 이유는 단순합니다. 언어를 하나만 더 넣는 앱에는 이 정도 무게가 맞았고, 엔진이 시스템 언어와 독립적이어야 iOS 설정을 건드리지 않고 앱 안에서 언어를 바로 바꿀 수 있었습니다. 실수를 막는 장치는 테스트입니다. LocalizationTests 가 영어·한국어 키가 짝이 맞는지, 빈 한국어 문자열이 없는지, %@ · %lld 같은 플레이스홀더가 양쪽에서 같은지 검사합니다. 반대로 일부러 번역하지 않은 것 도 있습니다. DopamineOS, Sparks, 그리고 LikeLoop·CraveCart 같은 가짜 앱 이름은 한국어 화면에서도 영어 그대로 둡니다. 심사에서 배운 것 처음 버전에는 앱 안에 패러디용 "App Store"가 있었습니다. 가짜 앱을 "설치"하는 가게였죠. 이건 App Review 가이드라인 3.2.2(i) 때문에 통째로 뺐습니다. 뽑기처럼 보이는 시뮬레이션 요소도 전부 들어냈고, 지금은 Vault에서 원하는 아이템을 Sparks로 바로 사는 방식입니다. 미니 앱은 설정 → 미니앱 관리에서 홈에 넣고 뺍니다. 아쉬웠지만 결과적으로는 원칙에 더 맞는 앱이 됐다고 생각합니다. 보상 루프를 풍자하는 앱에 운에 맡기는 장치가 있을 이유는 없으니까요. 마무리 DopamineOS는 무료이고, iOS 17 이상 iPhone에서 돌아갑니다. 앱 설정에서 한국어를 고를 수 있습니다(App Store 소개 페이지는 아직 영어입니다). 혼자 만든 앱이라 한국어 표현이 어색한 곳이 분명히 있을 거예요. 발견하시면 댓글로 알려 주시면 정말 감사하겠습니다. App Store: https://apps.apple.com/app/id6782207382
То, что RADAR обнаружил и классифицировал для этой возможности. Это опубликованный источником текст, а не подтверждение, что предложение ещё действует.
아이폰 안에 가짜 아이폰을 만들었습니다: 풍자 앱 DopamineOS 개발 기록. 안녕하세요. 독일에서 혼자 iOS 앱을 만드는 Konrad Kern입니다. 올해 여름에 DopamineOS 라는 앱을 App Store에 냈습니다. 한 줄로 말하면 진짜 폰 안에서 돌아가는 가짜 폰 OS 예요. 요즘 앱들이 쓰는 보상 장치(끝없는 피드, 이유 없는 좋아요, 연속 기록, 빨간 배지)를 과장해서 보여 주는 풍자 앱이자, 그냥 웃긴 장난감입니다. 이 글은 홍보보다는 만들면서 정한 규칙과 기술적인 선택, 그리고 한국어 현지화를 어떻게 했는지 정리한 기록입니다. 뭘 만들었나 앱을 열면 반짝이지만 하나같이 쓸모없는 미니 앱으로 가득한 홈 화면이 나옵니다. LikeLoop : 뭘 올려도 좋아요와 댓글이 쏟아집니다…
Открыть источник