DeviceInfo 모듈
DeviceInfo 모듈의 전체 API 문서입니다. API를 선택하기 전에 지원 여부 배지 설명을 읽으세요.
네이티브 빌드의 최소 버전은 iOS 15.1과 Android API 24입니다. 의존성은 더 높은 최소 버전을 요구할 수 있습니다. 웹용 entry point와 fallback 값은 v1.8.0에서 추가했습니다.
import
기본 기기 정보(API 9개)
기본 기기 정보를 직접 읽는 동기 속성입니다.
deviceId: string
v0.1.0부터 iOS 15.1+ Android API 24+ 웹: fallback 값
기기 모델 식별자입니다.
brand: string
v0.1.0부터 iOS 15.1+ Android API 24+ 웹: 제한적 지원
기기 브랜드 또는 제조사 이름입니다.
model: string
v0.1.0부터 iOS 15.1+ Android API 24+ 웹: fallback 값
소비자에게 표시하는 기기 모델명입니다. 하드웨어 식별자를 읽기 쉬운 이름으로 변환하고 알 수 없는 기기는 일반 이름으로 표시합니다.
systemName: string
v0.1.0부터 iOS 15.1+ Android API 24+ 웹: 제한적 지원
운영체제 이름입니다.
systemVersion: string
v0.1.0부터 iOS 15.1+ Android API 24+ 웹: fallback 값
운영체제 버전 문자열입니다.
deviceType: DeviceType
v0.1.0부터 iOS 15.1+ Android API 24+ 웹: fallback 값
기기 유형입니다.
uniqueId: string
v1.2.0부터 iOS 15.1+ Android API 24+ 웹: fallback 값
기기 식별자를 읽습니다.
- iOS: 현재 IDFV를 읽으며 조회할 수 없으면
""를 반환합니다. 같은 공급업체의 모든 앱을 삭제한 뒤에도 유지된다고 가정하지 마세요. - Android: ANDROID_ID를 읽으며 조회할 수 없으면
""를 반환합니다. 범위와 초기화 동작은 Android에 따라 다릅니다.
이 값을 영구 기기 식별자나 계정 식별자로 사용하지 마세요. Apple IDFV와 Android ANDROID_ID를 참고하세요.
manufacturer: string
v1.2.0부터 iOS 15.1+ Android API 24+ 웹: 제한적 지원
기기 제조사 이름을 읽습니다.
deviceName: string
v1.2.0부터 iOS 15.1+ Android API 24+ 웹: fallback 값
사용자가 지정한 기기 이름을 읽습니다.
기기 기능(API 7개)
기기 기능과 하드웨어 사용 가능 여부를 불리언으로 확인합니다.
isTablet: boolean
v1.2.0부터 iOS 15.1+ Android API 24+ 웹: fallback 값
태블릿인지 확인합니다.
- iOS: UIDevice.userInterfaceIdiom 기준
- Android: 최소 화면 너비 >= 600dp 기준
isEmulator: boolean
v1.2.0부터 iOS 15.1+ Android API 24+ 웹: fallback 값
시뮬레이터 또는 에뮬레이터에서 실행 중인지 확인합니다.
deviceYearClass: number
v1.4.2부터 iOS 15.1+ Android API 24+ 웹: fallback 값
하드웨어 사양으로 추정한 year class를 읽습니다.
기기의 하드웨어가 플래그십·고급 사양에 해당했을 것으로 추정하는 연도를 반환합니다. 2025년에 맞춰 확장한 Facebook device-year-class 알고리즘을 사용합니다.
RAM → year class 대응:
isCameraPresent: boolean
v1.2.0부터 iOS 15.1+ (v1.9.0부터) Android API 24+ 웹: fallback 값
iOS 구현은 v1.9.0부터 사용할 수 있습니다. v1.8.3까지의 배포 버전은 항상 true를 반환합니다. 구현 변경을 참고하세요.
카메라 하드웨어가 있는지 확인합니다. iOS 시뮬레이터나 영상 캡처 기기가 없을 때는 false를 반환합니다. 카메라 권한을 요청하지 않으며, true라고 해서 앱에 영상 촬영 권한이 있다는 뜻은 아닙니다.
isPinOrFingerprintSet: boolean
v1.2.0부터 iOS 15.1+ (v1.9.0부터) Android API 24+ 웹: fallback 값
iOS 구현은 v1.9.0부터 사용할 수 있습니다. v1.8.3까지의 배포 버전은 항상 false를 반환합니다. 구현 변경을 참고하세요.
PIN, 지문 또는 Face ID를 설정했는지 확인합니다. iOS에서는 기기 소유자를 인증할 수 있는지 확인합니다. 생체 인증을 사용할 수 없거나 잠겨 있어 기기 암호로 인증하는 경우도 포함합니다. 암호를 설정하지 않았으면 false를 반환합니다. 사용자를 인증하거나 인증 창을 표시하지 않으며, 읽을 때마다 다시 검사합니다.
isHardwareKeyStoreAvailable: boolean
v1.2.1부터 iOS 15.1+ Android API 24+: 제한적 지원 웹: fallback 값
플랫폼 키 저장소를 사용할 수 있는지 확인합니다. Android에서는 키를 하드웨어로 보호하는지 검증하지 않습니다.
플랫폼 제한: iOS는 Secure Enclave 사용 가능 여부를 확인합니다. Android는 AndroidKeyStore를 열 수 있는지만 확인하므로 키가 하드웨어로 보호된다는 증거가 아닙니다.
isLowRamDevice: boolean
v1.2.0부터 iOS: fallback 값 Android API 24+ 웹: fallback 값
RAM이 적은 기기로 분류되는지 확인합니다.
플랫폼: Android. OS 분류 API는 API 19부터 있지만 이 패키지는 API 24 이상이 필요합니다.
디스플레이와 화면(API 7개)
화면과 디스플레이 정보입니다.
getHasNotch(): boolean
v1.3.0부터 iOS 15.1+ Android: fallback 값 웹: fallback 값
화면에 노치가 있는지 확인합니다.
- iOS 전용: iPhone X 이후 모델을 감지합니다.
- Android: 항상
false를 반환합니다.
getHasDynamicIsland(): boolean
v1.3.0부터 iOS 16+ Android: fallback 값 웹: fallback 값
Dynamic Island가 있는지 확인합니다.
- iOS 16 이상 전용: iPhone 14 Pro 이후
- Android: 항상
false를 반환합니다.
isDisplayZoomed: boolean
v1.2.0부터 iOS 15.1+ Android: fallback 값 웹: fallback 값
iOS 디스플레이 확대가 켜져 있는지 확인합니다.
플랫폼: iOS 전용
getIsLandscape(): boolean
v1.3.0부터 iOS 15.1+ Android API 24+ 웹: 제한적 지원
기기가 가로 방향인지 확인합니다.
getBrightness(): number
v1.1.0부터 iOS 15.1+ Android: fallback 값 웹: fallback 값
현재 화면 밝기를 읽습니다(0.0~1.0).
플랫폼: iOS 전용
getFontScale(): number
v1.1.0부터 iOS 15.1+ Android API 24+ 웹: fallback 값
현재 글꼴 배율을 읽습니다.
isLiquidGlassAvailable: boolean
v1.2.1부터 iOS 26+ Android: fallback 값 웹: fallback 값
기기에서 Liquid Glass 효과를 사용할 수 있는지 확인합니다.
플랫폼: iOS 26.0 이상
Swift 6.2 이상 컴파일러가 필요합니다. 이전 컴파일러로 빌드하거나 UIDesignRequiresCompatibility를 켜면 false를 반환합니다.
시스템 리소스(API 7개)
메모리, 저장 공간, 가동 시간 정보입니다.
totalMemory: number
v1.2.0부터 iOS 15.1+ Android API 24+ 웹: 제한적 지원
기기 전체 RAM을 바이트로 읽습니다.
getUsedMemory(): number
v0.1.0부터 iOS 15.1+ Android API 24+ 웹: fallback 값
현재 앱의 메모리 사용량을 바이트로 읽습니다.
maxMemory: number
v1.2.0부터 iOS: fallback 값 Android API 24+ 웹: fallback 값
앱이 사용할 수 있는 최대 메모리를 바이트로 읽습니다.
플랫폼: Android 전용
totalDiskCapacity: number
v1.2.0부터 iOS 15.1+ Android API 24+ 웹: fallback 값
전체 내부 저장 공간을 바이트로 읽습니다.
getFreeDiskStorage(): number
v0.1.0부터 iOS 15.1+ Android API 24+ 웹: fallback 값
남은 저장 공간을 바이트로 읽습니다.
getUptime(): number
v1.4.2부터 iOS 15.1+ Android API 24+ 웹: fallback 값
깊은 절전 시간을 제외한 부팅 후 기기 가동 시간을 밀리초로 읽습니다.
iOS에서는 앱 이벤트의 시간 측정에만 사용하세요. 경과 시간이나 타이머(35F9.1), 또는 startupTime으로 앱 이벤트의 uptime을 절대 타임스탬프로 변환하는 용도(8FFB.1)입니다. 원시 가동 시간을 일반 기기 정보로 표시·수집하거나 기기 밖으로 전송하거나 핑거프린팅에 사용하지 마세요. 앱 이벤트 사이의 경과 시간 또는 변환한 앱 이벤트의 절대 타임스탬프만 기기 밖으로 전송할 수 있습니다.
플랫폼 동작:
- iOS:
systemUptime사용(깊은 절전 제외) - Android:
uptimeMillis()사용(깊은 절전 제외)
두 플랫폼 모두 부팅 후의 활성 시간을 반환하며 expo-device.getUptimeAsync()의 동작과 같습니다.
startupTime: number
v1.1.0부터 iOS 15.1+ Android API 24+ 웹: fallback 값
기기 부팅 시각을 읽습니다(epoch 이후 밀리초).
iOS에서는 앱 이벤트의 uptime을 절대 타임스탬프로 변환하는 기준 시각으로만 사용하세요(8FFB.1). 원시 부팅 타임스탬프를 일반 기기 정보로 표시·수집하거나 기기 밖으로 전송하거나 핑거프린팅에 사용하지 마세요. 변환한 앱 내 이벤트의 절대 타임스탬프만 기기 밖으로 전송할 수 있습니다.
앱 시작 시각이 아니라 기기 부팅 시각입니다. 지원 목적과 Apple의 사용 제한은 iOS privacy info manifest를 참고하세요.
배터리와 전원(API 4개)
배터리와 전원 상태 정보입니다.
getBatteryLevel(): number
v0.1.0부터 iOS 15.1+ Android API 24+ 웹: 제한적 지원
현재 배터리 잔량(0.0~1.0)을 읽으며 조회할 수 없으면 -1을 반환합니다. 배터리가 빈 상태임을 확인하면 0을 반환합니다.
웹에서는 첫 비동기 요청이 resolve된 뒤 배터리 getter가 같은 BatteryManager 객체에서 현재 값을 읽습니다.
요청이 resolve되기 전이거나 API가 없거나 요청이 reject된 경우,
잔량은 -1, 충전 여부는 false, 배터리 상태는 "unknown"이며
isLowBatteryLevel()은 false를 반환합니다.
getPowerState(): PowerState
v0.1.0부터 iOS 15.1+ Android API 24+: 제한적 지원 웹: 제한적 지원
Android에서 lowPowerMode는 항상 false입니다. 배터리 잔량과 충전 상태는 실제 값을 읽습니다.
전체 전원 상태를 읽습니다.
PowerState 인터페이스:
getIsBatteryCharging(): boolean
v1.3.0부터 iOS 15.1+ Android API 24+ 웹: 제한적 지원
배터리를 충전 중인지 확인합니다.
isLowBatteryLevel(threshold: number): boolean
v1.1.0부터 iOS 15.1+ Android API 24+ 웹: 제한적 지원
유효한 배터리 잔량이 임계값보다 낮은지 확인합니다. 조회할 수 없으면 false를 반환합니다. 확인한 잔량이 0%라면 부족한 상태로 판단합니다.
앱 메타데이터(API 9개)
앱 번들과 버전 정보입니다.
version: string
v1.2.0부터 iOS 15.1+ Android API 24+ 웹: fallback 값
앱 버전 문자열을 읽습니다.
buildNumber: string
v1.2.0부터 iOS 15.1+ Android API 24+ 웹: fallback 값
앱 빌드 번호를 읽습니다.
bundleId: string
v1.2.0부터 iOS 15.1+ Android API 24+ 웹: fallback 값
번들 ID(iOS) 또는 패키지 이름(Android)을 읽습니다.
applicationName: string
v1.2.0부터 iOS 15.1+ Android API 24+ 웹: fallback 값
앱 표시 이름을 읽습니다.
readableVersion: string
v1.1.0부터 iOS 15.1+ Android API 24+ 웹: fallback 값
읽기 쉬운 버전 문자열(version.buildNumber)을 읽습니다.
getFirstInstallTime(): Promise<number>
v0.1.0부터 iOS 15.1+: 제한적 지원 Android API 24+ 웹: fallback 값
iOS에서는 Documents 디렉터리 생성 시각으로 설치 시각을 추정합니다. 조회할 수 없으면 0을 반환합니다.
앱 최초 설치 시각을 읽습니다(epoch 이후 밀리초).
getLastUpdateTime(): Promise<number>
v0.1.0부터 iOS 15.1+: 제한적 지원 Android API 24+ 웹: fallback 값
가장 최근 앱 갱신 시각을 읽습니다(epoch 이후 밀리초).
iOS 제한: App Store 업데이트 시각이 아닌 Documents 디렉터리 수정 시각을 읽습니다. 조회할 수 없으면 0을 반환합니다.
firstInstallTimeSync: number
v1.1.0부터 iOS 15.1+: 제한적 지원 Android API 24+ 웹: fallback 값
iOS에서는 처음 접근할 때 Documents 디렉터리 생성 시각을 캐시합니다. 조회할 수 없으면 0을 반환합니다.
getFirstInstallTime()의 동기 버전입니다.
lastUpdateTimeSync: number
v1.1.0부터 iOS: fallback 값 Android API 24+ 웹: fallback 값
동기 버전입니다(iOS에서는 -1 반환).
네트워크(API 6개)
통신사를 제외한 네트워크 연결 API입니다.
getIpAddress(): Promise<string>
v0.1.0부터 iOS 15.1+ Android API 24+ 웹: fallback 값
기기의 로컬 IP 주소를 읽습니다.
getIpAddressSync(): string
v1.3.0부터 iOS 15.1+ Android API 24+ 웹: fallback 값
동기 버전입니다(5초 캐시 사용).
getMacAddress(): Promise<string>
v0.1.0부터 iOS: fallback 값 Android API 24+ 웹: fallback 값
Android에서 접근을 허용하면 Wi-Fi MAC 주소를 읽습니다. getMacAddressSync()와 같은 5초 캐시를 사용하며 조회할 수 없으면 "unknown"을 반환합니다. 최신 Android에서 일반 앱은 대개 하드웨어 MAC 주소에 접근할 수 없습니다. 이 API는 제한을 우회하지 않습니다.
getMacAddressSync(): string
v1.3.0부터 iOS: fallback 값 Android API 24+ 웹: fallback 값
Android에서 같은 방식으로 조회하는 동기 버전입니다. 5초 캐시와 "unknown" fallback 값도 공유합니다.
getUserAgent(): Promise<string>
v1.1.0부터 iOS 15.1+ Android API 24+ 웹: 제한적 지원
HTTP User-Agent 문자열을 읽습니다.
iOS는 WebView를 초기화하고 처음 성공한 결과를 캐시합니다. Android는 WebSettings를 비동기로 조회합니다. 두 플랫폼 모두 Promise<string>을 반환합니다.
getIsAirplaneMode(): boolean
v1.3.0부터 iOS: fallback 값 Android API 24+ 웹: fallback 값
비행기 모드가 켜져 있는지 확인합니다.
웹에서는 브라우저가 비행기 모드를 판단할 수 없으므로 항상 false를 반환합니다.
오프라인이라는 사실만으로 비행기 모드가 켜졌다고 판단할 수는 없습니다.
플랫폼: Android 전용
통신사 정보(API 7개)
통신 앱, 분석, 지역 판단에 사용하는 이동통신사 정보입니다.
getCarrier(): Promise<string>
v0.1.0부터 iOS 15.1+ (v1.8.0부터) Android API 24+ 웹: fallback 값
iOS에서 실제 값을 반환하는 구현은 v1.8.0부터 제공합니다. 이전 버전에서는 대응하는 동기 API가 구현되어 있어도 이 비동기 API는 고정 fallback 값을 반환합니다. iOS 구현 변경을 참고하세요.
이동통신사 이름을 읽습니다.
getCarrierSync(): string
v1.3.0부터 iOS 15.1+ Android API 24+ 웹: fallback 값
동기 버전입니다(5초 캐시 사용).
carrierAllowsVOIP: boolean
v1.5.0부터 iOS 15.1+ Android: fallback 값 웹: fallback 값
통신사가 네트워크에서 VoIP 통화를 허용하는지 확인합니다.
플랫폼: iOS 전용(Android에서는 항상 true 반환)
carrierIsoCountryCode: string
v1.5.0부터 iOS 15.1+ Android API 24+ 웹: fallback 값
통신사의 ISO 3166-1 alpha-2 국가 코드를 읽습니다.
mobileCountryCode: string
v1.5.0부터 iOS 15.1+ Android API 24+ 웹: fallback 값
ITU-T 권고 E.212에 따른 이동통신 국가 코드(MCC)를 읽습니다.
주요 MCC 값:
mobileNetworkCode: string
v1.5.0부터 iOS 15.1+ Android API 24+ 웹: fallback 값
국가 내 통신사를 구별하는 이동통신 네트워크 코드(MNC)를 읽습니다.
mobileNetworkOperator: string
v1.5.0부터 iOS 15.1+ Android API 24+ 웹: fallback 값
MCC + MNC를 합친 문자열을 읽습니다.
활용 예:
- 통신사별 기능 설정
- 지역별 콘텐츠 제공
- 통신 분석
- 부정 사용 탐지(지역 확인)
오디오 기기(API 4개)
오디오 기기를 감지합니다.
isHeadphonesConnected(): Promise<boolean>
v0.1.0부터 iOS 15.1+ (v1.8.0부터) Android API 24+ 웹: fallback 값
iOS에서 실제 값을 반환하는 구현은 v1.8.0부터 제공합니다. 이전 버전에서는 대응하는 동기 API가 구현되어 있어도 이 비동기 API는 고정 fallback 값을 반환합니다. iOS 구현 변경을 참고하세요.
헤드폰 연결 여부를 확인합니다(유선 또는 Bluetooth). Android에서는 동기 getter와 같은 방식으로 출력 기기를 감지합니다.
getIsHeadphonesConnected(): boolean
v1.3.0부터 iOS 15.1+ Android API 24+ 웹: fallback 값
동기 버전입니다.
getIsWiredHeadphonesConnected(): boolean
v1.3.0부터 iOS 15.1+ Android API 24+ 웹: fallback 값
유선 헤드폰 연결 여부를 확인합니다. Android에서는 유선 헤드폰·헤드셋과 API 26 이상의 USB 헤드셋을 포함합니다. 내장 스피커와 Bluetooth 기기는 유선 헤드폰에 포함하지 않습니다.
getIsBluetoothHeadphonesConnected(): boolean
v1.3.0부터 iOS 15.1+ Android API 24+ 웹: fallback 값
Bluetooth 헤드폰 연결 여부를 확인합니다.
위치 서비스(API 3개)
위치 provider 정보입니다.
isLocationEnabled(): Promise<boolean>
v0.1.0부터 iOS 15.1+ (v1.8.0부터) Android API 24+ 웹: fallback 값
iOS에서 실제 값을 반환하는 구현은 v1.8.0부터 제공합니다. 이전 버전에서는 대응하는 동기 API가 구현되어 있어도 이 비동기 API는 고정 fallback 값을 반환합니다. iOS 구현 변경을 참고하세요.
위치 서비스가 켜져 있는지 확인합니다.
getIsLocationEnabled(): boolean
v1.3.0부터 iOS 15.1+ Android API 24+ 웹: fallback 값
동기 버전입니다.
getAvailableLocationProviders(): string[]
v1.1.0부터 iOS 15.1+ Android API 24+ 웹: fallback 값
활성화된 위치 provider 목록을 읽습니다.
언어와 지역(API 1개)
언어와 지역 설정입니다.
systemLanguage: string
v1.3.0부터 iOS 15.1+ Android API 24+ 웹: 제한적 지원
기기 시스템 언어를 BCP 47 형식으로 읽습니다.
예시:
활용 예:
CPU와 아키텍처(API 3개)
프로세서와 ABI 정보입니다.
supportedAbis: string[]
v1.2.0부터 iOS 15.1+ Android API 24+ 웹: fallback 값
지원 CPU 아키텍처를 읽습니다.
supported32BitAbis: string[]
v1.2.0부터 iOS 15.1+ Android API 24+ 웹: fallback 값
지원하는 32비트 ABI 목록을 읽습니다.
플랫폼: Android API 21 이상. iOS에서는 [] 반환
supported64BitAbis: string[]
v1.2.0부터 iOS 15.1+ Android API 24+ 웹: fallback 값
지원하는 64비트 ABI 목록을 읽습니다.
Android 플랫폼(API 20개 이상)
Android 전용 API와 빌드 정보입니다.
apiLevel: number
v1.2.0부터 iOS: fallback 값 Android API 24+ 웹: fallback 값
Android API 수준을 읽습니다.
플랫폼: Android 전용
navigationMode: NavigationMode
v1.3.0부터 iOS: fallback 값 Android API 24+ 웹: fallback 값
Android 내비게이션 방식을 읽습니다.
타입: 'gesture' | 'buttons' | 'twobuttons' | 'unknown'
플랫폼: Android 전용(iOS에서는 "unknown" 반환)
값:
활용 예:
참고: 내비게이션 방식 감지는 Android 10(API 29) 이상이 필요합니다. 이전 Android에서는 제스처 내비게이션을 지원하지 않았으므로 "buttons"를 반환합니다.
getHasGms(): boolean
v1.3.0부터 iOS: fallback 값 Android API 24+ 웹: fallback 값
Google Mobile Services 사용 가능 여부를 확인합니다.
플랫폼: Android 전용
getHasHms(): boolean
v1.3.0부터 iOS: fallback 값 Android API 24+ 웹: fallback 값
Huawei Mobile Services 사용 가능 여부를 확인합니다.
플랫폼: Android(Huawei 기기) 전용
hasSystemFeature(feature: string): boolean
v1.1.0부터 iOS: fallback 값 Android API 24+ 웹: fallback 값
특정 시스템 기능의 사용 가능 여부를 확인합니다.
플랫폼: Android 전용
주요 기능:
android.hardware.cameraandroid.hardware.nfcandroid.hardware.bluetoothandroid.hardware.wifi
systemAvailableFeatures: string[]
v1.2.0부터 iOS: fallback 값 Android API 24+ 웹: fallback 값
사용 가능한 모든 시스템 기능 목록을 읽습니다.
플랫폼: Android 전용
supportedMediaTypeList: string[]
v1.2.0부터 iOS: fallback 값 Android API 24+ 웹: fallback 값
지원하는 미디어·코덱 타입 목록을 읽습니다.
플랫폼: Android 전용
Android 빌드 정보
Android 시스템 빌드 정보를 읽는 동기 속성입니다.
플랫폼: Android 전용(iOS에서는 모두 "unknown" 또는 기본값 반환)
serialNumber는 처음 접근할 때 캐시합니다. Android 8–9에서는 READ_PHONE_STATE 권한을 받아야 합니다. Android 10 이상은 권한을 받아도 일반 앱의 접근을 제한합니다.
iOS 플랫폼(API 2개)
iOS 전용 API입니다.
getDeviceToken(): Promise<string>
v1.1.0부터 iOS 15.1+ Android: reject 웹: reject
Apple DeviceCheck 토큰을 읽습니다.
플랫폼: iOS. DeviceCheck는 iOS 11부터 있지만 이 패키지는 iOS 15.1 이상이 필요합니다. Android에서는 reject됩니다.
syncUniqueId(): Promise<string>
v1.1.0부터 iOS 15.1+ Android: ID만 반환 웹: fallback 값
iOS에서 현재 IDFV를 앱 전용 Keychain 항목에 기록합니다. iCloud Keychain 동기화를 켜거나 이전 IDFV를 복원하지는 않습니다.
플랫폼: iOS(Android에서는 기록 작업 없음)
설치와 배포(API 3개)
앱 설치와 배포 메타데이터입니다.
installerPackageName: string
v1.1.0부터 iOS 15.1+ Android API 24+ 웹: fallback 값
앱을 설치한 앱 스토어의 패키지 이름을 읽습니다.
getInstallReferrer(): Promise<string>
v1.1.0부터 iOS: fallback 값 Android API 24+ 웹: fallback 값
설치 리퍼러 정보를 읽습니다(Android Play Store).
플랫폼: Android 전용(Google Play Services 필요)
isSideLoadingEnabled(): boolean
v1.4.2부터 iOS: fallback 값 Android API 24+ 웹: fallback 값
사이드로딩(알 수 없는 출처의 설치)이 켜져 있는지 확인합니다.
플랫폼별 동작 차이:
- Android 7 이하: 기기 전체에서 알 수 없는 출처를 허용하는지 반환합니다(
Settings.Global.INSTALL_NON_MARKET_APPS확인). - Android 8.0 이상: 이 앱에 다른 앱을 설치할 권한이 있는지 반환합니다(
canRequestPackageInstalls()로 앱별 권한 확인). - iOS: 이 API는 항상
false를 반환하며 사이드로딩을 감지하지 않습니다.
중요: Android 8.0 이상에서는 다른 앱에 "알 수 없는 앱 설치"를 허용했더라도 이 앱에 별도로 허용하지 않았다면 false를 반환합니다.
활용 예:
- 보안 정책 적용
- 배포 경로 확인
- 기업 배포 확인
플랫폼: Android(iOS에서는 false 반환)
레거시 호환(API 2개)
이전 버전과의 호환을 위한 사용 중단 예정 API입니다.
totalDiskCapacityOld: number
v1.2.0부터 iOS 15.1+ Android API 24+ 웹: fallback 값
레거시 Android API로 전체 디스크 용량을 읽습니다.
getFreeDiskStorageOld(): number
v1.1.0부터 iOS 15.1+ Android API 24+ 웹: fallback 값
레거시 Android API로 남은 디스크 공간을 읽습니다.
지원하지 않는 호환 속성
API 호환성을 위해 유지하는 속성입니다. 이 패키지에는 Windows 네이티브 타깃이 없습니다. iOS, Android, 웹에서 고정 기본값을 반환합니다.
성능 참고 사항
동기 속성과 메서드는 호출한 스레드에서 실행합니다. 일부 API는 OS를 조회하거나 캐시를 초기화하므로 동기 호출이 즉시 완료된다는 뜻은 아닙니다.
Promise 메서드는 완료 시간을 보장하지 않습니다. iOS의 getUserAgent()는 처음 성공하는 호출에서 WebView를 초기화하고 결과를 캐시합니다. 렌더링 중 비용이 큰 API를 반복 호출하지 마세요.
캐시
다음 동기 메서드는 5초 캐시를 사용합니다.
getIpAddressSync()getMacAddressSync()getCarrierSync()
캐시를 갱신할 때 OS를 조회합니다. 만료 후 다음 호출까지 이전 값이 남을 수 있습니다. 계속 바뀌는 배터리·오디오 상태에는 React 훅을 사용하세요.
실제 앱의 기기, OS, 빌드 모드, 캐시 상태에서 지연 시간을 측정하세요.
플랫폼 호환성
같은 범주에 있는 속성·메서드도 지원 여부가 다릅니다. 각 API나 속성 묶음 옆의 배지를 확인하세요. 배지 정의와 웹 제한을 참고하세요.
다음 단계
- 타입 정의에서 TypeScript 타입 확인
- 사용 예제 확인
react-native-device-info에서 전환하려면 마이그레이션 가이드 확인
