"모바일엔 권한 시스템이 둘 쌓여 있어: 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는 모든 민감한 capability(카메라, 위치 등)에 Info.plist의 사람이 읽는 usage description을 요구해. 빠뜨리면 App Review에서 거부당하거나 리소스 접근 시 크래시해. Android는 권한을 AndroidManifest.xml에 선언해. 이건 생성된 플랫폼 프로젝트에 살고, 제대로 하는 게 좋은 게 아니라 단단한 필수야 — 빠진 iOS usage 문자열이 제일 흔한 첫 제출 거부 중 하나야.