본문 바로가기
C.W.K.
Stream
Lesson 04 of 05 · published

모바일 플러그인 & 권한 프롬프트

~13 min · tauri, mobile, plugins, permissions

Level 0웹 관광객
0 XP0/56 lessons0/13 achievements
0/100 XP to next level100 XP to go0% complete
"모바일엔 권한 체계가 두 겹으로 쌓여 있어. 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 사용 목적 문구 누락은 첫 제출이 거절당하는 제일 흔한 이유 중 하나거든.

Code

capability에 OS 물음창까지, 거절되는 길도 챙겨서·tsx
import { checkPermissions, requestPermissions, getCurrentPosition }
  from "@tauri-apps/plugin-geolocation";

// 게이트 둘: capability가 물을 능력을 주고; OS가 사용자한테 물어.
let perm = await checkPermissions();
if (perm.location !== "granted") {
  perm = await requestPermissions(["location"]); // 여기서 OS 다이얼로그 뜸
}
if (perm.location === "granted") {
  const pos = await getCurrentPosition();
  console.log(pos.coords.latitude, pos.coords.longitude);
} else {
  // 사용자가 거부함. 처리해 — 이 경로는 모바일에서 흔해.
}

External links

Exercise

모바일 전용 플러그인(geolocation, biometric, barcode-scanner 중에)을 하나 골라 권한 흐름을 통째로 짜봐. 확인하고, 요청하고(OS 다이얼로그가 뜨고), 허락된 경우랑 거절된 경우를 둘 다 처리해. 그다음 iOS 사용 목적 문구가 어디 들어가는지 적어. 데스크톱에선 생각할 일도 없던 두 겹 권한 현실을 연습하는 거야.
Hint
흐름은 checkPermissions → requestPermissions(OS 다이얼로그) → 결과로 갈라지기. iOS 사용 목적 문구는 만들어진 Apple 프로젝트의 Info.plist(NSLocationWhenInUseUsageDescription 같은 키)에 들어가. 거절 갈래는 항상 짜둬 — 사용자는 거절해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.