"모바일엔 권한 체계가 두 겹으로 쌓여 있어. Tauri의 capability ACL이랑, OS가 직접 띄우는 물음창. 둘 다 통과해야 해."
폰에만 있고 데스크톱엔 없는 권한들
모바일에선 데스크톱에 대응물이 없는 플러그인이 열려. barcode-scanner, biometric(Face ID나 지문), nfc, haptics, geolocation 같은 것들. 넣는 방식은 똑같이 세 표면(Cargo, 빌더, capability)인데, 상당수는 밑에 iOS나 Android 네이티브 코드를 품고 있어. Tauri 모바일 앱을 진짜 네이티브처럼 느끼게 하고 싶으면 이걸 꺼내 — 브라우저 속 웹 페이지는 지문 센서를 못 건드리지만 네 Tauri 앱은 할 수 있거든.
권한이 두 겹
데스크톱에선 관문이 하나였어(Tauri capability). 모바일은 그 위에 하나를 더 얹어. OS가 돌아가는 중에 띄우는 권한 물음창이야. capability에 geolocation:default를 허락하면 앱이 위치를 물어볼 수 있게 되는 거지 — iOS나 Android는 여전히 사용자한테 시스템 다이얼로그를 띄우고, 사용자는 거절할 수 있어. 네 코드는 '물어봤는데 거절당함'을 반드시 처리해야 해. capability를 허락받았으니 접근도 된다고 치면 안 돼. 거절되는 길까지 설계에 넣어. 모바일에선 흔한 일이야.
까먹으면 안 되는 매니페스트 문구
iOS는 민감한 기능(카메라, 위치 등)마다 Info.plist에 사람이 읽을 사용 목적 설명을 요구해. 빠뜨리면 App Review에서 거절당하거나 그 리소스에 손대는 순간 앱이 죽어. Android는 권한을 AndroidManifest.xml에 적고. 둘 다 만들어진 플랫폼 프로젝트 안에 살고, 챙기면 좋은 게 아니라 반드시 챙겨야 하는 거야 — iOS 사용 목적 문구 누락은 첫 제출이 거절당하는 제일 흔한 이유 중 하나거든.